How currency works in a payment
When you create a payment intent, you pass a fiatamount and currency:
currency does two things:
- It sets the price the customer sees and the
settlement_currencyon the intent. A149.00 EURintent always settles as149.00 EUR, whatever crypto the customer sends. - It is the basis for the exchange rate. SouthPay converts the fiat amount to the equivalent crypto amount for each asset at a rate it locks at creation time (the
exchange_rate_snapshoton every payment address).
How payment addresses get created
On every payment intent, SouthPay generates one deposit address per crypto asset your store has enabled. Each address carries the exact crypto amount due at the locked rate.- The token list is per store, not per request. If an intent has addresses for ETH and USDC on Ethereum, it is because the store enabled those two assets. Enable or disable assets from the dashboard; you do not choose them in the API call.
- One address per enabled asset. Enable five assets and every intent returns five addresses. The customer pays exactly one of them.
- Amounts are atomic.
crypto_amount_atomicis in the asset’s smallest unit. Divide by10^atomic_decimalsfor a human-readable amount. - An asset is skipped if no rate is available. If a live rate cannot be fetched for an enabled asset at creation time, that address is left off the intent rather than failing the whole request.
The definitive list of assets a given store accepts is whatever that store has enabled. The tables below are the full catalog you can enable from, not what any single store accepts by default.
Fiat currencies
These ten are the values accepted forcurrency on a payment intent. The intent settles in the same currency.
Crypto assets
Customers can pay with any of the assets below that your store has enabled. The list is grouped by token, so you can scan for the coin first and see which networks carry it. Theasset_id is the value returned under supported_asset.asset_id on each payment address, so you can match an address back to its token and network.
Need a network or token that is not listed here? Email [email protected] and ask for it. We add assets on request.
USDC on Stellar carries 7 decimals, not 6 like every other USDC. Read atomic_decimals off the asset rather than assuming a value per token.
Deposit chains are not payout networks
These are two different lists and conflating them is the most common mistake on this page.
A payout must go to a destination on the same network as the asset. See Payout destinations.
Only
USDT and USDC are eligible for the fiat off-ramp. Every other asset can be paid out on-chain only.
Test mode
In test mode you get exactly one asset, and it is not one of the ones above.
Sepolia USDT and USDC exist in the catalogue but are inactive, so no test payment intent ever returns an address for them. Anything that depends on which assets a customer sees has to be validated in live mode. See Environments.

