How-to 10 min read

How to Generate an E-Way Bill, Step by Step

Generating an e-way bill on the portal end to end — Part A, Part B, transporter details and the validation errors that stop you.

Written and reviewed by the GSTIN API team Last reviewed

E-way bill generation is a single form — Form GST EWB-01 — split into two halves. Part A carries the commercial facts: who is sending, who is receiving, which document covers the movement, and what is in the consignment down to HSN and taxable value. Part B carries the movement facts: the mode of transport and either a vehicle number or a transport document number. Fill both, submit, and the portal returns a 12-digit e-way bill number (EBN) that has to travel with the goods.

What you need before you open the portal

Most failed attempts are really missing-input problems, not portal problems. Before you start the form, collect:

  • The source document — tax invoice, bill of supply, delivery challan or bill of entry — with its number and date. The number you type must match the document exactly, because this is the field auditors and the recipient's records reconcile against.
  • The counterparty GSTIN, and confirmation that it is active. A cancelled or suspended GSTIN on the other side will fail validation or, worse, pass and leave you with a movement documented against a dead registration.
  • The dispatch and delivery PIN codes. The portal derives approximate distance from the PIN pair, and distance drives validity.
  • HSN code, quantity, unit and taxable value for every line, plus the applicable tax rate.
  • Transport details: either a vehicle number, or a transport document number for rail, air or ship, or a Transporter ID if someone else will supply the vehicle.

If you are not sure whether the consignment needs an e-way bill at all, settle that first — the e-way bill rules and consignment value limits decide it, and generating an unnecessary bill creates a record you then have to cancel.

Part A: supply type, document and item details

Part A opens with two dropdowns that people rush and then regret. Transaction type is Outward if you are sending the goods and Inward if you are receiving them — it is asked from the point of view of the person logged in, not from the point of view of the invoice. Sub-type then narrows the reason for movement: Supply, Export, Import, Job Work, SKD/CKD (goods moved semi-knocked-down or completely-knocked-down in multiple consignments), Recipient Not Known, For Own Use, Exhibition or Fairs, Line Sales, and Others.

The sub-type matters because it changes which document type is sensible. A job-work movement or a branch transfer for own use is usually covered by a delivery challan rather than a tax invoice, and the document type dropdown should follow.

FieldWhat to enterWhy it matters
Transaction typeOutward or InwardDecides whether the From or To block is pre-filled with your own details.
Sub-typeSupply, Export, Job Work, For Own Use, Exhibition, and so onRecords the reason for movement; drives which document type fits.
Document typeTax invoice, bill of supply, delivery challan, bill of entry, credit noteMust match the paper that actually accompanies the goods.
Document number and dateExactly as on the documentThe reconciliation key between the e-way bill and your outward supply records.
From / To GSTINCounterparty GSTIN, or URP for an unregistered partyValidated live against the GST registry; a bad GSTIN blocks submission.
From / To PIN codeDispatch and delivery PINFeeds the auto-calculated distance, which sets the validity period.
Item linesDescription, HSN, quantity, unit, taxable value, tax rateProduces the consignment value the threshold is tested against.
The main Part A fields and what each one is actually for.

Two address subtleties are worth knowing. First, the dispatch address does not have to be the supplier's registered address — a bill-to/ship-to sale where goods leave a third party's godown is entered by changing the dispatch block, not by faking the GSTIN. Second, URP (unregistered person) is the correct entry when the counterparty has no GSTIN; do not put a placeholder number in that field.

Getting HSN and consignment value right

Every item line needs an HSN code, and the portal checks that the code exists and is well-formed rather than that it is the right code for your product. That check is yours to do. Misclassification here propagates: the same HSN lands on the invoice, in GSTR-1, and in the rate you charged, so an e-way bill with a wrong HSN usually means an invoice with a wrong HSN. Our guide to HSN codes and digit requirements covers how many digits you are obliged to quote at your turnover level.

Consignment value is the other number to get right, because it is what the e-way bill threshold is tested against. It is built from the taxable value of the goods plus the tax charged on them, and it excludes the value of any exempt goods travelling in the same consignment. Since the rate structure changed on 22 September 2025, item rates should be picked from the current GST rate slabs rather than from a stale rate master — a rate master still carrying 12% or 28% will produce a tax figure, and therefore a consignment value, that does not match the invoice.

Part B: transporter ID or vehicle number

Part B answers a narrower question: how is this consignment physically moving right now? Pick the mode — road, rail, air or ship — and then supply the matching identifier.

  • Road. Enter the vehicle registration number, and set the vehicle type to Regular or Over Dimensional Cargo. ODC is not cosmetic: over-dimensional cargo is allowed a different distance-per-day rate when validity is computed.
  • Rail, air or ship. Enter the transport document number — railway receipt, airway bill or bill of lading — together with its date, instead of a vehicle number.

If you do not yet know the vehicle, that is the normal case rather than a problem. Enter the Transporter ID in Part A and submit with Part B blank. The transporter then sees the bill on their dashboard and completes Part B before the goods actually move. A GST-registered transporter uses their GSTIN as the Transporter ID; a transporter not registered under GST enrols separately on the e-way bill portal and gets a 15-character enrolment ID that behaves identically. Either way the value is 15 characters, so the field looks like a GSTIN even when it is not — the GSTIN format breakdown is useful if you want to tell them apart.

Part B is also the field you keep coming back to. Trans-shipment, a breakdown, a change of carrier mid-route — each one is a Part B update against the same EBN, not a new bill. Every update is timestamped, which is precisely what makes the e-way bill a movement trail rather than a static document. What an update does not do is extend the clock: validity is fixed at generation from the distance, and the mechanics of that are covered in e-way bill validity and distance.

After generation: the EBN, updates and cancellation

On submit, the portal returns a 12-digit e-way bill number along with the generation timestamp and the validity window. That number has to be available with the consignment — carried on the printed bill, on the invoice, or accessible to the driver — so the movement can be verified if the vehicle is stopped.

Three things can happen to a live e-way bill:

  1. Part B updates, as many times as the goods change vehicles inside the validity period.
  2. Cancellation, if the consignment is not despatched or the bill was raised in error. This is allowed only within a limited window after generation, and not at all once the consignment has been verified in transit.
  3. Rejection by the counterparty, where the other party to the movement disowns a bill raised against their GSTIN. This too has a fixed window, after which the bill is treated as accepted by default — which is the reason to look at bills raised against you rather than only at bills you raised.

If a single vehicle is carrying several consignments, generate the individual bills first and then link them into a consolidated e-way bill in Form GST EWB-02. The consolidated document is a convenience for the driver; it does not replace the underlying bills or change their validity.

The validation errors that actually stop people

Nearly every generation failure falls into one of a handful of buckets:

  • Generation blocked for the GSTIN. Under Rule 138E, a taxpayer in default on return filing for a set number of consecutive tax periods is blocked from generating e-way bills. Filing the pending returns lifts the block once the system refreshes. If this is you, the fix is upstream — see the GSTR-3B filing guide.
  • Invalid or inactive counterparty GSTIN. The portal validates the other side's GSTIN live. A cancelled or suspended registration will not go through.
  • Duplicate document number. The same document number and date against the same GSTIN is rejected as a duplicate, which usually means someone already generated the bill.
  • Malformed vehicle number. The registration number has to match the expected format; spaces and stray characters are the usual culprits.
  • PIN code and State mismatch. If the PIN code does not belong to the State selected, the distance calculation fails. The GST state code list is handy for cross-checking.
  • Distance out of range. The system proposes a distance from the PIN pair and allows only a limited upward variation on it — an arbitrary large number will be refused.

Bulk generation when one at a time stops working

The web form is fine for a few consignments a day. Past that, the portal's bulk generation facility takes a JSON file: you enter consignments into the official offline utility, which validates the layout and converts them into the prescribed JSON, and you upload the file in a single action. The system returns the EBNs for the rows that succeeded and an error list for the rows that did not, so a malformed row does not take down the whole batch.

The limitation is that bulk upload is still a manual loop — export, convert, upload, download results, reconcile — and the data has to be re-keyed or exported out of whatever system raised the invoices. It works well for a despatch team generating a fixed morning batch. It works badly when consignments are created continuously through the day.

The API route, and where verification fits

At real volume, e-way bills should be generated by the system that raises the invoice. The e-way bill API allows an ERP or dispatch system to submit EWB-01 payloads directly and receive the EBN back in the response, so the number lands on the invoice and in the despatch record without anyone opening a browser. Access is granted through a GST Suvidha Provider or a registered API user, and you enrol for it on the e-way bill portal.

Where verification genuinely belongs in this workflow is the step before generation. A counterparty GSTIN that is cancelled or suspended will fail EWB validation, and finding that out at the loading bay with a truck waiting is expensive. Checking the counterparty GSTIN when the sales order or purchase order is created — not at despatch — moves that failure to a point where it costs nothing to fix. A lookup is a single GET:

curl -H "x-api-key: YOUR_API_KEY" \
  https://gstinapi.com/api/get-taxpayer-info/27AAACR5055K1Z7

The response carries the legal name, registration status and address, which is enough to decide whether the consignment should be despatched against that party at all. For teams with a large vendor and customer master, running that check on a schedule rather than per-transaction is the cheaper pattern — see automated daily vendor GSTIN monitoring for how that is usually set up.

Frequently asked questions

Log in to the e-way bill portal, choose Generate New, fill Part A with the transaction type, sub-type, document type and number, the other party's GSTIN and place of delivery, and the item lines with HSN and taxable value. Then fill Part B with the mode of transport and either the vehicle number or the transport document number, or enter a Transporter ID if a transporter will supply the vehicle later. On submit the portal issues a 12-digit e-way bill number.
Yes, in two situations. If a transporter will move the goods, you can enter their Transporter ID in Part A and leave Part B blank for the transporter to complete before movement starts. There is also a short-distance relaxation within a State between the consignor and the transporter, or between the transporter and the consignee, where Part B is not required — check the current text of Rule 138 on the CBIC portal for the exact distance and conditions that apply to you.
A Transporter ID is the 15-character identifier a transporter uses on the e-way bill system. A GST-registered transporter uses their GSTIN. A transporter who is not registered under GST enrols separately on the e-way bill portal and receives a 15-character enrolment ID, often called a TRANSIN, which serves the same purpose.
Part A details cannot be edited once the bill is generated — a wrong invoice number or GSTIN means cancelling and generating a fresh bill. Cancellation is allowed within a limited window after generation and only if the consignment has not been verified in transit. Part B, by contrast, is designed to be updated: you can add a new vehicle number each time the goods change vehicles during the validity period.
The most common cause is return-filing default. Under Rule 138E, a taxpayer who has not filed returns for a set number of consecutive tax periods is blocked from generating e-way bills on their GSTIN, and the block lifts once the pending returns are filed and the system refreshes. Other causes are a cancelled or suspended GSTIN, or a counterparty GSTIN that the portal cannot validate.
The portal offers a bulk generation facility: you prepare the consignments in the official offline utility, convert them to a JSON file in the prescribed format, and upload it in one go. Above a few hundred consignments a day the practical answer is the e-way bill API through a GSP or an ERP integration, so the bill is generated by the same system that raised the invoice.

A note on accuracy. GST rules change often. This article reflects our understanding as of 4 September 2026 and is general information, not tax or legal advice. For the authoritative position, check gst.gov.in and cbic-gst.gov.in, or speak to a qualified tax professional about your specific situation.

Check a GSTIN right now, free

Five lookups a day, no account required. Status, filing history, e-invoicing and jurisdiction.

Free GST search tool

Build it into your product

One REST call, JSON back. Get an API key and 20 free verification credits in under a minute.

Start free