CBIC Customs Exchange Rate API: India's Import and Export Rates as JSON
India has two official rupee rates and they are not interchangeable. The RBI/FBIL reference rate is what accounting standards and FEMA reporting lean on. Customs is different: the value of imported or exported goods is converted into rupees at the customs exchange rates notified by the Central Board of Indirect Taxes and Customs (CBIC) under Section 14 of the Customs Act, 1962, and nothing else. A Bill of Entry valued at the RBI rate, or at the morning's market rate, is simply wrong.
This guide covers what a notification contains, the two timing rules that matter (effective date and in-force period), why the number sits a percent or two away from the RBI's, and how to pull it as JSON — both columns for all 22 currencies, with history back to January 2020.
/api/v1/central-bank/cbic/history?source=USD&target=INR).What a CBIC notification contains
- 22 currencies, each with two rates in rupees: column (a) "for imported goods" and column (b) "for export goods". The import rate is always the higher of the two.
- Schedule I quotes per 1 unit of foreign currency; Schedule II quotes the Japanese yen and Korean won per 100 units. The API divides Schedule II back to per-unit so every row means the same thing.
- An effective date — the notification is issued on one day and takes effect "with effect from" the next, superseding the previous notification from that day on.
- The legal basis for customs valuation: Section 14 of the Customs Act, 1962. GST on imports borrows the same table through CGST Rule 34.
Timing rule one: the effective date, not the issue date
CBIC issues a notification — typically on a Thursday — and the table applies from the following day. A declaration presented on the issue day still uses the previous notification. ICEGATE's own listing shows the issue date while the table itself states the effective date, which is an easy way to be a day out.
The API stores every table under its effective date. A request for any date returns the notification that was in force on that date, with no arithmetic of your own.
Timing rule two: a fortnight is not exactly a fortnight
Notifications normally land on the first and third Thursday of the month, so most tables are in force for 14 days — but a five-Thursday month stretches one to 21 days, and when a currency moves sharply CBIC issues an extra notification in between (there were four in the last week of January 2026 alone). Hard-coding "every two weeks" will drift. Treat each table as valid until the next one supersedes it, which is exactly how the API's date lookup behaves.
Why it differs from the RBI rate
The CBIC rates are set off State Bank of India card rates and carry a spread around the market: on the table effective 16 October 2026 the dollar is 95.90 for imports and 94.20 for exports, while the RBI reference rate on 19 October 2026 was 94.7691. Roughly plus one percent on the import side and minus half a percent on the export side is normal for the dollar; the Gulf currencies and the Korean won carry wider spreads. That is by design, not an error — the two rates answer different legal questions, and the API labels them import and export so they can never be confused with a reference or buy/sell rate.
Get the rates (REST)
curl "https://allratestoday.com/api/v1/central-bank/cbic/latest?source=USD&target=INR" \
-H "Authorization: Bearer YOUR_API_KEY" What comes back — the dollar row of Notification No. 29/2026-Customs (N.T.), issued 15 October 2026 and effective 16 October 2026:
{
"bank": "cbic",
"name": "Central Board of Indirect Taxes and Customs (CBIC)",
"rate_date": "2026-10-16",
"source": "USD",
"target": "INR",
"rate": 95.9,
"rate_type": "import",
"derived": false,
"method": "published",
"age_days": 3,
"stale": false,
"cadence": "fortnightly",
"disclaimer": "Official rates as published by the named central bank. On weekends/holidays the most recent published rate_date is returned."
} Both columns come back when you ask for the full table — one row per currency and side, in the notification's own direction (rupees per unit of foreign currency):
curl "https://allratestoday.com/api/v1/central-bank/cbic/latest" \
-H "Authorization: Bearer YOUR_API_KEY" {
"bank": "cbic",
"name": "Central Board of Indirect Taxes and Customs (CBIC)",
"rate_date": "2026-10-16",
"age_days": 3,
"stale": false,
"cadence": "fortnightly",
"rates": [
{"base": "AED", "quote": "INR", "type": "import", "value": 26.65},
{"base": "AED", "quote": "INR", "type": "export", "value": 25.15},
{"base": "AUD", "quote": "INR", "type": "import", "value": 67.6},
{"base": "AUD", "quote": "INR", "type": "export", "value": 64.65},
{"base": "JPY", "quote": "INR", "type": "import", "value": 0.612},
{"base": "JPY", "quote": "INR", "type": "export", "value": 0.5935},
{"base": "USD", "quote": "INR", "type": "import", "value": 95.9},
{"base": "USD", "quote": "INR", "type": "export", "value": 94.2},
… 36 more rows
],
"disclaimer": "Official rates as published by the named central bank. On weekends/holidays the most recent published rate_date is returned."
} The latest table is available on every plan, including the free tier (300 free requests, no credit card). Add &format=xlsx or &format=csv if the destination is a spreadsheet rather than code. For the rate in force on a past Bill of Entry, request the date directly:
curl "https://allratestoday.com/api/v1/central-bank/cbic/2026-03-10?source=EUR&target=INR" \
-H "Authorization: Bearer YOUR_API_KEY" That returns the notification effective 6 March 2026 — the one in force on 10 March — and says so in rate_date, so the figure can be traced back to the notification number in an audit.
The npm SDK
npm install cbic-exchange-rate import { getRate, getRatesForDate } from 'cbic-exchange-rate';
// The customs rate in force right now (import column for USD)
const pair = await getRate('USD', 'INR', { apiKey: 'art_live_...' });
console.log(pair.rate, pair.rate_type, pair.rate_date);
// The notification in force on a past Bill of Entry date — both columns, all 22 currencies
const table = await getRatesForDate('2026-03-10', { apiKey: 'art_live_...' });
const exportUsd = table.rates.find((r) => r.base === 'USD' && r.type === 'export'); Zero dependencies, TypeScript types included, and it runs anywhere fetch exists — Node 18+, Bun, Deno, and edge runtimes.
CBIC or the RBI — which do you need?
Use CBIC for anything that touches customs: the assessable value on a Bill of Entry, the FOB value on a Shipping Bill, IGST on imports, landed-cost models and broker reconciliation. Use the Reserve Bank of India reference rate for books of account, FEMA returns and transfer-pricing files, and the SBI TT buying rate where Income-tax Rule 115 names it. All three are on the same API with the same key; only the source code in the URL changes. The side-by-side guide walks through which Indian filing wants which.
Six years of notifications
The series starts with Notification No. 01/2020, effective 3 January 2020, when the dollar stood at 72.15 for imports, and runs through every notification and amendment since — the 2020 rupee slide, the single-currency Turkish lira amendments of 2020 and 2021, and the move past 95 in 2026. For restating an old entry or answering an auditor about a shipment cleared years ago, it is the notified record for that date rather than a market approximation of it.
FAQ
Which exchange rate applies to an Indian Bill of Entry?
The rate notified by CBIC under Section 14 of the Customs Act, 1962 that is in force on the date the Bill of Entry is presented — the import-goods column. A Shipping Bill uses the export-goods column of the same notification.
How often does CBIC change the customs exchange rate?
About every fortnight — normally the first and third Thursday, effective the next day — with extra notifications when a currency moves sharply. Each table stays in force until the next supersedes it.
Why does the CBIC rate differ from the RBI rate?
CBIC sets its rates from State Bank of India card rates with an import/export spread; the RBI publishes a single mid-market reference fixing. Both are official and both are on this API.
How far back do the customs exchange rates go?
The API serves every CBIC notification from January 2020 onward — 22 currencies, both columns, dated by effective date — sourced from the notification PDFs through mid-2024 and from ICEGATE's Exchange Rate Automation Module since.
India's customs exchange rates, as JSON
The latest notification is free — 300 free requests, no credit card.
Get your free API keyRelated Articles
- CBIC customs rates API — product page
- RBI reference rate vs SBI card rate vs market rate — which Indian filing needs which
- Exchange rates on GST invoices in India
- Reserve Bank of India reference rates
- Customs exchange rates for finance teams
- All covered tax authorities
- Central bank API documentation