后付费计费
通过后付费计费,您可以在无需预先充值押金的情况下订购 Energy、Bandwidth、激活以及 AML 检查。服务按适用的客户专用资费计价,包括适用的折扣。费用、付款和调整项将根据您合同中的计费和付款条款反映在您的发票中。
Netts 可应企业账户的申请开通后付费功能。本节中的端点仅对开通了后付费计费的账户响应;其他账户将收到 403 postpaid_required。
工作原理
- 照常下单。 使用相同的下单端点、相同的 API 密钥。后付费账户在执行这些订单时无需押金余额。价格为您合同约定的价格,包含您的折扣。
- 已交付的服务记录为扣费项。 订单被接受本身并不构成已交付的服务。一旦服务或订单中可单独计费的部分完成交付,扣费项就会出现在用量中——这可能会晚于订单响应的时间。
- 价格和汇率已锁定并保留。 有效的报价会锁定该订单在您合同下的价格。如果没有报价,则适用下单时您合同约定的价格,并按服务交付时的汇率计算您合同币种的金额。在您查看用量、收到发票或进行付款时,已记录的金额不会被重新计算。
- 您接收并支付发票。 计费周期和付款条款以您合同中约定的为准。发票列出该周期的服务、已应用的付款和调整项,以及仍需支付的金额;付款不会删除服务记录。参见发票和付款。付款币种、网络和付款期限显示在账户中的
settlement内。多付的款项将作为信用额度保留在您的账户中,并用于抵扣后续费用。
资费、报价和记录的汇率
报价(freezePrice)可在 1 分钟内锁定您合同下的价格。在该分钟内使用 quoteId 和相同的参数下单,即使价格发生变动或服务稍后交付,也按报价计费。报价为可选操作;请求字段请参见 1 小时 Energy 和 5 分钟 Energy。
如果没有报价,则合同币种的金额按服务交付时的汇率计算,而不是您查看价格或账户时的汇率。当前汇率(您的汇率以及账户响应中显示的汇率)仅供参考;它不构成对未来订单汇率的承诺。
AML 检查以美元计价,并以您合同的币种记录;TRX 等值金额按检查完成时的汇率计算。切勿根据取整后的 TRX 金额反向重新计算 AML 扣费。
金额以 TRX 和您合同的币种显示;您的限额按您合同的币种计算。usdPerTrx 为 TRX 对您合同币种的汇率。您使用合同约定的币种和网络进行付款,具体显示在 settlement 中。
一个订单可能包含多个扣费项,例如 Energy 和可单独计费的激活。每个扣费项都有各自的时间和汇率。金额按四舍六入五成双(half-even)规则一次性保留到六位小数;报价将保留其报出的金额。请根据各个扣费项对订单进行对账,而不是将当前汇率直接应用于订单总额。
所有时间均为 UTC。所有金额均为十进制字符串,例如 "30000.000000"——请使用高精度十进制类型进行解析,不要使用浮点型。
信用限额
Netts 设定您账户的信用限额:即您在任何时刻所能欠款的最高金额。它显示在账户和限额中,带有 "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 的情况下,energy_1h 的 50 USD 产品限额与 energy_5m 的 50 USD 产品限额仍然共享 50 USD 的账户级信用额度。订单检查会应用每一个相关限额,并且限额会显示每个产品当前可消费的金额。
限额可统计的周期:
period | 统计内容 |
|---|---|
outstanding | 未付扣费,加上已接受但尚未记录的订单 |
day | 当前 UTC 日的扣费(包含已支付部分),加上已接受但尚未记录的订单 |
week | 从周一 00:00 UTC 起算的当前 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 不在密钥的白名单中。来自同一 IP 的每秒超过 10 次或每分钟超过 300 次的请求将被拒绝,返回 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 | 您的汇率暂时不可用——请稍后重试 |