Постоплатный биллинг
С постоплатным биллингом вы заказываете Energy, Bandwidth, активацию и AML-проверки без предварительного пополнения депозита. Услуги тарифицируются по действующему индивидуальному тарифу клиента, включая применимые скидки. Начисления, платежи и корректировки отражаются в вашем счете в соответствии с условиями биллинга и оплаты по вашему договору.
Постоплата подключается Netts по запросу для корпоративных аккаунтов. Эндпоинты из этого раздела отвечают только для аккаунтов с постоплатным биллингом; другие аккаунты получают 403 postpaid_required.
Как это работает
- Вы оформляете заказ как обычно. Те же эндпоинты заказов, тот же API-ключ. Постоплатному аккаунту не требуется баланс депозита для этих заказов. Стоимость соответствует цене по вашему договору с учетом ваших скидок.
- Предоставленные услуги фиксируются как начисления. Принятый заказ сам по себе не является предоставленной услугой. Начисление появляется в usage после того, как услуга или отдельно тарифицируемая часть заказа была предоставлена — это может произойти позже ответа на заказ.
- Цена и курс фиксируются и сохраняются. Действующая котировка фиксирует цену по вашему договору для этого заказа. Без котировки применяется цена по вашему договору на момент размещения заказа, а сумма в валюте вашего договора рассчитывается по курсу на момент предоставления услуги. Зафиксированные суммы не пересчитываются при чтении расхода, получении счета или совершении платежа.
- Вы получаете и оплачиваете счет. Расчетный период и условия оплаты соответствуют согласованным в вашем договоре. Счет отображает услуги за период, примененные платежи и корректировки, а также сумму к оплате; платеж не удаляет записи об услугах. См. invoices и payments. Валюта платежа, сеть и срок оплаты указаны в
settlementв account. Переплата остается на вашем аккаунте в качестве кредита и расходуется на следующие начисления.
Тариф, котировка и зафиксированный обменный курс
Котировка (freezePrice) фиксирует цену по вашему договору на одну минуту. Оформите заказ с quoteId и теми же параметрами в течение этой минуты, и он будет рассчитан по зафиксированной цене, даже если цена изменится или услуга будет предоставлена позже. Котировка опциональна; поля запроса описаны в 1-hour energy и 5-minute energy.
Без котировки сумма в валюте вашего договора рассчитывается по курсу на момент предоставления услуги, а не на момент, когда вы просматривали цену или свой аккаунт. Текущий курс — ваш курс и курс в ответах эндпоинта аккаунта — приведен только для справки; он не гарантирует курс будущего заказа.
AML-проверки тарифицируются в долларах США и фиксируются в валюте вашего договора; эквивалент в TRX рассчитывается по курсу на момент завершения проверки. Не пересчитывайте начисление за AML из округленной суммы в TRX.
Суммы отображаются в TRX и в валюте вашего договора; ваши лимиты рассчитываются в валюте вашего договора. usdPerTrx — это курс TRX к валюте вашего договора. Вы платите в валюте и сети вашего договора, указанных в settlement.
Заказ может содержать более одного начисления, например Energy и отдельно тарифицируемую активацию. У каждого начисления свои время и курс. Суммы округляются один раз до шести знаков после запятой по банковскому правилу (к ближайшему четному); в котировке сохраняются зафиксированные в ней суммы. Сверяйте заказ по его начислениям, а не путем применения текущего курса к его общей сумме.
Все значения времени указаны в UTC. Все суммы представляют собой строки с десятичными числами, например "30000.000000" — парсите их с помощью десятичного типа данных (decimal), а не float.
Кредитный лимит
Netts устанавливает кредитный лимит вашего аккаунта: максимальную сумму, которую вы можете быть должны в любой момент времени. Он отображается в account и limits со значением "origin": "netts". Вы можете просматривать его, но не можете изменить или отключить — обратитесь к вашему менеджеру Netts, если вам требуется другой лимит.
Продукты и API-ключи делят этот единый кредитный лимит уровня аккаунта. Каждый новый заказ проверяется на соответствие каждому применимому лимиту. Если проверка выявляет недостаточность доступного кредита, заказ отклоняется до исполнения:
{
"detail": {
"code": 1004,
"msg": "Postpaid credit limit reached.",
"paymentMode": "postpaid",
"reason": "limit_reached",
"product": "*",
"period": "outstanding",
"limitId": 1
}
}Эндпоинт заказа возвращает ответ 402. Платеж снова освобождает лимит. Если проверка временно недоступна, эндпоинт заказа отвечает 503 с кодом 5036 — повторите попытку позже, за отклоненную попытку средства списаны не были. Доступная сумма, возвращаемая запросом на чтение, является текущим значением, а не бронью под будущий заказ; другие принятые заказы могут изменить ее.
Ваши собственные лимиты
В рамках лимита Netts вы можете настроить собственные, более низкие лимиты — чтобы контролировать расходы или ограничить отдельные продукты:
- Ваш собственный общий лимит — общая сумма задолженности, которую вы себе разрешаете, ниже лимита Netts.
- Лимит на продукт — сумма, которую может израсходовать один продукт, например
energy_5m.
Ваши лимиты никогда не увеличивают объем кредита. Лимиты на продукты не суммируются: при лимите Netts в 50 USD лимиты на продукты в 50 USD для energy_1h и 50 USD для energy_5m по-прежнему делят между собой 50 USD кредита уровня аккаунта. При проверке заказа применяется каждый относящийся к нему лимит, а раздел limits показывает, сколько можно потратить в данный момент по каждому продукту.
Лимит может учитывать:
period | Что учитывается |
|---|---|
outstanding | неоплаченные начисления плюс принятые, но еще не зафиксированные заказы |
day | начисления за текущие сутки UTC, включая оплаченные, плюс принятые, но еще не зафиксированные заказы |
week | начисления за текущую неделю UTC начиная с понедельника 00:00 UTC, включая оплаченные, плюс принятые, но еще не зафиксированные заказы |
order | сумма одного нового заказа |
Платеж уменьшает вашу задолженность, но не сбрасывает объем использования за день или неделю. Кредит от переплаты отображается как creditApplied и засчитывается один раз в счет вашей общей задолженности; он не прибавляется к лимиту каждого продукта.
Ваши лимиты задаются в валюте лимита Netts и не могут быть выше него. Если Netts снижает свой лимит ниже одного из ваших, в силе остается более строгое применимое ограничение.
Продукты: energy_1h, energy_5m, bandwidth, activation, aml_check.
Права API-ключа
Каждому API-ключу требуется право доступа для работы с этим разделом. Ваш менеджер Netts выдает его индивидуально для каждого ключа:
| Право | Разрешает |
|---|---|
billing.read | аккаунт, курс, лимиты, расход, счета и платежи |
limits.write | создание, изменение, отключение и включение ваших собственных лимитов |
Без этого права эндпоинт возвращает 403 с ошибкой billing_read_required или forbidden. Белый список IP-адресов ключа действует так же, как и для любого другого эндпоинта. Эти эндпоинты остаются доступными при нулевом балансе депозита.
Эндпоинты
| Эндпоинт | Назначение |
|---|---|
GET /apiv2/billing/account | кредитный лимит, задолженность и доступный остаток на данный момент |
GET /apiv2/billing/rate | ваш текущий курс TRX к валюте вашего договора |
GET /apiv2/billing/limits | все лимиты с использованными и доступными суммами, доступный остаток по каждому продукту |
POST /apiv2/billing/limits | создание, изменение, отключение и включение ваших собственных лимитов |
GET /apiv2/billing/usage | составляющие начислений, привязанные к их заказам |
GET /apiv2/billing/invoices | счета, отдельный счет с его начислениями |
GET /apiv2/billing/payments | платежи и кредит |
Формат ответа
{ "success": true, "data": { }, "timestamp": "2026-10-19T20:12:30+00:00" }Ошибка сервиса:
{
"success": false,
"error": { "code": "postpaid_required", "message": "this account has no postpaid billing" },
"timestamp": "2026-10-19T20:12:30+00:00"
}Отсутствующий или недействительный ключ, либо запрос с IP-адреса не из белого списка ключа, отклоняется API-шлюзом до того, как запрос достигнет сервиса, со статусом 401:
{ "detail": { "code": -1, "msg": "Invalid or missing API key" } }Код -2 с сообщением "Invalid API key or IP not in whitelist" означает, что IP-адрес отсутствует в белом списке ключа. Более 10 запросов в секунду или 300 в минуту с одного IP отклоняются со статусом 429 и телом {"message": "API rate limit exceeded"}.
| HTTP | code | Значение |
|---|---|---|
| 400 | invalid_request, invalid_amount, idempotency_key_required, invalid_idempotency_key | параметр отсутствует или имеет неверный формат |
| 403 | postpaid_required | у аккаунта не подключен постоплатный биллинг |
| 403 | postpaid_disabled | постоплатный биллинг приостановлен: вы можете читать данные, но не можете изменять лимиты |
| 403 | billing_read_required, forbidden | у ключа отсутствует право billing.read или limits.write |
| 403 | netts_limit_readonly | лимит установлен Netts и не может быть изменен |
| 404 | not_found | указанный лимит или счет не найден на вашем аккаунте |
| 409 | revision_conflict | лимит был тем временем изменен — запросите его заново |
| 409 | limit_exists | у вас уже есть лимит для этого продукта и периода |
| 409 | idempotency_conflict | заголовок Idempotency-Key уже использовался с другим запросом |
| 409 | no_account_limit | для аккаунта еще не установлен кредитный лимит со стороны Netts |
| 422 | above_account_limit | значение превышает лимит Netts |
| 422 | product_not_postpaid | продукт недоступен на постоплате |
| 422 | unit_mismatch | валюта лимита Netts изменилась — установите новое значение перед включением вашего лимита |
| 503 | unavailable | временно недоступно — повторите попытку позже |
| 503 | rate_unavailable | ваш курс временно недоступен — повторите попытку позже |