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

# Bulk payouts

> Disburse stablecoin or fiat payments to multiple recipients from a platform treasury wallet.

<Note>
  **Before you start:** the OMS API is in early access. Every endpoint, including the ones in this guide, requires an early-access API key. [Request access](https://info.polygon.technology/get-early-access?utm_source=docs\&utm_medium=card\&utm_campaign=oms_access) before you begin.
</Note>

## How it works

Send payments to a list of recipients from a central platform wallet. OMS converts USDC from your treasury to each recipient's local currency and delivers via ACH, wire, or SWIFT. This pattern covers payroll, contractor payments, marketplace settlements, and any flow where you control the source funds.

Each payout is a single quote and transaction. The source side is your platform customer's OMS wallet; the destination side is an [external account](/api-reference/overview#external-accounts) (an `ext_bankUs_`, `ext_bankIban_`, or `ext_bankCa_` bank account) referenced by its ID in the quote. Every transaction is owned by your platform `customerId`, and OMS records each side's identity on the transaction's `party` object. To reconcile a run, filter `GET /transactions?customerId=...`.

Register each recipient once before their first payout. Create a counterparty with `POST /counterparties` (`customerId` and `name`, plus optional contact and address details), then register their bank account with `POST /external-accounts`, setting `owner` to `{ "kind": "counterparty", "counterpartyId": ... }` and supplying the bank detail object that matches `type`. The account starts `pending` and becomes `active` once provisioning succeeds; quote against its `ext_` ID from then on.

<div style={{border:"1px solid #C8CFE1",borderRadius:"12px",overflow:"hidden",marginBottom:"24px"}}>
  <div style={{background:"linear-gradient(180deg,#EAE4F5 0%,#F6F3FB 100%)",borderBottom:"1px solid #D5C4F2",padding:"10px 16px",fontSize:"11px",fontWeight:"700",color:"#670DE5",letterSpacing:"0.06em",textTransform:"uppercase"}}>Per-recipient payout pattern</div>

  <div style={{padding:"16px"}}>
    <div style={{display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"16px"}}>
      <div style={{background:"#EAE4F5",border:"1px solid #D5C4F2",borderRadius:"8px",padding:"12px 20px",textAlign:"center"}}>
        <div style={{fontSize:"12px",fontWeight:"700",color:"#670DE5"}}>Platform treasury</div>
        <div style={{fontSize:"11px",color:"#670DE5",opacity:0.7,marginTop:"2px"}}>OMS custodial wallet</div>
      </div>
    </div>

    <div style={{overflowX:"auto"}}>
      <table style={{width:"100%",borderCollapse:"collapse",fontSize:"12px"}}>
        <thead>
          <tr style={{background:"#F6F3FB"}}>
            <th style={{padding:"8px 12px",textAlign:"left",fontWeight:"700",color:"#48526F",borderBottom:"1px solid #C8CFE1"}}>Recipient</th>
            <th style={{padding:"8px 12px",textAlign:"left",fontWeight:"700",color:"#48526F",borderBottom:"1px solid #C8CFE1"}}>Rail</th>
            <th style={{padding:"8px 12px",textAlign:"left",fontWeight:"700",color:"#48526F",borderBottom:"1px solid #C8CFE1"}}>Quote</th>
            <th style={{padding:"8px 12px",textAlign:"left",fontWeight:"700",color:"#48526F",borderBottom:"1px solid #C8CFE1"}}>Transaction</th>
          </tr>
        </thead>

        <tbody>
          <tr style={{borderBottom:"1px solid #EEF0F9"}}>
            <td style={{padding:"8px 12px",color:"#141635"}}>Alice</td>
            <td style={{padding:"8px 12px",color:"#141635"}}>ACH</td>
            <td style={{padding:"8px 12px",fontFamily:"'Geist Mono',ui-monospace,monospace",fontSize:"11px",color:"#141635"}}>wlt\_treasury → ext\_bankUs\_alice</td>
            <td style={{padding:"8px 12px",fontFamily:"'Geist Mono',ui-monospace,monospace",fontSize:"11px",color:"#141635"}}>txn\_alice</td>
          </tr>

          <tr style={{borderBottom:"1px solid #EEF0F9"}}>
            <td style={{padding:"8px 12px",color:"#141635"}}>Bob</td>
            <td style={{padding:"8px 12px",color:"#141635"}}>ACH</td>
            <td style={{padding:"8px 12px",fontFamily:"'Geist Mono',ui-monospace,monospace",fontSize:"11px",color:"#141635"}}>wlt\_treasury → ext\_bankUs\_bob</td>
            <td style={{padding:"8px 12px",fontFamily:"'Geist Mono',ui-monospace,monospace",fontSize:"11px",color:"#141635"}}>txn\_bob</td>
          </tr>

          <tr>
            <td style={{padding:"8px 12px",color:"#141635"}}>Carlos</td>
            <td style={{padding:"8px 12px",color:"#141635"}}>SWIFT</td>
            <td style={{padding:"8px 12px",fontFamily:"'Geist Mono',ui-monospace,monospace",fontSize:"11px",color:"#141635"}}>wlt\_treasury → ext\_bankIban\_carlos</td>
            <td style={{padding:"8px 12px",fontFamily:"'Geist Mono',ui-monospace,monospace",fontSize:"11px",color:"#141635"}}>txn\_carlos</td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</div>

## What is available today

The per-recipient mechanics are part of the canonical API. Register each recipient as a counterparty with `POST /counterparties` and their bank account with `POST /external-accounts` (owner kind `counterparty`). For each recipient you then create a `POST /quotes` with your treasury wallet as the `source` and the recipient's bank as the `destination` (`bankUs`, `bankIban`, or `bankCanada`, referenced by its `ext_` ID), then execute it with `POST /transactions` referencing the quote by `quoteId`. ACH, achSameDay, wire, RTP, and SWIFT (IBAN) rails are selected with the destination's `network`. Use a deterministic `Idempotency-Key` on each request for safe retries, attach `metadata` for reconciliation, and track each payout through the `transaction.cryptoToFiat.processing`, `transaction.cryptoToFiat.completed`, and `transaction.cryptoToFiat.failed` events. Scope a run with `GET /transactions?customerId=...`.

Bulk payouts are enabled per project through early access; contact us before you build against them.

## Planned capabilities

* Batch endpoints for parallel quote creation and transaction execution across all recipients

For a step-by-step walkthrough of a single third-party payout with full request and response payloads, see [Pay a third party](/payments/guides/third-party-payouts).

***

<Note>
  Bulk payouts are under active development and available through early access. Contact us to enable it for your project.

  <Card title="Register interest" icon="envelope" href="https://info.polygon.technology/get-early-access?utm_source=docs&utm_medium=card&utm_campaign=oms_access">
    Share your use case and we'll reach out when bulk payouts are available.
  </Card>
</Note>
