Log in Sign up →
← Back to all articles

The B2B / B2CS / B2CL classification trap

The GSTR-1 invoice categories look simple. They're not. Misclassification here is the second most common rejection cause after place-of-supply errors. Here's the model we use to make sure every invoice lands in the right bucket the first time.

The three categories

B2B — Business to Business

Sales to another GSTIN holder, regardless of value or supply state. Invoice-level detail is reported (invoice number, date, GSTIN, taxable value, tax). The buyer sees this invoice in their 2A/2B and claims ITC from it.

B2CS — Business to Consumer (Small)

Sales to unregistered buyers (no GSTIN) where:

Reported in aggregate by state and tax rate. No invoice-level detail.

B2CL — Business to Consumer (Large)

Sales to unregistered buyers where the supply is inter-state AND invoice value is ₹2.5 lakh or more. Reported with invoice-level detail (similar to B2B but no GSTIN since the buyer is unregistered).

The trap, illustrated

Invoice value vs taxable value
The ₹2.5L threshold for B2CL is invoice value (including GST), not taxable value. A small price change can flip the category.

Case A: Karnataka → Tamil Nadu, unregistered buyer
Taxable ₹2,10,000 + IGST 18% (₹37,800) = Invoice ₹2,47,800
B2CS (under ₹2.5L)

Case B: Same scenario, same parties
Taxable ₹2,15,000 + IGST 18% (₹38,700) = Invoice ₹2,53,700
B2CL (over ₹2.5L, reported with invoice detail)

What goes wrong

Three patterns we see repeatedly:

Habit-based classification. A junior team member processes a hundred invoices on autopilot, classifies everything inter-state-unregistered as B2CS. The ₹2.6L invoice slips through; the portal flags the missing B2CL entry.

Taxable-value mental model. Even experienced staff sometimes apply the threshold to taxable value, not invoice value. The threshold is in the law as "invoice value" — read it carefully.

State-change confusion. If a registered buyer doesn't share their GSTIN (or shares an old/incorrect one), the system defaults them to unregistered. A ₹4L invoice that should be B2B suddenly becomes B2CL. The buyer can't claim ITC because they're not on a B2B invoice. They call you on the 12th.

The mental model

For every invoice, ask three questions in order:

  1. Is the buyer registered? (Has a valid GSTIN) → If yes, B2B. Stop.
  2. Is it inter-state? (Supplier state ≠ buyer state) → If no (intra-state), B2CS. Stop.
  3. Is invoice value ≥ ₹2.5L? → If yes, B2CL. If no, B2CS.

That's it. Three questions, deterministic answer. The trick is to enforce this at invoice creation time so the classification happens automatically based on the customer master and the invoice total — not at filing time when you're under deadline pressure.

Classification errors are not really errors. They're shortcuts that bypassed a check that should have been automatic. Every category your team has to think about is a category that will eventually be wrong.

Edge cases worth knowing

SEZ supplies have their own categories (SEZWP, SEZWOP — with payment / without payment) and don't fit the B2B / B2C model. Treat them as a separate workflow.

Exports are EXPWP (with payment) or EXPWOP (without payment, under LUT). Place-of-supply and tax treatment differ. Don't lump them into B2B.

Deemed exports (supplies to EOU, supplies against advance authorisation, etc.) are a fourth category that gets reported in Table 6C of GSTR-1. Easy to miss if your client has any sales to export-oriented units.

The classification rules aren't going to change. The complexity is what it is. The best thing you can do is push the decision earlier in the workflow — to the invoice entry point, when the customer's GSTIN status and the supply nature are still fresh — instead of leaving it for the filing crunch.

Built for this exact problem

Three questions, deterministic answer — at invoice entry.

Quillix auto-classifies every invoice based on the customer master and the invoice total. No more "did we mark this one B2CL?" debates on filing day.

See how Quillix works → Schedule a demo