How to Build GST-Ready Invoices and Checkout Fields Into a WooCommerce Store in India
To produce GST-ready invoices in WooCommerce, you build three things into the store: checkout fields that capture what the invoice needs (billing state, GSTIN for business buyers, a company name), tax settings that calculate CGST, SGST or IGST from the place of supply, and an invoice generator that numbers invoices in sequence and prints the mandatory details. WooCommerce handles the tax maths when configured; it does not issue a compliant Indian invoice on its own. This guide is a website-build walkthrough for owners and developers: what to configure, what to add, what to test. It is not tax advice, and your chartered accountant should confirm the tax treatment, rates and invoice format that apply to your business.
The article was originally a general GST explainer. We have rewritten it around the part a web developer and store owner actually control: the checkout, the product data, the order records and the document the customer receives. Wherever a legal or rate question arises, we point to the official source rather than restate it, because rates and rules change.
What the store needs to do, in plain terms
An Indian GST invoice has a defined set of details. Rule 46 of the CGST Rules sets out the contents of a tax invoice, and the CBIC and GST portal publish the current rules. In broad terms, the invoice should show:
- Supplier name, address and GSTIN
- A unique, consecutive invoice number (the rules limit its length and the characters allowed)
- Invoice date
- Recipient name and address, and their GSTIN if registered
- Description of goods, HSN code, quantity and unit
- Taxable value, discounts, and the rate and amount of CGST and SGST, or IGST, or cess where applicable
- Place of supply, for inter-state supplies, with the state name and code
- Whether tax is payable on reverse charge
- Delivery address where it differs
- Signature or digital signature of the supplier or authorised representative
Your store has to hold or calculate each of these. That turns a legal list into a build checklist: which ones come from the product data, which from checkout fields, which from store settings and which from the invoice plugin.
| Invoice detail | Where it comes from in WooCommerce |
|---|---|
| Supplier name, address, GSTIN | Store settings and invoice plugin settings |
| Invoice number | Invoice plugin's sequence, not the order ID |
| Buyer name and address | Checkout billing fields |
| Buyer GSTIN | Custom checkout field (optional, for business buyers) |
| HSN code | Custom product field |
| Taxable value and tax rates | Product price, tax class and tax rates |
| CGST/SGST vs IGST | Tax rates plus billing or shipping state and your store base state |
| Place of supply | Customer state at checkout |
| Credit note | Refund records and the invoice plugin |
Step 1: Decide the tax and price model before building
Three decisions shape everything else, so make them first, with your accountant.
Are your prices inclusive or exclusive of GST?
Indian shoppers expect to see one price. Most consumer stores enter prices inclusive of tax and display them that way. In WooCommerce, this is the "Prices entered with tax" and "Display prices in the shop" settings under the Tax tab. If you sell to businesses who care about the pre-tax value, you may want to show both. Decide, then keep it consistent across product pages, cart, checkout and the invoice.
Do you have one GST registration or several?
Your registration state determines which sales are intra-state (CGST plus SGST) and which are inter-state (IGST). A store with a single registration in Maharashtra, for instance, charges CGST and SGST to Maharashtra customers and IGST to customers elsewhere, subject to place-of-supply rules your accountant will confirm. Stores with several registrations need more advanced setups, which is a point to raise with your developer early.
Do you sell products with different rates, or exempt goods?
Each rate becomes a tax class. Gather your product list, with the HSN code and rate for each product agreed by your accountant, before configuring anything. Rates are set by the GST Council and notified by the government, so use the official GST portal and CBIC notifications as the source, not a blog post, including this one. Our note on GST 2.0 and ecommerce explains why you should expect rates to move.
Step 2: Configure WooCommerce tax settings
In WooCommerce, tax settings sit under WooCommerce > Settings > Tax. The configuration that suits most Indian single-registration stores is as follows, although your accountant's advice prevails.
- Enable taxes in General settings so the Tax tab appears.
- Set your store base address to your registered state, because this is how WooCommerce decides whether a sale is local.
- Prices entered with tax: choose the model you decided on.
- Calculate tax based on: customer shipping address is the usual choice, because place of supply for goods is generally linked to delivery. Confirm with your accountant.
- Create tax classes for each rate you sell at (for example, a class for each rate band you have products in).
- Add rates for each class: one rate row for the home state with CGST and SGST, and one for "all other states" with IGST. WooCommerce lets you define multiple rates by state, and show them with separate labels, so the invoice can print CGST and SGST as separate lines.
- Display tax totals as itemised so the cart and checkout show the tax lines rather than a single figure.
Test with real addresses
Place test orders to a home-state address and to an address in another state, and check the tax lines. A common error is an IGST rate row accidentally also applying inside your home state, which charges the customer double. Test every tax scenario on staging before launch.
Step 3: Add the fields the invoice needs at checkout
WooCommerce's default checkout asks for name, address and phone, but not the business details an invoice for a registered buyer needs.
A GSTIN field for business buyers
Many buyers will not need one, so make it optional. Offer a clear option such as "I need a GST invoice for my business", which reveals fields for company name and GSTIN. This keeps the form short for consumers and complete for businesses.
Validate the GSTIN format at entry. A GSTIN is a 15-character code with a defined structure: a two-digit state code, the 10-character PAN, an entity number, a default character and a check character. Format validation catches typos cheaply. It cannot confirm the registration is active; for that you would need to use the GST portal's own search, or a verification service, and you should check the terms of any third-party API before relying on it.
Where to build the field
Recent versions of WooCommerce use a block-based checkout, while older stores use the classic shortcode checkout. How you add a custom field depends on which checkout you use. The classic checkout accepts fields through standard WooCommerce filters. The block checkout has its own mechanism for additional checkout fields, which has been evolving across WooCommerce releases, so confirm the current approach in WooCommerce's developer documentation for your version, or use a well-maintained plugin that supports it. Do not paste code from an old tutorial into a modern checkout without testing.
Store the field properly
Save the GSTIN and company name as order metadata so they appear in the admin order screen, on the invoice and in exports. Also decide whether to save them to the customer's account for repeat orders.
Keep it private
GSTIN and addresses are personal or business data. Show them only to staff who need them, and do not print them in places where they will be visible to others, such as shared order-notification emails. The same principle applies to any data you hold, and your privacy policy should say what you collect and why.
Step 4: Add HSN codes to your product data
HSN codes classify goods. Under the GST rules, the number of digits you must show depends on your turnover, with a smaller number for smaller businesses and more digits above a threshold; check the current CBIC notification, or ask your accountant, to confirm which applies to you.
For the build:
- Add an HSN field to simple products and, where variations differ, to variations.
- Fill it in bulk using a CSV import for existing catalogues. Our guide to product catalogue data preparation shows how to structure the sheet.
- Make the invoice template read the field. A product without an HSN code should be flagged in the admin so it is fixed before it appears on an invoice.
- If you sell services or digital goods, the equivalent is the SAC code, and the same field can serve both.
Step 5: Choose and configure the invoice generator
WooCommerce's default emails and order summaries are not GST invoices. You need either a plugin that generates PDF invoices with Indian GST fields or an integration with an accounting system that issues the invoice and sends it back. Selection criteria are more useful than a brand recommendation, because plugins change.
| Requirement | Why it matters |
|---|---|
| Sequential invoice numbering, separate from order IDs | The rules require consecutive, unique numbers |
| Prints CGST, SGST and IGST on separate lines | Matches the legal format |
| Shows GSTIN, HSN and place of supply | Mandatory details |
| Supports credit notes for refunds | Needed when an invoice is reversed or reduced |
| Handles multiple tax rates per order | Mixed baskets are common |
| Customisable template with your logo and details | Professional and compliant |
| Generates on the right trigger | For example, when the order is marked complete or paid |
| Stores PDFs and lets staff regenerate them | For audits and customer requests |
| Compatible with your WooCommerce version, including order storage | Avoids breakage |
| Exports data for your accountant | Reconciliation and returns |
If you issue e-invoices, which apply to registered businesses above a turnover threshold for business-to-business supplies, you also need an integration with the government's Invoice Registration Portal, which returns an invoice reference number and QR code. Check the current threshold and rules on the GST e-invoice portal. Our article on e-invoicing with CRM and ERP integration covers that side.
Numbering rules to build in
The invoice number must be unique and consecutive for a financial year, using allowed characters and within the length the rules set. Ask your developer to build or choose a numbering format that resets for each financial year, for example with a prefix that includes the year. Do not use the WooCommerce order ID, which can have gaps when orders are cancelled or fail.
When to generate the invoice
Decide the trigger with your accountant: at order placement, at payment, at dispatch or at completion. The timing of the invoice relative to supply has tax meaning for goods and services, so the trigger is a business decision, not a plugin default. Whatever you choose, make it consistent.
Step 6: Refunds, cancellations and credit notes
A refund after an invoice has been issued normally needs a credit note, which references the original invoice and reverses the tax. In WooCommerce, a refund is recorded against an order, but whether a credit note is produced depends on your invoice tool.
Build and test the following:
- A full refund generates a credit note with its own sequential number and references the original invoice.
- A partial refund reduces the right amount of tax.
- A cancelled order before invoicing does not leave a gap you cannot explain.
- The customer receives the credit note and the refund notice, ideally in one message.
Our companion piece on building a returns page and request form covers the customer-facing side of this flow.
Step 7: Emails, downloads and the customer account
The customer should be able to get the invoice without writing to you.
- Attach or link the PDF in the order-complete email.
- Add a "Download invoice" button on the My Account order page and the order-confirmation page. See the order confirmation page.
- For guest orders, provide a secure link using the order key, not a guessable URL.
- Make sure invoice file names and storage are not publicly guessable, since they contain personal data. Store them outside the public web folder or behind access checks.
Step 8: Reporting and handover to your accountant
Your accountant does not need your admin login, but does need good data. Provide:
- A monthly export of orders with invoice number, date, buyer GSTIN, taxable value, tax by type, place of supply and HSN.
- A credit note export.
- A list of orders without invoices or with errors.
- A short document explaining the tax settings, so a new accountant can understand the setup.
A scheduled export, or an integration with your accounting software, removes the monthly scramble. Match what the store records to what your payment gateway reports, so differences are explained. We cover the order-data side in payment settlement and reconciliation, though that is an accounting topic you should settle with your accountant.
Testing checklist before going live
Run these tests on staging and then on live:
- Order to your home state: CGST and SGST appear correctly and total equals the price.
- Order to another state: IGST appears and total is correct.
- Order with mixed tax classes: each line is taxed at its own rate.
- Order with a discount code: the taxable value reflects the discount in the way your accountant expects.
- Order with a GSTIN: details print on the invoice, and an invalid GSTIN is rejected.
- Order without a GSTIN: invoice is correct for a consumer.
- Invoice numbers are consecutive across several orders.
- Full and partial refunds produce correct credit notes.
- Invoice PDF renders on mobile, prints cleanly and includes your logo and all mandatory details.
- Invoice download works for guests and logged-in customers, and a customer cannot open someone else's invoice by changing a number in the URL.
Have your accountant review a sample set of test invoices before launch.
Common mistakes to avoid
- Treating a payment receipt or order email as a GST invoice.
- Using WooCommerce order IDs as invoice numbers.
- Forgetting HSN codes on new products as the catalogue grows.
- Configuring IGST rates so they also apply inside the home state.
- Rolling out a plugin update on the live site without testing the invoice template.
- Not handling refunds with credit notes.
- Collecting GSTIN but not validating the format, then discovering errors at return time.
- Leaving invoice files at predictable public URLs.
Frequently Asked Questions
Does WooCommerce generate GST invoices by default?
No. WooCommerce can calculate tax and send order emails, but a compliant Indian GST invoice needs sequential numbering, GSTIN, HSN, place of supply and separate CGST, SGST or IGST lines, which usually requires an invoice plugin or an accounting integration configured with your accountant.
How do I add a GSTIN field to the WooCommerce checkout?
Add an optional field, shown when the buyer chooses a GST invoice, and validate its format. The method depends on whether you use the classic or the block-based checkout, so check the current WooCommerce developer documentation for your version or use a maintained plugin that supports it.
How do I show CGST and SGST separately in WooCommerce?
Create separate tax rate rows for the home state, one labelled CGST and one labelled SGST, and a single IGST rate for other states, then display tax totals itemised. Test with orders to different states to confirm the right lines appear.
Do I need a credit note for a WooCommerce refund?
Generally, a refund after an invoice has been issued is handled with a credit note under GST. Whether your store produces it depends on your invoice tool, so test a full and a partial refund and confirm the treatment with your accountant.
Who is responsible for the correct tax treatment, the developer or the store owner?
The registered business is responsible for its GST compliance. A developer configures the store to your accountant's instructions, so get the tax decisions in writing before the build.
Sources: CBIC: CGST Rules, 2017 (Rule 46, tax invoice), GST Portal, WooCommerce documentation: Setting up taxes, WooCommerce developer documentation. This article is a build guide, not tax or legal advice. Rates, HSN digit requirements, e-invoicing thresholds and invoice rules change, so confirm every figure on the official portals or with your chartered accountant. TODO: confirm the current e-invoicing turnover threshold on the GST e-invoice portal before quoting a figure.
Working with Govindani Infotech on WooCommerce invoice and checkout builds
Govindani Infotech is a Pune-based website design and development company at 2nd Floor, Landmark Plaza, 206 Satara Road, Parvati Paytha, Pune 411009. We build WooCommerce and Shopify stores, including the checkout fields, product data and invoice flow described above, configured to the tax decisions your accountant gives us in writing.
If you want your checkout and invoice setup reviewed, send us your store link and describe your registration setup on WhatsApp at wa.me/919201958278 or through our contact page. See our e-commerce services and checkout system pages for what we build.
About the author: updated by the Govindani Infotech ecommerce development team in Pune.