快速开始
在控制台「企业设置 → API 密钥」创建密钥,然后调用任意接口。沙箱密钥以 np_test_ 开头。
# 查询余额
curl https://api.nervpay.com/v1/balances \
-H "Authorization: Bearer np_test_4a71…"
# 返回
{
"data": [
{ "currency": "USD", "available": 128453000, "pending": 8620000, "reserved": 2400000 },
{ "currency": "EUR", "available": 34218000, "pending": 1850000, "reserved": 0 }
]
}
ⓘ金额一律以最小货币单位整数传输(美元为分),避免浮点误差。展示层再做格式化。
认证与幂等
Authorization: Bearer np_live_xxxxxxxxxxxx
Idempotency-Key: "pay_2026_09_12_001" # 写接口必带,24h 内重复请求返回首次结果
X-NERVpay-Signature: t=1757654321,v1=... # Webhook 验签
同一个幂等键重复提交不会重复扣款;键相同但参数不同会返回 409 idempotency_conflict。
接口列表
创建一个付款
curl -X POST https://api.nervpay.com/v1/payouts \
-H "Authorization: Bearer np_live_…" \
-H "Idempotency-Key: po_20260912_001" \
-d '{
"beneficiary_id": "ben_8f21c",
"amount": 12800000, // 128,000.00 CNY
"currency": "CNY",
"method": "local", // local | swift | stablecoin
"source_currency": "USD",
"purpose": "supplier_payment"
}'
// 201 Created
{
"id": "tx_9f2a1c",
"status": "requires_approval",
"quote": { "rate": 7.0759, "source_amount": 1808700 },
"risk": { "score": 34, "status": "clear" }
}
!金额折合 ≥ USD 10,000 或风险分 ≥ 55 时返回
requires_approval,需要另一位成员审批后才会出款。Webhook
事件以 POST 投递到你的 HTTPS 地址,失败按 1 分钟 / 5 分钟 / 30 分钟 / 2 小时重试,共 8 次。
event: payment.succeeded | payment.failed | payment.refunded
payout.paid | payout.failed | payout.returned | payout.approved
account.activated | fx.executed | kyb.approved
验签:用 t + . + 原始报文做 HMAC-SHA256,与 v1 比对;时间戳超过 5 分钟拒绝。
错误码
Sandbox
先写代码,
再谈生意。
沙箱密钥即刻可用,无需签约。生产密钥在 KYB 通过后签发。