Look at any purchase invoice from a steel supplier or a fittings vendor. In the line-item table, next to the description and the rate, there is a code. Four digits, or six, or eight. That is the HSN. It decides the GST rate the line pays.
On a clean PDF the code is easy to read. On a photocopy that has been faxed twice it is not. OCR reads 7214 when the paper says 72142000. Or it swaps a 2 for a 7. The line still carries a tax rate, but the rate does not match the code, and that mismatch shows up at filing when your CA reconcile the returns.
HSN errors are quieter than GSTIN errors. A wrong GSTIN gets flagged immediately. A wrong HSN sits in the books for months, and only surfaces when the rate does not match the product description or when the GST portal flags a discrepancy. By then, fixing it means amending the return. How we actually test a code (format vs directory, shadow vs live) is on HSN validation.
How the digits narrow down a product
HSN comes from the World Customs Organization. India uses it as the base for GST classification. The more digits, the more specific the product. Four digits identify the heading. Six identify the sub-heading. Eight identify the exact commodity.
Consider steel bars. At 4 digits, 7214 is bars and rods of iron or non-alloy steel. At 6 digits, 721420 is a narrower heading (indentations / concrete-bar type goods in the HS tree). At 8 digits, 72142000 is the commodity as printed on many Indian invoices (no dots). Rate is not “the 8-digit number magically equals 18%.” Rate is whatever the current CBIC notification says for that code. Look it up.
Manufacturers file with 4, 6 or 8 digits. The digit count depends on your turnover. The GST portal states the thresholds. Small businesses file with 4 digits. Mid-size with 6. Larger ones with 8. The point is that the code must be specific enough to determine the rate, and it must be the same code the GST portal has on file for that product.
Indian invoices usually print HSN without dots: 7214, 721420, 72142000.
If you file 7214 and the supplier filed 72142000, you have a classification mismatch even if both happen to attract the same rate this year. Digit length and exact code follow GST rules and your turnover slab. Confirm on the GST portal / CBIC, not from memory.
Common HSNs on factory purchase invoices
These are the codes that appear constantly on Indian manufacturing purchase invoices. They are the ones your AP team sees every week. Rates are standard as of 2026. Confirm against the CBIC rate page before filing, because rates change with budget notifications.
| HSN | Description (HS heading, not legal advice) | Rate | Typical factory use |
|---|---|---|---|
| 7214 | Bars and rods of iron or non-alloy steel | See CBIC | Rebar, merchant bars |
| 7307 | Tube or pipe fittings of iron or steel | See CBIC | Flanges, elbows |
| 7308 | Structures of iron or steel | See CBIC | Fabricated frames |
| 8481 | Taps, cocks, valves | See CBIC | Process valves |
| 8479 | Machines having individual functions | See CBIC | Special-purpose machines |
| 8536 | Electrical apparatus for switching, ≤1,000 V | See CBIC | Switchgear, relays |
| 8708 | Parts and accessories of motor vehicles | See CBIC | Auto components |
| 3923 | Articles for packing, of plastics | See CBIC | Crates, drums |
Do not copy rates from this table into a return. GST rate notifications change. Use the CBIC goods-and-services rate page or the GST HSN search. This list is only “codes you often see on factory purchases,” not a tariff.
Two kinds of HSN validation
When people say "HSN validation" they mean two different things. Understanding the difference matters because catching one without the other leaves gaps.
A format check asks: is the code 4, 6 or 8 digits? Does it follow the chapter structure? Is it built from valid digits? This catches obvious errors like a code that is only 3 digits long, or a code that includes letters where only numbers should be.
A directory check asks: does this code exist in the CBIC HSN directory? The directory is the official list of all valid HSN codes. A code can pass the format check and still be absent from the directory. Someone might type 99999999, which is 8 digits and structurally valid, but does not correspond to any real product. The format check passes. The directory check catches it.
EntryLedger keeps a snapshot of the CBIC HSN list. In shadow mode a missing code warns but does not block, because the snapshot can lag recent notifications. If a new budget notification changes rates or adds codes, the snapshot might not reflect it immediately. Shadow mode lets you catch the error without stopping legitimate invoices. In live mode, a missing HSN blocks auto-export. The distinction matters because blocking on an outdated directory would stop invoices that are actually correct.
The directory is not static. The CBIC updates it periodically. When a new product category is added or a code is retired, the directory changes. If your validation tool does not keep up, it will flag valid codes as invalid or accept codes that no longer exist. This is why shadow mode is the safe default, and why live mode should only be enabled after you have confirmed the snapshot is current.
HSN is for goods. SAC is for services.
Goods carry HSN codes. Services carry SAC codes, short for Service Accounting Code. Both sit inside the same classification system and both decide the GST rate. On a mixed invoice, confusing the two is a real error that shows up in the numbers.
A purchase invoice can mix goods (HSN) and services (SAC): material plus freight plus installation. Using the wrong series is a classification error even if the rupee rate looks familiar. File the code the law asks for, not the rate you remember.
| HSN | SAC | |
|---|---|---|
| Classifies | Goods and materials | Services |
| Base | WCO harmonized system | UN Central Product Classification |
| Example | 72142000 steel bars | 998711 maintenance and repair |
| Check at | CBIC rates page / GST HSN search | CBIC rates page / GST SAC search |
The GST portal has separate search tools for HSN and SAC. Use the right one for each line. If you are unsure whether a line is goods or services, look at the description. "Supply of steel bars" is goods (HSN). "Maintenance of steel processing machine" is services (SAC). "Supply and installation of valves" is both, and should be split into two lines with separate codes.
Where the errors come from
On a scanned invoice the HSN sits in the line-item table next to the description, quantity and rate. The photocopy is dark, or the print is small, or the phone photo is at an angle. OCR reads what it can. Sometimes it gets the code wrong. A 2 becomes a 7. A digit gets dropped. The line still carries a tax rate, but the rate does not match the code.
Wrong HSN often still looks like a normal invoice: amounts add, tax looks familiar. The miss is the code vs what was filed or vs the product. That shows up later, not at keying, unless you check HSN on the way in.
EntryLedger reads each line item, validates the HSN for format, checks the directory, and cross-checks the tax rate against what the HSN implies. A mismatch sends the invoice to review with the reason, not to Tally with a wrong number. The fix takes seconds at entry time. The fix at filing time takes hours.
- CBICcbic-gst.gov.in - GST goods and services rates
Official HSN and SAC tables with current GST rates and notifications.
- GST portalservices.gst.gov.in - HSN/SAC search
Official search tool. Enter a code to see its description and rate.
- EntryLedgervalidation gate
HSN checks as shipped. Confirm CBIC for rates.
How many digits is an HSN code?+
4, 6 or 8 digits. Four identify the heading, six the sub-heading, eight the commodity. The count depends on turnover.
What if the HSN on an invoice is wrong?+
A wrong or missing HSN can slow ITC and draw scrutiny at filing. EntryLedger checks every line's HSN for format and directory presence before export.
HSN vs SAC?+
HSN classifies goods. SAC classifies services. Both carry GST rates. Use the right search tool for each.