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.