Currency Rates API · v1

Rates, conversions and crypto on one endpoint.

Fiat and digital assets share the same request shape, the same authentication and the same error contract. Every quote carries the timestamp it was captured, so you can store the rate you actually charged.

Endpoints
6
Free tier
5K req
Refresh
60s
Quote boardlive
  • USD/BRL5.1833 0.04%
  • EUR/USD1.1532 0.02%
  • USD/JPY159.39 0.04%
  • GBP/USD1.3491 0.01%
  • BTC/USD62,936.47 0.25%
  • ETH/USD1,879.82 0.37%

Captured Aug 14, 2026, 4:00 PM.

curl "https://api.currencyrates-api.com/v1/convert?from=USD&to=BRL&amount=100" \
  -H "Authorization: Bearer fx_live_xxxxxxxxxxxxxxxxxx"

Two markets

One contract, both markets

You do not need a second integration for crypto. The paths differ by a prefix; the fields do not.

Built for money

Designed to be auditable later

Financial data has a different bar than reference data: you need to prove what rate applied and when.

The rate travels with the result
Conversions return the applied rate next to the result. Persist both and a disputed charge can always be reconstructed.
Every quote is timestamped
updated_at is the moment the rate was captured upstream, not the moment you called. Cache windows become explicit.
Crypto exponents are explicit
Metadata carries the decimal exponent for each asset, so eight-decimal balances survive the round trip.
Quota state on every response
Rate limit and monthly usage headers come back on each authenticated call, so you never poll a usage endpoint.
200 OK · /v1/convert
{
  "from": "USD",
  "to": "BRL",
  "amount": 100,
  "rate": 5.4123,
  "result": 541.23,
  "date": "2026-08-13",
  "updated_at": "2026-08-13T18:40:02Z"
}
Response headers
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 594
X-Monthly-Limit: 100000
X-Monthly-Usage: 12480
X-Monthly-Remaining: 87520

Open an account, get a key, quote your first pair.

The free plan starts at 5,000 requests a month with no payment method, and both markets are included from the first key.