Rail Classes
rail_class is a small typed enum — fiat or crypto — that lives on
every resource that can move money on either kind of payment rail. It
exists so the public API can cover both rail families with one unified
resource shape instead of two parallel surfaces, and so the same
discriminator appears on FundingEndpoint, DepositInstruction, and
WithdrawalDestination rather than splitting into rail-specific
variants.
Where Rail Class Appears
rail_class is part of the public contract on:
FundingEndpoint— declares whether the inbound route is fiat or cryptoDepositInstruction— inherits the rail class of its parent funding endpointWithdrawalDestination— declares whether the outbound route is fiat or crypto
It is also a filter parameter on the corresponding list endpoints, so you can narrow listings to one rail class at a time.
The Routing Pair Pattern
Two parallel routing blocks, one populated per resource:
fiat_routing— bank-rail movements (account/IBAN-style routing, settlement coordinates, rail-specific reference fields)crypto_routing— on-chain movements (address/network routing, on-chain identifiers, network-specific destination data)
Reading order:
- Look at
rail_class. - Look at the matching routing block.
- Treat the other routing block as guaranteed
null.
The benefit is that the resource shape stays stable across both rail
classes — no rail-specific variants, no oneOf to disambiguate, and
every consumer can write one parser that handles both cases.
How This Appears In The API
Request URL
GET /funding-endpoints?account_ref=client-accounts/44444444-4444-4444-8444-444444444444&rail_class=cryptoResponse
{
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"account_ref": "client-accounts/44444444-4444-4444-8444-444444444444",
"status": "active",
"rail_class": "crypto",
"asset": "USDC",
"network": "ethereum",
"crypto_routing": {
"asset": "USDC",
"network": "ethereum",
"endpoint": {
"address": "0xAbCd1234567890AbCd1234567890AbCd12345678",
"memo": null
}
},
"fiat_routing": null,
"created_at": "2026-05-01T10:00:00Z",
"updated_at": "2026-05-01T10:00:00Z"
}
],
"next_page_token": null
}