Payment Routes
Stables Payment Routes give your customers dedicated, reusable payment details for moving between fiat and stablecoins.
Payment Routes support onramps today, with offramps coming soon.
For onramps, a virtual account is issued in your customer's name with local banking details, so they can fund their account using familiar domestic payment methods. Once funds are received, Stables handles reconciliation, conversion, and settlement into stablecoins at your configured wallet destination.
For offramps, a wallet address will be linked to your customer's local banking details, allowing them to send stablecoins and receive local currency into the configured bank account destination.
Supported Payment Rails
- AUD Virtual Accounts
Australian BSB and account numbers for domestic bank transfers. - AED Virtual Accounts
UAE local bank account details for domestic bank transfers.
In the works
- USD Virtual Accounts
U.S. account and routing numbers for ACH and domestic wire transfers. - SEPA Virtual IBAN
Euro IBANs for receiving SEPA payments across Europe. - GBP Virtual Accounts
U.K. account numbers for receiving Faster Payments (FPS).
How Developers Use Payment Routes
Stables Payment Routes are commonly used to:
- Embed a seamless fiat to stablecoin on-ramp directly in your platform
- Accept customer payments in local currency and settle in stablecoins
High-level Flow
- Generate a virtual account for your customer and specify the destination blockchain network, stablecoin asset, and wallet address where funds should be delivered.
- Stables provisions dedicated local fiat deposit details in the customer's name (e.g. account number, routing details, or IBAN depending on the rail).
- The customer sends fiat funds to the provided virtual account using the supported local payment rail (such as ACH, SEPA, FPS, or domestic bank transfer).
- Stables monitors the virtual account, receives the incoming fiat funds, and reconciles the deposit against the correct customer.
- Once funds are confirmed and cleared, the fiat amount is converted into the designated stablecoin based on the applicable FX rate and fees.
- The stablecoins are then transferred on-chain to the specified wallet address on the selected network, completing the fiat to stablecoin flow.
Create a Virtual Account
Request
curl -L \
--request POST \
--url 'https://api.stables.money/api/v1/customers/{customerId}/virtual-accounts' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--header 'Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000' \
--header 'Content-Type: application/json' \
--data '{
"source": {
"currency": "AUD"
},
"metadata": {
"internal_reference": "client-2041"
},
"destination": {
"currency": "usdt",
"payment_rail": "tron",
"address": "TUVPATBKPjUuN5pBkigmfQtUR9yoYFhvv7"
}
}'Response
status is typically pending immediately after creation while the provider activates the account (this can take a few seconds for AUD virtual accounts), then transitions to activated once confirmed. Poll the virtual account or listen for status-change events rather than assuming activated on creation.
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"status": "pending",
"customer_id": "123e4567-e89b-12d3-a456-426614174000",
"developer_fee_percent": "0",
"created_at": "2026-04-01T01:12:37.384Z",
"source_deposit_instructions": {
"currency": "AUD",
"payment_rails": [
"npp"
],
"bank_name": "Australian Bank",
"bank_address": "123 Smith Street",
"bank_beneficiary_name": "John Smith",
"bank_beneficiary_address": "321 Smith Street",
"bank_account_number": "1111111111",
"bank_routing_number": "111111",
"account_holder_name": "John Smith"
},
"deposit_handling_mode": "auto_payout",
"destination": {
"currency": "usdt",
"payment_rail": "tron",
"address": "TUVPATBKPjUuN5pBkigmfQtUR9yoYFhvv7"
}
}