What a GST invoice must actually contain: the Rule 46 checklist
Sixteen particulars, one numbering rule that trips everyone, and the arithmetic check an auditor does first. A checklist for Indian service businesses.
4 min read
Most invoice templates in circulation are a logo, a table, and a total. A tax invoice under GST is a defined document with mandatory contents, and the definition lives in Rule 46 of the CGST Rules.
Here is what has to be on it, what the numbering rule actually requires, and the arithmetic mistake that gets spotted first.
The checklist#
About you
- Your name, address and GSTIN
About the document
- An invoice number: consecutive, unique within the financial year, no more than 16 characters
- Date of issue
About your customer
- Name and address
- Their GSTIN, if they're registered
- For unregistered customers, where the invoice value is ₹50,000 or more: name, address, state, and place of supply
About what you sold
- Description of the goods or services
- HSN code for goods, SAC code for services
- Quantity and unit, where applicable
- Taxable value: the amount before tax
About the tax
- Rate of tax
- Amount of tax, split by head: CGST and SGST separately, or IGST
- Place of supply with the state name, for inter-state supplies
- Whether tax is payable on reverse charge
At the end
- Total value
- Signature or digital signature of the supplier or an authorised person
A few notes on the ones people skip.
The SAC code is not optional. Services have their own classification, separate from HSN. Software subscriptions commonly sit under 997331: licensing services for the right to use computer software and databases, but classification depends on how your service is actually characterised. Confirm yours with your CA once, then use it consistently. It's a filing field, not a label.
"Whether tax is payable on reverse charge" needs an answer even when the answer is no. Print Reverse charge: No. A missing field reads as an oversight; an explicit "no" reads as a document someone thought about.
Place of supply has to be stated, not implied. Showing IGST tells a reader the supply was inter-state. Rule 46 wants the place of supply named, with the state.
The numbering rule, which is stricter than it looks#
The requirement is that invoice numbers are consecutive, unique within a financial year, and at most 16 characters.
Three things follow that catch people out.
Sixteen characters is a hard ceiling, and prefixes eat it fast. TH/SUB/26-27/00001 is nineteen characters and fails. SUB/2627/00001 is fourteen and passes. Count before you commit, because changing the format mid-year is worse than picking a plain one.
The financial year is April to March, not January to December. A series that resets on 1 January resets in the middle of a GST year.
"Consecutive" means gapless, and that is a concurrency problem. If you generate invoice numbers by counting existing rows, two invoices created at the same moment get the same number. If you use a database sequence, a failed transaction consumes a number and leaves a hole, and sequences in Postgres are deliberately non-transactional, so a rollback does not give the number back.
The approach that works is a counter row updated inside the same transaction that writes the invoice. The row lock serialises concurrent writers, and a rollback returns the number because it was never committed. One invoice, one number, no gaps.
You can run separate series for separate streams: one for client work, one for subscriptions: as long as each is internally consecutive and unique. That's common practice and it keeps two unrelated billing systems from fighting over one counter.
The arithmetic check#
This is the one an auditor does first, and it takes them four seconds.
Do the parts sum to the total?
Take a ₹1,499 subscription at 18% GST, intra-state:
Taxable value ₹1,499.00
CGST 9% ₹134.91
SGST 9% ₹134.91
──────────
Total ₹1,768.82
In paise: 149900 + 13491 + 13491 = 176882. It closes.
The way to get this wrong is to round each tax head independently. Calculate CGST at 9% of ₹1,499 and round. Calculate SGST at 9% of ₹1,499 and round. Add them to the taxable value. Depending on the number, you can land a paisa away from the total you actually charged, and an invoice whose own lines don't add up to its own total is the first thing anyone questions, however small the gap.
Work in integer paise throughout. If your charged amount is tax-inclusive, which it often is, because that's what a payment gateway takes: derive the taxable value first, then take one tax head from the remainder rather than computing both independently. The parts then close by construction.
One habit worth adopting#
Snapshot the customer's details onto the invoice at the moment you issue it.
Don't render an invoice by looking up the customer record each time. A customer who changes their registered address in March should not change an invoice you issued in November. An issued invoice is a historical document; it records what was true when it was raised.
The same applies to the layout. Generate the PDF once, store it, and serve that file forever. If you re-render on demand, a template change next year silently alters a document you already sent, and if anyone ever compares their copy with yours, they won't match.
Siddarth Reddy Desai is the founder of TarkHQ LLP, Bengaluru, and builds MantriCEM: connected CRM, ERP and marketing for businesses, freelancers and agencies.
This is general information, not tax advice. Rule 46 has provisos and category-specific requirements beyond the general case described here. Have your invoice format reviewed by your CA before you issue the first one.