Skip to main content
GET
List routes for a currency

An unknown currency is not an error

The code is not checked against the currency list. A currency Sakawave does not serve simply matches no routes and returns [] — so an empty array means “nothing delivers there”, not “you asked wrongly”.

Country filtering

A route can be scoped to one country, or serve many through its scheme — sepa and cemac both cover a set. Passing country keeps only the routes that actually serve it, whichever way they are scoped.

Prefer corridors for building a form

This endpoint returns the route row as stored, including internal routing detail. GET /v1/transfer-corridors answers the same question in a provider-neutral shape, with the currency and its countries resolved alongside each route. Use corridors to drive a UI; use this when you already know the currency and only need its routeId values.
provider and serviceCode are internal routing detail that this endpoint currently returns. They are not part of the supported contract and may be withdrawn — do not branch on them.

Error codes

Authorizations

Authorization
string
header
required

A secret API key, sent as Authorization: Bearer sk_test_… in sandbox or Bearer sk_live_… in live.

Path Parameters

code
string
required

Destination currency code. Case-insensitive; uppercased before matching.

Required string length: 3 - 10

Query Parameters

country
string

ISO 3166-1 alpha-2 destination country. Keeps only routes that serve it.

Required string length: 2

Response

Successful response.

id
string
required

The routeId to send when creating a payment detail or an external destination.

Required string length: 26
Pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
Example:

"01K2Z3AB4C5D6E7F8G9HJKMNPQ"

name
string
required
Maximum string length: 80
destinationCurrency
string | null
required

Null for a route that is not currency-scoped.

Required string length: 3 - 10
destinationCountry
string | null
required

ISO 3166-1 alpha-2 when the route serves one country. Null for a scheme that spans several.

Maximum string length: 16
scheme
string
required

The settlement scheme, such as nip, sepa, or cemac.

Maximum string length: 40
paymentMethod
string
required

bank-transfer, momo-transfer, or stablecoin-transfer for a route that pays a wallet address; its scheme is the chain.

Maximum string length: 40
provider
string
required

Internal routing detail. Not part of the supported contract — do not branch on it.

Maximum string length: 40
serviceCode
string
required

Internal routing detail. Not part of the supported contract.

Maximum string length: 60
requiredFields
string[]
required

Keys of fieldDescriptors that must be supplied.

fieldDescriptors
object[]
required
settlementTiming
string | null
required
Maximum string length: 80
minimumAmount
string | null
required

An integer number of the asset’s smallest unit. Use this value for arithmetic.

Pattern: ^-?\d+$
Example:

"2500000"

maximumAmount
string | null
required

An integer number of the asset’s smallest unit. Use this value for arithmetic.

Pattern: ^-?\d+$
Example:

"2500000"

institutionDirectoryEnabled
boolean
required

Whether Sakawave resolves institution codes to names for this route.

isDefault
boolean
required

The route chosen when you do not name one. Listed first.

isActive
boolean
required

Always true in this response: inactive routes are not returned.