> ## 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.

# Global remittance

> Cross-border money transfer: fiat in, stablecoin settlement on Polygon, fiat out.

> [!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://polygon.technology/get-access?utm_source=docs\&utm_medium=card\&utm_campaign=oms_access) before you begin. The corridors and rails available to you depend on how your project is configured; contact us before you build against them.

A remittance in OMS is two flows joined by the sender's OMS wallet: the sender funds the wallet with fiat, which settles as USDC, then you pay out from that wallet to the recipient. There is no single remittance endpoint; this page shows which guide covers each leg.

Remittance flow

1
Sender
→
OMS
Fund with a bank transfer or cash

2
OMS
Converts fiat to USDC (cashToCrypto / fiatAccountToCrypto)

3
Polygon
USDC settles onchain in the sender's OMS wallet

4
OMS
Converts USDC to recipient currency (cryptoToFiatAccount / cryptoToCash)

5
OMS
→
Recipient
Delivers USD or CAD to a bank account, or USD as cash pickup

## Step 1: Fund the sender's wallet

The sender is your customer. Pick the funding route that fits them:

* **Bank transfer:** give the sender a [virtual account](https://docs.polygon.technology/payments/guides/virtual-accounts.md) whose destination is their OMS wallet. Each ACH or wire deposit is converted to USDC automatically.
* **Cash:** issue a [cash-in](https://docs.polygon.technology/payments/guides/cash-in.md) code the sender takes to a retail location.

Wait for the funding transaction to reach `completed` (`transaction.statusChanged`) before you pay out.

## Step 2: Register the recipient

The recipient is a counterparty of the sender. Create it with `POST /counterparties`, then register the recipient's bank account with `POST /external-accounts` and `owner: { "kind": "counterparty", "counterpartyId": "ctp_..." }`:

* `bankUs` for a US account, paid in USD.
* `bankIban` for an IBAN account, paid in USD over SWIFT.
* `bankCanada` for a Canadian account, paid in USD over SWIFT or CAD over the local rail.

Call `GET /reference/account-type-requirements?customerId=cst_...` to see which account types your project can create and the fields each needs. [Pay a third party](https://docs.polygon.technology/payments/guides/third-party-payouts.md) has the full request and response bodies.

## Step 3: Pay out

Create a quote from the sender's OMS wallet to the recipient's account and accept it with `POST /transactions`, as in [Bank transfers](https://docs.polygon.technology/payments/guides/bank-transfers.md). The quote locks the rate and fees in `pricing` (`exchangeRate` and `fees`) until `expiresAt`, so show the recipient amount to the sender before they confirm.

For a recipient who wants cash in the US, use a `cash` destination instead; see [Cash pickup](https://docs.polygon.technology/payments/guides/cash-pickup.md).

## Track the remittance

Each leg is its own transaction. Put a shared `metadata` key (for example `remittanceId`) on the payout quote, which copies it to the payout transaction, and record the funding transaction's ID alongside it. Follow both with `transaction.statusChanged`. The payout transaction's `destination.owner` names the recipient counterparty, and its payout transfer (`GET /transfers/{transferId}`) carries the bank references for tracing.

Verification of the sender is set per project. Depending on your configuration, OMS verifies customers or relies on your own verification.
