Prerequisites
Before you begin:- Stablecoin Payouts is enabled on your Circle Mint account. The product is available through Circle LLC (US), Circle Singapore (CIRCLE_SG), and Circle SAS (CIRCLE_FR). To request activation, contact Circle Mint.
- A Circle Mint sandbox API key. See Get started with Circle Mint.
- A source wallet ID (
source.id) with funds available for payouts. - For CIRCLE_SG and CIRCLE_FR: the Virtual Asset Service Provider (VASP) that holds the recipient’s wallet, when the wallet is hosted.
- The destination address is on a blockchain supported by the Stablecoin Payouts API. See Supported chains and currencies.
For XRP destinations (
chain: "XRP"), the Stablecoin Payouts API supports only
the classic-address format (for example, rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY).
The x-address format is not supported. Use the addressTag field to specify the
destination tag.Steps
The flow differs by Circle entity: Circle LLC (US) applies Travel Rule data at a $3,000 USD-equivalent threshold, while Circle Singapore (CIRCLE_SG) and Circle SAS (CIRCLE_FR) require beneficiary identity, wallet ownership, and a payment reason code on every payout. Circle SAS recipients can include an optional legal entity identifier (LEI). Select the tab for the Circle entity that books your payout.- Circle LLC (US)
- Circle Singapore
- Circle SAS (France)
Step 1. Register the recipient
Add the recipient to your address book withPOST /v1/addressBook/recipients.
Provide idempotencyKey, chain, and address. The metadata fields
(nickname, email, bns) are optional.pending according to your Mint Console
Delayed withdrawals setting. When delayed withdrawals are on, new recipients
stay inactive for 24 hours before becoming active. When delayed withdrawals
are off, recipients become active in seconds.Step 1.1. Wait for active status
The recipient must beactive before you submit a payout.- Webhook
- Polling
Subscribe to
addressBookRecipients notifications. Circle sends an event when
the recipient is created and when its status changes.Step 2. Send the payout
CallPOST /v1/payouts with the source wallet, the recipient id as the
destination, and the amounts.- Below threshold
- At or above threshold
Step 3. Confirm completion
Wait for the payout to reachstatus: complete.- Webhook
- Polling
Subscribe to
payouts notifications. The payload includes the payout under the
payout key.Failure modes
Failures fall into two categories. Synchronous validation errors return HTTP 4xx, so you fix the request body and retry. Asynchronous risk evaluation accepts the request with HTTP 201, then transitions the payout tostatus: failed.
Resubmit with a new idempotencyKey after correcting the underlying data.
| Code | Type | Cause | Resolution |
|---|---|---|---|
transaction_denied | Asynchronous | Travel Rule data is missing or invalid. The response carries riskEvaluation.decision: denied and riskEvaluation.reason: 3220. | Review source.identities, the recipient’s identity and ownership (CIRCLE_SG and CIRCLE_FR), the vaspId (CIRCLE_SG and CIRCLE_FR), and purposeOfTransfer (CIRCLE_SG and CIRCLE_FR). Resubmit with a new idempotencyKey. |
insufficient_funds | Asynchronous | The source wallet does not have enough balance for amount plus fees. | Fund the source wallet, then resubmit with a new idempotencyKey. |
5020 | Synchronous (HTTP 400) | purposeOfTransfer is missing or invalid on a CIRCLE_SG or CIRCLE_FR payout. | Provide a valid PMT code other than PMT006. |
2024 to 2037 | Synchronous (HTTP 400) | Address Book validation failures on CIRCLE_SG and CIRCLE_FR: missing identity, missing ownership, missing or disallowed vaspId, or PATCH attempted on identity or ownership. | Add the missing or corrected field on the initial create call. For 2036 and 2037 PATCH errors, register a new recipient instead. |
See also
- How stablecoin payments work: conceptual overview of the payin and payout flows.
- Travel rule compliance: identity, ownership, VASP, and payment-reason-code schemas.
- Supported chains and currencies: blockchains and currencies available through Stablecoin Payouts.
- Transfer Onchain: first-party transfers between wallets your business owns through the Core API.