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
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.
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
/v1/rates/fiat-transferReturns 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
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
/v1/rates/crypto-transferReturns 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
amount
number
Yes
Amount in crypto to send. Must be positive.
token
string
Yes
Crypto token to send (e.g. USDT, USDC).
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
/v1/rates/fiat-collectionReturns 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
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
/v1/rates/crypto-collectionReturns a fee and rate breakdown for accepting a crypto payment directly from a customer's wallet on a specific blockchain network.
Query Parameters
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).
fiatCurrency
string
Yes
Your fiat currency used to calculate fee equivalents (e.g. NGN).
Request
Response
Error Responses
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
tokenUSDT
Tether USD
USDC
USD Coin
fiatCurrency
fiatCurrencyNGN
Nigerian Naira
KES
Kenyan Shilling
GHS
Ghanaian Cedi
ZAR
South African Rand
USD
US Dollar
Networks
BSC_TESTNET
BNB Smart Chain Testnet
ETH
Ethereum
TRON
Tron
MATIC
Polygon
Code Examples
Node.js
cURL
Python
Best Practices
Always call rates before initiating. Lock the rate and display the breakdown to your user. Rates are live and will change between calls.
Respect the minimum amounts. If the user's amount is below
minimumAmountInFiatorminimumAmountInCrypto, reject it on your side before calling the transfer endpoint — it will fail otherwise.Use
gasFeeInCryptofor crypto transfers. Account for this in your UI so users understand the total deduction from their crypto balance.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