Independent guide — not a government website. Challans are paid only on official government portals.

Open data: India traffic fines, e-challan portals and RTO codes

The short answer

This site publishes 4 of its datasets as 5 open endpoints — the Motor Vehicles Act fine schedule, state e-challan records, discount schemes and India's RTO code directory. They are free to reuse, including commercially, under CC BY 4.0.

No key, no sign-up, no registration. Every record carries the URLs it was verified against and the date it was last checked, and every dataset below states how well sourced it actually is — measured from those same URLs, not asserted. Across those 4 datasets that is 368 official citations out of 472.

Last verified

Licence: CC BY 4.0

These datasets are published under the Creative Commons Attribution 4.0 International licence (CC BY 4.0). You may copy, redistribute, adapt and build on them, for any purpose including commercially, as long as you give credit, link to the licence, and say if you changed anything. The suggested credit line is in How to cite below.

Being precise about what that licence covers matters more than the badge. What we can license is our own work: the selection and arrangement of these records, the verification metadata (last_verified, the RTO verification block and its sample sizes, the scheme status classification), and the descriptive text we wrote — descriptions, notes, step lists and FAQ answers.

What we do not claim, and could not license to you: the underlying facts themselves. A statutory fine amount, a Motor Vehicles Act section number, the name of an RTO office, the address of a government portal — those are facts published by the government, and they are not ours. We claim no rights over any Government of India or state government publication that this data is drawn from or that it links to. That is why every record carries its own source URLs: the primary material is one click away, and you can take it from there directly.

How to cite

Copy the line for the dataset you used:

TrafficChallan (2026). Indian traffic fine schedule (Motor Vehicles Act) [data set], version 2026-08-12. https://trafficchallan.com/api/fines.json — licensed CC BY 4.0.

TrafficChallan (2026). Indian state e-challan portal and process records [data set], version 2026-08-13. https://trafficchallan.com/api/states.json — licensed CC BY 4.0.

TrafficChallan (2026). Indian traffic challan discount and amnesty scheme tracker [data set], version 2026-08-13. https://trafficchallan.com/api/schemes.json — licensed CC BY 4.0.

TrafficChallan (2026). Indian RTO code directory [data set], version 2026-08-13. https://trafficchallan.com/api/rto-codes.json — licensed CC BY 4.0.

The version string is the dataset's newest last_verified date, which is also the updated field in the response envelope — quote it so readers know which snapshot you worked from.

How the endpoints respond

Every JSON endpoint returns the same envelope: updated (the newest last_verified inside the payload), source (the human page for this data), license, license_url, license_note, and one key holding the records. The CSV endpoint returns a header row followed by one row per offence.

license_note travels with the payload deliberately: the envelope is what a reuser or a dataset registry actually downloads, and the scoping in Licence above has to be readable there too — not only on this page. It says the same thing in the same words.

All 5 endpoints send Access-Control-Allow-Origin: *, so they work from browser JavaScript. They are static files on a CDN: there is no API key, no sign-up and no rate limit imposed by us. They are regenerated when the site rebuilds, so poll no more often than daily — the updated field tells you whether anything actually moved.

All 5 endpoints
Endpoint Format Dataset Records Last verified
/api/fines.json JSON Fine schedule 10 offence records
/api/fines.csv CSV Fine schedule 10 offence records
/api/states.json JSON State e-challan records 13 states and union territories
/api/schemes.json JSON Discount schemes and Lok Adalat dates 16 state scheme records
/api/rto-codes.json JSON RTO code directory 36 states and union territories

Provenance at a glance

Counted from the sources array on every record in these datasets, at build time. “Official” means an Indian government hostname (.gov.in or .nic.in) or one of a small set of department-run sites on other domains that we fetched and confirmed individually — never a domain assumed official from its suffix. Everything else counts as third-party, including reputable press.

Source citations by dataset
Dataset Files Citations Official Third-party Official share
Fine schedule 10 57 57 0 100%
State e-challan records 13 249 249 0 100%
Discount schemes and Lok Adalat dates 17 36 17 19 47%
RTO code directory 36 130 45 85 35%

The RTO directory is the outlier and we would rather you heard it here than found it yourself: most of its citations are commercial directories — insurance, used-car and vehicle-information sites — not transport departments. The detail is under that dataset below.

Fine schedule

Every traffic offence we cover under the Motor Vehicles Act, with the section that sets the penalty, the first-offence and repeat amounts as the source words them, machine-readable minimum and maximum figures, licence consequences and whether the offence can be settled online.

Last verified · the pages built from it

Endpoints

Records sit under offences in the envelope.

Offence record fields (/api/fines.json)

Each entry in the offences array:

Offence record fields (/api/fines.json)
Field Type Always present What it means
slug string (fixed pattern) Yes URL-safe id of the offence. Also its page: /fines/{slug}/.
name string Yes Formal offence name, as the statute or the official penalty schedule words it.
seo_name string Yes The same offence in the words people search with ("Helmet Challan Fine"). A display field, not a legal name.
target_keyword string Yes The single search query the offence page is written to answer. Editorial routing — not a fact about the offence.
mva_section string Yes Motor Vehicles Act section the penalty is set by.
description string Yes Plain-English description of what the offence covers.
base_fine_text string Yes First-offence penalty exactly as the cited source states it, including any per-vehicle-class wording.
base_fine_min integer Yes Lowest rupee figure inside base_fine_text, as an integer, for sorting and calculators.
base_fine_max integer Yes Highest rupee figure inside base_fine_text. Equal to base_fine_min when the source gives a single amount.
repeat_fine_text string Yes Penalty for a second or subsequent offence, as the source states it.
licence_impact string Yes What the offence can do to the driving licence (suspension, disqualification), per the cited source.
compoundable_online boolean Yes Whether the offence can normally be settled online rather than only before a court.
faqs array of object {q, a} Yes Question-and-answer pairs published on the offence page.
sources array of string (URL) Yes Every URL the record was verified against.
last_verified date (YYYY-MM-DD) Yes The day the record was last checked against those sources.
statute_quote object {text, attribution} Optional Optional verbatim extract of the statutory text with its attribution. Verbatim only — never a paraphrase inside quotation marks.

CSV columns (/api/fines.csv)

A flattened view of the same records — 6 columns, one row per offence, header row first:

CSV columns (/api/fines.csv)
Field Type Always present What it means
slug string (fixed pattern) Yes URL-safe id of the offence. Also its page: /fines/{slug}/.
name string Yes Formal offence name, as the statute or the official penalty schedule words it.
mva_section string Yes Motor Vehicles Act section the penalty is set by.
base_fine_text string Yes First-offence penalty exactly as the cited source states it, including any per-vehicle-class wording.
repeat_fine_text string Yes Penalty for a second or subsequent offence, as the source states it.
compoundable_online boolean Yes Whether the offence can normally be settled online rather than only before a court.

Provenance: how this was verified

57 of the 57 source citations across the 10 offence records are official: 57 on Indian government hostnames (.gov.in or .nic.in). That is 100% of all citations.

Nothing in this dataset rests on a blog, a news report or a commercial directory.

Every one of the 10 offence records carries at least one official citation.

Amounts are stored as the source words them, because several are conditional (per vehicle class, or "up to"). base_fine_min and base_fine_max are our reading of that text as integers, for sorting and calculators — where the two disagree, the text is what the source says and the integers are ours.

State e-challan records

For each state we cover: its official challan portals, the ordered steps to check and to pay, SMS and app routes where the state offers them, what happens once a challan reaches a court, accepted payment methods, published helplines, and any state-notified fine amounts that differ from the central figure.

Last verified · the pages built from it

Endpoints

Records sit under states in the envelope.

State record fields (/api/states.json)

Each entry in the states array:

State record fields (/api/states.json)
Field Type Always present What it means
slug string (fixed pattern) Yes URL-safe id of the state or union territory. Also its page: /{slug}-e-challan/.
name string Yes State or union territory name.
abbr string (fixed pattern) Yes Two-letter registration series people search with. Telangana stays TS even though new plates use TG — this is the searched form, not the newest series.
target_keyword string Yes The single search query the state page is written to answer. Editorial routing — not a fact about the state.
portals array of object {label, url, scope} Yes Official portals for the state: label, URL, and whether it checks challans, pays them, or both.
check_steps array of string Yes Ordered steps to check a pending challan on the official portal.
pay_steps array of string Yes Ordered steps to pay one.
sms_app_methods array of string Yes SMS and mobile-app routes the state itself offers, where any exist. Empty means none verified.
court_challan_process string Yes What happens in this state once a challan has gone to a court or Virtual Court.
payment_methods array of string Yes Payment instruments the official portal accepts.
contacts array of object {label, value} Yes Published helpline and helpdesk labels with their values.
quirks array of string Yes State-specific catches that do not fit the standard steps.
faqs array of object {q, a} Yes Question-and-answer pairs published on the state page.
fine_overrides object keyed by string → object {amount_text, source} Yes — defaults to {} Offence slug → the state-notified amount and the notification that set it. No entry means the central Motor Vehicles Act figure applies.
sources array of string (URL) Yes Every URL the record was verified against.
last_verified date (YYYY-MM-DD) Yes The day the record was last checked against those sources.

Provenance: how this was verified

249 of the 249 source citations across the 13 state and UT files are official: 233 on Indian government hostnames (.gov.in or .nic.in) and 16 on wbtrafficpolice.com (10), aptransport.org (3) and kolkatatrafficpolice.net (3) — sites we each fetched and confirmed are run by the department or authority itself. That is 100% of all citations.

Nothing in this dataset rests on a blog, a news report or a commercial directory.

Every one of the 13 state and UT files carries at least one official citation.

Coverage is the honest limit here, not sourcing: 13 states and union territories are covered, against the 36 in the RTO directory below. A state absent from this dataset has not been researched, and its absence carries no meaning.

Discount schemes and Lok Adalat dates

The verified position on traffic-challan discount, amnesty and one-time-settlement schemes state by state — live, announced, closed, proposed, rumoured, or verified absent — plus National Lok Adalat sitting dates and the Delhi token mechanics.

Last verified · the pages built from it

Endpoints

Records sit under schemes (plus lok_adalat) in the envelope.

Scheme record fields (/api/schemes.json → schemes)

Each entry in the schemes array:

Scheme record fields (/api/schemes.json → schemes)
Field Type Always present What it means
slug string (fixed pattern) Yes URL-safe id of the state the record covers.
state_name string Yes State or union territory name.
status one of: live, announced, closed, proposal, rumour, none Yes Verified position on a discount/amnesty scheme. "none" is a verified absence, not missing data; "rumour" and "proposal" are claims no order confirms.
scheme_name string Optional Official name of the scheme, where one was published.
percent_by_class object keyed by string → string Optional Vehicle class → the discount in plain text. Present only for live, announced or closed schemes; the schema rejects it on rumour and proposal records.
window object {start, end} Optional Scheme start date and, where published, its end date.
order_ref string Optional Government order or circular reference the scheme rests on.
note string Yes Plain-English status note, including what is still unconfirmed.
history array of object {period, summary, sources} Yes — defaults to [] Earlier rounds of the same state scheme, each carrying its own sources.
sources array of string (URL) Yes Every URL the record was verified against.
last_verified date (YYYY-MM-DD) Yes The day the record was last checked against those sources.

Lok Adalat object fields (/api/schemes.json → lok_adalat)

The single lok_adalat object alongside it:

Lok Adalat object fields (/api/schemes.json → lok_adalat)
Field Type Always present What it means
national_sittings array of object {date, status} Yes Each National Lok Adalat sitting date, marked held or scheduled.
delhi_token object {portal, opens_days_before, daily_cap_note, limits_note} Yes Delhi token booking: the portal, how many days before a sitting booking opens, the daily cap and the published limits.
delhi_extras object {digital_lok_adalat_note, evening_courts_url, weekend_courts_note} Yes Delhi digital Lok Adalat note, evening-courts URL and weekend-courts note.
state_notes array of object {state_slug, note} Yes Per-state notes on how that state runs traffic Lok Adalats.
sources array of string (URL) Yes Every URL the record was verified against.
last_verified date (YYYY-MM-DD) Yes The day the record was last checked against those sources.

Provenance: how this was verified

17 of the 36 source citations across the 17 scheme files (16 states plus the Lok Adalat file) are official: 16 on Indian government hostnames (.gov.in or .nic.in) and 1 on dslsa.org — a site we fetched and confirmed is run by the department or authority itself. That is 47% of all citations.

The remaining 19 citations are third-party: lawchakra.in (2), bharatspeaks.com (1), digilawyer.ai (1), freepressjournal.in (1), gktoday.in (1) and 13 others.

6 of the 17 scheme files (16 states plus the Lok Adalat file) carry no official citation at all — bihar, delhi, karnataka, kerala, maharashtra, telangana.

Press citations are load-bearing in this dataset by design, and that is the honest reading of the numbers above: a record with status "rumour" or "proposal" is by definition a claim that no government order confirms, so press reporting and fact-checks are the only evidence there is. The schema refuses to store a discount percentage on those records at all. Percentages appear only on live, announced and closed records, which carry the order reference or an official record quoting it.

A scheme can be withdrawn or extended overnight. Treat every record as of its last_verified date and confirm on the official portal before anyone pays.

RTO code directory

Every Regional Transport Office code we hold, with the office that registers under it, grouped by state and union territory — plus, per state, how the list was verified and whether we found an official list published by the transport department.

Last verified · the pages built from it

Endpoints

Records sit under states in the envelope.

RTO state record fields (/api/rto-codes.json)

Each entry in the states array:

RTO state record fields (/api/rto-codes.json)
Field Type Always present What it means
slug string (fixed pattern) Yes URL-safe id of the state or union territory. Also its page: /rto-codes/{slug}/.
state_name string Yes State or union territory name.
series array of string (fixed pattern) Yes Two-letter registration series the state or UT uses. Some carry more than one.
codes array of object {code, office} Yes Every RTO code with the office that registers under it.
verification object {method, sample_size, official_list_available} Yes How this list was checked: method "full" (against a fetchable official list) or "sampled", the sample size where sampled, and official_list_available — whether we found a fetchable official list for that state. That last flag records the outcome of our search, not what the transport department publishes.
sources array of string (URL) Yes Every URL the record was verified against.
last_verified date (YYYY-MM-DD) Yes The day the record was last checked against those sources.

Provenance: how this was verified

45 of the 130 source citations across the 36 state and UT files are official: 41 on Indian government hostnames (.gov.in or .nic.in) and 4 on aptransport.org (2) and punjabtransport.org (2) — sites we each fetched and confirmed are run by the department or authority itself. That is 35% of all citations.

The remaining 85 citations are third-party: acko.com (20), cars24.com (20), insurancedekho.com (13), coverfox.com (11), groww.in (10) and 4 others.

11 of the 36 state and UT files carry no official citation at all — andaman-nicobar-islands, arunachal-pradesh, assam, bihar, dadra-nagar-haveli-daman-diu, haryana, jharkhand, manipur, nagaland, rajasthan, sikkim.

Most of this dataset's citations — 85 of 130 — are commercial directories — insurance, used-car and vehicle-information sites — not transport departments. We could find a fetchable official code list for only 15 of the 36 states and union territories, which is why 27 of 36 are marked verification.method "sampled" against 9 checked in full. That is a statement about our search, not about what those transport departments publish: a state may publish a list we could not fetch or did not find. Of the 27 sampled states, 16 had their sample checked against official office pages; for the other 11 the sample could only be cross-checked across independent directories.

Use it as a working directory, not as an authoritative register. New codes are created whenever a state carves out a new office, so a code missing from this data may simply be newer than the list. Where a state's verification block says "sampled", the codes we did not sample are exactly as reliable as the directories they came from.

Corrections

Found a wrong amount, a dead portal, an RTO code that does not exist, or a source that no longer says what we say it says? Tell us on the contact page and point at the record — every record has a slug. Corrections to the data take priority over anything else we are writing, and the record's last_verified moves only when the fact itself is re-checked against its sources. How we verify and correct is set out in the editorial policy.

TrafficChallan.com is an independent information website, not affiliated with any government body. Challan payments happen only on official government portals we link to.