> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zennopay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Platform Payouts

> Send asynchronous bank payouts from a prefunded balance with one server-to-server API.

<div className="zp-product-banner">
  <img src="https://mintcdn.com/zennopay/gdLJl9TI9ZGoj1P7/images/products/platform-payouts-glass.webp?fit=max&auto=format&n=gdLJl9TI9ZGoj1P7&q=85&s=3e724c171a3a66c75b6e0e1ee4070e07" sizes="(max-width: 767px) 320px, 480px" alt="" width="960" height="640" decoding="async" data-path="images/products/platform-payouts-glass.webp" />
</div>

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.

<Info>
  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`.
</Info>

## 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](/platform-payouts/funding) 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](/platform-payouts/payouts) 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.

## Related guides

<CardGroup cols={2}>
  <Card title="Quickstart" icon="bolt" href="/platform-payouts/quickstart">
    Create a beneficiary, submit an idempotent payout, and retrieve its status.
  </Card>

  <Card title="Beneficiaries" icon="building-columns" href="/platform-payouts/beneficiaries">
    Store a reusable bank destination without exposing it in later requests.
  </Card>

  <Card title="Payouts API" icon="money-bill-transfer" href="/platform-payouts/payouts">
    Request and response fields, lifecycle, idempotency, filters, and errors.
  </Card>

  <Card title="Payout webhooks" icon="webhook" href="/platform-payouts/webhooks">
    Verify signed status events and handle at-least-once delivery.
  </Card>

  <Card title="Sandbox testing" icon="flask" href="/platform-payouts/testing">
    Exercise success, failure, processing, ambiguity, and compliance outcomes.
  </Card>
</CardGroup>
