Conversion Rates

Use the Rates API to preview exact fees, exchange rates, and net amounts before initiating any transfer or collection. This lets you show your customers a transparent cost breakdown and validate amounts on your end without creating a real transaction.

Base path: /v1/rates Authentication: API Key (Authorization: <secret-key>)


Endpoints

Method
Path
Description

GET

/v1/rates/fiat-transfer

Preview fees for sending fiat to a bank account

GET

/v1/rates/crypto-transfer

Preview fees for sending crypto to a wallet address

GET

/v1/rates/fiat-collection

Preview fees for collecting a fiat payment

GET

/v1/rates/crypto-collection

Preview fees for collecting a crypto payment

All four endpoints are read-only — no funds are moved, no transaction is created.


Response Fields

All endpoints return the same base shape. Fields specific to an endpoint are noted inline.

Field
Type
Description

platformFeeInFiat

number

IvoryPay platform fee expressed in the fiat currency

platformFeeInCrypto

number

IvoryPay platform fee expressed in the crypto token

totalAmountInFiat

number

Total fiat amount including all fees

amountInFiatLessFee

number

Net fiat amount after fees are deducted

fiatCurrency

string

Resolved fiat currency code (e.g. NGN)

totalAmountInCrypto

number

Total crypto amount including all fees

amountInCryptoLessFee

number

Net crypto amount after fees are deducted

minimumAmountInFiat

number

Minimum fiat amount accepted for this operation

minimumAmountInCrypto

number

Minimum crypto amount accepted for this operation

rate

number

Current fiat exchange rate for the token (e.g. USDT/NGN)

token

string

The crypto token used for the quote

gasFeeInCrypto

number

On-chain gas fee in crypto. Crypto transfer only.

minimumAmountInFiatCurrency

string

Currency code for the minimum fiat amount. Fiat transfer only.


GET /v1/rates/fiat-transfer

Returns a fee and rate breakdown for a fiat bank transfer (crypto-to-fiat payout). Use this to show the recipient amount before calling POST /v1/fiat-transfer.

Query Parameters

Parameter
Type
Required
Description

amount

number

Yes

Amount in crypto to quote against. Must be positive.

token

string

Yes

Crypto token to debit (e.g. USDT, USDC).

fiatCurrency

string

Yes

Target fiat currency for the recipient (e.g. NGN).

Request

Response


GET /v1/rates/crypto-transfer

Returns a fee and rate breakdown for a crypto payout to a blockchain wallet address. Includes on-chain gas fees. Use this before calling POST /v1/crypto-transfer.

Query Parameters

Parameter
Type
Required
Description

amount

number

Yes

Amount in crypto to send. Must be positive.

token

string

Yes

Crypto token to send (e.g. USDT, USDC).

network

string

Yes

Blockchain network (e.g. BSC_TESTNET, ETH). See networks.

fiatCurrency

string

Yes

Your fiat currency used to calculate fee equivalents (e.g. NGN).

address

string

Yes

Recipient's wallet address. Used to estimate gas for the specific destination.

Request

Response


GET /v1/rates/fiat-collection

Returns a fee and rate breakdown for accepting a fiat payment from a customer (e.g. a customer paying by bank transfer). Use this to show customers exactly how much they need to pay and what you will receive.

Query Parameters

Parameter
Type
Required
Description

amount

number

Yes

Amount in fiat the customer will pay. Must be positive.

token

string

Yes

Crypto token you want to receive (e.g. USDT, USDC).

fiatCurrency

string

Yes

Fiat currency of the payment (e.g. NGN).

Request

Response


GET /v1/rates/crypto-collection

Returns a fee and rate breakdown for accepting a crypto payment directly from a customer's wallet on a specific blockchain network.

Query Parameters

Parameter
Type
Required
Description

amount

number

Yes

Amount in crypto the customer will send. Must be positive.

token

string

Yes

Crypto token the customer will send (e.g. USDT, USDC).

network

string

Yes

Blockchain network the payment will arrive on. See networks.

fiatCurrency

string

Yes

Your fiat currency used to calculate fee equivalents (e.g. NGN).

Request

Response


Error Responses

Status
Message
Cause

400

Your provided fiat currency is currently not supported

fiatCurrency is not active on IvoryPay

400

Currencies are currently not activated for conversion

No active currencies configured on the platform

400

token must be a supported crypto currency

token is not a valid enum value

400

network must be a supported blockchain network

network is not a valid enum value

400

amount must be a positive number

amount is zero or negative

401

Unauthorized

Missing or invalid API key


Supported Values

token

Value
Name

USDT

Tether USD

USDC

USD Coin

fiatCurrency

Value
Currency

NGN

Nigerian Naira

KES

Kenyan Shilling

GHS

Ghanaian Cedi

ZAR

South African Rand

USD

US Dollar

Networks

Value
Chain

BSC_TESTNET

BNB Smart Chain Testnet

ETH

Ethereum

TRON

Tron

MATIC

Polygon


Code Examples

Node.js

cURL

Python


Best Practices

  1. Always call rates before initiating. Lock the rate and display the breakdown to your user. Rates are live and will change between calls.

  2. Respect the minimum amounts. If the user's amount is below minimumAmountInFiat or minimumAmountInCrypto, reject it on your side before calling the transfer endpoint — it will fail otherwise.

  3. Use gasFeeInCrypto for crypto transfers. Account for this in your UI so users understand the total deduction from their crypto balance.

  4. Do not cache rate responses. Exchange rates are volatile. Always fetch a fresh quote immediately before displaying to a user or initiating a transaction.

Last updated