Nepal Rastra Bank Forex API
Free Nepal Rastra Bank forex API with no key: official Nepalese rupee buying and selling rates by date range, with per-currency quotation units. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Nepal Rastra Bank Forex API?
Nepal Rastra Bank publishes its official foreign exchange rates through a free JSON API with no key. Requests take a date range and return buy and sell rates for each quoted currency, along with the unit each rate applies to.
The API is date-range based rather than single-date, which is the right design for a rate that only publishes on working days: ask for a week and take what comes back, instead of guessing which days had a fixing. Pagination is explicit through `page` and `per_page`, and the parameters you sent are echoed in the response so a cached payload is self-describing.
Two conventions matter for correctness. Rates are strings, not numbers — `"152.91"` rather than `152.91` — which is deliberate for money and means you must parse before arithmetic. And the Indian rupee is quoted per 100 units while the US dollar is per 1, exposed through `currency.unit`. Given how much Nepal–India trade the INR rate touches, getting that division wrong is not a hypothetical failure.
Quick facts
- Base URL
https://www.nrb.org.np/api/forex/v1- Authentication
- No key or registration required.
- Rate limit
- No documented limit. Rates publish once per working day.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Nepal Rastra Bank Forex API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Official NPR forex rates for 20 August 2026
GET https://www.nrb.org.np/api/forex/v1/rates?page=1&per_page=1&from=2026-08-20&to=2026-08-20
curl 'https://www.nrb.org.np/api/forex/v1/rates?page=1&per_page=1&from=2026-08-20&to=2026-08-20'const res = await fetch("https://www.nrb.org.np/api/forex/v1/rates?page=1&per_page=1&from=2026-08-20&to=2026-08-20");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://www.nrb.org.np/api/forex/v1/rates?page=1&per_page=1&from=2026-08-20&to=2026-08-20", timeout=20)
res.raise_for_status()
print(res.json()){
"status": {
"code": 200
},
"errors": {
"validation": null
},
"params": {
"date": null,
"from": "2026-08-20",
"to": "2026-08-20",
"post_type": null,
"per_page": "1",
"page": "1",
"slug": null,
"q": null
},
"data": {
"payload": [
{
"date": "2026-08-20",
"published_on": "2026-08-20 00:00:56",
"modified_on": "2026-08-19 15:56:04",
"rates": [
{
"currency": {
"iso3": "INR",
"name": "Indian Rupee",
"unit": 100
},
"buy": "160.00",
"sell": "160.15"
},
{
"currency": {
"iso3": "USD",
"name": "U.S. Dollar",
"unit": 1
},
"buy": "152.91",
"sell": "153.51"
},
{
"currency": {
"iso3": "EUR",
"name": "European Euro",
"unit": 1
},
"buy": "177.46",
"sell": "178.16"
},
{
"currency": {
"iso3": "GBP",
"name": "UK Pound Sterling",
"unit": 1
},
"buy": "207.29",
"sell": "208.11"
},
{
"currency": {
"iso3": "CHF",
"name": "Swiss Franc",
"unit": 1
},
"buy": "188.71",
"sell": "189.45"
},
{
"currency": {
"iso3": "AUD",Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
from | query | Required | Start of the date range in `YYYY-MM-DD`. 2026-08-20 |
to | query | Required | End of the date range in `YYYY-MM-DD`. 2026-08-20 |
page | query | Optional | Page number, starting at 1. 1 |
per_page | query | Optional | Records per page. Each record is one publication day. 1 |
Response fields
status.codeinteger- Application-level status, mirroring the HTTP code.
paramsobject- Echo of the query you sent, which makes a cached response self-documenting.
data.payload[].datestring- Publication date for this set of rates.
data.payload[].rates[].currency.iso3string- ISO 4217 code for the quoted currency.
data.payload[].rates[].currency.unitinteger- Units the rate applies to — 1 for USD, 100 for INR.
data.payload[].rates[].buy / sellstring- Buying and selling rates in Nepalese rupees per `unit`, returned as strings to avoid float rounding.
errors.validationobject|null- Populated when a parameter fails validation; null on success.
What you can build with the Nepal Rastra Bank Forex API
- Convert Nepalese rupee amounts using the official published rate
- Fetch a month of rates in one request to chart a currency's movement
- Reconcile remittance transactions against the official buy and sell rates
- Show the NPR/INR rate correctly by applying the per-100 quotation unit
Common errors and how to fix them
Empty payload array
The date range covers only non-publication days.
Fix: Weekends and Nepali public holidays have no fixing. Widen the range rather than retrying the same date.
Validation error object populated
`from` or `to` is missing or malformed.
Fix: Both are required and must be `YYYY-MM-DD`. The Nepali Bikram Sambat calendar is not accepted here.
INR conversion off by 100
`currency.unit` was ignored.
Fix: The Indian rupee is quoted per 100 units. Divide `buy`/`sell` by `currency.unit` in every code path.
Nepal Rastra Bank Forex API — frequently asked questions
Is the Nepal Rastra Bank forex API free?
Yes. It requires no key or registration and returns permissive CORS headers, so browser code can call it directly.
Why are the rates returned as strings?
Returning money as strings avoids the binary floating-point rounding that would otherwise creep into a decimal rate. Parse them with a decimal-safe type rather than a float where you can.
What is the difference between the buy and sell rate?
Buy is the rate at which the currency is purchased and sell the rate at which it is sold; the gap between them is the spread. Which one applies depends on the direction of your transaction.
Does the API accept Nepali calendar dates?
No. The `from` and `to` parameters expect Gregorian `YYYY-MM-DD` dates. Convert from Bikram Sambat before calling.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Percentage Change Calculator
Work out the percentage increase or decrease between an old and a new value. See the absolute change and whether it went up or down, instantly and privately.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
Nepal Rastra Bank Forex is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.