Skip to main content
Errors return a non-2xx HTTP status and an envelope with success: false:
Always branch on the HTTP status code and surface message for debugging. Log request_id — quote it when contacting support.

Status codes

Idempotency and duplicates

/pay and /deposit accept a reference. If you resend a request with a reference that already exists, you get 409 with the existing transaction:
Always set a stable, unique reference per logical transaction so safe retries don’t create duplicate charges.

Handling pending payments

A 202 from /pay is not a completed payment. Poll GET /merchant/api/transactions/{id} or wait for the payment_received webhook. Transaction status values you may see: