NiriPayDocs
Dashboard
DocumentationAPI referenceGuidesMerchant API v1 / v2

Customer addresses

Create reusable USDT payment instructions for a customer.

POST/api/v1/merchant/crypto/addresses
Bearer authentication•Server-side only

Request fields#

FieldTypeRequiredDescription
customer_idStringYesStable identifier, 1–128 characters
webhook_urlStringNoYour 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"
  }'

Response fields#

The standard status / data envelope contains these instruction fields:

FieldMeaning
currency / networkUSDT / TRON
payment_typestatic_wallet
payment_linkReusable hosted payment instructions
addressesSaved address or null, keyed by provider
enabled / providersMerchant activation and provider availability
readyCrypto is enabled and at least one enabled wallet has an address
customer_id / purposeCustomer association and address purpose
provisioning_errorProvisioning issue, or null
cutoff / fee_bpsConfigured 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.

NiriPay developer documentationSource reviewed · 27 Oct 2026