GST Invoice Generator
Build a compliant Indian GST tax invoice and download it as a PDF, entirely in your browser.
Supplier (your business)
Bill to (recipient)
Invoice details
Line items
| Description | HSN / SAC | Qty | Rate | GST % | Taxable | |
|---|---|---|---|---|---|---|
| ₹0.00 |
Summary
| Slab | Taxable | Tax |
|---|
In words: Waiting on the supplier state and the place of supply.
Add a supplier name, a customer name, the supplier state, a place of supply and at least one line with a quantity and rate.
About the GST Invoice Generator
Fill in the supplier block, the customer block, the invoice header and as many line items as you need, and download an A4 tax invoice as a PDF. The whole thing runs in this browser tab: no account, no upload, no server ever sees a customer name. The supplier block is the only piece that persists, and only because you asked it to.
The one rule this tool exists to get right
GST is one tax collected through two mechanisms, and which one applies depends entirely on geography. When the supplier and the place of supply sit in the same state, the supply is intra-state: an 18% slab is charged as 9% Central GST plus 9% State GST, and the revenue is split between the Centre and that state. When they sit in different states it is inter-state: a single 18% Integrated GST line, collected centrally and settled between states afterwards. The union territories that have no legislature of their own — Chandigarh, Lakshadweep, the Andaman and Nicobar Islands, Ladakh and the merged Dadra and Nagar Haveli and Daman and Diu — charge UTGST in place of SGST, and the label on this page changes accordingly when the supplier sits in one. Delhi, Puducherry and Jammu and Kashmir are union territories with legislatures, so they levy ordinary SGST and are labelled that way.
The comparison is done on state codes rather than state names, because those two digits are what the GSTIN itself carries and what the returns are matched on. Type a valid supplier GSTIN and the state is set from its first two characters. The banner above the line items always names both states and says which branch fired, so a wrong tax head is visible before you press download rather than three months later when GSTR-1 refuses to reconcile. If either state is still blank there is no honest answer to give, so the tool gives none: the banner says the head is undecided, the summary charges no tax and shows no grand total, and the download button stays disabled until you set them.
Move the supplier state select away from the state its GSTIN belongs to and the two are then in open contradiction, so that is blocked as well. It has to be: the split is computed from the select while the GSTIN is what gets printed, and a business trading from two states holds a separate registration in each, so the pair can never both be right. The page names the state each of them claims and waits for you to correct whichever is wrong rather than issuing a sheet whose own header disproves the tax it charges. The same disagreement on the customer side is a warning instead of a block, because there it can be legitimate — goods delivered outside the customer's registered state — but the right way to say so is the Place of supply field, not the customer address.
What the arithmetic does
Each line multiplies quantity by rate to a taxable value rounded to the paisa, then applies its own slab from 0, 5, 12, 18 or 28 per cent. On an intra-state invoice the tax is halved; when the half lands on a fraction of a paisa the two heads cannot both be exact, so CGST takes the extra paisa and SGST takes the remainder — 93 paise of tax prints as 47 and 46 — which keeps CGST plus SGST exactly equal to the tax due rather than a paisa short. Lines are then grouped by slab into the rate-wise summary that both the printed invoice and your GSTR-1 filing want; rows you left completely blank are dropped first, so a spare row never becomes a printed line or a phantom 0.00 slab. Completely blank means no text and a taxable value of exactly zero — a row carrying a figure is never treated as empty, whatever its sign, so a line cannot disappear out of the totals while its own row goes on showing you a number. The grand total is rounded to the nearest rupee and the difference appears as its own Round Off line, following the nearest-rupee rule section 170 of the CGST Act lays down for amounts payable; every figure above it stays unrounded so the column adds up under inspection. A quantity or rate below zero is refused rather than totalled: a tax invoice cannot show a negative supply, and using one as a stand-in for the discount field this tool does not have would produce a document headed TAX INVOICE with a minus grand total on it.
The amount in words uses Indian place values throughout — thousand, lakh, crore — so 1,23,456.78 becomes One Lakh Twenty Three Thousand Four Hundred Fifty Six Rupees and Seventy Eight Paise. It describes the rounded grand total, never the pre-rounding figure, so the words and the number can never disagree.
What it deliberately does not do
This is one clean forward-charge tax invoice and nothing more. There is no reverse-charge declaration, no export or SEZ block, no cess, no line-level or invoice-level discount, no freight or packing charge, no logo upload, and no separate unit-of-measure column — if a line needs a unit, write it into the description. It does not generate an e-invoice IRN or its QR code, and it does not produce an e-way bill — both of those require reporting to the government portal, which a page with no backend cannot do. Composition dealers must issue a bill of supply instead of a tax invoice; that is a different document and this tool does not make it. The GSTIN check is a format check only, never a lookup against the GST registry.
About the PDF and your data
The PDF is drawn as real text with the standard Helvetica font, so it stays selectable, searchable and small — it is not a screenshot of the page. That font predates the rupee sign and cannot render it, so money columns in the PDF are headed INR and print plain grouped digits; the screen totals above use the symbol freely. The invoice date prints as dd/mm/yyyy, the convention Indian recipients read. Long invoices paginate: the item table continues onto further sheets, and the closing block — amount in words, notes, declaration and the authorised-signatory line — is measured against the bottom margin and moved to a fresh page whenever it would not fit, so the part you have to sign is always on the paper. The signature block is a fixed column on the right, and a business name too long for it wraps down that column rather than reaching back across the declaration text beside it. Pressing Save profile writes the supplier block to this browser localStorage under a single key, and Clear removes it; clearing site data or opening the page in a different browser wipes it too. Customer details and line items are never persisted at all. If you need a running till rather than an invoice, use POS Billing; to add a page number or watermark to the finished PDF, see Add Page Numbers to PDF and Add Watermark to PDF.
The place-of-supply rule, applied for you
Supplier state code against place-of-supply state code. Same code and the slab splits into CGST plus SGST at half each; different codes and it becomes one IGST line at the full rate. A banner names both states so you can see which branch fired before you send the invoice, and while either state is missing no branch is chosen at all: no tax is applied, no grand total is shown, and the download stays disabled rather than defaulting to a head that might be the wrong one.
GSTIN parsed, not just checked
The 15-character format is validated against the statutory pattern and the first two digits must be a state code that actually exists, so typing a valid GSTIN fills in that party's state for you, and one beginning with a code assigned to no state is flagged rather than quietly accepted. The select stays editable, but the two are then checked against each other: a supplier GSTIN registered in one state sitting beside a supplier state set to another is a contradiction that would silently pick the tax head, so it is named and the download is blocked until they agree.
Your business details, remembered locally
Save the supplier block once and it is written to this browser localStorage and reloaded next visit. Only the fields this form recognises are read back, and an entry that cannot be parsed is discarded instead of breaking the page. It never leaves the device, so clearing site data or switching browser removes it.
Frequently Asked Questions
When should the invoice show CGST and SGST rather than IGST?
When the supplier state and the place of supply are the same state. An 18% slab then appears as 9% CGST plus 9% SGST, and the money is shared between the Centre and that state. When they differ it is a single 18% IGST line collected by the Centre and later apportioned. The buyer pays the same total either way, so the mistake is easy to miss until a return does not reconcile. This page compares the two state codes on every keystroke and shows a banner naming both states. Until both are set the question has no answer, so no tax is charged, no grand total is shown and the download is disabled — the tool will not guess a tax head for you. The supplier state is also checked against the supplier GSTIN, whose first two digits are that registration's state: if they contradict each other the head would be chosen from a state the GSTIN on the same invoice disproves, so that is blocked too.
What is Place of Supply, and why is it separate from the buyer address?
Place of supply is the state whose tax applies, and it is usually — but not always — the buyer state. For goods it normally follows delivery, so a Maharashtra buyer taking delivery at a Karnataka site makes Karnataka the place of supply. The field here defaults to the buyer state as soon as you set it, and you can override it. The tax split follows this field, not the billing address. That is also the right field for a delivery elsewhere: leave the customer state on the state their GSTIN is registered in, and put the delivery state here. Setting the customer state to somewhere the customer GSTIN does not match earns a warning, because with no place of supply chosen the split is then being read off a field that disagrees with the registration printed beside it.
Is the GSTIN checked against the government database?
No. The check is the format only: two digits that must be a state code actually in use, five letters and four digits and one letter of the PAN, an entity code, a literal Z in the fourteenth position and a final checksum character. The final character is not recomputed, so a string can pass this pattern and still belong to no one — verify a new customer on the official GST portal before you extend credit. Nothing you type is transmitted anywhere: the invoice is built and the PDF is written entirely inside this tab, and no form field ever leaves it. The site around the tool does load the usual analytics and advertising scripts, as every page here does, but they never see your invoice.
How is the amount in words produced?
With Indian place values, not international ones. 1,23,456.78 reads as One Lakh Twenty Three Thousand Four Hundred Fifty Six Rupees and Seventy Eight Paise, and above a crore it keeps grouping in crores. Rupee and Paisa are written in the singular for exactly one. The words describe the rounded grand total, so they always match the figure printed above them.
Why does the total end in a round rupee?
The grand total is rounded to the nearest rupee and the difference is printed as its own Round Off line, positive or negative — the same nearest-rupee convention section 170 of the CGST Act sets for amounts payable, and the way virtually every Indian invoice is drawn. Taxable value and each tax head are shown unrounded to the paisa above it, so the arithmetic on the page adds up and an auditor can follow it.
Does the PDF print the rupee symbol, or Hindi and Tamil text?
Neither. The PDF is drawn with the standard Helvetica font built into every reader, whose character set is Latin-1: no rupee sign and no Indic script. Money columns are therefore headed INR and carry plain grouped digits such as 1,23,456.78, a ₹ typed into a description is written as Rs., curly quotes and dashes are folded to their ASCII forms, and any Devanagari, Tamil or other non-Latin character is printed as a question mark, with a warning under the download button. That warning counts the question marks the file actually gained rather than the characters you typed, so you can check it by opening the PDF — which also means the supplier name, printed once in the address block and again over the signature, counts twice. Keep names and item descriptions in the Latin alphabet for a clean PDF. The on-screen totals above are ordinary web text and show the symbol correctly.
Which fields does a valid tax invoice actually need?
Rule 46 of the CGST Rules asks for the supplier name, address and GSTIN; a consecutive invoice number of at most sixteen characters; the date; the recipient name, address and GSTIN where registered; HSN or SAC codes; description, quantity, unit of measure and taxable value per line; the rate and amount of each tax head; place of supply for inter-state supply; and a signature. Two of those have no field of their own here. There is no unit column, so write the unit into the description — "Consulting, 12 hours" — if your line needs one. And nothing is digitally signed: the signature is printed as a blank authorised-signatory block for you to sign by hand, with no image upload. That block is measured against the bottom of the page and carried onto a second sheet when the line items leave no room for it, so a long invoice can never lose it, and a long business name wraps inside the signature column instead of running back across the declaration. Beyond those, the tool will generate an incomplete draft rather than block you, with three exceptions. The supplier state and the place of supply are required, because the CGST/SGST-versus-IGST question cannot be answered without them. A supplier GSTIN whose first two digits name a different state from the supplier state is refused, because one of the two is wrong and the wrong one decides the tax head. And a quantity or rate below zero is refused rather than printed, because a tax invoice cannot carry a negative supply — including on a line you left undescribed, which is counted as a line with a value rather than quietly dropped as an empty row.
Can it handle reverse charge, exports, e-invoicing or a bill of supply?
No. This produces one straightforward tax invoice with forward charge. There is no reverse-charge declaration, no LUT or export block, no e-invoice IRN or QR code, no e-way bill, and no discount, freight or cess field. A minus sign is not a substitute for the missing discount field: a negative quantity or rate is refused outright, because reducing the value of a supply after the fact is a credit note under section 34 — a separate document with its own number series — and not something a tax invoice may show. Composition dealers must issue a bill of supply rather than a tax invoice, which this does not produce either. Anything above the e-invoicing turnover threshold has to be reported to the IRP, and no browser tool can do that for you.
Where is my data stored?
Only in this tab, plus the supplier block if you press Save, which goes to this browser localStorage under the key otv_gst_seller_profile. Buyer details, line items and the invoice itself are held in memory and vanish when you close the page. On the way back in, only the six fields this form knows about are read, and only when they are text; anything else under that key is ignored or deleted, so a damaged entry cannot break the page. The PDF is assembled in the browser and handed straight to your downloads folder — there is no account, no server and no copy of your customer list anywhere else.