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.