The charges of the current billing period, their totals and the credit balance per currency.
List your current charges #
GET
/reseller/charges
The charges of the current billing period, newest first: everything
debited this month, plus older charges not invoiced yet. meta.totals sums
what is still open, per currency: billable goes on your next monthly
invoice, pending belongs to operations still in progress (billed when
they complete, refunded if they fail). credit is your credit balance
per currency. All three are keyed by currency code (EUR, USD…); when
one has nothing in it, it is sent as an empty object {}, never [].
Read-only: nothing is charged or changed.
- Authentication: bearer Token
- Rate limit: 300 req/min per account
Parameters
Query
-
per_pageintegerCharges per page, 1–100. Defaults to this server’s page size. -
pageintegerPage number, from 1.
Responses
-
200Your current charges.
Response body
application/json-
dataarray of object10 properties
-
idinteger -
datestring -
domainstring -
actionstringAllowed valuesregistertransferrenewrestoregrace_feeredemption_fee -
yearsinteger -
currencystring -
netnumber -
taxnumber -
grossnumber -
statusstringAllowed valuespendingbillableinvoicedrefunded
-
-
metaobject5 properties
-
current_pageinteger -
last_pageinteger -
per_pageinteger -
totalinteger -
totalsobject3 properties
-
billablemap of object3 properties
-
netnumber -
taxnumber -
grossnumber
-
-
pendingmap of object3 properties
-
netnumber -
taxnumber -
grossnumber
-
-
creditmap of number
-
-
-
cURL
curl 'https://portal.supporthost.com/api/v1/reseller/charges' \
-H "Authorization: Bearer $API_TOKEN" \
-H 'Accept: application/json'
PHP
<?php
$ch = curl_init('https://portal.supporthost.com/api/v1/reseller/charges');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('API_TOKEN'),
'Accept: application/json',
],
]);
$body = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
if ($status >= 400) {
// Error envelope: {"error": {"code": "...", "message": "...", "fields": {...}}}
echo $status . ' ' . ($body['error']['code'] ?? '') . ': ' . ($body['error']['message'] ?? '') . "\n";
} else {
print_r($body);
}
Node.js
// Save as a .mjs file (ES module, Node 18+): it uses top-level await.
const response = await fetch('https://portal.supporthost.com/api/v1/reseller/charges', {
headers: {
Authorization: `Bearer ${process.env.API_TOKEN}`,
Accept: 'application/json',
},
});
console.log(await response.json());
200
{
"data": [
{
"id": 5310,
"date": "2026-09-15T10:42:07+02:00",
"domain": "example.com",
"action": "register",
"years": 1,
"currency": "EUR",
"net": 11.1699999999999999289457264239899814128875732421875,
"tax": 2.45999999999999996447286321199499070644378662109375,
"gross": 13.6300000000000007815970093361102044582366943359375,
"status": "billable"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 25,
"total": 1,
"totals": {
"billable": {
"EUR": {
"net": 11.1699999999999999289457264239899814128875732421875,
"tax": 2.45999999999999996447286321199499070644378662109375,
"gross": 13.6300000000000007815970093361102044582366943359375
}
},
"pending": {
"EUR": {
"net": 11.1699999999999999289457264239899814128875732421875,
"tax": 2.45999999999999996447286321199499070644378662109375,
"gross": 13.6300000000000007815970093361102044582366943359375
}
},
"credit": {
"EUR": 236.3700000000000045474735088646411895751953125
}
}
}
}
Error responses share one format: see Errors.