Complylocal Consultants - Business Registration & Compliance Services
GST

How to Do Accounting for a Shopify D2C Brand in India

A working guide to Shopify D2C accounting in India, covering the three systems your sales number comes from, COD and RTO treatment, and contribution margin.

Ankush Goyal

17 Sept 2026Updated 17 Sept 202610 min read

GST Return Filing

Shopify D2C accounting starts from the Shopify order report, not the bank statement, because your money arrives through three separate systems on three different clocks. Prepaid orders settle through Razorpay in two to three days, COD orders settle through the courier in seven to fifteen, and RTO shipments never settle at all while still costing you freight both ways.

The result is that a D2C brand’s bank balance tells you almost nothing about the month it belongs to. This guide covers where the sales figure actually comes from, how to treat COD and RTO, what a D2C chart of accounts looks like, and the contribution margin working that shows whether growth is paying for itself.

Why D2C accounting is not marketplace accounting

A marketplace seller has one settlement report per platform and one tax deduction to track. A D2C brand has an order system, a shipping aggregator and a payment gateway, none of which agree with each other on any given day.

Two differences matter most. There is no GST TCS on your own website sales, because Section 52(1) of the CGST Act applies only to supplies made through an operator by other suppliers. The GST Council’s own e-commerce FAQ confirms that a sale on your own account through your own website is not covered. And COD exists, which marketplaces largely absorb on your behalf but a D2C brand carries in full.

If you also sell on Amazon or Flipkart alongside your own store, the marketplace side follows a different method entirely. Our guide to ecommerce accounting basics covers settlement reports and TCS treatment.

Where your sales number actually comes from

Use Shopify as the source of truth for revenue and Shiprocket and Razorpay as sources of truth for cost and cash.

System

What it is authoritative for

What it must never be used for

Shopify

Order value, order date, tax, discounts, customer state

Cash received

Shiprocket or courier panel

Freight, weight discrepancy charges, RTO events, COD remittance

Revenue

Razorpay or gateway

Prepaid collections, gateway fees, refunds processed, chargebacks

Revenue

Bank

Final cash position only

Anything else

The revenue entry is passed from Shopify on the order or dispatch date. Everything else is a downstream cash or cost event attached to that order. Brands that post revenue from Razorpay settlements lose every COD order from their books, which for most Indian D2C brands is between 40% and 65% of volume.

Weight discrepancy charges deserve their own mention. Couriers raise them weeks after dispatch, often against orders from a closed month, and they land in the wallet as a deduction with no invoice attached to any order. Book them to a separate ledger rather than netting them into freight, because a rising balance there usually means your packaging weight is declared wrong, not that shipping got expensive.

How to treat COD orders

A COD order is revenue on dispatch, not on remittance. The customer has not paid you yet, so the entry creates a receivable from the courier, and GST is payable on the invoice date regardless of when the cash arrives.

  1. Post the sale from Shopify on dispatch, debiting COD receivable and crediting sales and output GST.

  2. Keep COD receivable as a separate ledger from gateway receivable, because the ageing behaves differently.

  3. On remittance, clear the receivable against the bank credit and book the COD handling fee as an expense.

  4. Reconcile the courier’s COD remittance statement to the orders it claims to cover, order ID by order ID.

  5. Age anything unremitted beyond 21 days and raise it with the courier before it becomes unrecoverable.

Output GST on a COD order falls due with the return for the month of supply, which means you often pay the tax before the customer’s money reaches you. A brand pushing hard on COD during a festive month can finish that month with GST paid in cash on revenue still sitting with the courier. That is a cash flow question, not an accounting one, but the books are where you see it coming.

How to treat returns and RTO

RTO and a customer return are different events and should never share a ledger. An RTO shipment was never delivered, so no sale was completed. A return was delivered, accepted and then sent back.

For an RTO, reverse the sale with a credit note dated when the shipment is marked RTO delivered back to your warehouse, bring the stock back in, and book both the forward and the reverse freight to an RTO cost ledger. For a customer return, issue the credit note on the date the goods are received back, not the date the refund leaves Razorpay. Those two dates commonly fall in different months and pushing them together overstates the earlier month.

Under Section 34(2) of the CGST Act, a credit note that reduces your output tax liability has to be declared by 30 November following the end of the financial year in which the supply was made, or the date of the annual return, whichever is earlier. March RTOs that get cleaned up in the following December are outside that window. The stock comes back, the GST does not.

RTO cost is the number most D2C founders underestimate, because it hides inside the shipping expense head. Pull it out. A 28% RTO rate on COD orders with ₹150 of round-trip freight is ₹42 of pure loss carried by every COD order you accept, before any product cost.

The chart of accounts a D2C brand needs

Generic accounting software gives you Sales, Purchases and Indirect Expenses. That structure cannot answer the only question a D2C founder asks, which is whether a given product makes money.

Split revenue by channel first, keeping Shopify, marketplace and offline separate. Then split direct costs so each one can be traced to an order: cost of goods, inward freight, packaging material, forward shipping, reverse and RTO freight, COD handling, payment gateway charges, and platform subscription.

Marketing needs its own discipline. Keep Meta, Google, influencer and agency retainer as separate ledgers rather than a single Advertising head, because blended ROAS hides which channel is actually funding itself. Under current assets, keep COD receivable, gateway receivable and inventory by location as three distinct ledgers.

Product-wise bifurcation is what makes the whole structure useful. Tag every direct cost line with the SKU or product group it belongs to at the point of entry. Retrofitting that tag across a year of vouchers is a project nobody finishes.

Sales classification and why GST needs it

Four classifications have to exist in your data from day one: B2B against B2C, and COD against prepaid.

B2B orders where the customer supplies a GSTIN go into Table 4A of GSTR-1 invoice by invoice, and your customer cannot claim credit unless you report them correctly. B2C orders go into Tables 5 and 7 by place of supply. A Shopify export that does not carry the customer’s state cannot produce a correct GSTR-1, and place of supply for goods is where the movement terminates, which is the delivery address rather than the billing address.

COD against prepaid is not a GST classification, but keeping it in the same data structure is what lets you run RTO and remittance analysis without rebuilding the file every month.

A D2C brand shipping across state lines has no turnover threshold to hide behind. Section 24(i) of the CGST Act makes registration compulsory for any person making an inter-state taxable supply of goods, from the first order.

The three reconciliations that must tie every month

Nothing in D2C accounting works until these three close.

Reconciliation

What you match

Common cause of a gap

Payment gateway

Razorpay settlement report against gateway receivable and prepaid orders

Refunds processed in a later month than the credit note

COD

Courier remittance statement against COD receivable, order by order

RTO shipments still sitting as receivable

GST

Books against GSTR-1 and GSTR-3B as filed

Credit notes booked in the wrong period

Run them in that order. The gateway reconciliation is the easiest and clears the largest volume of orders, which leaves a smaller and more meaningful residue in the COD file. The GST reconciliation is last because it depends on the other two being right.

The GST one catches the errors that get expensive. Turnover in your books and turnover in your filed GSTR-1 should differ by nothing. Where they differ, the cause is nearly always credit notes for RTO recognised on the refund date. Fixing the method matters more than fixing the month, and the related work of filing GST returns as a seller becomes far easier once the books tie.

Slow-moving and non-moving inventory

Run an ageing on stock quantity, not on stock value, at least once a quarter. Value-based reports flatter slow inventory because the cost stays on the books at full value until someone decides to write it down.

Classify by days since last sale. Anything with no dispatch in 90 days is slow moving; anything at 180 days with stock on hand is effectively dead capital. For a D2C brand holding ₹40 lakh of inventory at 22% blocked in non-moving SKUs, that is ₹8.8 lakh of working capital funding nothing, usually while the founder is raising money to buy more stock.

Two entries follow from the review. Write down obsolete stock rather than carrying it, and record any inventory lost or damaged separately, because Rule 56(2) of the CGST Rules requires a location-wise account of goods lost, stolen, destroyed or written off, and input tax credit on written-off goods has to be reversed under Section 17(5)(h) of the CGST Act.

The contribution margin working a D2C founder actually needs

Gross profit is the wrong number for D2C. It ignores shipping, RTO and customer acquisition, which together often exceed cost of goods.

The working below is illustrative, built on an order with a taxable value of ₹1,000 and a 28% RTO rate on the COD mix. Substitute your own figures.

Line

Per order

Note

Net revenue, taxable value

₹1,000

Excluding GST

Cost of goods

₹350

Landed cost including inward freight

Forward shipping and packaging

₹95

Net of input tax credit

Payment gateway or COD handling

₹20

Net of input tax credit

RTO provision

₹38

Round-trip freight × RTO rate

Contribution before marketing

₹497

Customer acquisition cost

₹300

Total ad spend ÷ orders

Contribution after marketing

₹197

19.7% of net revenue

At ₹197 per order and fixed costs of ₹4 lakh a month, break-even is roughly 2,030 orders. That single number is worth more than any profit and loss statement, because it converts every marketing decision into an order target.

Track it by product group and the picture usually splits. One or two SKUs carry the brand while a long tail runs at negative contribution once RTO and acquisition are loaded in. Deeper ecommerce profitability analysis builds this by SKU and by channel rather than at a blended level.

Is a Shopify store an e-commerce operator under GST

Your own store is an electronic commerce operator by definition, but it does not collect TCS.

Section 2(45) of the CGST Act defines an e-commerce operator as any person who owns, operates or manages a digital facility for electronic commerce, which a Shopify store plainly is. TCS under Section 52(1) is a separate question, and it applies only to supplies made through the operator by other suppliers. Selling your own goods on your own account is not that, so no TCS arises and there is no GSTR-8 to file.

That distinction changes the moment you let another brand sell through your store. A multi-brand site holding third-party inventory on a commission model crosses into Section 52 territory, with TCS collection, GSTR-8 by the 10th and registration under Section 24(x). D2C brands adding a partner-brand section often cross that line without anyone in finance being told.

Need monthly books that tie across Shopify, Shiprocket and Razorpay? Talk to Simran’s team at Complylocal Consultants about Shopify accounting and compliance.

Frequently Asked Questions

  • Post revenue from the Shopify order report on the order or dispatch date, at the order’s taxable value with output GST shown separately. Treat Razorpay settlements and courier COD remittances as receipts against that sale, never as the sale itself. Booking from settlements drops every COD order from your books.

  • No. TCS under Section 52(1) of the CGST Act applies only to supplies made through an operator by other suppliers. A sale of your own goods on your own website is a supply on your own account, so no TCS is collected and no GSTR-8 is filed. You still charge and pay GST on the sale itself.

  • GST falls due for the tax period in which the supply is made, based on the invoice date, not the date the courier remits the cash. A COD order dispatched on 28 March carries GST in the March return even if the remittance arrives in April. Plan cash accordingly during festive months.

  • Reverse the sale through a credit note dated when the shipment returns to your warehouse, bring the stock back into inventory, and post both the forward and reverse freight to a dedicated RTO cost ledger. Keep it separate from customer returns and from general shipping, or the true cost of your COD mix stays invisible.

  • If you ship to customers in other states, yes. Section 24(i) of the CGST Act makes registration compulsory for anyone making an inter-state taxable supply of goods, with no turnover threshold. A store selling only within its own state can use the normal threshold, but that describes very few D2C brands.

  • There is no universal figure, because it depends on category, price point and RTO rate. What matters is that contribution after marketing is positive at SKU level and that you know the order volume required to cover fixed costs. Track it monthly by product group rather than as a blended number.

A

Written by

Ankush Goyal

Head of GST Department

Ankush Goyal is the Head of the GST Department at ComplyLocal Consultants, specializing in GST registration, amendments, return filing, notices, refunds, e-invoicing, e-way bills, and end-to-end GST compliance for businesses across India.

Related posts

Get the compliance calendar + new rules in your inbox.

Monthly digest, written by CAs. Unsubscribe anytime.