Send the e-way bill number, where the consignment is now, how far it still has to go and why you need more time. The validity moves forward and you get the new valid_upto back. It works only between 8 hours before and 8 hours after the current expiry.
Cost: 3 credits per successful call. A rejection or an upstream failure is never charged.
Every call accepts "test_mode": true and returns a sample in the live shape, free. Set up your API credentials before the first real call.
The government network allows an extension between 8 hours before and 8 hours after the e-way bill's expiry time. Outside that window the request is refused and you are not charged.
It can be done only by the current transporter, or by the generator if no transporter is assigned. The remaining distance cannot be more than the distance declared when the e-way bill was generated.
extension_reason_code is one of 1 Natural Calamity, 2 Law and Order Situation, 4 Transshipment, 5 Accident, 99 Others. extension_remark is required along with it.
consignment_status M means the goods are moving in a vehicle: send vehicle_no. T means they are in transit somewhere else; then also send transit_type: R road, W warehouse or O others.
The e-way bill must already have a Part B (vehicle) entry. Without one the network refuses the extension with error 381, so update the vehicle first.
| Field | Type | Required | Meaning |
|---|---|---|---|
| gstin | string | Yes | The GSTIN you act as, with API access set up. |
| gstin_username | string | Yes | The e-way bill API username for that GSTIN. Never stored. |
| password | string | Yes | The matching API password. Never stored. |
| ewaybill_no | string | Yes | The e-way bill number. |
| from_place | string | Yes | Where the consignment is now. |
| from_state | integer | Yes | State code of that place. |
| from_pincode | integer | Yes | Pincode of that place. |
| remaining_distance | integer | Yes | Kilometres still to travel. |
| extension_reason_code | integer | Yes | 1, 2, 4, 5 or 99. |
| extension_remark | string | Yes | Why more time is needed. |
| consignment_status | string | Yes | M (in movement) or T (in transit). |
| vehicle_no | string | No | Required when consignment_status is M. |
| transit_type | string | No | R, W or O, for consignment_status T. |
| test_mode | boolean | No | true returns a sample in the live shape: free, nothing is filed. |
Send your API key in the x-api-key header. Government API credentials are used for the one call and never stored.
The request below runs in test mode, so it is free and files nothing. Remove test_mode for a real call.
curl -X POST "https://www.gstinapi.in/v1/ewaybill/extend-validity" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{ "gstin": "24AAAAA0000A1Z5", "gstin_username": "YOUR_EWB_API_USER", "password": "YOUR_EWB_API_PASSWORD", "ewaybill_no": "351000000123", "from_place": "SURAT", "from_state": 24, "from_pincode": 395010, "remaining_distance": 40, "extension_reason_code": 1, "extension_remark": "Flood", "consignment_status": "M", "vehicle_no": "GJ05CD5678", "test_mode": true }'Response
{
"success": true,
"ewaybill_no": "351000000123",
"updated_date": "23/10/2026 11:28:00 PM",
"valid_upto": "25/10/2026 11:59:00 PM",
"billed_to": "paid",
"credits_remaining": 197
}| Code | Message | What to do |
|---|---|---|
| 381 | There is No PART-B/Vehicle Entry | Add the vehicle first with the update vehicle call, then extend. |
Not affiliated with the Government of India. Rules are the government network's own and can change; if a page here looks out of date, tell us.