We build invoicing software for shops and workshops in Madhya Pradesh, and the same conversation happens every time. Someone downloads a template with thirty fields, most of them blank, and asks which ones matter. The answer is shorter than the template suggests.
The fields that are not optional
A tax invoice needs a unique serial number, the date it was issued, your name, address and GSTIN, and the same for the buyer when they are registered. It needs the place of supply, because that decides whether you charge CGST and SGST or IGST. It needs a description of what was sold, the quantity, the taxable value, the rate, and the tax amount split by head. Finally it needs the total in figures and in words, and your signature or the name of the person authorised to issue it.
That is the whole list. Anything beyond it is either an internal nicety or something a buyer asked for.
What people add that you can drop
Purchase order numbers, delivery challan references, vehicle numbers and e-way bill IDs are legitimate fields, but they apply to goods moving between states above the threshold, not to a repair job in Harda. If your business never ships goods, leaving those columns empty just makes the invoice harder to read.
The same goes for logo placement and five-colour headers. A tax invoice is a legal document that gets filed, scanned and audited. Black text on white, with the amounts aligned, is easier for everyone, including your accountant at the end of the quarter.
The mistakes we see most
Numbering restarts when someone switches software, which creates duplicate serial numbers across the year. Rounding is applied at the line level and again at the total, so the figures do not add up. And the buyer's GSTIN is typed without validation — one wrong character and the credit does not land in their return.
None of these are hard to fix. They just need to be decisions made once, in the software, rather than remembered by whoever is billing at 8pm.
What good invoicing software actually does
It refuses to save an invoice with a duplicate number. It validates a GSTIN before you send. It keeps the tax split in one place so the return can be generated from the same data. And it lets you reprint an old invoice exactly as it was issued, because that is what an audit asks for.
That is the bar we hold ourselves to when we build invoicing tools, and it is the bar you should hold your current software to.