Skip to main content
GET
Quote a withdrawal
Price a withdrawal before you create it. A quote returns the rate, the fee, and both amounts, and it creates nothing, so you can show your customer exactly what a send will cost. A quote is priced by the same logic that charges a transaction. If you create the transaction with the same inputs, you are charged the quoted amounts.
Requires the TRANSACTION.WITHDRAW.CREATE key permission. See Permissions.

How to use it

1

Choose the side you type

Send exactly one of sourceAmount (what you send) or destinationAmount (what the recipient receives). The API derives the other side. The response anchor tells you which side is exact: source or destination.
2

Name the destination

Send either destinationId (a saved payment method) or destinationChannel plus destinationCountry (when the customer has no account to send to yet), never both. destinationCountry can be left out for SWIFT and CRYPTO.
3

Optionally pass the customer

customerId is optional. Without it, the quote is priced for the business owner.

Example

rate reads as 1 sourceCurrency = rate destinationCurrency. fee is in sourceCurrency and is left out when no fee applies.

Things to know

  • Quotes are not reserved. Rates and promotions can change before you create, so quote again close to the send if the price matters.
  • A quote can succeed where the create is refused. A quote does not check limits or customer verification, and it needs no idempotency key or reference. Those apply when you create the transaction.
  • indicative: true. When you price from destinationChannel alone, the account is not known yet, so the payout route and any fee that depends on it can differ when you create. The response carries indicative: true to tell you so.
  • Pass customerId for an exact price. A fee or promotion that depends on the customer’s country can differ from a business-owner quote.

Errors

A 422 means the request is invalid: you sent both amounts or neither, both destinationId and destinationChannel or neither, or a required parameter is missing.

Authorizations

x-api-key
string
header
required

Static business API key issued from the dashboard. A business can provision multiple API keys, each scoped to a configurable set of permissions (e.g. read transactions, create deposits, etc). Permissions are chosen per key at creation time in the dashboard and may be revoked by deleting the key. Manage your keys and their permissions under Developer → API keys in the dashboard.

A request whose key does not carry the permission the target endpoint requires is rejected with 401 Unauthorized, the same response an unrecognised, malformed, revoked or disabled key returns. The API does not distinguish the two cases on the wire.

See the Permissions reference for the permission each endpoint requires.

Headers

x-api-version
string

API version in ISO 8601 format. The only supported version is 2026-05-18, which is also the default when the header is omitted. Any other value is rejected with a 400 Bad Request.

Query Parameters

customerId
string

The customer the withdrawal is for. Omit it to price the quote for the business owner.

destinationId
string

The destination payment method the funds would be sent to. Send this or destinationChannel, not both.

destinationChannel
string

The channel the funds would be sent over, when there is no saved payment method yet. Send this or destinationId, not both.

Example:

"BANK_ACCOUNT"

destinationCountry
string

The destination country (ISO 3166-1 alpha-2), required with destinationChannel except for SWIFT and CRYPTO.

Example:

"NG"

sourceCurrency
string
required

The currency debited from your wallet.

Example:

"NGN"

destinationCurrency
string
required

The currency the recipient receives.

Example:

"USD"

sourceAmount
string

The amount you send. Send this or destinationAmount, not both.

Example:

"100000"

destinationAmount
string

The amount the recipient receives. Send this or sourceAmount, not both.

Example:

"65.77"

Response

The quote.

data
object