How to generate an e-invoice under GST (step-by-step)

E-invoicing reports your B2B invoices to the government portal, which returns a unique IRN and a QR code. Here is who needs it and how to generate one without the manual grind.

Step 1: Check if e-invoicing applies to you

E-invoicing is mandatory once your aggregate turnover crosses the notified threshold. Below it, it is optional but useful. Confirm your current turnover against the latest limit.

Step 2: Prepare a compliant invoice

Your invoice needs the mandatory fields: your GSTIN, the buyer's GSTIN, HSN codes, correct tax split (CGST/SGST or IGST) and totals. Missing fields will fail validation.

Step 3: Push it to the IRP

The invoice is sent to the Invoice Registration Portal (IRP), either directly or through your billing software. The IRP validates it and returns an Invoice Reference Number (IRN) and a signed QR code.

Step 4: Print the IRN and QR on the invoice

The final invoice you give the customer must show the IRN and QR code. This is what makes it a valid e-invoice.

Step 5: Let it flow into your returns

E-invoice data auto-populates parts of your GSTR-1 and the e-way bill, which cuts double entry and mismatch notices.

Step 6: Use software to avoid manual work

Doing this per invoice on the portal is slow. Billing software that is e-invoice ready generates the IRN and QR automatically when you raise the invoice.

Frequently asked questions

What is an IRN?

The Invoice Reference Number is a unique code the government portal returns for each reported invoice. Along with the QR code, it makes the invoice a valid e-invoice.

Do I need e-invoicing for B2C sales?

E-invoicing currently applies to B2B invoices and exports. B2C invoices do not need an IRN, though QR codes may apply separately for large taxpayers.

What happens if I do not generate an e-invoice when required?

An invoice that should have an IRN but does not is treated as invalid, the buyer can lose input tax credit, and penalties can apply. If you are over the threshold, it is not optional.