GST India

E-Way Bill Rules 2026: State-Wise Limits, Validity & Penalties

The e-way bill limit is ₹50,000 inter-state — but your state decides the intrastate line, and five states set it at ₹1 lakh. State-wise thresholds, the…

MManojAugust 6, 202611 min read
GST & Compliance#gst-india#e-way#compliance#erpnext
Share

Everyone knows the e-way bill limit is ₹50,000. Fewer know that number only settles inter-state movement. Your own state decides the intrastate line — five big states set it at ₹1 lakh, and Rajasthan runs two tiers at once. Fewer still know the validity maths — one day per 200 km. Or the 8-hour extension window that decides whether an expired bill is fixable. Detention costs 200% of tax under Section 129. This post has all of it: the state table, the calculators, and the ERPNext expiry watch that pings your driver before a checkpoint does. This guide on e way bill limit is written for Indian SMEs, with code samples, ERPNext / Medusa recipes, and step-by-step fixes you can copy into a real project.

Every detention story we've been called into started the same way — an e-way bill limit misread, a bill that expired on a Saturday, a driver who kept driving. I am Manoj, ERPNext and Frappe implementation lead at MithTech in Bengaluru. The expiry watch at the end of this post exists because of those calls.

How do you check your state's limit?

The inter-state answer is always ₹50,000. The intrastate answer depends on where the truck starts:

InteractiveState Limit Lookuplink

Pick your source state — get the intrastate e-way bill threshold and the notification quirks worth knowing.

Intrastate threshold

₹1,00,000

Intrastate e-way bill only above ₹1 lakh. Inter-state movement is ₹50,000 everywhere, regardless of state.

Verified 2026-08-06 from the sources cited in this post. State thresholds move by notification — confirm your state’s current one before relying on this for dispatch decisions.

What does the state-wise table say?

The same data as a scannable reference. Verified 2026-08-06 against MyBillBook's state-wise tracker, Busy's threshold table and Bajaj Finserv's 2026 guide — state notifications move, so confirm yours before a dispatch decision:

11 rows · click a column to sort

ThresholdNotes
Inter-state — all India₹50,000Uniform under Rule 138
Maharashtra (intrastate)₹1,00,000
Delhi NCT (intrastate)₹1,00,000
Tamil Nadu (intrastate)₹1,00,000
Bihar (intrastate)₹1,00,000
Punjab (intrastate)₹1,00,000
Rajasthan (intrastate)₹1,00,000 / ₹2,00,000Two tiers — ₹2 lakh within city limits, ₹1 lakh between cities
West Bengal (intrastate)₹50,000Reverted from ₹1 lakh on 1 Dec 2023
All other states / UTs (intrastate)₹50,000Unless separately notified
Job work — inter-stateAny valueValue floor does not apply
Handicraft goods — inter-stateAny valueValue floor does not apply

Two structural notes. The threshold tests consignment value — broadly the invoice value including tax, excluding exempt goods in the same truck. And the two any-value exceptions surprise people annually. A principal sending ₹8,000 of castings to a job worker across a state border needs an e-way bill for it.

When you need one at all

InteractiveApplicability Deciderlink

Seven movement scenarios — inter-state, intrastate, job work, handicrafts, non-motorised, exempt goods — with the verdict for each.

e-Way bill required

Mandatory. The ₹50,000 inter-state threshold is uniform across India — generate before the goods move.

How is validity computed?

Validity is mechanical: one day per 200 km or part thereof, and one day per 20 km for over-dimensional cargo. Day one runs to midnight of the day after generation. A 450 km haul gets three days; a 201 km haul gets two.

CalculatorValidity Calculatorlink

Distance and cargo type in — validity days and the extension-window rules out.

Validity

3 days

One day per 200 km or part thereof. Day one runs to midnight of the day after generation.

Extension window

Extend within 8 hours before or after expiry — outside that window the bill is dead. Extensions cap at 360 days from generation, and the base document can’t be older than 180 days at generation.

The rules around the edges matter more than the division:

NumberSince
Standard cargo validity1 day per 200 km2021 revision
Over-dimensional cargo1 day per 20 km
Extension window8 hours before or after expiry
Document age cap at generation180 days1 Jan 2025
Maximum extension chain360 days from generation1 Jan 2025

The January 2025 date caps closed two old loopholes — billing against ancient invoices, and extending a bill forever. The 8-hour window is the operational one. An expired bill discovered Monday morning, for a truck that stopped Saturday night, is usually unfixable. That is precisely the gap the expiry watch below closes.

What detention actually costs

An expired e-way bill is treated the same as a missing one. Section 129 lets officers detain the goods and the vehicle, and release pricing is fixed:

CalculatorDetention Calculatorlink

Consignment value and GST rate in — the Section 129 release payment out, for taxable and exempt goods.

Section 129 release payment (owner comes forward)

1,80,000

200% of the tax payable (tax here: ₹90,000). If the owner does not come forward, the exposure is higher still. Add detention time, demurrage and a stalled delivery on top — the penalty is rarely the whole cost.

Movement on an expired e-way bill is treated the same as movement without one. Amounts per Section 129 CGST as currently applied — facts and officer discretion vary; get a CA involved the moment goods are detained.

For taxable goods with the owner coming forward, release costs 200% of the tax payable. For exempt goods, 2% of value capped at ₹25,000. The uncounted costs usually exceed the penalty: a detained truck is a missed delivery, demurrage, and a customer conversation. Minor documentation errors — spelling mistakes, a wrong PIN with the correct route — may instead draw a ₹500/₹1,000 penalty under the relaxation circulars. Do not plan around officer generosity.

If the truck is stopped

The first hour decides most detention outcomes. The sequence that protects you:

  1. Instruct the driver to cooperate and photograph everything — the bill, the invoice, the physical goods, the officer's initial memo.
  2. Escalate to the finance controller immediately — the one-hour rule in the SOP below exists because delay narrows options.
  3. Get the statutory forms — detention proceeds through MOV-01 to MOV-09; insist each step is documented on paper, not verbally.
  4. Verify the alleged defect yourself — an expired bill, a value mismatch and a clerical typo carry very different exposure, and officers conflate them.
  5. Decide payment versus contest with your CA on the call — paying under Section 129 releases the goods fast but has consequences for contesting later.

How ERPNext resolves the threshold

The state-wise variation above is not a footnote for software — it is the design problem. india_compliance solves it with a config table, and the resolution logic is worth reading (from india_compliance/gst_india/utils/e_waybill.py, checked at v16.6.0 on ERPNext v16.28.0):

def _get_e_waybill_threshold(doc, gst_settings=None):        # :1966
    if not gst_settings:
        gst_settings = frappe.get_cached_doc("GST Settings")

    if is_inter_state_supply(doc):
        return gst_settings.e_waybill_threshold              # flat ₹50k

    return get_intrastate_threshold(doc, gst_settings)

def get_intrastate_threshold(doc, gst_settings=None):        # :1975
    ...
    state = get_source_state_code(doc)
    state_config = get_state_code_wise_config(gst_settings)
    if state in state_config:
        config = state_config[state]
        if not config.get("intrastate_applicable"):
            return None
        return config.get("intrastate_threshold")
    return gst_settings.e_waybill_threshold

Inter-state supplies use the flat e_waybill_threshold. Intrastate resolves the source state against a State-wise e-Waybill Threshold table in GST Settings (e_waybill_threshold_for_intrastate, read at :1999) — with a per-state off-switch. Bills generate from Sales Invoices, Delivery Notes, Stock Entries and Subcontracting Receipts (:1150–1157) — the last two are how the job-work exception is handled in practice. Generated bills land in the e-Waybill Log doctype with valid_upto, is_cancelled and extension details — the exact fields the expiry watch queries. There is even built-in scheduled extension (extend_scheduled_e_waybills, :684) for bills you know will run long.

Pre-flight: the config table is empty by default

india_compliance falls back to the flat threshold when a state has no row in the intrastate table. Dispatch from Maharashtra with an empty table, and ERPNext prompts e-way bills from ₹50,000. That over-generates against the state's ₹1 lakh line. Harmless legally, wasteful operationally. The reverse misconfiguration — a wrong higher threshold — is the dangerous one. Populate the e_waybill_threshold_for_intrastate table for every state you ship from, and re-verify it whenever a state notification changes.

Dispatch raises, accounts extends

The org failure behind most detentions is that nobody owns the bill after the truck leaves. The split that works:

  • Dispatch owns generation. No vehicle moves on an above-threshold consignment without an e-way bill number on the Delivery Note. The client-script warning below makes this visible at submit.
  • Accounts owns extensions and cancellations. The 8-hour window means extension is a monitored duty, not an on-request favour. The hourly watch is their feed.
  • Drivers get told. The n8n recipe pushes expiry alerts to the driver's WhatsApp. The person who can actually stop and wait for an extension is the one who needs the message.

How does the expiry watch work?

Code recipeExpiry Watch Recipeslink

A dispatch-time warning, an hourly expiring-bills sweep over the e-Waybill Log, a packaged hooks.py variant, and driver WhatsApp alerts via n8n.

Delivery Note / Sales Invoice · warn before dispatch

// Client Script · DocType: Delivery Note (repeat for Sales Invoice)
// Warns at submit when consignment value crosses the e-way bill
// threshold and no e-way bill number is present yet.
// Threshold here mirrors GST Settings; hardcode your state's if simpler.

frappe.ui.form.on("Delivery Note", {
    validate(frm) {
        const THRESHOLD = 50000; // your operative threshold
        const total = frm.doc.base_grand_total || 0;

        if (total >= THRESHOLD && !frm.doc.ewaybill) {
            frappe.msgprint({
                title: "e-Way bill missing",
                indicator: "orange",
                message:
                    "Consignment value ₹" + Math.round(total).toLocaleString("en-IN") +
                    " crosses the e-way bill threshold and no e-way bill is " +
                    "attached. Generate it before the vehicle moves - " +
                    "detention under Section 129 costs 200% of tax.",
            });
        }
    },
});

All four run on your own infrastructure. Field names (`ewaybill`, e-Waybill Log, `valid_upto`) follow india_compliance v16.6.0 — verify against your instance before enforcing anything.

A transit policy you can lift into your SOP

e-Way Bill Policy (draft — for CA / ops review): No above-threshold consignment leaves the gate without an e-way bill number recorded on the dispatch document. The threshold per source state is maintained in GST Settings and reviewed quarterly against state notifications. Part-B is updated on every vehicle change. The hourly expiry watch alerts dispatch and accounts at T-8 hours; accounts extends within the window or instructs the driver to halt. Any detention is escalated to the finance controller within one hour, with the CA engaged before any payment under Section 129. Bills nearing the 360-day extension cap, or documents nearing the 180-day generation cap, are flagged weekly. Ratify thresholds and escalation contacts with your CA and transporters.

Should you choose Fix now or accept the risk?

Fix this weekAcceptable to defer
Dispatching above threshold with e-way bills generated 'later today'Voluntary bills on sub-threshold consignments
No expiry monitoring — extensions happen only when a driver callsAuto-extension tuning for routes that never run long
Intrastate threshold table empty while shipping from ₹1-lakh statesOptimising Part-B updates for single-vehicle direct runs
Inter-state job work moving without bills because 'it's under ₹50k'— that one is never deferrable; the floor doesn't apply

FAQ

+What is the e-way bill limit for intrastate movement?

It depends on the state the movement starts in. Most states use ₹50,000. Maharashtra, Delhi, Tamil Nadu, Bihar and Punjab set ₹1 lakh, and Rajasthan runs ₹2 lakh within city limits with ₹1 lakh between cities. Inter-state movement is ₹50,000 everywhere.

+How long is an e-way bill valid for 100 km?

One day. Validity is one day per 200 km or part thereof for standard cargo, so anything up to 200 km gets a single day. It runs to midnight of the day after generation. Over-dimensional cargo earns a day per 20 km, so 100 km ODC gets five days.

+Is an e-way bill needed for job work?

Inter-state job work: yes, at any value — the ₹50,000 floor does not apply when a principal sends goods to a job worker across state lines. Intrastate job work follows the state's normal threshold. In ERPNext these movements ride on Stock Entry and Subcontracting Receipt, both of which india_compliance supports for e-way bills.

+What happens if my e-way bill expires in transit?

Movement on an expired bill is treated as movement without one. Under Section 129 the goods and vehicle can be detained, with release at 200% of the tax payable (or 2% of value capped at ₹25,000 for exempt goods). The fix is prevention: extend within the 8-hour window around expiry, or stop the vehicle until extended.

+Can I extend an e-way bill after it has expired?

Only within 8 hours after expiry (or the 8 hours before it). Outside that window the bill cannot be extended at all, and the consignment needs to stop. Extensions also cannot run past 360 days from original generation.

+What are Part-A and Part-B of an e-way bill?

Part-A carries the consignment details — GSTINs, document number, value, HSN. Part-B carries the transport details — vehicle number or transporter document. A bill without Part-B is generally not valid for movement (the courier/transporter fills it in multi-leg journeys), and Part-B updates on every vehicle change.

What is the 180-day rule for e-way bills?. Since 1 January 2025, an e-way bill cannot be generated against a base document older than 180 days. Its sibling rule caps extensions at 360 days from the bill's original generation. Together they ended the practice of billing old invoices and extending bills indefinitely.

Which ERPNext version does this post apply to?. Code citations are from india_compliance v16.6.0 on ERPNext v16.28.0. The threshold resolver, state-wise config table and e-Waybill Log are current as of that version, and v15 behaves equivalently. The statutory rules are software-independent.

What is the bottom line?

The e-way bill limit itself is the easy part — ₹50,000 inter-state, your state's number at home, two any-value exceptions. What actually detains trucks is time: a validity someone computed wrong, an extension window someone slept through. Put the state table into GST Settings, the watch on the scheduler, and the driver on the alert list. Your ERPNext instance already has every field this needs — the recipes just switch them on.

Trucks moving, bills lagging?

We wire e-way bill generation, state-wise thresholds and the expiry watch into ERPNext as one fixed-scope engagement — dispatch stops improvising and detentions stop happening.

Now work out what this would cost you

Tell us what you're running now and we'll come back with a fixed scope, a timeline and a price. You own every line of what we build.

M

Written by

Manoj

Founder of Mith Tech, an open-source ERP & automation studio. Hands-on ERPNext/Frappe implementation across multi-branch, multi-warehouse Indian operations — GST/TDS/PT compliance, branch-level permissions, and custom Frappe apps that give management real-time visibility.

Free · By email

Get practical ERPNext & automation guides

New implementation guides, cost breakdowns and open-source tips for Indian businesses — occasionally, straight to your inbox. No spam.

Already a Mith Tech client?

Help the next operator choose.

Most teams evaluating ERPNext have no way to tell who actually delivers. If we’ve run an implementation for you, two lines on Google count for more than anything we can write about ourselves.

Leave a Google review

Only if we’ve actually worked together — Google filters reviews from non-customers, so an honest one is worth more than ten polite ones.

Keep reading

See what this looks like for your business

A 30-minute working session with a principal consultant. We pressure-test the architecture and outline the engagement model that fits your governance and procurement posture. You leave with a written brief.

0
Published on 6 August 2026

Manoj

Comments & ratings

No comments yet. Start a new discussion.