Home / Help Center / pos-app / Sell / Billing / GST E-Invoice
🧾 Sell / Billing

GST E-Invoice

GST E-Invoice manages Invoice Reference Numbers (IRNs) for GST-registered Indian businesses — generate a government-recognised IRN and QR code for a sale, attach an E-Way Bill for goods in transit, and cancel an IRN when needed, all from one dashboard.

📍 Menu path: Sell / Billing → GST E-Invoice
👤 Who uses it: All Billing-access roles can view the E-Invoice list; generating or regenerating an IRN needs Create permission, cancelling an IRN needs Delete permission, and downloading the invoice JSON needs Export permission. India-only feature — hidden for stores outside India.

Overview

This page is gated to stores whose country is India — everywhere else it shows a "Not available for your region" message instead of the dashboard, since e-Invoicing is a GST-specific legal requirement.

The main list shows every e-Invoice record generated so far, with its IRN, acknowledgement number/date, linked invoice, customer, total and E-Way Bill (if any); clicking a row opens a full detail view for that sale.

From the detail view you can generate a fresh IRN for a sale that does not have one yet, regenerate one, cancel an active IRN, attach an E-Way Bill for transport, and download the raw e-Invoice JSON payload.

Before You Start

Step-by-Step Guide

1 Browse and search e-Invoice records

  1. Use the search box ("Search IRN, invoice…") to filter by IRN, invoice number or customer.
  2. Use the status filter dropdown (All Statuses, Active, Cancelled, Failed, Pending) to narrow the list.
  3. Click Refresh to reload the list (the icon spins while loading).
  4. Click any row's View button to open the full IRN/E-Way Bill detail for that sale.

2 Generate an IRN for a sale

  1. Open the detail view for the sale (via View from the list, or the direct /einvoice/:saleId URL).
  2. If no IRN exists yet, click Generate IRN; if one already exists, the same button reads Regenerate IRN.
  3. Wait for the button to show "Generating…" — on success the IRN, Acknowledgement Number, Acknowledgement Date and signed QR code appear in the IRN Details card.
  4. Use the copy icon next to the IRN or Acknowledgement Number to copy it to the clipboard for filing or customer queries.

3 Attach an E-Way Bill for transport

  1. From the detail view (only available once the IRN is Active), click Generate E-Way Bill.
  2. Choose the Transport Mode (Road, Rail, Air or Ship) and Supply Type (Outward or Inward).
  3. Enter the Vehicle Number (e.g. DL01AB1234), and optionally the Transporter ID, Transporter Name and Distance (km).
  4. Submit the form — on success the new E-Way Bill number appears immediately in the E-Way Bills section of the detail page with its validity date, vehicle number and transport mode.

4 Cancel an IRN

  1. From the detail view, click Cancel IRN (only shown while the IRN is Active and you have Delete permission).
  2. Read the cancellation warning in the modal, then choose a Reason: Duplicate, Data entry mistake, Order cancelled, or Others.
  3. Optionally add Remarks with extra detail.
  4. Submit — the IRN status updates to Cancelled and the reason is shown on the record going forward; this cannot be undone.

5 Download the e-Invoice JSON

  1. From the detail view, click Download JSON (requires Export permission).
  2. The full e-Invoice payload is downloaded as a .json file named after the sale, for sharing with your accountant or GSP/ERP integration.

Every Field & Button, Explained

Field / ButtonWhat it does
Search boxFilters the list by IRN, invoice number or customer name.
Status filterAll Statuses, Active, Cancelled, Failed, Pending.
Generate IRN / Regenerate IRNCreates (or re-creates) the government IRN for the sale; label changes once a record already exists.
Cancel IRNCancels an Active IRN; requires a Reason code and optional Remarks, with an irreversible-action warning.
Generate E-Way BillOpens the E-Way Bill form (Transport Mode, Supply Type, Vehicle Number, Transporter ID, Transporter Name, Distance) for an Active IRN.
Download JSONDownloads the raw e-Invoice JSON payload for the sale.
IRNThe Invoice Reference Number issued by the government e-Invoice system.
Acknowledgement Number / DateProof-of-filing reference and timestamp returned alongside the IRN.
Signed QR CodeThe government-signed QR string that must be printed on the physical/PDF invoice; verifiable at einvoice1.nic.in.
E-Way Bill listEvery E-Way Bill generated against this sale, with number, validity, vehicle and transport mode.
Status badgeActive, Cancelled, Pending, Failed, or Expired (for E-Way Bills).

Tips & Best Practices

Troubleshooting & FAQ

The page just shows "Not available for your region".
GST e-Invoicing is India-specific. This page (and the underlying feature) only renders for stores whose country is set to India in Settings.
I don't see Generate IRN, Cancel IRN or Download JSON.
These actions are permission-gated: Generate/Regenerate needs Create permission, Cancel needs Delete permission, and Download JSON needs Export permission on the E-Invoice page.
Generate E-Way Bill isn't showing up for a sale.
It only appears once that sale already has an Active IRN — generate the IRN first.
Can I undo an IRN cancellation?
No — cancelling an IRN is permanent and reflected immediately in government records; if you need a valid invoice again you must regenerate a fresh IRN.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/packages/pos-react-lib/src/pages/EInvoiceDashboard.jsx

Backend endpoints used:

  • GET /einvoice
  • GET /einvoice/:saleId
  • GET /einvoice/:saleId/ewaybills
  • POST /einvoice/:saleId/generate
  • POST /einvoice/:saleId/cancel
  • POST /einvoice/:saleId/ewaybill/generate
  • GET /einvoice/:saleId/json

Related tables (db-core repositories):

  • EInvoice
  • EWayBill
  • Sale

Redux slices:

  • scope (selectCurrentScope / getScopeQueryParams)

Feature flag key: gst (requires advanced plan tier or above)

The India gate is a hard storeFmt.isIndia check at the top of the component (not just a feature flag), so the entire dashboard — list and detail — renders a NotIndia placeholder for non-Indian stores regardless of permissions. The list view fetches up to 10,000 records in one call (limit: 10000) and does client-side DataGrid pagination/sorting on top.