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. 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 array [], not {}.
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
-
-
totalsobject3 properties
-
billablemap of object3 properties
-
netnumber -
taxnumber -
grossnumber
-
-
pendingmap of object3 properties
-
netnumber -
taxnumber -
grossnumber
-
-
creditmap of number
-
-
metaobject4 properties
-
current_pageinteger -
last_pageinteger -
per_pageinteger -
totalinteger
-
-
-
401Missing, invalid or expired token. MessageError -
403not_resellercredit_disabledforbiddenip_not_allowedip_whitelist_misconfiguredResellerError -
429Rate limit exceeded. Retry after the number of seconds inRetry-After. MessageError
cURL
curl 'https://portal.supporthost.com/api/v1/reseller/charges' \
-H "Authorization: Bearer $API_TOKEN" \
-H 'Accept: application/json'
PHP
Install Guzzle once: composer require guzzlehttp/guzzle
<?php
require 'vendor/autoload.php';
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://portal.supporthost.com/api/v1/reseller/charges', [
'headers' => [
'Authorization' => 'Bearer ' . getenv('API_TOKEN'),
'Accept' => 'application/json',
],
]);
echo $response->getBody();
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"
}
],
"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
}
},
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 25,
"total": 1
}
}
Error responses share one format: see Errors.