A bad chart of accounts makes every later number wrong. Get the structure right at the start and reconciliation, margin reporting, and tax prep all get easier.
The chart of accounts is the skeleton of your books. It is the list of every account your transactions can land in: revenue, costs, expenses, assets, liabilities, equity. For a Shopify store, the default chart that QuickBooks or Xero ships with is not enough, because it does not anticipate the structure of ecommerce. Sales arrive net of fees, refunds need their own home, sales tax is a liability you hold in trust, and gift cards are unearned revenue. A generic chart forces all of that into the wrong boxes, and you spend the rest of the year fighting your own setup.
Build it once, build it for ecommerce, and the work downstream gets dramatically lighter.
Every chart of accounts organizes into five buckets. For a Shopify store, here is what each needs to contain.
Keep gross sales clean and separate from contra-revenue. At minimum:
Separating shipping income, refunds, and discounts from gross sales is what lets you read true product revenue rather than a netted blob.
COGS is the direct cost of the products you sold. For a Shopify store:
COGS belongs above the gross-profit line. Keeping it distinct from operating expenses is what makes your gross margin meaningful.
Everything that is not a direct product cost:
Processing fees deserve their own account, not a catch-all "bank charges" line, because at ecommerce volume they are a major, trackable cost.
This is where ecommerce charts most often fall short:
| ACCOUNT | TYPE | PURPOSE |
| Sales | Income | Gross product revenue |
| Shipping income | Income | Shipping charged to customers |
| Refunds | Contra-revenue | Returns and refunds |
| Discounts | Contra-revenue | Promotions and codes |
| Product COGS | COGS | Unit cost of goods shipped |
| Inbound freight | COGS | Cost to receive inventory |
| Payment processing fees | Expense | Shopify Payments, PayPal, etc. |
| Shopify and app fees | Expense | Platform subscription and apps |
| Advertising | Expense | Paid marketing |
| Inventory | Asset | Unsold stock |
| Clearing / undeposited funds | Asset | In-transit payout cash |
| Accounts receivable | Asset | B2B sales on terms |
| Sales tax payable | Liability | Tax collected, held for states |
| Gift card liability | Liability | Unredeemed gift cards |
| Store credit liability | Liability | Outstanding store credit |
This is a foundation, not a ceiling. Add accounts as your operation demands them, but resist the opposite failure: a sprawling chart with fifty revenue lines that nobody maintains. Granularity should come from dimensions like channel or product class, not from multiplying top-level accounts.
A multi-channel seller does not want a separate "Amazon Sales" and "Shopify Sales" and "Walmart Sales" account stacked in income. That bloats the chart and makes consolidation harder. Instead, keep one Sales account and tag transactions by channel using classes (QuickBooks) or tracking categories (Xero). Then you can produce a per-channel P&L by filtering on the dimension while keeping the chart itself lean. ConnectBooks posts each channel's data with the channel tag intact, so per-channel reporting works without duplicating accounts.
The chart only helps if your Shopify data actually lands in the right accounts. A payout has to split: gross sales to Sales, refunds to Refunds, fees to Payment processing fees, collected tax to Sales tax payable. Doing that mapping by hand on every payout is the slow path. ConnectBooks syncs Shopify settlement data into QuickBooks Online, QuickBooks Desktop, or Xero and posts each component to the matching account automatically, so the structure you built actually gets used.
A sales-tax-payable liability, a gift-card (deferred-revenue) liability, a store-credit liability, separate contra-revenue accounts for refunds and discounts, a dedicated payment-processing-fee expense, and a clearing account for in-transit payout cash. Generic charts force these into the wrong places.
Yes. Shipping charged to customers is its own income line, separate from gross product revenue. Keeping them apart lets you see true product revenue and compare shipping income against your actual fulfillment costs.
No. Keep one Sales account and tag transactions by channel using classes in QuickBooks or tracking categories in Xero. This keeps the chart lean while still letting you produce a per-channel P&L by filtering on the dimension.
To a sales-tax-payable liability account, never to revenue. The tax you collect is held in trust for the states until you remit it. Booking it as income overstates revenue and risks paying income tax on money that is not yours.
Detailed enough to read margin and reconcile cleanly, not so detailed that accounts go unmaintained. Get granularity from channel and product-class dimensions rather than from multiplying top-level accounts. A lean, well-structured chart beats a sprawling one.
ConnectBooks maps your Shopify data to a clean ecommerce chart of accounts automatically, splitting sales, fees, and tax to the right places. See plans at /pricing.
Running an e-commerce business comes with plenty of challenges, but ConnectBooks is here to make your life easier. With real-time insights, seamless integrations, and detailed tracking of your profitability and inventory, you can stay ahead of the game. Whether you’re selling on Amazon, Shopify, Walmart, TikTok or eBay, ConnectBooks helps you manage your finances with 100% accuracy and confidence, so you can focus on growing your business.
Ready to level up? Start making smarter, data-driven decisions every step of the way. Try ConnectBooks Free Today or Schedule a Demo