KashierDevelopersKashier Developers
Accept payments

Currency conversion

Look up live exchange rates for cross-currency pricing

Kashier exposes a lightweight exchange-rate lookup you can use to price cross-currency amounts before creating a payment — for example, quoting a customer a price in USD while the actual charge settles in EGP.

This is a rate lookup, not a currency conversion feature

This endpoint only reads a rate. It does not convert a payment, does not change how a payment session behaves, and is not switched on or off per merchant — calling it has no effect on anything else in your account. If you are looking for customer-facing display currencies on checkout, that is a separate, separately gated product feature; ask your account manager whether it is available to you.

Public endpoint

Unlike the rest of the payments API, this endpoint is public and unauthenticated — no Authorization or api-key header is required. You can call it directly from a browser or server without a merchant secret key.

Get exchange rate

Query parameters

KeyDescription
fromSource currency code (e.g. USD). Optional — defaults to USD. Returned as base.
toTarget currency code (e.g. EGP). Optional — defaults to EGP. Becomes the key inside rates.
curl --location 'https://test-api.kashier.io/v3/payment/exchange-rate?from=USD&to=EGP'

Response

{
  "success": true,
  "timestamp": 1787654094144,
  "base": "USD",
  "date": "2026-08-25",
  "rates": {
    "EGP": 50.76884413
  }
}
FieldDescription
successtrue when a rate was resolved.
timestampWhen the rate was produced, in milliseconds since the epoch.
baseThe source currency — echoes from.
dateThe rate's date, YYYY-MM-DD.
ratesAn object with a single key: the to currency, mapped to the rate. Multiply an amount in base by this number to get the amount in to.

So 1 USD = 50.76884413 EGP in the example above.

This response is not in the usual Kashier envelope

Successful responses here are passed through from the upstream rate provider, so they have no status/response/messages wrapper — unlike the rest of the API. Errors are wrapped in the standard envelope. Parse the two shapes separately.

Supported currencies

from and to accept ISO 4217 codes, and the range is wide — the rate comes from an upstream FX provider, not from a short Kashier list. EGP, USD, EUR, GBP, SAR, AED, KWD, JPY, CAD, CHF, and AUD all resolve, and so do many others. An unrecognised code is rejected rather than silently defaulted (see Errors).

A rate you can look up is not a currency you can charge in

This endpoint quoting USD → JPY does not mean Kashier can take a payment in JPY. Payment sessions accept EGP, USD, GBP, and EUR only — see create payment session. Use this endpoint to price or display a cross-currency amount; charge in a currency your account actually supports.

Errors

An unknown to currency returns 404:

{
  "error": { "cause": "Invalid Data" },
  "messages": {
    "en": "The Exchange Rate Service is temporarily unavailable. Please try again.",
    "ar": "حدث خطأ ما"
  },
  "status": "FAILURE"
}

An unknown from currency, or an upstream outage, returns 503:

{
  "error": { "cause": "Service unavailable" },
  "messages": {
    "en": "Exchange rate is temporarily unavailable. Please try again later",
    "ar": "سعر الصرف غير متاح مؤقتًا. يرجى المحاولة مرة أخرى لاحقًا"
  },
  "status": "FAILURE"
}

Note that the 404 message says "temporarily unavailable" even though the cause is an invalid currency code — branch on the status code and error.cause, not on the message text.

On this page