Ecommerce DTC Shopify Bookkeeping Sales Tax
Shopify Bookkeeping Setup for DTC Brands Under $5M: The Stack, the Mapping, and the Mistakes to Skip
Published June 1, 2026 by Invisible LLC Team · 11 min read
The short version
If you are running a Direct-to-Consumer (DTC) brand on Shopify and doing somewhere between $500K and $5M in annual revenue, your bookkeeping is almost certainly worse than you think it is. That is not a judgment — it's a structural problem. Shopify reports a gross sales number that has very little to do with what hit your bank. Your bank shows a daily Stripe deposit that has been netted against fees, refunds, chargebacks, and currency conversions. Your 3PL invoices you separately. Your sales-tax obligation accrues silently across states you didn't realize you had nexus in. Your overseas factory invoices in USD or in a foreign currency, sometimes wired, sometimes paid through a marketplace.
The result, in almost every case: a P&L that looks fine until you ask "what did I actually make on these jeans last quarter?" — at which point the answer is a shrug.
TL;DR: A clean Shopify bookkeeping setup for a sub-$5M DTC brand has six moving parts: (1) the right ecommerce-to-GL bridge (A2X or Synder), (2) a chart of accounts that separates gross revenue, fees, refunds, and shipping income, (3) inventory and landed-cost tracking, (4) multi-state sales tax registration and filing, (5) a 3PL and freight reconciliation workflow, and (6) a monthly close that produces a real contribution-margin number, not just "product sales." Below: how to actually stand it up.
What Shopify gives you (and what it doesn't)
Shopify's reporting is good marketing analytics. It is not bookkeeping. The native Shopify dashboard tells you total sales, total orders, average order value, and breakdowns by channel, product, and traffic source. Useful. But the moment your accountant or CPA pulls a Shopify export and tries to map it to a general ledger, the gaps show up:
- Gross sales include refunds. Shopify's gross number is the sum of every order ever placed, including the ones that got refunded the next day. Your real revenue is gross minus discounts minus refunds — and most DTC brands have a returns rate between 8% and 25% depending on category.
- "Net sales" in Shopify is not net of payment fees. Shopify's "net sales" subtracts discounts and refunds but does NOT subtract Stripe / Shop Pay / Shop Promise / Klarna / Affirm processing fees. Those fees alone are 2.9% + $0.30 per order minimum — sometimes more if you're on Stripe Standard rather than Shop Payments, or if cross-border orders are mixed in.
- Shopify Payments deposits to your bank are net of fees, refunds, AND chargebacks. The number that hits your account is two or three steps removed from any single Shopify report. Reconciling Shopify to your bank by eyeball doesn't work past about $30K/month in volume.
- Shipping income is buried. When the customer pays $7.99 for shipping at checkout, Shopify records that as revenue. Your actual shipping cost (paid to USPS, UPS, FedEx, or your 3PL) is a separate expense that flows through a different invoice. If you don't separate shipping income from product revenue and shipping cost from COGS, your product margin looks better than it is.
- Gift cards are a liability, not revenue. A $50 gift card sale is cash in — but the revenue isn't earned until it's redeemed. Most brands under $5M miss this; some are off by tens of thousands of dollars on the gift-card liability line.
- Sales tax collected is not your money. Obvious to anyone who's thought about it for ten seconds, but easy to miss in the dashboard. Shopify shows it inside the gross sale; it should be sitting in a sales-tax-payable liability account in your books, waiting to be remitted.
A real DTC P&L cleans all of that up. That cleanup is what an ecommerce bridge tool plus a properly-structured chart of accounts is supposed to do.
The bridge: A2X vs Synder vs raw connector
There are three real options for getting Shopify data into your books, in roughly decreasing order of how we recommend them for DTC brands under $5M:
A2X for Shopify. Our default recommendation for serious DTC operators. A2X pulls Shopify settlement data and posts a single summary journal entry per settlement period to QuickBooks (or Xero). The journal entry separates gross revenue, refunds, discounts, gift cards, sales tax collected, shipping income, payment processing fees, and other adjustments — each into its own GL account. You end up with one clean entry per payout, which reconciles cleanly to the bank deposit on the same day. Pricing scales with order volume; for a $1M–$3M DTC brand, expect $50–$120/month. Worth it.
Synder. Synder takes a different approach: it syncs transactions in finer detail, often order-by-order, with more flexibility in mapping rules. It's a competent tool. It produces more transactions in your QuickBooks file (one per order, in some configurations) which is either a feature or a problem depending on your perspective. We've seen Synder work well for brands that want order-level detail in the GL; we've seen it produce overwhelming transaction volume in QuickBooks for brands above ~$1M that would have been better served by A2X's summary approach.
The native Shopify–QuickBooks connector. Free, comes with both platforms, and broadly does not produce a chart of accounts you can rely on past about $30K/month in revenue. The connector tends to lump revenue, sales tax, fees, and refunds in ways that require monthly hand-cleanup. For a brand under $100K/year it might be defensible. Past that, the connector is the source of more bookkeeping cleanups than any other DTC tool we encounter.
Two notes:
- Don't run both A2X and the native connector at the same time. You'll double-book revenue. We've seen this. It is unfun to unwind.
- Whichever bridge you choose, run it on a settlement cadence, not real-time. Shopify's payout periods (every 1–3 business days for most US brands) are the right unit of accounting. Trying to reconcile each individual order against the bank is a category error.
The DTC chart of accounts that actually works
A generic small-business chart of accounts will not survive a sub-$5M DTC brand. The accounts you need, at a minimum:
Revenue accounts (kept separate, never merged):
- Product Revenue (broken out by major product category or channel if it helps you think — but don't over-segment past 4–5 lines, the detail belongs in Shopify, not your GL)
- Shipping Income
- Gift Card Redemption Income (booked when redeemed, not when sold)
- Wholesale Revenue (if you sell B2B as well — keep it separate from DTC)
- Marketplace Revenue (if Amazon, Etsy, Faire are in the mix — never merge with Shopify DTC)
- Discounts (contra-revenue account, negative)
- Returns and Refunds (contra-revenue account, negative)
Cost of Goods Sold:
- Product Cost (landed — this is what makes it real; see next section)
- Inbound Freight (overseas freight to your warehouse — sometimes capitalized into landed cost instead, depends on your accounting policy)
- Fulfillment / 3PL Fees (outbound — what you pay to ship the order)
- Outbound Shipping Cost (carrier costs — USPS, UPS, FedEx — sometimes paid by 3PL and rebilled, sometimes direct)
- Payment Processing Fees (Stripe / Shopify Payments / Klarna / Afterpay / Affirm)
- Returns Processing Cost (often a flat per-return fee from your 3PL)
Operating Expenses (not COGS):
- Marketing — Paid Ads (Meta, Google, TikTok separately if you can)
- Marketing — Email / SMS Platform (Klaviyo, Attentive, Postscript)
- Marketing — Influencer / Affiliate
- Software / Subscriptions (Shopify, Klaviyo, A2X, etc. — separate from marketing)
- Payroll
- Contract Labor
Liability accounts:
- Sales Tax Payable (by state, if you can — but a single sales-tax-payable account with state-level detail in the supporting workpaper also works)
- Gift Cards Outstanding (the deferred-revenue side of gift card sales)
- Wholesale Customer Deposits (if applicable)
A few things to call out:
- Payment processing fees can go in COGS or in operating expenses, and accountants will argue about it. Most DTC operators we work with put them in COGS because the fee is incurred per-order alongside product cost — it scales with revenue, not with operating overhead. Be consistent either way.
- Shipping income and shipping cost should both exist as separate lines. Many small brands lose visibility on whether their shipping policy is a profit center or a loss leader by netting these together.
- Marketing should be broken out enough to support CAC analysis. If your P&L just says "Marketing $42,000," you can't tell whether your Meta ROAS is collapsing or whether your influencer budget is the leak. Five or six marketing lines, not one.
Landed cost: the COGS line most brands get wrong
"Landed cost" is the total cost to get one unit of product from the factory door to your warehouse, ready to sell. It includes:
- Product cost (what you paid the factory)
- Inbound freight (ocean / air shipping from factory to port to warehouse)
- Duties and import tariffs
- Customs broker fees
- Insurance
- Any inspection or QC costs paid at origin
A unit of inventory should sit on your balance sheet at its full landed cost, and when it sells, the COGS line on your P&L should reflect that same landed cost — not just the factory invoice.
The way most sub-$5M DTC brands actually track this:
- Maintain a landed cost worksheet per PO (purchase order) — a spreadsheet that captures product cost, freight, duties, and other charges for that shipment.
- When the shipment lands, divide total landed cost by units received to get a landed unit cost for that PO.
- Book the inventory into your books at landed unit cost. When you sell those units, COGS gets recorded at that landed cost.
- For subsequent POs, use the new PO's landed cost. Your inventory layers will be at slightly different costs depending on PO — that's normal (FIFO accounting handles it; weighted-average accounting averages it; your bookkeeper will pick the method and stick with it).
Most DTC brands under $1M run inventory and landed cost in QuickBooks with periodic adjustments rather than continuous tracking. Most DTC brands over $2M move to a dedicated inventory tool — Cin7, Finale, or Shopify's own inventory module for simpler operations — and sync it to QuickBooks for the financial side.
The mistake to avoid: booking inventory at factory cost only (the invoice from the factory) and then expensing freight separately as it's paid. That understates COGS, overstates inventory on the balance sheet, and produces a gross margin number that's flatteringly wrong by 5–15 points depending on your category.
Multi-state sales tax: the ticking time bomb
Since the 2018 South Dakota v. Wayfair Supreme Court decision, every state has set its own economic nexus threshold — the level of sales (or transaction count) into that state that triggers an obligation to register, collect, and remit sales tax. Common thresholds are $100,000 in sales OR 200 transactions, but specifics vary by state.
For a Shopify DTC brand, the operational implication is brutal: as you scale past $1M in annual revenue, you almost certainly have nexus in 5–15 states even if your business is physically based in one. The state doesn't tell you. You're expected to figure it out, register, set Shopify to collect the right tax rate, file a return on the state's cadence (monthly, quarterly, or annually depending on state and volume), and remit.
A workable sales-tax setup at the sub-$5M tier:
- Use a nexus monitoring tool. TaxJar, Avalara, Anrok, and Sovos all do this. They track your Shopify sales by state and flag the moment you cross a state's threshold. For most brands under $5M, TaxJar or Anrok are the right altitude; Avalara is a bigger tool than most brands at this size need.
- Register before you cross the threshold, not after. Once you've crossed the economic nexus threshold, the obligation starts immediately. Brands that wait six months to register typically owe back taxes plus penalties on every sale into that state since the threshold-crossing date.
- Configure Shopify to collect tax in every state where you're registered. The Shopify Tax module handles this; turn it on per state as you register.
- File on the state's cadence. Some states require monthly filing once you're over a certain threshold; some are quarterly; a few are annual. Each one has its own login, its own form, its own due date. This is where bookkeeping firms (or a sales-tax service like TaxValet) earn their fee — most DTC operators do not have the bandwidth to manage 8 state portals manually.
- Don't forget marketplace facilitator laws. If you sell on Amazon or Etsy in addition to Shopify, those platforms remit sales tax on your behalf in most states (marketplace facilitator laws). Your Shopify sales are still your obligation, but your Amazon/Etsy sales generally aren't — and you need to track both separately so your registration paperwork in each state is accurate.
The realistic posture: if you are doing $500K–$5M on Shopify and you don't currently have a multi-state sales-tax answer that you can explain in one sentence, this is the highest-priority cleanup project in the back office.
The monthly close cadence that actually tells you what you made
A clean DTC close, run monthly, takes a competent bookkeeper 4–10 hours depending on transaction volume. The output is a P&L that tells the operator what they actually made, not just what Shopify thinks they sold.
A simple monthly cadence:
Day 1–3 of the new month:
- A2X (or your bridge of choice) posts the prior month's settlement entries.
- Bank and credit card reconciliation completes — every Shopify deposit ties to the corresponding settlement entry; every Stripe-via-other-platform deposit ties to its own source.
- 3PL invoice reconciliation — pick units, pack units, ship cost, returns processing — booked to the right COGS lines.
- Inventory adjustment — units received during the month booked at landed cost; units sold released as COGS; any breakage / shrinkage / damages adjusted out.
- Gift card liability reconciled — cards sold (deferred revenue +) and cards redeemed (revenue earned, deferred revenue −).
Day 4–7:
- Sales tax workpaper updated by state. Returns due that month get filed; nexus thresholds rechecked.
- Vendor bills (factory POs, freight, software, marketing) posted to AP.
- Payroll for the month reconciled.
Day 8–10:
- P&L review. The right shape: gross revenue → discounts/refunds → net revenue → COGS (including landed product cost, fulfillment, payment fees) → gross profit → marketing → operating expenses → operating income. With a contribution margin line above marketing, calculated as net revenue minus product COGS minus fulfillment minus payment fees.
- Balance sheet review. Inventory ties to the inventory tracking worksheet. AR (wholesale) and AP (vendor bills) tie to their subsidiary ledgers. Sales tax payable matches what's owed but not yet remitted. Gift cards outstanding ties to Shopify's gift card balance.
That close — repeated every month — is what produces a DTC P&L that answers the operator's real question. Without that cadence, you have a Shopify dashboard and a hope.
A note on Shopify Plus and the "what about when we get bigger" question
Most of what's above scales cleanly to $10M–$15M on Shopify or Shopify Plus, with two changes:
- The bridge tool gets more important as transaction volume grows. A2X scales fine to mid-eight-figures; the chart of accounts may add a level of granularity (more revenue segmentation by channel, more cost-of-sales segmentation by category).
- Inventory tracking moves out of QuickBooks into a dedicated system. Cin7 Core, Finale, NetSuite for brands moving north of $20M, sometimes a 3PL-integrated WMS. The bookkeeping process gets more event-driven and less manual; the principles don't change.
The mistake we see most often at the $5M–$10M transition is operators trying to keep doing what worked at $1M — manual inventory in QuickBooks, no formal sales-tax service, single-line marketing P&L. Each of those individually was fine at the smaller scale; together at the larger scale they obscure the operating reality.
A DTC brand under $5M almost always needs a bookkeeper who knows the stack — not a small-business bookkeeper who will learn on you. We support DTC operators like Hear Now Systems (Solu) with Shopify-native reconciliation through A2X, SKU-level margin reporting, multi-state sales tax tracking, overseas vendor payments, and the monthly close cadence above. If your books are currently a Shopify export, a Stripe CSV, and a shoebox of overseas invoices — that's the shape of every cleanup we start with, and it has a clear path out. Invisible's bookkeeping and accounting services for e-commerce businesses are built around exactly this profile. First conversation is a 30-minute consult; we'll look at your last 90 days of Shopify, Stripe, and bank data together and tell you, honestly, what cleanup would actually involve.