LedgereeStart free trial
Blog

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.

A real failure mode in at least one competing connector: a captured GSTIN never gets passed through to the accounting side’s contact record at all — every buyer is recorded as a standard consumer, and B2B tax-credit invoicing has to be redone by hand.

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.