Skip to content

Get a conversion rate

POST
/api/v2/currency/convert
curl -X POST "https://api.finoq.africa/api/v2/currency/convert" \
-u "API_USERNAME:API_PASSWORD" \
-H "Content-Type: application/json" \
-d '{"from": "USD", "to": "KES"}'

Returns how many units of to one unit of from buys, at the rate FinoQ prices global payments with.

Rates come from Yellow Card, the provider that settles global payments. Yellow Card quotes every currency against USD with two rates, and FinoQ converts through USD:

  • Converting into USD (a collection) uses Yellow Card’s buy rate.
  • Converting out of USD (a payout) uses Yellow Card’s sell rate.
  • Any other pair, such as KES to NGN, is priced as from into USD, then USD into to.

Rates include FX margin and refresh about every 15 minutes. Currencies Yellow Card does not quote fall back to a reference market rate.

Multiply an amount in from by conversion_rate to get the amount in to, then round to two decimal places before sending it on a payment.

Media typeapplication/json
object
from
required

ISO 4217 code of the currency you have.

string
to
required

ISO 4217 code of the currency you want.

string
Examples
{
"from": "USD",
"to": "KES"
}

The conversion rate.

Media typeapplication/json
object
from
string
to
string
conversion_rate

Units of to for one unit of from, sourced from Yellow Card.

number
created_at

When the rate was fetched from Yellow Card.

string format: date-time
source

Where FinoQ served the rate from. Informational only.

string
Allowed values: cache database provider
Example
{
"from": "USD",
"to": "KES",
"conversion_rate": 128.5,
"created_at": "2026-09-27T09:15:00Z",
"source": "provider"
}

The request was rejected (validation or business-rule failure).

Media typeapplication/json
object
error_code
string
error_message
string
status_code
integer
Examples
{
"error_code": "invalid_argument",
"error_message": "the transaction amount is insufficient as it wont cater for cost: (4.62)",
"status_code": 400
}

Missing or invalid Basic auth credentials.

Media typeapplication/json
object
error_code
string
error_message
string
status_code
integer
Example
{
"error_code": "invalid_argument",
"error_message": "the transaction amount is insufficient as it wont cater for cost: (4.62)",
"status_code": 400
}