Skip to main content
Platform Payouts lets you pay sellers, suppliers, and other bank beneficiaries from your backend. Fund your balance, create a payout with a stable idempotency key, and track the result through the API or signed webhooks. The API checks the destination and available balance before accepting a payout. Accepted payouts are processed asynchronously.
A 202 Accepted response means the payout is durable and processing. It is not proof that the beneficiary received funds. Poll or consume webhooks until the payout becomes completed, failed, or reversed.

Fund, send, and track

  1. Fund: deposit USD using your assigned funding instructions, then request conversion into the payout currency. Local funds become available after Zennopay operations confirms settlement.
  2. Send: create a stored or inline beneficiary and submit a payout. The API reserves the required amount from the available balance in that currency.
  3. Track: save the payout ID and your reference. Use signed webhooks or status reads to keep your records current.
See Fund your payout balance for the Console flow, API requests, and the difference between deposited, reserved, and available funds.

API behavior

  • Server-to-server only. Requests use the same HMAC signing scheme as the Partner API. Never expose the credential to a browser or app.
  • Int64-safe money. Every monetary field is a base-10 signed-int64 string. VND values are whole dong—never decimals.
  • Asynchronous delivery. An accepted payout remains retrievable while Zennopay processes the bank transfer.
  • Tenant and environment isolation. Balances, beneficiaries, payouts, and routes are bound to the authenticated tenant and test/live mode.
  • Stable idempotency. Retrying the same request with the same key returns the original payout. Reusing a key for different input fails.

Lifecycle

A payout exposes created, processing, completed, failed, or reversed. Internal queue and recovery states are intentionally collapsed into the public lifecycle. The Payouts API reference owns the status definitions, filters, cancellation behavior, and errors.

Availability

Destinations and currencies are enabled per account and environment. Confirm availability during onboarding, then test the destination with your sandbox credentials. Creating a beneficiary alone does not confirm payout readiness; complete a sandbox payout and verify its final state.

Live prerequisites

Before sending live payouts, confirm account approval and destination activation with Zennopay, configure your production credentials and egress IPs, fund the required payout currency, and verify your HTTPS webhook handler. Sandbox success does not itself enable live mode.

Quickstart

Create a beneficiary, submit an idempotent payout, and retrieve its status.

Beneficiaries

Store a reusable bank destination without exposing it in later requests.

Payouts API

Request and response fields, lifecycle, idempotency, filters, and errors.

Payout webhooks

Verify signed status events and handle at-least-once delivery.

Sandbox testing

Exercise success, failure, processing, ambiguity, and compliance outcomes.