Skip to main content
Use the sandbox base URL and an HMAC credential issued for sandbox. See Authentication for the canonical signing string and Environments for current hosts.

Before you start

Have Zennopay enable the sandbox payout destination and provision test funds in its currency. This example uses a Vietnam bank destination and VND. If using the funding flow, deposit USD and request a conversion, then wait for available VND before creating a payout. A USD deposit alone cannot fund this VND payout. Sign each request with a fresh timestamp and nonce. Keep the payout’s idempotency key unchanged across retries.
1

Create a beneficiary

Sign and send:
Save the returned ben_... identifier. The response contains only account_last4, never the full account number.
2

Create an idempotent payout

Generate one stable key for this business operation:
A new payout returns 202 Accepted and Idempotent-Replayed: false. Keep the returned pout_... ID.
3

Retrieve the result

Sign GET /v1/payouts/{payout_id}. Continue until the status is completed, failed, or reversed, or handle the equivalent webhook.
4

Verify retries

Repeat the identical create request and key. The API returns the original payout with 200 OK and Idempotent-Replayed: true. Changing the request under that key returns duplicate_payout.
Money fields are strings. For VND, "125000" means 125,000 dong. Do not send 125000, "125000.00", or floating-point values.
Next, run every scenario in Sandbox testing.