Live crypto to naira rates. Free for anyone to build on.
The same feed Monica's own rate pages read: seven coins, the naira rate Monica pays, the deposit fee and seven days of history in one JSON document. No key, no sign up.
https://monica.cash/live/ratesOne document, everything you need to quote naira.
Every call returns the full picture for all seven coins. coins.BTC.ngn is the naira per one coin before any fee, which is simply the dollar price usd times the naira rate fx, so you can show either side.
fee_usd and fee_ngn carry the deposit fee Monica charges on that coin: $2 on Bitcoin, nothing on the other six. daily_7d holds eight timestamped naira points covering the last seven days, ready for a sparkline.
Three flags tell you how much to trust what you are holding: ok, stale and ttl, the number of seconds to keep the document before asking again.
Rendered straight from the feed.
Nothing below is hard coded. The page calls the endpoint when it loads and again every twenty seconds, exactly as your app would.
How the naira figure is worked out.
The document carries its own formula in quote_rule. It is the rule the Monica wallet credits with: take the dollar value of the amount, subtract the deposit fee, convert at the naira rate.
At the rates on this page, 100 USDT becomes ₦137,000, and 0.01 BTC, after the $2 deposit fee, becomes ₦1,097,576. This feed is for display and planning: the binding rate on a conversion is the one shown in the Monica app, or returned by the off ramp API, at the moment the network confirms the deposit.
Four lines, any language.
Plain HTTPS, plain JSON, and the feed answers browsers directly. Call it from your server, a script, a spreadsheet tool or the page itself.
curl -s https://monica.cash/live/rates \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['coins']['BTC']['ngn'])"const r = await fetch('https://monica.cash/live/rates');
const { coins, ttl } = await r.json();
console.log(coins.USDT.ngn); // naira per 1 USDT
// refresh no sooner than ttl seconds (20)import requests
d = requests.get('https://monica.cash/live/rates', timeout=10).json()
if d['ok'] and not d['stale']:
print(d['coins']['BTC']['ngn']) # naira per 1 BTC$d = json_decode(file_get_contents('https://monica.cash/live/rates'), true);
echo $d['coins']['SOL']['ngn']; // naira per 1 SOLRespect the ttl. Each response says how long it stays fresh, currently 20 seconds. Cache it and poll no faster; the edge caches it for the same time anyway. Check ok and stale. Show a rate only when ok is true, and when stale is true label the figure as older than normal. Mind the fee. ngn is the rate before the deposit fee; for what a user would receive, apply the quote rule with their amount.
Every field in the document.
Keys are stable. New keys may be added; existing ones will not change meaning without notice on this page.
| Field | Type | Meaning |
|---|---|---|
ok | boolean | true when the feed answered normally. Treat anything else as "do not use". |
currency | string | Always "NGN". Every ngn figure on the document is Nigerian naira. |
updated_at | ISO 8601 | When the prices were last refreshed, in UTC. |
age_s | integer | Seconds since updated_at at the time the response was built. |
stale | boolean | true when the upstream prices could not be refreshed and the figures are older than normal. |
ttl | integer | How many seconds this response stays fresh. Cache it for that long and poll no faster. |
quote_rule | string | The formula the Monica wallet credits with: ngn = max(0, amount × usd − fee_usd) × fx. |
coins.{T}.name | string | Coin name. T is one of BTC, ETH, USDT, USDC, SOL, BNB, TRX. |
coins.{T}.usd | number | Price of one coin in US dollars. |
coins.{T}.fx | number | Naira per US dollar used for this coin. |
coins.{T}.ngn | number | Naira per one coin before any fee (usd × fx). |
coins.{T}.fee_usd | number | Deposit fee in dollars. $2 on Bitcoin, 0 on the other six coins. |
coins.{T}.fee_ngn | number | The same deposit fee in naira at the current fx. |
coins.{T}.daily_7d | array | Eight points of [unix timestamp, ngn] covering the last seven days, oldest first, the last point is now. |
Free, with three asks.
It is free. No key, no sign up, no invoice. Use it in apps, dashboards, bots, spreadsheets or articles. Be reasonable with how often you call it and we will keep it open.
Say where the numbers come from. When you show the rates, credit them as "Rates by Monica" with a link to monica.cash. That is all we ask in return.
Indicative, not a promise. The figures are for display and planning. Availability and format can change; the ok and stale flags tell you when not to rely on a value. Nothing here is investment advice.
Need the settlement, not just the rate?
The off ramp API issues deposit wallets to your users and settles naira to your corporate account within 60 seconds of the network confirming, with the rate locked at confirmation.