Standards/india-gst-einvoice-qr
India GST eInvoice QR
Overview
The India GST e-invoice QR code is a QR Code printed on invoices, credit notes and debit notes that have been reported to an Invoice Registration Portal (IRP) under rule 48(4) of the Central Goods and Services Tax (CGST) Rules, 2017. After a supplier reports the invoice, the IRP returns a signed JSON document containing a 64-character Invoice Reference Number (IRN) and a signed QR string, and the supplier's software turns that string into the QR Code on the invoice 13 14. Since 1 August 2023 the obligation falls on registered persons whose aggregate turnover exceeds five crore rupees (₹5 crore), under Notification No. 10/2023-Central Tax 9.
A separate rule, Notification No. 14/2020-Central Tax, requires a payment-oriented Dynamic QR code on business-to-consumer (B2C) invoices from suppliers with turnover above ₹500 crore. It is issued by the supplier rather than an IRP, and GSTN states that it "has no relevance or applicability" to e-invoicing under rule 48(4) 3 13.
History
The GST Council approved the introduction of e-invoicing in phases at its 37th meeting on 20 September 2019, with voluntary reporting of business-to-business (B2B) invoices planned from 1 January 2020. Its 39th meeting on 14 March 2020 recommended exempting certain classes of taxpayer and moving the start to 1 October 2020 14.
The legal framework came in stages:
- 13 December 2019: Notification 68/2019 inserted sub-rules (4) to (6) into rule 48, and Notification 69/2019 notified 10 portals for preparing invoices 13. Under rule 48(5), an invoice issued by a notified person in any other manner "shall not be treated as an invoice" 13.
- 13 December 2019: Notification 72/2019 required a QR code on B2C invoices from suppliers with turnover above ₹500 crore, from 1 April 2020 1.
- 21 March 2020: Notification 13/2020 replaced Notification 70/2019 and set the start of e-invoicing at 1 October 2020 2. Notification 14/2020 replaced 72/2019 and required a Dynamic QR code, from 1 October 2020 3.
- 30 September 2020: Notification 72/2020 inserted clause (r) into rule 46, making the QR code with embedded IRN a required invoice particular, and rewrote rule 138A(2) so the QR code may be produced electronically to an officer in place of a paper invoice 13. Notification 70/2020 changed the turnover test to "any preceding financial year from 2017-18 onwards" and brought in exports 13.
The turnover threshold moved as follows:
| Notification | Threshold | Effective |
|---|---|---|
| 13/2020, 21 March 2020 2 | above ₹100 crore | 1 October 2020 (as first notified) |
| 61/2020, 30 July 2020 13 | above ₹500 crore | before e-invoicing began |
| 88/2020, 10 November 2020 4 | above ₹100 crore | 1 January 2021 |
| 05/2021, 8 March 2021 5 | above ₹50 crore | 1 April 2021 |
| 01/2022, 24 February 2022 7 | above ₹20 crore | 1 April 2022 |
| 17/2022, 1 August 2022 8 | above ₹10 crore | 1 October 2022 |
| 10/2023, 10 May 2023 9 | above ₹5 crore | 1 August 2023 |
The IRP began as a single portal run by the National Informatics Centre (NIC), einvoice1.gst.gov.in 13. A GSTN advisory dated 25 February 2023 announced four new portals beside it 24. ClearTax now lists NIC on einvoice1 and einvoice2, with Cygnet, ClearTax, Ernst & Young and IRIS on einvoice3 to einvoice6; that mapping comes from a vendor, as the official portal could not be read for this article 23.
Technical specification
Who must issue it
Notification 13/2020, as amended, covers registered persons whose aggregate turnover exceeds the threshold, for supplies to registered persons 2 9. The eligibility test uses aggregate turnover on the common PAN, the Indian tax identifier shared by a legal entity's registrations 13. Supplies to Special Economic Zones, exports and deemed exports are covered 13.
GSTN lists the exempt classes as SEZ units, insurers, banking companies and financial institutions including NBFCs, goods transport agencies, suppliers of passenger transport, and suppliers of cinema admission in multiplex screens. The exemption attaches to the entity, not the transaction 13. Notification 23/2021 added government departments and local authorities on 1 June 2021 6. SEZ developers are not exempt, and input service distributors do not report 13.
From invoice to QR string
- The supplier's software prepares a JSON document following Form GST INV-01, which GSTN says is based on PEPPOL/UBL with Indian customisation, and uploads it to an IRP. An invoice may hold up to 1,000 line items 13.
- The IRP validates the invoice and computes the IRN, then checks it against a central registry so the same document cannot be registered twice 14.
- The IRP signs the JSON with its private key, adds the QR string, and returns the signed JSON 14. It returns a string, not an image, and no PDF 13.
- The supplier's system renders the string as a QR Code and prints it on the invoice. It may not go on a separate sheet 13.
Printing the IRN itself is optional, because it is embedded in the QR code 13. GSTN leaves the size and position to the business, provided a reader can scan it 13. A vendor guide suggests about 2 × 2 inches at the top right, which is advice rather than a rule 25.
IRN
The IRN is a 64-character hash 13. GSTN's overview bases it on the supplier's GSTIN (the GST registration number), the financial year, the document type and the document number, so the result is the same at every IRP 14. The GSTN FAQ names the same four inputs in a different order 13.
The hash algorithm and exact concatenation come only from a third party: GSTZen describes SHA-256 over the four values joined without separators, in the order GSTIN, financial year, document type, document number 19. The NIC sandbox documentation that would confirm this could not be retrieved.
A cancelled IRN does not free its invoice number. Cancellation is available within 24 hours of reporting, partial cancellation is not, and details cannot be amended on the IRP 13.
Contents of the QR code
GSTN lists these particulars in the QR code 13:
- GSTIN of supplier and GSTIN of recipient
- Invoice number as given by the supplier, and date of generation of the invoice
- Invoice value (taxable value and gross tax)
- Number of line items
- HSN code (commodity classification) of the main item, meaning the line with the highest taxable value
- The IRN and the IRN generation date
GSTN also says the signed code contains the IRP's digital signature 14.
Encoding: signed JWT
The official sources describe the content and the signature but not the wire format. The details below come from vendor documentation, because NIC's developer pages and its QR procedure document could not be retrieved.
ClearTax describes the string as a JWT with three dot-separated parts: signature parameters, data and signature. It shows RS256 as the algorithm 17. That shape matches the JWS Compact Serialization, in which base64url-encoded header, payload and signature are joined by periods 20.
ClearTax's decoded example has header keys alg, kid, typ and x5t, and payload keys data and iss. The iss value in that example is NIC, and data is itself a JSON string, not a nested object 17. RFC 7515 defines kid as a hint identifying the key and x5t as a SHA-1 thumbprint of the signing certificate 20.
Inside data, ClearTax lists SellerGstin, BuyerGstin, DocNo, DocTyp, DocDt, TotInvVal, ItemCnt, MainHsnCode and Irn 17. Vayana's API documentation lists the same keys plus IrnDt. It gives DocDt as DD/MM/YYYY and IrnDt as YYYY-MM-DD HH:MM:SS, so the two date fields use different formats 18.
A structurally illustrative decoded form, with placeholders in place of all values:
header: {"alg":"RS256","kid":"<key id>","typ":"<token type>","x5t":"<certificate thumbprint>"}
payload: {"data":"{\"SellerGstin\":\"<supplier GSTIN>\",\"BuyerGstin\":\"<recipient GSTIN>\",
\"DocNo\":\"<document number>\",\"DocTyp\":\"<document type>\",\"DocDt\":\"DD/MM/YYYY\",
\"TotInvVal\":<value>,\"ItemCnt\":<count>,\"MainHsnCode\":\"<HSN>\",
\"Irn\":\"<64-character IRN>\",\"IrnDt\":\"YYYY-MM-DD HH:MM:SS\"}","iss":"<issuer>"}
The QR symbol carries the encoded JWT, not this decoded form. Vendor guidance is explicit that the string must not be decoded before printing, because the signature is then lost and the code can no longer be verified 17 25.
No fetched source fixes the QR version, error-correction level or module size, and the official text requires only that the code be readable 13.
Verification
GSTN offers two routes: upload the signed JSON or the signed QR string to the portal's Verify Signed Invoice page, or scan with the Verify QR Code mobile app 13. The app is published under GSTN and NIC names and says it covers NIC and other IRPs 22. GSTN's overview designed this for road checks, where officers may have no connectivity 14.
A programmatic consumer would split the string on periods, check the RS256 signature against the public key of the issuing IRP, and only then read data. Each IRP publishes keys with validity dates, and the rotation matters. The IRIS page lists its older production verification key as valid to 20 November 2024 and a newer one to 20 June 2026, with an advisory on invoices generated from 21 to 26 November 2024 whose body was not readable. That latest date has already passed, so check the page for the current key 21. ClearTax also warns that the government may issue new public keys 17.
GSTN says a tampered signed JSON invalidates the e-invoice and fails the digital signature check 14.
Timing rule
GSTN's advisory of 5 November 2024, as reported by Taxmann, bars taxpayers with annual aggregate turnover of ₹10 crore and above from reporting invoices, credit notes and debit notes older than 30 days, from 1 April 2025 16. The original advisory could not be retrieved. This overrides the position in the 2020 FAQ, which said the portal had no such time-window validation 13.
B2C Dynamic QR code
Rule
Notification 14/2020-Central Tax, issued under the sixth proviso to rule 46, requires a Dynamic QR code on invoices to unregistered persons from registered persons with aggregate turnover above ₹500 crore. It excludes the classes in rule 54(2), (3), (4) and (4A) and suppliers under section 14 of the IGST Act 3. The notification first took effect on 1 October 2020, and CBIC circulars give the operative start as 1 December 2020 3 11.
Penalties under section 125 were then waived in steps. Notification 28/2021, the last one fetched, covers 1 December 2020 to 30 September 2021 and replaced Notification 89/2020 10. Circular 156/12/2021 records the intermediate position, a waiver to 30 June 2021 12.
Contents
CBIC Circular 146/02/2021-GST lists the required information as supplier GSTIN, supplier UPI ID, payee bank account and IFSC, invoice number and date, total invoice value, and the GST amount with its CGST, SGST, IGST and cess breakup. The code must also be scannable to make a digital payment 11.
Circular 156/12/2021-GST modified this in four ways 12:
- Bank account and IFSC may be left out, because a UPI ID already points to an account.
- The UPI ID of a person authorised to collect may replace the supplier's.
- For counter sales where the invoice number does not exist yet, a unique order ID or sales reference may stand in, if it links to the invoice and the invoice carries the cross-reference.
- After part-payment, the code may show only the remaining amount.
Neither circular gives a field order or encoding. No official payload layout was found, so the relationship to UPI QR rests on the required UPI ID rather than on a published format.
Deemed compliance and exclusions
A pre-paid invoice carrying a cross-reference to the payment is deemed compliant, whether payment was by UPI, card, online banking or cash. The cross-reference for electronic payments gives transaction ID, date, time, amount and mode. Where payment comes after the invoice is issued, the code must be on the invoice 11.
Exports are outside the rule, since they are treated as B2B under Notification 13/2020 11. Invoices to a recipient outside India paid in foreign currency may omit the code even if the place of supply is India. Invoices to holders of a Unique Identity Number count as B2C 12.
Use cases
- Tax enforcement on the road. An officer can scan the code in transit without connectivity, and rule 138A(2) lets the QR code stand in for the paper invoice where e-invoicing applies 13 14.
- Buyer verification. A recipient can check the code, or the signed JSON, to confirm that the invoice was reported to an IRP 13.
- Return and e-way bill automation. Reported data populates GSTR-1 of the supplier and GSTR-2A of the receiver, and can generate an e-way bill for goods movement 13.
- Credit and debit notes. Notes under section 34 are reported the same way and carry their own IRN and QR code 13.
- Export and SEZ documentation. Exports and supplies to SEZs fall under the same process, though SEZ units themselves are exempt as issuers 13.
- Consumer payment. The separate B2C Dynamic QR lets a customer pay an invoice by scanning it 11.
Implementations
Few open-source projects handle the signed QR directly, and no well-maintained standalone decoder was found.
| Repository | Language | Stars | Last active | Scope |
|---|---|---|---|---|
| resilient-tech/india-compliance | Python | 278 | 2026-10 | E-invoice and e-way bill integration with the NIC portal; the repo page does not mention QR handling 27 |
| Mittal-Analytics/gst-e-invoicing | Python | 19 | 2025-08 | Generates IRNs on the IRP and renders SignedQRCode as an HTML image 28 29 |
| SGFGOV/gstin-validator | TypeScript (inferred from config files) | 0 | 2022-04 | Verifies a signed QR and returns its invoice data; below the usual quality bar, listed because little else exists 30 |
Comparison
IRP signed QR versus B2C Dynamic QR. The first proves registration of a B2B, export or SEZ document, is issued by an IRP, and carries a signature. The second requests payment from a consumer, is built by the supplier, and needs no IRP. Thresholds are ₹5 crore and ₹500 crore respectively 9 3 13. Both may appear on one invoice, and GSTN requires multiple codes to be clearly marked so they can be told apart 13.
India versus Saudi Arabia. In the ZATCA scheme as described by the vendor Qoyod, the QR holds nine Tag-Length-Value fields encoded in Base64, and the seller signs with ECDSA using a key the authority has stamped 31. India's code is instead a JSON-based JWT, and the registering portal signs it 17 14. The practical difference for a verifier is that India needs an IRP's public key and Saudi Arabia's format carries the seller's key within the code. The Saudi description is from a secondary source.
Fun facts
- The threshold rose before it fell. Notification 13/2020 set ₹100 crore, Notification 61/2020 raised it to ₹500 crore before launch, and then five successive cuts took it down to ₹5 crore 2 13 9.
- GSTN calls e-invoicing "not generation of invoice by a Government portal". Businesses still make their own invoices, and the IRP is a pass-through that does not store them, so GSTN advises keeping the signed JSON because it cannot be downloaded again from the IRP 13 14.
Status
Active and mandatory. The latest threshold sourced is above ₹5 crore, in force since 1 August 2023 under Notification 10/2023-Central Tax, which replaced the ₹10 crore level 9. A secondary source dated 13 October 2026 reports no notification changing it in 2026 26.
Further change is signalled but not law. On 8 October 2026 the 57th GST Council recommended extending e-invoicing to domestic supplies received from unregistered persons under reverse charge, and to imports of services, for taxpayers with aggregate annual turnover of ₹5 crore and above 15. Those are the two inward cases the 2020 FAQ said e-invoicing did not reach 13. The release states that recommendations take effect only through circulars, notifications or law amendments, and no such notification was found 15.
The B2C Dynamic QR rule at ₹500 crore remains the latest position found. The October 2026 release does not mention it, and no later amending notification was found, though the search was not exhaustive 3 15.
Sources
- Notification No. 72/2019-Central Tax, 13 December 2019 — CBIC, via GST Council, accessed 2026
- Notification No. 13/2020-Central Tax, 21 March 2020 — CBIC, via GST Council, accessed 2026
- Notification No. 14/2020-Central Tax, 21 March 2020 — CBIC, via GST Council, accessed 2026
- Notification No. 88/2020-Central Tax, 10 November 2020 — CBIC, via GST Council, accessed 2026
- Notification No. 05/2021-Central Tax, 8 March 2021 — CBIC, via GST Council, accessed 2026
- Notification No. 23/2021-Central Tax, 1 June 2021 — CBIC, via GST Council, accessed 2026
- Notification No. 01/2022-Central Tax, 24 February 2022 — CBIC, via GST Council, accessed 2026
- Notification No. 17/2022-Central Tax, 1 August 2022 — CBIC, via GST Council, accessed 2026
- Notification No. 10/2023-Central Tax, 10 May 2023 — CBIC, via GST Council, accessed 2026
- Notification No. 28/2021-Central Tax, 30 June 2021 — CBIC, via GST Council, accessed 2026
- Circular No. 146/02/2021-GST, 23 February 2021 — CBIC, via GST Council, accessed 2026
- Circular No. 156/12/2021-GST, 21 June 2021 — CBIC, via GST Council, accessed 2026
- GST e-invoice/IRN System FAQs, Version 1.3, 11 November 2020 — GSTN, accessed 2026
- GST e-invoice/IRN System: Detailed Overview, 29 May 2020 — GSTN, accessed 2026
- Recommendations of the 57th Meeting of the GST Council, 8 October 2026 — Ministry of Finance / PIB, via GST Council, accessed 2026
- Time Limit of 30 Days for Reporting E-Invoice on IRP Portal — Taxmann (third party), 2024, accessed 2026
- Learn E-Invoicing API Basics — ClearTax (vendor), accessed 2026
- Verify QrCode — Vayana (vendor), accessed 2026
- Invoice Reference Number — GSTZen (vendor), accessed 2026
- RFC 7515: JSON Web Signature — IETF, accessed 2026
- Public keys — IRIS IRP, accessed 2026
- NIC e-Invoice Verification — Apple App Store listing (GSTN / NIC), accessed 2026
- IRP providers list India — ClearTax (vendor), accessed 2026
- Advisory on New e-Invoice Portal — GSTN advisory of 25 February 2023, reproduced by TaxHeal, accessed 2026
- Signed QR Code in E-invoicing System — Masters India (vendor), accessed 2026
- Is The ₹5 Crore E-Invoice Limit Scrapped? — Daily Financial (third party), 13 October 2026
- resilient-tech/india-compliance and its commit history — GitHub, accessed 2026
- Mittal-Analytics/gst-e-invoicing — GitHub, accessed 2026
- gst-einvoice topic — GitHub, accessed 2026
- SGFGOV/gstin-validator and its commit history — GitHub, accessed 2026
- QR code structure — Qoyod (vendor), accessed 2026
Deployments
No country reports mention this standard by name.