GSTN and NIC has introduced mandatory changes to the e-Invoice, e-Way Bill by IRN, and e-Way Bill APIs to improve Bill-to/Ship-to transaction accuracy and goods movement traceability.These changes will be effective in Production from 1 August 2026. Businesses using ERP, GSP/ASP, or direct GST API integrations should update their systems before the go-live date to ensure uninterrupted
What ERP users need to know
For Bill-to/Ship-to transactions, and combination of Bill-from/Dispatch-from and Bill-to/Ship-to transactions, where the goods are delivered to a party different from the Bill-to party:
- Ship-to GSTIN is required when the Ship-to party is registered.
- URP may be used where the Ship-to party is unregistered.
- The Bill-to GSTIN and Ship-to GSTIN cannot be the same in a Bill-to/Ship-to transaction.
- The Ship-to GSTIN must be valid, and the State Code and PIN Code must match the Ship-to details.
Regular transactions and Bill-from/Dispatch-from transactions, where goods are delivered to the Bill-to party, do not require a separate Ship-to GSTIN.
🔧 Key JSON/API Changes
1. Generate IRN and e-Way Bill Together When Ship-to details are provided and an e-Way Bill is also being generated the JSON Structure is as below:
| Old | New |
| “ShipDtls”: { “LglNm”: “CBE company pvt ltd”, “TrdNm”: “kuvempu layout”, “Addr1”: “7th block,”, “Addr2”: “kuvempu layout”, “Loc”: “Banagalore”, “Pin”: 562160, “Stcd”: “29” }, | “ShipDtls”: { “Gstin”: “29xxxxxxxxx”, “LglNm”: “CBE company pvt ltd”, “TrdNm”: “kuvempu layout”, “Addr1”: “7th block”, “Addr2”: “kuvempu layout”, “Loc”: “Banagalore”, “Pin”: 562160, “Stcd”: “29” }, |
ShipDtls.Gstin – Conditionally mandatory
The field is required when Ship-to Legal Name and Ship-to Address are provided.
Accepted Values in ShipDtls.Gstin :
- Valid Ship-to GSTIN, or
- URP, wherever applicable.
2. Generate e-Way Bill Using IRN In case of Bill-to/Ship-to transactions, if Ship-to address is not provided at the time of IRN generation it may be provided with a new field added as under:
| Old | New |
| { “Irn”: “”, “Distance”: 100, “TransMode”: “1”, “TransId”:”12XXXXXX”, “TransName”: “trans name”, “TransDocDt”: “01/08/2020”, “TransDocNo”: “TRAN/DOC/11”, “VehNo”: “KA12ER1234”, “VehType”: “R” } | { “Irn”: “”, “Distance”: 100, “TransMode”: “1”, “TransId”:”12XXXXXX”, “TransName”: “trans name”, “TransDocDt”: “01/08/2020”, “TransDocNo”: “TRAN/DOC/11”, “VehNo”: “KA12ER1234”, “VehType”: “R”, “ExpShipDtls”: { “Gstin”:”29XXXXXXXXXX”, “TrdNm”:”ABC”, “Addr1”: “7th block”, “Addr2”: “kuvempu layout”, “Loc”: “Banagalore”, “Pin”: 562160, “Stcd”: “29” } } |
ExpShipDtls.Gstin – Mandatory
Accepted Values in ExpShipDtls.Gstin:
- The Ship-to GSTIN, or
- URP, wherever applicable
An additional field has also been introduced:
ExpShipDtls.TrdNm – Optional
This field is used to provide the Ship-to Trade Name.
3. Generate e-Way Bill When Ship-to details are provided for generating the e-Way Bill the JSON Structure is as below
| Old | New |
| { “supplyType”: “O”, “subSupplyType”: “1”, “subSupplyDesc”: “”, “docType”: “INV”, “docNo”: “sum/1/23/79”, “docDate”: “07/07/2017”, “fromGstin”: “29AAFCC9980M1ZR”, “fromTrdName”: “welton”, “fromAddr1”: “2ND CROSS NO 5919 A”, “fromAddr2”: “BORNE ROAD”, “fromPlace”: “FRAZER TOWN”, “fromPincode”: 560090, “fromStateCode”: 29, “toGstin”: “29AEKPV7203E1Z9”, “toTrdName”: “sthuthya”, “toAddr1”: “Shree Nilaya”, “toAddr2”: “Dasarahosahalli”, “toPlace”: “Beml Nagar”, “toPincode”: 560090, “actToStateCode”: 29, “toStateCode”: 27, “transactionType”: 2, “otherValue”: “0”, “totalValue”: 56099, “cgstValue”: 0, “sgstValue”: 0, “igstValue”: 300.67, “cessValue”: 400.56, “cessNonAdvolValue”: 400, “totInvValue”: 68358, “transporterId”: “”, “transporterName”: “”, “transDocNo”: “”, “transMode”: “1”, “transDistance”: “100”, “transDocDate”: “”, “vehicleNo”: “PVC1234”, “vehicleType”: “R”, “itemList”: [ { “productName”: “Wheat”, “productDesc”: “Wheat”, “hsnCode”: 1001, “quantity”: 4, “qtyUnit”: “BOX”, “cgstRate”: 0, “sgstRate”: 0, “igstRate”: 3, “cessRate”: 3, “cessNonadvol”: 0, “taxableAmount”: 5609889 } ] } | { “supplyType”: “O”, “subSupplyType”: “1”, “subSupplyDesc”: “”, “docType”: “INV”, “docNo”: “sum/1/23/79”, “docDate”: “07/07/2017”, “fromGstin”: “29AAFCC9980M1ZR”, “fromTrdName”: “welton”, “fromAddr1”: “2ND CROSS NO 5919 A”, “fromAddr2”: “OSBORNE ROAD”, “fromPlace”: “FRAZER TOWN”, “fromPincode”: 560090, “fromStateCode”: 29, “toGstin”: “29AEKPV7203E1Z9”, “toTrdName”: “sthuthya”, “toAddr1”: “Shree Nilaya”, “toAddr2”: “Dasarahosahalli”, “toPlace”: “Beml Nagar”, “toPincode”: 560090, “actToStateCode”: 29, “toStateCode”: 27, “transactionType”: 2, “shipToGSTIN”: “29ABCDE8755F1Z2”, “shipToTradeName”: “XYZ Traders”, “otherValue”: “0”, “totalValue”: 56099, “cgstValue”: 0, “sgstValue”: 0, “igstValue”: 300.67, “cessValue”: 400.56, “cessNonAdvolValue”: 400, “totInvValue”: 68358, “transporterId”: “”, “transporterName”: “”, “transDocNo”: “”, “transMode”: “1”, “transDistance”: “100”, “transDocDate”: “”, “vehicleNo”: “PVC1234”, “vehicleType”: “R”, “itemList”: [ { “productName”: “Wheat”, “productDesc”: “Wheat”, “hsnCode”: 1001, “quantity”: 4, “qtyUnit”: “BOX”, “cgstRate”: 0, “sgstRate”: 0, “igstRate”: 3, “cessRate”: 3, “cessNonadvol”: 0, “taxableAmount”: 5609889 } ] } |
Important API Validations
ERP/API integrations should be prepared for the following validations:
- Ship-to GSTIN is mandatory when applicable.
- Bill-to GSTIN and Ship-to GSTIN cannot be the same in a Bill-to/Ship-to transaction.
- Ship-to State Code must match the GSTIN State Code.
- Ship-to PIN Code must belong to the Ship-to State Code.
Action Required for ERP & API Users To ensure uninterrupted e-Invoice and e-Way Bill generation after 1 August 2026, businesses
should:
- Update ERP master data to capture Ship-to GSTIN.
- Modify API payloads to include the new mandatory fields.
- Send URP where the consignee is unregistered.
- Validate Bill-to/Ship-to transaction logic.
- Update Logic not to provide same GSTIN for Bill-to and ship-to fields.
- Clearly define the logic for Regular and Bill-to/ship-to transactions.
- Should not print the Ship-to GSTIN on the EWay bill print PDF.
FAQ’s :
- If the Goods or delivered to a different branch registered under same GSTIN of Head-office, is it a Bill-to/ship-to transaction?
- No. It is a regular transaction, Please provide the Branch address in the Billing address field and do not provide shipping address fields
- Will Ship-to GSTIN be printed on the e-Way Bill?
- No. Ship-to GSTIN shall not be printed on the e-Way Bill generated on the e-Way Bill portal.
- Will Ship-to GSTIN be provided through GET e-Way Bill APIs?
- No. Ship-to GSTIN shall not be provided through the GET e-Way Bill APIs.
- What will continue to be visible on the e-Way Bill?
- The relevant Ship-to address and PIN code shall continue to be shown as per the existing practice.
- Does entering URP mean that the transaction is treated as a domestic supply to an unregistered person?
- No. Entry of URP is a system-level treatment for EWB generation in export-related movement. The nature of export shall be determined based on export invoice, shipping bill, customs documents, transport documents and other applicable records.
