Why HSN codes and slabs are set per product
Under GST every taxable supply carries an HSN (Harmonised System of Nomenclature) code and a tax rate. WooCommerce does not model Indian GST natively, so Bharat GST Invoice adds its own "GST (India)" tab to every product's data — there you set the HSN code and the GST slab the product belongs to. The invoice prints an HSN summary with rate-wise totals, and the GSTR-1 HSN export is built from the same data.
Setting the HSN code on a product
Edit a product in WooCommerce and open Product data > GST (India). Enter the HSN code — 4 to 8 digits — in the HSN Code field. Variations can override the parent HSN, which is handy when a variable product spans different chapters. Leave the variation field blank to inherit the parent value.
The code is stored as digits only, so spacing or dashes typed by mistake are cleaned automatically. On the invoice the HSN summary groups identical code + rate combinations and shows taxable value, CGST, SGST/UTGST, IGST and CESS per group.
Choosing the GST slab (GST 2.0 rates)
The slab picker follows the current GST 2.0 structure. Choose 0% for essentials and nil-rated goods, 5% for standard-rate goods, 18% for standard services and most goods, and 40% for sin and luxury goods. Products without an explicit slab fall back to the default slab on the settings page, so you can leave niche products untagged and control their rate centrally.
| Slab | Typical goods and services | Example |
|---|---|---|
| 0% | Essentials, fresh produce, nil-rated goods | Unprocessed food grains |
| 5% | Standard-rate essentials and packaged goods | Packaged snacks, apparel below the threshold |
| 18% | Standard goods and services | Electronics, professional services, SaaS |
| 40% | Sin and luxury goods | Aerated drinks, premium vehicles |
GSTIN at checkout and automatic tax split
The plugin adds an optional GSTIN field to the checkout billing fields. The value is normalised and checksum-validated on the spot; an invalid GSTIN blocks checkout with a clear message, and a valid one is stored on the order. Orders carrying a buyer GSTIN are treated as B2B — they appear in the B2B section of GSTR-1 and become eligible for e-invoicing.
The tax split itself is automatic: the seller state from the settings page is compared with the buyer's place of supply. Same state produces CGST + SGST (or CGST + UTGST for union territories without a legislature such as Ladakh, Chandigarh, Lakshadweep, Andaman & Nicobar, and Dadra & Nagar Haveli and Daman & Diu); a different state produces IGST. Union territories are handled by name, so the split is correct even for the tricky cases.
Quick checklist
Set the HSN and slab on every sellable product, pick a sensible default slab for anything untagged, enable the checkout GSTIN field if you sell B2B, and place a test order in both an intra-state and an inter-state scenario to see the split before going live.
Wasim Akram digitalwasim.com buy the developer a coffee