EpiFive GST Invoice is a free, open-source GST invoice generator that runs entirely in your browser. You fill in your business profile once, add a client and line items with HSN or SAC codes, and EpiFive GST Invoice works out CGST and SGST or IGST from the place of supply, adds an HSN-wise tax summary and a UPI QR code for the exact amount, and gives you an A4 PDF. It is MIT-licensed, needs no account, and keeps every document in your own browser.
EpiFive GST Invoice is an EpiFive project. The source is at github.com/epifive/gst-invoice, a live demo with sample data runs at gst-invoice-demo.pages.dev, and the project is listed with other EpiFive repositories on the open-source projects page.
Important: EpiFive GST Invoice makes regular GST tax invoices, quotations and receipts. It is not a GST e-invoicing tool: it does not generate an Invoice Reference Number (IRN). The section on e-invoicing near the end explains who needs one.
EpiFive GST Invoice: a free, open-source GST invoice generator with UPI QR
EpiFive GST Invoice is a static Next.js web app. There is no backend and no database: the app is a set of files that any web host can serve, and everything you type is saved in the browser's localStorage. That makes it quick to try, cheap to host and private by default, with one trade-off covered later: your data lives on one device until you back it up.
It handles the Indian GST details that generic invoice templates often get wrong: a GSTIN format and checksum check, place of supply for every State and Union territory, the CGST/SGST or IGST split, a reverse-charge flag, and an HSN/SAC-wise tax summary. It also switches to VAT, sales tax or no-tax invoices in more than 20 currencies.
Who it is for (freelancers, shops, agencies, small manufacturers)
- Freelancers and consultants who raise a handful of service invoices a month and want SAC codes, the correct tax split and a UPI QR without paying for accounting software.
- Shops and small traders who need quick tax invoices, cash memos and receipts with HSN codes.
- Agencies that send quotations first and invoices later.
- Small manufacturers who issue tax invoices to registered buyers in other States and need IGST, delivery addresses and a tax summary on every invoice.
- Developers who want an invoicing front end they can read, change and host themselves.
If you already run Tally Prime, Zoho Books or another accounting package, keep using it for your books; EpiFive GST Invoice does not post to a ledger. For those packages, see the guide on setting up GST in Zoho Books.
What a valid GST tax invoice must contain (and what EpiFive GST Invoice fills in for you)
Rule 46 of the CGST Rules, 2017 lists the particulars of a tax invoice. A field-by-field walkthrough is in GST tax invoice format: mandatory fields. In short, and with what EpiFive GST Invoice does for each:
| Rule 46 requirement | How EpiFive GST Invoice handles it |
|---|---|
| Supplier name, address and GSTIN | Taken from your business profile on every document |
| Consecutive serial number, at most 16 characters, unique in the financial year | Numbering formats with financial-year tokens, a duplicate check and a 16-character check |
| Date of issue | Document date field |
| Recipient name, address and GSTIN or UIN if registered | Client fields; GSTIN optional for B2C |
| Unregistered recipient, taxable value of Rs 50,000 or more: name, address, delivery address, State name and code | Billing address, shipping address and State fields |
| HSN code of goods or accounting code of services | HSN/SAC column on every line |
| Description, quantity and unit | Description, quantity and unit on every line |
| Total value and taxable value after discount | Line and document discounts are applied before tax |
| Rate and amount of tax by type | CGST and SGST/UTGST or IGST per line and in the summary |
| Place of supply with the State name for inter-State supplies | Place of supply field, filled from the client's GSTIN |
| Delivery address if different from the place of supply | Shipping address |
| Whether tax is payable on reverse charge | Reverse-charge toggle |
| Signature or digital signature | Signature or stamp image; Rule 46 waives the signature for invoices issued electronically under the Information Technology Act, 2000 |
Composition taxpayers and suppliers of exempt goods or services issue a bill of supply instead of a tax invoice (section 31(3)(c) of the CGST Act and Rule 49). EpiFive GST Invoice offers "Bill of Supply" as an invoice title for that case; see GST composition scheme eligibility and limits for who qualifies.
Make your first invoice in 60 seconds
Open the live demo to look around with sample data, or run your own copy as described in the self-hosting section. Clear the sample data from the yellow banner before you enter real details.
Set up your business profile (GSTIN check, state, PAN, logo, signature)
- Open Settings and fill in Your business: business name, address, phone, email and website.
- Type your GSTIN. EpiFive GST Invoice checks the 15-character format and its check character, then fills in the State (for GST) and PAN from it. A valid format does not prove the registration is active; confirm a GSTIN with Search Taxpayer on the GST portal.
- Upload a Logo and a Signature or stamp image if you want them printed.
- Under Numbering, set a format for each document type. Formats accept tokens such as
{FY}(2026-27),{FYS}(26-27),{YY},{MM}and{N}(the running number), so the format below producesINV/26-27/001:
INV/{FYS}/{N} The settings page previews each format and warns when an invoice number goes over 16 characters. Count the characters of the longest number you expect in a year, including slashes and hyphens. Rule 46 allows letters, numerals, hyphen or dash and slash, up to 16 characters in total.
Add your UPI ID and bank details
In the same Settings page, enter your UPI ID (VPA) and the Payee name, then your Account name, Account number, IFSC, Bank name and Branch. Under Defaults for new documents, switch on Show UPI QR on invoices, Show bank details and Show signature block as needed. Default notes and terms set here appear on every new document.
Create an invoice: client, place of supply, items with HSN/SAC and GST rates
- On the Documents page, start a new invoice. The title defaults to Tax Invoice; other titles include Bill of Supply, Proforma Invoice and Export Invoice.
- Enter the Client name, Billing address and, for a registered buyer, the Client GSTIN. EpiFive GST Invoice sets the client's State, and the Place of supply, from the GSTIN. Add a Shipping address if goods go somewhere else.
- Add line items: description, HSN/SAC, quantity, unit, rate, discount percentage and GST %. The rate list offers presets of 0, 0.25, 3, 5, 18 and 40 percent and accepts any other rate.
- Set a Due date and, if the buyer gave you one, a PO / reference.
EpiFive GST Invoice does not decide which rate applies to your goods. Since 22 September 2025 most goods and services fall under 5% or 18%, with 40% for a short list of luxury and sin goods; pan masala and some tobacco products moved on a separate timetable. The goods rate notification also has special rates: 3% for gold, silver and jewellery, 0.25% for rough diamonds and some precious stones, and 1.5% for other diamonds. Check the current notification for your HSN code before you set a rate.
CGST + SGST or IGST? How place of supply decides
Under section 8 of the IGST Act, a supply is intra-State when the location of the supplier and the place of supply are in the same State or the same Union territory. Section 7 makes it inter-State when they are in different States or Union territories, and also treats exports and supplies to or by a Special Economic Zone developer or unit as inter-State.
EpiFive GST Invoice applies that rule from the two State codes:
- Same State: the rate is split in half, for example 9% CGST and 9% SGST on an 18% item.
- Same Union territory without a legislature: UTGST replaces SGST. The CGST Act lists these as the Andaman and Nicobar Islands, Lakshadweep, Dadra and Nagar Haveli and Daman and Diu, Ladakh and Chandigarh; a Union territory with a legislature is treated as a State.
- Different State, export or SEZ: the full rate is charged as IGST.
For an export invoice, Rule 46 also requires an endorsement such as "SUPPLY MEANT FOR EXPORT ... ON PAYMENT OF INTEGRATED TAX" or "... UNDER BOND OR LETTER OF UNDERTAKING WITHOUT PAYMENT OF INTEGRATED TAX", plus the country of destination. Add the endorsement in the notes field and copy the exact wording from the rule.
Discounts, tax-inclusive prices and round-off
Section 15(3)(a) of the CGST Act excludes a discount from the value of supply when it is given before or at the time of supply and recorded on the invoice. EpiFive GST Invoice therefore applies discounts before tax:
- A per-line discount percentage reduces that line's amount.
- An extra document discount, as a percentage or a flat amount, is spread across the lines in proportion to their amounts, so each line's taxable value falls.
- With Prices include tax on, the taxable value is the amount divided by one plus the rate.
- Round off total rounds the grand total to the nearest rupee and shows the difference as a separate line.
Each tax component is rounded per rate, and the amount in words uses lakh and crore for rupee totals.
Print or download the PDF; how clients pay with the UPI QR
Use Download PDF for a file, or Print and choose Save as PDF for crisp vector text. Long invoices break across A4 pages at row boundaries.
The UPI QR follows the upi://pay link format from NPCI's UPI linking specification. EpiFive GST Invoice fills in your UPI ID, payee name, the amount due in INR (the balance, once part of it is paid) and the document title and number as the transaction note:
upi://pay?pa=contoso@okbank&pn=Contoso%20Traders&am=11800.00&cu=INR&tn=Tax%20Invoice%20INV%2F26-27%2F001 Your client scans it with any UPI app and sees the amount and note filled in. The QR is generated in the browser, so EpiFive GST Invoice never sees the payment. Confirm that the money reached your bank account, then record it with a receipt.
Quotations and payment receipts
Quotations and estimates use the same editor, with Valid until in place of the due date. A quotation is a commercial document, not a GST document, so it does not need the Rule 46 particulars, although showing the rates and tax helps the client compare prices.
A Payment receipt records the payment date, payment mode (UPI, bank transfer, cash, card, cheque) and a reference such as a UTR or cheque number, and prints a PAID or PART PAID stamp. If you receive an advance before you supply anything, GST law expects a receipt voucher with the particulars in Rule 50, including the amount of the advance, the tax rate and amount, and the place of supply. Check that your receipt carries those details when it covers an advance.
VAT, sales tax and no-tax invoices in other currencies
Under Tax & currency, switch a document from GST to VAT or sales tax, or to no tax. In VAT mode you set the tax name, the GSTIN fields become a VAT or tax ID, and you pick a currency such as USD, EUR, GBP, AED, SAR, AUD, CAD, SGD, ZAR or JPY. Amounts in words switch to international numbering. Check the invoice rules of the country you invoice in; EpiFive GST Invoice only supplies the layout and the arithmetic.
Your data: localStorage, JSON backup and CSV
Every business profile, setting and document is saved in localStorage for the site's address in the browser you use. That has three consequences:
- Another browser, another device or a private window starts empty.
- Clearing site data for the address deletes your invoices.
- Nothing is uploaded anywhere, so there is no server copy to recover from.
Under Your data in Settings, use Download a full JSON backup after each working session or at least weekly, and keep the file somewhere backed up. Restoring offers merge or replace. Download all documents as CSV gives you a spreadsheet of document numbers, dates, clients and totals for your accountant.
Self-host it (Cloudflare Pages, Netlify, Vercel, any web server)
You need Node.js 20.9 or newer and Git.
git clone https://github.com/epifive/gst-invoice.git cd gst-invoice npm install npm run dev # http://localhost:3000 Before you deploy, run the tests and build the static site:
npm test npm run build # static site in out/ Then publish the out/ folder:
- Cloudflare Pages: connect the repository with build command
npm run buildand output directoryout, or deploy from your machine withnpx wrangler pages deploy out --project-name <your-project>. - Vercel or Netlify: import the repository; the output directory is
out. - GitHub Pages, Amazon S3, Nginx, Apache or any web server: upload the contents of
out/.
Two optional environment variables are read at build time: NEXT_PUBLIC_SITE_URL sets the canonical address for SEO tags, the sitemap and the social image, and NEXT_PUBLIC_DEMO_SEED=1 loads sample data on a visitor's first visit, which only makes sense for a demo.
Because each user's data stays in their own browser, one deployment can serve a whole team without anyone seeing anyone else's invoices. That also means a team cannot share documents through the site; share them as PDF or CSV. A paid Pro edition adds client and product libraries, recurring invoices, payment tracking and GSTR-1 style exports; everything in this guide uses the free MIT edition.
Important: this is not GST e-invoicing (IRN)
E-invoicing under Rule 48(4) of the CGST Rules means reporting each B2B invoice to the Invoice Registration Portal (IRP), which returns an Invoice Reference Number and a signed QR code that must appear on the invoice (Rule 46(r)). Notification 10/2023-Central Tax extended this, from 1 August 2023, to taxpayers whose aggregate turnover exceeded Rs 5 crore in any financial year from 2017-18 onwards.
EpiFive GST Invoice does none of that. It does not connect to the IRP, does not generate an IRN and its UPI QR is a payment code, not the e-invoice QR. If you are above the threshold, your B2B invoices must go through an IRP-connected system; the process is covered in GST e-invoice applicability and the IRP portal. Below the threshold, EpiFive GST Invoice's tax invoices are an ordinary way to meet Rule 46.
EpiFive GST Invoice also does not file returns. You remain responsible for tax rates, HSN or SAC codes and place of supply, and for reporting each invoice in GSTR-1. This guide is general information, not tax advice; confirm the details with your tax adviser.
Troubleshooting
- "Checksum does not match. Check for a typo." on a GSTIN: look for a mistyped character, especially O and 0 or I and 1. The last character is a check character, so a single typo fails the check. Then confirm the GSTIN on the GST portal.
- IGST appears when you expected CGST and SGST: the place of supply differs from your business State. Check the client's State and the Place of supply field, and your own State (for GST) in Settings.
- The UPI QR does not appear: the UPI ID must look like
name@bank, Show UPI QR code must be on, the currency must be INR and the total must be above zero. Receipts never show the QR, because they record a payment already made. - "GST invoice numbers can be at most 16 characters.": shorten the prefix or use
{FYS}(26-27) instead of{FY}(2026-27). - All documents disappeared: you are probably in another browser, a private window or a different address. Restore the latest JSON backup.
Checklist
- Business profile complete, GSTIN checked on the GST portal, logo and signature uploaded.
- Numbering format within 16 characters, unique for the financial year.
- UPI ID and bank details entered and shown on invoices.
- Each line has an HSN or SAC code and a rate checked against the current notification.
- Place of supply correct, giving CGST and SGST/UTGST or IGST as expected.
- Delivery address and reverse-charge flag set where they apply.
- PDF downloaded and sent; payment confirmed in your bank before you issue a receipt.
- JSON backup downloaded and stored safely.
- If your turnover crosses the e-invoicing threshold, B2B invoices move to an IRP-connected system.
References
- CBIC, CGST Rules, Rule 46 (tax invoice): https://taxinformation.cbic.gov.in/content/html/tax_repository/gst/rules/cgst_rules/active/chapter6/rule46_v1.00.html
- CBIC, CGST Rules, Rule 49 (bill of supply): https://taxinformation.cbic.gov.in/content/html/tax_repository/gst/rules/cgst_rules/active/chapter6/rule49_v1.00.html
- CBIC, CGST Rules, Rule 50 (receipt voucher): https://taxinformation.cbic.gov.in/content/html/tax_repository/gst/rules/cgst_rules/active/chapter6/rule50_v1.00.html
- CBIC, CGST Act, section 2 (definitions of State and Union territory): https://taxinformation.cbic.gov.in/content/html/tax_repository/gst/acts/2017_CGST_act/active/chapter1/section2_v1.00.html
- CBIC, CGST Act, section 15 (value of supply and discounts): https://taxinformation.cbic.gov.in/content/html/tax_repository/gst/acts/2017_CGST_act/active/chapter4/section15_v1.00.html
- CBIC, IGST Act, section 7 (inter-State supply): https://taxinformation.cbic.gov.in/content/html/tax_repository/gst/acts/2017_IGST_Act/active/chapteriv/section7_v1.00.html
- CBIC, IGST Act, section 8 (intra-State supply): https://taxinformation.cbic.gov.in/content/html/tax_repository/gst/acts/2017_IGST_Act/active/chapteriv/section8_v1.00.html
- Notification No. 9/2025-Central Tax (Rate), 17 September 2025, on the CBIC tax information portal: https://taxinformation.cbic.gov.in/
- GST Council, press release on the recommendations of the 56th meeting (rate structure and implementation dates): https://gstcouncil.gov.in/sites/default/files/2025-09/press_release_press_information_bureau_0.pdf
- PIB, FAQs on the decisions of the 56th GST Council: https://www.pib.gov.in/PressReleasePage.aspx?PRID=2163560
- GST Council, Notification 10/2023-Central Tax (e-invoicing above Rs 5 crore from 1 August 2023): https://www.gstcouncil.gov.in/node/4365
- GST portal, Search Taxpayer by GSTIN: https://services.gst.gov.in/services/searchtp
- NPCI, UPI Linking Specifications version 1.6 (copy): https://www.labnol.org/files/linking.pdf
- EpiFive GST Invoice source code and README: https://github.com/epifive/gst-invoice
This guide was researched and drafted with AI assistance and checked against the vendor documentation listed in its References. Read the maintained version and related guides on EpiFive.




