Fintech technology
Startups Fintech July 27, 2026 • 8 min read

GST Compliance Cheatsheet for SaaS Products Serving Indian SMBs

For: A Series A SaaS founder whose product invoices Indian SMB customers and whose finance lead just flagged that their billing engine is generating non-compliant GST invoices for interstate B2B sales — 6 months after launch

If your SaaS billing engine treats GST as a single tax rate applied at checkout, it is generating invoices that block your B2B customers from claiming input tax credit (ITC) — and ITC-blocking invoices are the fastest way to lose an Indian SMB customer. GST on SaaS branches on four axes simultaneously: B2B vs. B2C, interstate vs. intrastate, registered vs. unregistered supplier, and whether the customer intends to claim ITC. Miss one branch and the invoice is non-compliant. This cheatsheet is the mapping between what a CA will demand and what your engineers actually need to build.

The four axes your billing engine must branch on

AxisDetermined byImpact on invoice
B2B vs. B2CPresence of valid customer GSTINInvoice format, GSTIN field, ITC eligibility
Interstate vs. intrastatePlace of supply vs. supplier stateIGST (single line) vs. CGST + SGST (split)
Registered vs. unregistered supplierYour annual turnover and voluntary registrationWhether you charge GST at all
Domestic vs. imported serviceSupplier locationTriggers reverse charge on the customer

Tax split: interstate vs. intrastate

SaaS is a service. Place of supply for B2B services is the recipient's registered location (GSTIN state). For B2C, it is the recipient's address on record.

Your billing engine needs the supplier's registered state as a constant and the customer's place of supply as a per-invoice field. Do not infer place of supply from billing address alone for B2B — use the state code from the validated GSTIN (first two digits).

Minimum fields on a compliant tax invoice

Per Rule 46 of the CGST Rules, every B2B tax invoice must contain:

For B2C invoices where the value exceeds ₹50,000 to an unregistered recipient, name, address, and state of the recipient are also mandatory.

B2B vs. B2C invoice differences

FieldB2BB2C
Customer GSTINRequired and validatedNot applicable
Invoice typeTax InvoiceBill of Supply / Tax Invoice
ITC claim by customerYes — invoice must be perfectNo
Reporting in GSTR-1B2B table (invoice-level)B2C table (aggregated by state + rate)
E-invoice (IRN) applicabilityYes, if turnover threshold crossedNo

The e-invoicing threshold has been progressively lowered. If your aggregate turnover crosses the current threshold (₹5 crore at the time of writing — verify current CBIC notification), you must generate an IRN via the IRP portal for every B2B invoice before issuing it. This is an API integration, not a PDF template change.

GSTIN validation — do not skip this

A GSTIN is 15 characters: 2-digit state code + 10-char PAN + 1-digit entity number + 1 default char + 1 checksum. Client-side regex is not enough. You need live validation because a syntactically valid GSTIN can be cancelled, suspended, or belong to a different legal name.

If you are building the underlying billing plumbing from scratch, look at how GimBooks handled invoice compliance as core product surface rather than a settings screen.

Reverse charge mechanism (RCM) on imported SaaS

This is the axis most foreign-headquartered SaaS founders get wrong. If your Indian customer is buying SaaS from a supplier outside India (or from an Indian entity without GST registration), the customer is liable to pay IGST under reverse charge under Section 5(3)/5(4) of the IGST Act.

Common non-compliance patterns your CA is probably flagging

  1. Single tax line instead of CGST+SGST split for intrastate invoices. Blocks ITC.
  2. IGST charged on an intrastate transaction because place of supply logic wasn't wired up. Blocks ITC.
  3. Missing or wrong SAC code. Blocks ITC.
  4. Customer GSTIN not printed on invoice PDF even though it was collected. Blocks ITC.
  5. Invoice numbers not sequential or reset mid-financial-year in a non-compliant way. GSTR-1 filing rejects.
  6. No IRN when turnover crossed the e-invoicing threshold. Invoice legally invalid.
  7. Credit notes issued as fresh invoices. Breaks reconciliation on both sides.

Retrofit plan for a live billing engine

Order of operations, from lowest risk to highest:

  1. Add a compliance audit query that scans the last 6 months of invoices against the Rule 46 field list. This gives you the exact remediation universe.
  2. Introduce a place-of-supply resolver as pure function — supplier state, customer GSTIN state, customer type in; CGST/SGST/IGST breakdown out. Unit test it exhaustively before touching the invoice path.
  3. Wire in a GSTIN validation API with response caching. Backfill validation for existing customers.
  4. Update the invoice template: separate tax lines, SAC code, place of supply, reverse charge declaration where applicable.
  5. Issue credit notes against non-compliant invoices, then reissue compliant invoices with new numbers. Do not silently overwrite — GSTR-1 amendments have a specific workflow.
  6. If e-invoicing applies, integrate IRP (via a GSP like ClearTax, Masters India, or IRIS) before month-end.

Teams building or fixing this kind of billing plumbing often pair it with broader financial workflow work — see how we scope this kind of engagement or the India engineering hub if you need on-ground GST domain reviewers.

Frequently Asked Questions

Do I need to charge GST if my SaaS company is registered outside India?

If you sell to Indian B2B customers with a valid GSTIN, they typically discharge GST under reverse charge — you do not charge Indian GST but must mark the invoice accordingly. If you sell to unregistered Indian customers (B2C), OIDAR rules require you to register in India and collect GST directly. Get this reviewed by an Indian tax counsel before your first invoice.

What SAC code should I use for SaaS on my invoices?

SAC 998314 ("Information technology (IT) design and development services") or 998434 ("On-line text based information such as online books, newpapers, periodicals, directories") are commonly used, but the correct code depends on how your service is characterised. Most pure-play SaaS falls under 998314 or 997331. Confirm with your CA — using the wrong SAC is a common ITC-blocker.

Is GSTIN validation via regex enough?

No. Regex only confirms the format is plausible. It does not confirm the GSTIN is active, matches the legal name your customer entered, or belongs to the correct state. Use a live GSTIN validation API at onboarding and periodically thereafter, and store the returned legal name to reconcile against the billing entity.

What happens if a customer's ITC claim is rejected because of my invoice?

The customer loses 18% of the invoice value as an unrecoverable cost until you correct the invoice. In practice, they will demand a credit note and reissuance, delay payment, and escalate — and if the pattern repeats, churn. For an SMB customer, ITC loss on a recurring SaaS bill is a hard commercial trigger to switch vendors.

How long does it take and what does it cost to fix a non-compliant billing engine?

It depends on your invoice volume, the number of edge cases in your customer base (multi-state customers, SEZ customers, foreign customers, RCM cases), and whether e-invoicing applies. Contact CodeNicely for a personalized assessment scoped to your billing architecture and remediation universe.

Found this useful? CodeNicely publishes engineering and product playbooks weekly. Browse the archive or tell us what you're building.