Request fields#
| Field | Type | Required | Description |
|---|---|---|---|
customer_id | String | Yes | Stable identifier, 1–128 characters |
webhook_url | String | No | Your callback URL; keep it stable for this customer |
No invoice amount or order ID is required. Repeating the same customer ID under the same merchant returns the saved addresses and payment link. Changing its saved callback URL can produce an IDEMPOTENCY_CONFLICT.
Request example
Server-side
curl -X POST https://api.niripay.com/api/v1/merchant/crypto/addresses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "customer-42",
"webhook_url": "https://merchant.example/webhooks/crypto"
}'const instructions = await niripayJson("/api/v1/merchant/crypto/addresses", {
customer_id: "customer-42",
webhook_url: "https://merchant.example/webhooks/crypto"
});Response fields#
The standard status / data envelope contains these instruction fields:
| Field | Meaning |
|---|---|
currency / network | USDT / TRON |
payment_type | static_wallet |
payment_link | Reusable hosted payment instructions |
addresses | Saved address or null, keyed by provider |
enabled / providers | Merchant activation and provider availability |
ready | Crypto is enabled and at least one enabled wallet has an address |
customer_id / purpose | Customer association and address purpose |
provisioning_error | Provisioning issue, or null |
cutoff / fee_bps | Configured fee-policy values; receipt pricing remains authoritative |
Handle partial provisioning#
If an address is missing, retry this authenticated request with the same customer and callback details. Refreshing the checkout page only reads saved instructions; it does not provision missing addresses. Payments to saved addresses continue to be recognized.
Use the exact API identifiers when integrating. Dashboard presentation labels are not replacements for provider keys or transaction IDs.