e-Invoice Module¶
Applies to: e-Invoice · Which modules do I have?
Purpose¶
Configure IRN generation, cancellation, tracking and printing, and set out plainly which constraints are statutory and therefore not configurable — the source of a large share of avoidable support tickets.
Audience¶
Implementation consultants and the customer's indirect tax lead.
Prerequisites¶
- Module enabled for the relevant registrations
- GSP Configuration complete, with a passing connection test
- Master data loaded and validated
- Document Type Routing reviewed
- The applicable reporting window confirmed in writing by the tax lead
Steps¶
1. Confirm which document types produce an IRN¶
By default INV, CRN and DBN route to IRN. Confirm this matches the customer's document set before anything else — see Document Type Routing.
2. Establish the reporting window¶
Higher-turnover taxpayers must report an invoice to the registration portal within a limited period of its document date. Complifly enforces this at ingest, deliberately: a stale invoice is isolated at the door rather than sitting in a workbench looking ready and failing when a user presses Generate.
Two consequences to plan for:
- A historical backlog will quarantine. If the customer intends to load old documents, agree the approach before the load, not after.
- The window is not recoverable. Once it closes, no configuration, escalation or support action reopens it. The document cannot be registered.
Confirm the applicable window with the tax lead in writing.
3. Decide on automatic generation¶
AUTO_IRN_ENABLED fires generation the moment a document is ingested. It defaults to off.
| Manual — default | Automatic |
|---|---|
| A person reviews before committing | No human in the loop |
| Slower; a queue can build | Immediate |
| Errors caught before a billed call | Rejections happen at volume |
| Suits a new or unproven feed | Suits a proven, high-quality feed |
Enable it only once validation quality is demonstrated over real volume. Automating generation over a poor feed converts a manageable review queue into a stream of rejections, each of which consumed a billed call.
4. Configure retry behaviour¶
Retries protect against transient failures — a network blip, a momentarily unavailable provider. They do nothing for a rejection, which is deterministic: retrying a rejected document consumes billed calls to no purpose. See Environment Variables.
5. Configure printing¶
See Print Configuration. The one check that matters: print a document and scan the QR code from paper.
6. Understand cancellation¶
| Property | Detail |
|---|---|
| Time-limited | Cancellation is only possible within the statutory window |
| The number is not released | Cancelling does not free the document number. It remains consumed at the registration portal, permanently |
| Routed by provenance | The cancellation goes to the provider that issued the IRN, not the tenant's current provider |
| Requires checker authority | Only the checker role can cancel, unless segregation has been relaxed |
The second row is the one customers most often misunderstand. After cancelling, the corrected document must be issued under a new number. There is no amendment mechanism in GST and no way to reuse the number.
7. Statutory constraints — not configurable¶
| Constraint | Consequence |
|---|---|
| One IRN per supplier, document type and number | A repeated number is rejected as a duplicate, permanently |
| A cancelled number stays consumed | Re-issue under a new number |
| The reporting window cannot be reopened | A missed window cannot be recovered |
| The cancellation window is fixed | After it, a credit note is the instrument, not a cancellation |
| The signed QR must appear on the document | Not optional |
When a customer asks for one of these to be changed, the answer is an explanation, not a configuration change.
Validation¶
| Check | Method | Pass condition |
|---|---|---|
| Provider connection works | Connection test | Success |
| Routing correct | Ingest one document of each type | Each routes as intended |
| Validation catches faults | Submit a document missing a required field | Quarantined, with the field named |
| Generation works | Generate one IRN in the sandbox | 64-character IRN, signed QR and acknowledgement stored |
| Reporting window enforced | Submit a document dated outside the window | Isolated at ingest, with a clear reason |
| Duplicate rejected | Submit the same number twice | Second one rejected |
| Automatic generation behaves as configured | With it on, ingest one document | Generates unattended. With it off, it waits |
| Printing works from paper | Print and scan the QR with a phone | Scans reliably |
| Cancellation works | Cancel a test IRN in the sandbox | Status becomes cancelled; the number remains consumed |
| Provenance followed | After a provider switch in a test tenant, cancel an older document | Succeeds |
| Permissions enforced | Sign in as a maker and attempt to generate | Refused, when segregation is enforced |
Troubleshooting¶
| Symptom | Cause | Action |
|---|---|---|
| Documents quarantined at ingest | Validation failure, or outside the reporting window | Open the Correction Cockpit; the per-field messages name the fault |
| A whole historical batch quarantined | Outside the reporting window | Expected. Agree how historical documents are handled; the window cannot be reopened |
| Rejected as duplicate | The number is already registered, or the ERP series restarted | Fix the series. Cancelling does not release a number |
| Generation fails with a numbered error | A registration-portal rule was broken | Look it up in NIC Error Codes |
| Generation fails with no numbered error | Provider unreachable, credentials expired, or an unsupported operation | Run the connection test; check the capability state |
| Cancellation refused | Outside the cancellation window | A credit note is the instrument. Statutory, not configurable |
| Cancellation fails after a provider switch | Old provider's credentials withdrawn too early | Restore them while any of its documents remain actionable |
| Printing fails, generation succeeded | Rendering or print configuration, never the government | See Print Configuration |
| QR does not scan from paper | Rendered too small or cropped | Adjust the template and re-test on paper |
| Rejections at volume after enabling automatic generation | Feed quality insufficient for unattended operation | Turn it off, fix the feed, re-enable |
| A maker cannot generate | Segregation enforced. By design | See Segregation of Duties |
Related Articles¶
- e-Way Bill Module — raising a bill from an IRN
- Document Type Routing — which types produce an IRN
- NIC Error Codes — interpreting rejections
- e-Invoice Setup — the implementation procedure
- IRN Failures — the diagnostic tree