CBIC Customs Exchange Rate API: India's Import and Export Rates as JSON

Reviewed by Madhushan, Fintech Developer — October 2026

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.

USD → INR — CBIC customs exchange rate, import and export columns
Every notification in force Oct '25 – Oct '26 · rupees per 1 US dollar · each step is a new notification
86.0088.0090.0092.0094.0096.0098.00Oct '25Jan '26Apr '26Jul '26Oct '2695.90import rateexport ratew.e.f. 2025-10-03: import 89.70 / export 88.00 INRw.e.f. 2025-10-17: import 88.70 / export 87.00 INRw.e.f. 2025-11-07: import 89.50 / export 87.75 INRw.e.f. 2025-11-21: import 89.50 / export 87.80 INRw.e.f. 2025-12-05: import 91.30 / export 89.60 INRw.e.f. 2025-12-19: import 91.25 / export 89.55 INRw.e.f. 2026-01-02: import 90.80 / export 89.10 INRw.e.f. 2026-01-16: import 91.20 / export 89.50 INRw.e.f. 2026-01-24: import 91.20 / export 89.50 INRw.e.f. 2026-01-28: import 91.20 / export 89.50 INRw.e.f. 2026-01-29: import 91.20 / export 89.50 INRw.e.f. 2026-02-04: import 91.20 / export 89.50 INRw.e.f. 2026-02-06: import 91.35 / export 89.65 INRw.e.f. 2026-02-07: import 91.35 / export 89.65 INRw.e.f. 2026-02-20: import 91.90 / export 90.20 INRw.e.f. 2026-03-06: import 92.50 / export 90.80 INRw.e.f. 2026-03-20: import 94.25 / export 92.55 INRw.e.f. 2026-04-03: import 93.80 / export 92.10 INRw.e.f. 2026-04-17: import 94.20 / export 92.50 INRw.e.f. 2026-05-08: import 95.15 / export 93.45 INRw.e.f. 2026-05-21: import 95.15 / export 93.45 INRw.e.f. 2026-05-22: import 97.05 / export 95.35 INRw.e.f. 2026-06-05: import 96.60 / export 94.90 INRw.e.f. 2026-06-19: import 95.30 / export 93.60 INRw.e.f. 2026-07-03: import 95.20 / export 93.50 INRw.e.f. 2026-07-15: import 95.20 / export 93.50 INRw.e.f. 2026-07-16: import 95.20 / export 93.50 INRw.e.f. 2026-07-17: import 97.20 / export 95.45 INRw.e.f. 2026-08-07: import 96.05 / export 94.30 INRw.e.f. 2026-08-21: import 96.50 / export 94.80 INRw.e.f. 2026-09-04: import 95.25 / export 93.55 INRw.e.f. 2026-09-17: import 95.25 / export 93.55 INRw.e.f. 2026-09-18: import 96.80 / export 95.10 INRw.e.f. 2026-10-02: import 96.95 / export 95.25 INRw.e.f. 2026-10-16: import 95.90 / export 94.20 INR
Source: Central Board of Indirect Taxes and Customs exchange rate notifications · chart data from the AllRatesToday API (/api/v1/central-bank/cbic/history?source=USD&target=INR).

What a CBIC notification contains

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 key

Related Articles