Exchange Routes
Exchange routes define the available conversion paths between fiat currencies and digital assets. Before creating an order, you should verify that the desired route is supported and currently available.
List All Routes
Retrieve the full list of supported exchange routes.
Endpoint:
GET /v1/exchange-routes/
Request:
curl https://api.stablegate.com/v1/exchange-routes/ \
--header 'X-Api-Key: YOUR_API_KEY'
Response:
[
{
"source": {
"rail": "sepa",
"asset": {
"code": "EUR",
"fraction_digits": 2
}
},
"destination": {
"rail": "ethereum",
"asset": {
"code": "USDT",
"fraction_digits": 6
}
}
},
{
"source": {
"rail": "sepa",
"asset": {
"code": "EUR",
"fraction_digits": 2
}
},
"destination": {
"rail": "ethereum",
"asset": {
"code": "USDC",
"fraction_digits": 6
}
}
},
{
"source": {
"rail": "sepa",
"asset": {
"code": "EUR",
"fraction_digits": 2
}
},
"destination": {
"rail": "ethereum",
"asset": {
"code": "EURC",
"fraction_digits": 6
}
}
},
{
"source": {
"rail": "ethereum",
"asset": {
"code": "USDT",
"fraction_digits": 6
}
},
"destination": {
"rail": "sepa",
"asset": {
"code": "EUR",
"fraction_digits": 2
}
}
},
{
"source": {
"rail": "ethereum",
"asset": {
"code": "USDC",
"fraction_digits": 6
}
},
"destination": {
"rail": "sepa",
"asset": {
"code": "EUR",
"fraction_digits": 2
}
}
},
{
"source": {
"rail": "ethereum",
"asset": {
"code": "EURC",
"fraction_digits": 6
}
},
"destination": {
"rail": "sepa",
"asset": {
"code": "EUR",
"fraction_digits": 2
}
}
}
]
Response Fields
| Field | Type | Description |
|---|---|---|
source.rail | string | Payment rail code for the incoming side (e.g., sepa, ethereum) |
source.asset.code | string | Currency code for the incoming asset (e.g., EUR, USDT) |
source.asset.fraction_digits | integer | Maximum decimal places for amounts in this asset |
destination.rail | string | Payment rail code for the outgoing side |
destination.asset.code | string | Currency code for the outgoing asset |
destination.asset.fraction_digits | integer | Maximum decimal places for amounts in this asset |
Understanding fraction_digits
The fraction_digits value indicates the maximum decimal precision for amounts:
EURhasfraction_digits: 2— amounts can have up to 2 decimal places (e.g.,1000.50)USDChasfraction_digits: 6— amounts can have up to 6 decimal places (e.g.,1000.123456)
Always respect fraction_digits when specifying amounts in order creation or fee checks.
Check Route Availability
A route may exist in the system but be temporarily unavailable. Before creating an order, check that the specific route is currently operational.
Endpoint:
POST /v1/exchange-routes/check/
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
source.rail | string | Yes | Source payment rail code |
source.asset_code | string | Yes | Source currency code |
destination.rail | string | Yes | Destination payment rail code |
destination.asset_code | string | Yes | Destination currency code |
Example: Route Available
Request:
curl https://api.stablegate.com/v1/exchange-routes/check/ \
--request POST \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"source": {
"rail": "sepa",
"asset_code": "EUR"
},
"destination": {
"rail": "ethereum",
"asset_code": "USDC"
}
}'
Response:
{
"available": true,
"route": {
"source": {
"rail": "sepa",
"asset": {
"code": "EUR",
"fraction_digits": 2
}
},
"destination": {
"rail": "ethereum",
"asset": {
"code": "USDC",
"fraction_digits": 6
}
}
}
}
Example: Route Unavailable
Request:
curl https://api.stablegate.com/v1/exchange-routes/check/ \
--request POST \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"source": {
"rail": "swift",
"asset_code": "USD"
},
"destination": {
"rail": "ethereum",
"asset_code": "USDC"
}
}'
Response:
{
"available": false,
"route": null
}
Response Fields
| Field | Type | Description |
|---|---|---|
available | boolean | true if the route is currently operational, false otherwise |
route | object | null | Route details when available, null when not |
Best Practices
- Cache routes locally but refresh periodically. Routes don't change frequently, but availability can.
- Always check availability before creating an order to avoid unnecessary errors.
- Use the check endpoint rather than filtering the list response — it validates the full route configuration.
Rail Codes Reference
| Code | Type | Description |
|---|---|---|
sepa | Bank | SEPA — European bank transfers in EUR |
swift | Bank | SWIFT — International bank transfers |
ach | Bank | ACH — US domestic bank transfers |
ethereum | Crypto | Ethereum mainnet |
polygon | Crypto | Polygon (MATIC) network |
tron | Crypto | Tron (TRX) network |
algorand | Crypto | Algorand network |
ripple | Crypto | Ripple (XRP) network |
stellar | Crypto | Stellar network |
xinfin | Crypto | XinFin (XDC) network |
Asset Codes Reference
| Code | Type | Description |
|---|---|---|
EUR | Fiat | Euro |
USD | Fiat | US Dollar |
GBP | Fiat | British Pound |
CHF | Fiat | Swiss Franc |
USDT | Stablecoin | Tether USD |
USDC | Stablecoin | USD Coin |
EURC | Stablecoin | Euro Coin |
EURS | Stablecoin | STASIS Euro |
Ready to integrate?
Customers
A customer represents an end-user of your platform within the Stablegate system. Every operation — orders, external accounts, fee checks, limit checks — is scoped to a customer. Before you can process any transactions, you need to register your customers with Stablegate.
Bank Providers
Bank providers represent the financial institutions available for fiat operations. Use this endpoint to discover which banks are available, what payment rails they support, and which exchange routes are accessible through each bank.