Generate an e-Way Bill
You can generate an e-Way Bill in two modes.
Mode 1 — derive from an IRN (preferred)
If you've already generated the IRN through OneFinOps, pass its id and we'll pull seller, buyer, totals and items from the IRN record. You only supply transport details.
POST /v1/ewaybills HTTP/1.1
Host: api.in.onefinops.com
Authorization: Bearer ...
Idempotency-Key: ewb-INV-2026-00001{
"eInvoiceId": "einv_01HRXY...",
"sellerGstin": "29ABCDE1234F1Z5",
"supplyType": "O",
"subSupplyType": "1",
"documentType": "INV",
"documentNumber": "INV-2026-00001",
"documentDate": "2026-05-04",
"transactionType": 1,
"from": { ... },
"to": { ... },
"totals": { "totalValue": 10000, "totalInvoiceValue": 11800 },
"transport": {
"transportMode": 1,
"distance": 980,
"vehicleNumber": "KA01AB1234",
"vehicleType": "R"
},
"items": [{ "hsnCode": "998314", "taxableAmount": 10000 }]
}(You still send from and to because EWB needs the dispatch / delivery addresses, which the IRN does not necessarily carry — they describe the physical movement.)
Mode 2 — standalone
For movements that don't need an IRN (delivery challans, job-work transfers, imports), omit eInvoiceId and supply the full payload.
Required NIC concepts
These mirror NIC's EWB schema directly:
transactionType
transactionType| Value | Meaning |
|---|---|
1 | Regular |
2 | Bill-To / Ship-To (buyer differs from consignee) |
3 | Bill-From / Dispatch-From (seller differs from consignor) |
4 | Combination of 2 + 3 |
Set dispatchFromGstin/dispatchFromTradeName when type is 3 or 4. Set shipToGstin/shipToTradeName when type is 2 or 4.
subSupplyType
subSupplyType| Code | Meaning |
|---|---|
1 | Supply |
2 | Import |
3 | Export |
4 | Job Work |
5 | For Own Use |
6 | Job Work Returns |
7 | Sales Return |
8 | Others — subSupplyDescription required |
9 | SKD/CKD |
10 | Line Sales |
11 | Recipient Not Known |
12 | Exhibition or Fairs |
transport
transportNIC's EWB is split into Part-A (the bill) and Part-B (the vehicle). You can:
- Supply
vehicleNumber→ generate a complete EWB (Part-A + Part-B). - Supply only
transporterId(transporter GSTIN or TRANSIN) → generate Part-A; the transporter assigns the vehicle later via Update Part-B.
transportMode: 1=Road, 2=Rail, 3=Air, 4=Ship. distance in km, capped at 4000.
Party stateCode fields
stateCode fieldsEach from and to party carries two state codes:
actualStateCode— the physical state where goods are dispatched / received.billStateCode— the billing state (i.e. on the invoice).
These usually match but can differ in bill-from/ship-to scenarios.
Successful response
{
"id": "ewb_01HRXY...",
"object": "ewaybill",
"status": "generated",
"ewbNumber": "112345678901",
"generatedAt": "2026-05-04T11:50:18Z",
"validUntil": "2026-05-09T23:59:59Z",
"sellerGstin": "29ABCDE1234F1Z5",
"vehicleNumber": "KA01AB1234",
"transporterName": null,
"distanceKm": 980,
"totalInvoiceValue": 11800
}Validity periods
NIC computes validity from the consignment distance:
- Up to 100 km → 1 day
- Each additional 100 km → +1 day
- Over-Dimensional Cargo (
vehicleType: "O") → halved distance threshold (1 day per 20 km)
Check validUntil on every record. Once it lapses, you cannot extend retroactively — see Extend validity.
Prerequisites
- An OAuth client provisioned via the Developer hub (single
gstn-indiascope). - EWB credential uploaded for the seller GSTIN — see Set up EWB credentials. Without this you'll see a credential error from the upstream.
Next
Updated about 5 hours ago
