Cancel an E-Way Bill

NIC permits the generator of an EWB to cancel it within 24 hours of generation, and only if movement has not begun. Past that window, the EWB cannot be cancelled — its record stays in NIC's system regardless.

This is different from rejection, which is what a counter-party (recipient or supplier named on the EWB but not the generator) does. See Reject an E-Way Bill.

The call

POST /v1/ewaybills/cancel HTTP/1.1
Host: api.in.onefinops.com
Authorization: Bearer eyJhbGciOi...
gstin: 29ABCDE1234F1Z5
Content-Type: application/json
X-Request-Id: 4f1d8a2c-…
{
  "ewbNumber": 112345678901,
  "cancelReasonCode": "2",
  "cancelRemark": "Order cancelled — buyer did not confirm dispatch"
}

cancelReasonCode:

ValueReason
"1"Duplicate
"2"Order cancelled
"3"Data entry mistake
"4"Others

cancelRemark is free text, max 100 characters.

Response

The EWB record with status: "CNL" and cancelDate populated. Cancelled EWBs are not deleted — they remain visible via GET /v1/ewaybills/ewbnumber?ewbNumber=… indefinitely, flagged cancelled.

Failure modes

StatusBody codeMeaning
404not_foundThe EWB isn't visible to your tenant.
409ewaybill.not_cancellablePast 24 hours, or NIC has marked movement as begun (a Part-B with vehicle in transit, for example).
502upstream.failureNIC refused — read upstream.code / upstream.message.

When you can't cancel

If you're past 24 hours, or movement has begun, NIC won't accept the cancel. Options at that point:

  • If a counter-party caused the issue (wrong consignee, wrong GSTIN), ask them to reject the EWB within 72 hours of generation.
  • If the journey is overrunning, see Extend validity.
  • If the EWB stays as-is and lapses, that's NIC's audit trail — no API call recovers it.

Where to next