Originating a stablecoin payout
Send stablecoins from one of your stablecoin Internal Accounts to an external wallet by creating a Payment Order with type: "stablecoin".
Example use cases:
- Fund a neobank or exchange wallet
- Send stablecoins to an international recipient
Before you send a stablecoin payout, make sure you have a stablecoin Internal Account and a Counterparty whose External Account holds the destination wallet address.
Blockchain Network Selection
The requested_account_number_types value determines the blockchain network for the provisioned address. For example, ethereum_address provisions an EVM-compatible address. To use another network, request the matching account_number_type.
See Supported stablecoins & blockchain networks before you create the counterparty.
Create the Payment Order
curl --request POST \
-u ORGANIZATION_ID:API_KEY \
--url https://app.moderntreasury.com/api/payment_orders \
-H 'Content-Type: application/json' \
-d '{
"type": "stablecoin",
"amount": 100000,
"direction": "credit",
"currency": "USDC",
"originating_account_id": "<STABLECOIN_INTERNAL_ACCOUNT_ID>",
"receiving_account_id": "<RECEIVING_EXTERNAL_ACCOUNT_ID>"
}'
amount uses the coin's smallest unit as an integer. For example, USDC uses 6 decimals, so 10000000 = 10.00 USDC.
Stablecoin wallet addresses are validated and screened before payment execution.
Stablecoin Payment Order Response
{
"id": "c5f4009c-bdd6-4cc1-84b2-17974ac9e77a",
"object": "payment_order",
"type": "stablecoin",
"amount": 100000,
"direction": "credit",
"currency": "USDC",
"status": "approved",
"effective_date": "2026-04-29",
"priority": "normal",
"originating_account_id": "<STABLECOIN_INTERNAL_ACCOUNT_ID>",
"receiving_account_id": "<RECEIVING_EXTERNAL_ACCOUNT_ID>",
"receiving_account_type": "external_account",
"receiving_account": {
"id": "<RECEIVING_EXTERNAL_ACCOUNT_ID>",
"object": "external_account",
"account_type": "other",
"party_name": "Acme Payments",
"account_details": [
{
"id": "ba9eb4d1-2423-4c05-a65b-e69ad78fe489",
"object": "account_detail",
"account_number": "0x1234567890abcdef1234567890abcdef12343f9a",
"account_number_safe": "3f9a",
"account_number_type": "ethereum_address"
}
],
"routing_details": []
},
"counterparty_id": "fb9d6c24-da0b-4b43-81ef-e84440d928c0",
"description": null,
"statement_descriptor": null,
"remittance_information": null,
"metadata": {},
"transaction_ids": [],
"created_at": "2026-04-29T15:30:00Z",
"updated_at": "2026-04-29T15:30:00Z"
}Track the payment
Subscribe to Payment Order webhooks to follow the payment through its lifecycle:
payment_order.completed— the transfer has settled on chain.payment_order.processing— (optional) the transfer is in flight on the network.
On-chain stablecoin transfers cannot be returned once settled.
Updated about 1 month ago