Odoo E-Invoice & E-Way Bill Problems: Causes & Solutions
E-invoice failures are data-quality problems wearing a technical mask. Rejections come from invalid HSN/UQC codes, incomplete partner GSTIN/state/pincode data, or an expired GSP session — not from Odoo's engine. Clean those three and IRNs flow.
First, confirm the symptom
- IRN generation fails with cryptic portal error codes
- E-invoice worked for months, then everything fails at once
- Some customers' invoices always fail; others always pass
- E-way bill generated without Part-B, or rejected for distance/vehicle data
1. GSP credentials and expired sessions
Odoo talks to the IRP through a registered GSP. If everything failed suddenly, the API credentials expired or were reset on the portal side — classic after a GST portal password change.
- Re-verify credentials in Accounting → Settings → Indian Electronic Invoicing and re-register the GSP on the e-invoice portal if needed.
- Test in sandbox mode first, then switch to production — and document who owns portal credentials.
2. HSN and UQC codes the portal refuses
The IRP validates HSN codes (length by turnover slab) and UQC unit codes (NOS, KGS, MTR...). Products imported with blank HSN or Odoo UoMs not mapped to UQC get line-level rejections.
- Audit products missing HSN with a filtered export; fill and re-import.
- Map every sale UoM to its UQC code in the unit configuration — one-time, then rejections stop.
3. Partner master data incomplete
B2B e-invoices need the buyer's GSTIN, state code and pincode to be present and consistent (GSTIN's state digits must match the state field). One sloppy customer record = every invoice to them fails.
- For failing customers, verify GSTIN format, State, and pincode on the partner form.
- Make GSTIN + State mandatory at customer creation (a tiny customization we ship in every GST project).
4. E-way bill Part-B and distance data
E-way bills fail or stay incomplete when transporter ID, vehicle number (Part-B) or distance is missing — or when the dispatch happens from a warehouse address different from the registered one.
- Capture transporter and vehicle at dispatch time (delivery order fields), not after.
- Keep warehouse addresses complete with pincodes; distance auto-computes from pincode pairs.
5. Cancelling and amending the wrong way
IRNs can be cancelled only within 24 hours; after that, corrections need credit notes. Teams that "reset to draft and edit" break the chain between Odoo documents and the portal.
- Within 24h: cancel the IRN from the invoice, then cancel/correct the invoice.
- After 24h: issue a credit note and a fresh invoice. Lock posted e-invoiced documents against editing.
We repair e-invoice and e-way bill pipelines — credentials, master data audit, UQC mapping, user SOPs — usually inside two days. Written fix plan first.
Frequently asked questions
Does Odoo Community support e-invoicing for India?
The Indian localization's e-invoicing flows are strongest on Enterprise; on Community we implement it via connectors/custom integration. Either way it is a solved problem — ask us for a demo.
Why did e-invoices suddenly stop working for everyone?
Almost always cause #1 — an expired or reset GSP session/credential. Re-authenticate and the queue clears.