B2B invoicing on Shopify: capturing GSTIN and booking it correctly
21 July 2026 · 6 min read
Shopify’s checkout has no built-in GSTIN field. For a seller who sells to businesses as well as consumers, that’s a real problem — a B2B buyer needs their GSTIN on the invoice to claim input tax credit, and without it, the sale can only be booked as a plain consumer transaction.
Where GSTIN actually gets captured
Since there’s no native field, sellers typically capture it one of three ways:
- A custom checkout field or app that writes the GSTIN into an order’s note attributes.
- An order or company metafield, set by a checkout customization or post-purchase flow.
- Shopify’s native B2B/Wholesale (Company) feature, on Shopify Plus — though even there, Shopify has no GSTIN field of its own, so it still ends up on a company-level metafield.
Whichever source you use, the important part is what happens next: that GSTIN has to actually reach the accounting entry, not just sit in Shopify.
Why matching by GSTIN, not customer name, matters
Customer names vary and typo across orders — “Acme Pvt Ltd”, “ACME Private Limited”, “Acme Pvt. Ltd.” are the same business but three different strings. A GSTIN is the one reliable, unique identifier for a business. Party-ledger resolution should look up an existing ledger by GSTIN first, and only create a new one if none exists — never by matching on name, and never creating a new ledger for every order regardless of whether that customer already has one.
Why B2B orders shouldn’t be folded into your consumer aggregate
Most D2C accounting setups post consumer (B2C) sales as a daily aggregate against a generic gateway/website ledger — there’s no real benefit to a per-customer ledger for one-time retail buyers, and it would bloat your chart of accounts for no bookkeeping gain. B2B customers are the opposite case: they’re a much smaller population, usually have genuine credit terms, and a GSTIN-backed party ledger is standard, necessary practice for a proper tax-credit invoice. That means B2B orders need to be routed out of the generic aggregate and posted against that specific customer’s own ledger and its own Sales ledger — kept separate from ordinary retail sales, not blended into it.
The takeaway
B2B invoicing on Shopify is solvable, but only if the GSTIN capture point, the matching logic, and the ledger routing are all handled deliberately. Ledgeree resolves the party ledger by GSTIN (creating it automatically the first time a new B2B customer orders), and posts every B2B fulfillment against its own dedicated Sales ledger and voucher — separate from your regular B2C aggregate.