WooCommerce

GST Invoicing in WooCommerce for Indian Stores

What WooCommerce does and doesn't handle for Indian GST, how tax rates and place of supply work, and what a compliant invoice needs on it.

By 6 min read
Grid of product cards above a shopping cart outline

Indian GST is one of the areas where WooCommerce's international defaults don't quite fit, and the gap is discovered at an inconvenient moment — usually when an accountant asks for something the store can't produce.

This is an overview of how the pieces fit together, written from setting up Indian stores. It is not tax advice, and your accountant is the authority on your obligations.

What WooCommerce gives you

Core WooCommerce has a capable tax engine: tax classes, rates by country and state, rates by product, inclusive or exclusive pricing, and tax display options for the shop and the cart.

That covers calculating the right amount of tax on an order, which is genuinely most of the arithmetic.

What it doesn't give you is an invoice document with the fields Indian GST requires, a sequential invoice number series, the CGST/SGST/IGST breakdown presented correctly, or HSN codes against line items. Those need an extension.

Place of supply and the tax split

This is the mechanic that makes Indian GST different from a flat sales tax, and it's what most international plugins don't model.

For a supply within the same state as the seller, the tax splits into CGST and SGST — two halves of the same rate. For a supply to a different state, the whole amount is IGST instead.

So the invoice's tax presentation depends on the delivery state relative to your registered state. That means your checkout must capture the state reliably, and your tax configuration must produce the right split for each combination.

In WooCommerce terms, this usually means rates configured per state with the right tax names, or an extension that handles the split for you. Test it with an order to your own state and an order to a different one, and check the resulting invoice for both.

What a compliant invoice needs

Broadly, an Indian tax invoice is expected to carry:

  • Your business name, address and GSTIN.
  • A unique, sequential invoice number from a consistent series, and the invoice date.
  • The customer's name and address, and their GSTIN where they're a registered business.
  • The place of supply, particularly for inter-state transactions.
  • Line items with descriptions, HSN or SAC codes, quantity, unit price and taxable value.
  • Tax rate and amount, broken into CGST and SGST or shown as IGST.
  • The total in figures, and often in words.
  • Signature or digital signature, depending on how the invoice is issued.
  • Confirm the current requirements with your accountant — the details change and vary by business type.

Sequential numbering, done early

Invoice numbers need to be sequential without gaps within a series. WooCommerce order numbers are not invoice numbers — they can have gaps from failed and cancelled orders, and they aren't reset per financial year.

So you need a separate invoice number series that increments only when an invoice is actually issued. Every invoicing extension handles this, but the setup decisions — prefix, starting number, whether it resets annually — should be made before you take your first order.

Retrofitting sequential numbering onto existing orders is genuinely unpleasant, because you're assigning numbers retrospectively to a set of orders that already went out. Do it before launch.

B2B orders and customer GSTIN

Business customers need their GSTIN on the invoice to claim input credit, which means capturing it at checkout.

Add an optional GSTIN field, validate its format so typos are caught immediately, and make clear it's only needed for business purchases. A required GSTIN field is friction for every consumer buying from you.

Store it against the order and the customer, so repeat orders don't ask again. And decide what happens if someone orders without it and asks for a corrected invoice afterwards — that's a process question, not a technical one, and it will come up.

Product configuration

  • HSN or SAC codes need storing per product, which means a custom field on the product and a column in the admin so it's visible.
  • Different products can fall under different GST rates, so map products to WooCommerce tax classes accordingly rather than applying one rate site-wide.
  • Decide whether displayed prices include tax. Indian ecommerce convention is usually inclusive, and a price that grows by 18% at checkout reads as a trick even when it isn't.
  • Shipping is taxable, at a rate that depends on what's being shipped. Configure the shipping tax class deliberately rather than leaving the default.
  • Discounts and coupons affect taxable value, so check that a discounted order calculates and presents tax correctly.

Choosing an invoicing extension

  • Does it produce the CGST/SGST/IGST split correctly based on delivery state?
  • Does it support HSN codes per line item?
  • Does it maintain a proper sequential series, with an annual reset if you need one?
  • Does it capture and display the customer GSTIN?
  • Does it attach the invoice PDF to the order email automatically, and let the customer download it from their account?
  • Can it produce credit notes for refunds and returns?
  • Is it actively maintained? Tax rules change, and an abandoned tax plugin becomes a compliance problem.

Refunds, returns and credit notes

A refund isn't just money back; it usually needs a credit note referencing the original invoice, with its own sequential number.

Partial refunds are the awkward case — a customer returning one item from a three-item order. The credit note needs to reflect the specific line and its tax, not a proportional guess.

Check how your extension handles this before you need it, because the first refund is a bad time to discover the invoice system can't express it.

Testing before launch

  • An order within your own state, and confirm the invoice shows CGST and SGST.
  • An order to a different state, and confirm it shows IGST.
  • A B2B order with a GSTIN, and confirm it appears on the invoice.
  • An order with mixed tax rates across line items.
  • An order with a coupon applied.
  • A full refund and a partial refund, and check the credit notes.
  • Confirm invoice numbers are sequential across all of the above with no gaps.
  • Then show the resulting invoices to your accountant before you go live, not after the first quarter.

Frequently asked questions

Does WooCommerce support GST out of the box?

It supports tax rates and classes, which handles the calculation. It does not produce a compliant GST invoice — no sequential invoice series, no HSN codes on line items, no CGST/SGST/IGST presentation, no customer GSTIN field. Those need an extension.

How does the CGST/SGST versus IGST split work in WooCommerce?

It depends on the delivery state relative to your registered state: same state splits into CGST and SGST, different state is IGST on the whole amount. Your checkout has to capture the state reliably, and your tax configuration or invoicing extension has to produce the right split for each case.

Can I use WooCommerce order numbers as invoice numbers?

No. Order numbers can have gaps from failed and cancelled orders and don't reset per financial year, whereas invoice numbers must be sequential within a series. You need a separate invoice series that increments only when an invoice is issued — set it up before your first order.

Should I show prices inclusive or exclusive of GST?

Indian ecommerce convention is usually tax-inclusive display, and it's what most consumers expect. A price that grows by 18% at the final step is the most cited reason for cart abandonment, and it reads as a trick even when it isn't. Whichever you choose, be explicit about it on product pages.

How do I handle refunds and credit notes in WooCommerce?

A refund generally needs a credit note referencing the original invoice, with its own sequential number. Partial refunds are the awkward case, because the credit note has to reflect the specific line item and its tax rather than a proportional guess. Check your extension handles this before you need it.

Topics

  • WooCommerce GST
  • GST invoice WooCommerce
  • Indian ecommerce tax
  • WooCommerce tax setup