Ecommerce Chart of Accounts for Amazon and Shopify

Last verified: June 2026

Key takeaways

  • A standard retail chart of accounts won't capture the fee structures, reserve holds, and fulfilment costs that define ecommerce P&Ls — you need account codes built specifically for Amazon and Shopify.
  • Amazon FBA and Shopify fulfilment fees must live in separate expense accounts, not lumped into a generic "shipping" line, or your per-channel margin analysis is worthless.
  • Separate COGS from platform fees, advertising, and storage so you can see true product contribution margin — not just gross profit smeared across everything.
  • Consistent account numbering (1000s for assets, 2000s for liabilities, 4000s for revenue, 5000s for COGS, 6000s for operating expenses) prevents reconciliation errors across bank feeds and payment processors.
  • Monthly P&L reviews only work if your chart of accounts maps cleanly to the settlement data coming out of each marketplace — which is where most sellers break down.

Most ecommerce sellers set up their books once and never look back. They pull a default chart of accounts from their accounting software, relabel a few lines, and carry on. Then they wonder why their P&L shows a healthy gross margin while their bank account quietly drains. The problem isn't the accounting software. It's the chart of accounts underneath it — built for a bricks-and-mortar retailer, not a brand selling on Amazon, Shopify, and three other channels at once.

This guide covers how to structure a chart of accounts for ecommerce: which account categories you actually need, how Amazon and Shopify differ in their fee structures, and how to build a numbering system that holds together when you're reconciling payouts from six marketplaces at once. We'll use real account names and real numbers throughout, because vague advice about "categorising your expenses" doesn't help anyone close their books on time.

Why ecommerce sellers need a dedicated chart of accounts

A generic chart of accounts fails ecommerce sellers because ecommerce revenue doesn't arrive clean. It arrives as a net settlement — Amazon's biweekly payout, Shopify's daily or weekly transfer — with fees, refunds, reserves, and advertising costs already deducted before the money hits your bank. If your chart of accounts isn't structured to unpick those components, your books will always be off. We wrote about this exact problem in our post on why your Amazon and Shopify payouts don't match your books.

Here's a concrete example. You sell a product for £40 on Amazon. Amazon deducts a 15% referral fee (£6.00), an FBA fulfilment fee of £4.80, and storage fees of £0.30. If a sponsored ad drove the sale, there's ad spend to attribute too. The settlement Amazon eventually pays might be around £28.90 on a £40 sale — and that's before any reserve holds. A chart of accounts with a single "Amazon Income" line records £28.90 as revenue. That's wrong. Revenue was £40. Costs were £11.10 across four different cost types. Getting that distinction right is the whole job.

Traditional retail charts of accounts have a "Sales" account, a "Cost of Goods Sold" account, a "Shipping" expense, and a handful of overhead lines. That structure was designed for a world where you sell something at a till, the money hits your bank, and you pay a shipper separately. Ecommerce doesn't work that way. Marketplaces bundle fees into settlements, advertising spend ties directly to product sales, and inventory sits in fulfilment centres you don't control — so storage fees accumulate whether you're selling or not.

And the stakes aren't trivial. A brand doing £500k per year across Amazon and Shopify might have £40,000–£60,000 in platform fees, £15,000 in storage costs, and £30,000 in advertising spend that all collapse into a single expense line if the chart of accounts is poorly structured. You'd have no idea which products are profitable, which channels are bleeding margin, or which SKUs to kill. That's a real operational problem — one that shows up at month-end close as hours of manual untangling, not as a tidy variance report.

Core account categories for Amazon and Shopify sellers

Six categories. That's what you need: revenue split by channel, cost of goods sold, platform fees, fulfilment and shipping costs, advertising and marketing, and general operating expenses. Simple to say; the work is in the sub-accounts inside each one, which need to be built around how marketplaces actually work rather than inherited from a retail template.

Revenue accounts (4000s)

Record revenue gross — meaning before any marketplace deductions. This is the accrual-correct approach, and it's what lets you calculate true gross margin. We cover this in more depth in our guide to cash vs accrual accounting for ecommerce sellers, but the short version is: record the sale at the price the customer paid, then record the fees separately.

  • 4100 — Amazon UK Sales
  • 4110 — Amazon US Sales
  • 4120 — Shopify Sales (Direct)
  • 4130 — Shopify Sales (Retail POS)
  • 4140 — eBay Sales
  • 4150 — Etsy Sales
  • 4160 — Sales Refunds / Returns (contra-revenue, recorded as a negative)

Splitting by channel isn't optional if you want to understand channel profitability. Amazon and Shopify have wildly different fee structures, customer acquisition costs, and return rates. A blended revenue number tells you almost nothing.

Cost of goods sold (5000s)

COGS should reflect only the direct cost of the product itself — what you paid to manufacture or purchase each unit. Keep it clean. Don't let fulfilment fees creep in here.

  • 5100 — Product COGS (Purchases)
  • 5110 — Freight Inbound (Import Shipping)
  • 5120 — Customs Duties and Import VAT
  • 5130 — Inventory Write-Offs
  • 5140 — Inventory Adjustments (for FBA damage, lost stock, etc.)

Inventory write-offs are one of the most commonly missed COGS items. If Amazon loses 20 units in their fulfilment centre — and it happens more than people admit — that's a real cost. Account 5140 captures those FBA inventory adjustments separately from actual sales costs, so your COGS per unit stays accurate.

Platform fees (6100s)

Platform fees are operating expenses, not COGS — though many sellers mistakenly bundle them together. Keeping them separate lets you see your gross margin (revenue minus COGS) before platform costs eat into it.

  • 6100 — Amazon Referral Fees
  • 6110 — Amazon FBA Fulfilment Fees
  • 6120 — Amazon FBA Storage Fees
  • 6130 — Amazon Subscription / Account Fees
  • 6140 — Shopify Monthly Subscription
  • 6150 — Shopify Transaction Fees
  • 6160 — Shopify Payment Processing (Stripe, Shopify Payments)
  • 6170 — eBay Final Value Fees
  • 6180 — Etsy Listing and Transaction Fees

Advertising and marketing (6200s)

  • 6200 — Amazon Sponsored Products (PPC)
  • 6210 — Amazon DSP / Display Ads
  • 6220 — Meta Ads (Facebook / Instagram)
  • 6230 — Google Ads
  • 6240 — TikTok Ads
  • 6250 — Influencer / Affiliate Costs
  • 6260 — Email Marketing Platform Costs

Advertising is where sellers most often undercount their true acquisition costs. If you spend £5,000 per month on Amazon PPC and it's sitting inside a generic "Marketing" expense alongside your Mailchimp subscription, you can't calculate your Amazon advertising cost of sale (ACoS) from your books. Separate codes fix that immediately.

Platform-specific expense tracking: Amazon vs. Shopify

Amazon and Shopify have fundamentally different cost structures — and treating them the same in your chart of accounts produces a distorted P&L. The difference matters most in three areas: fulfilment, payment processing, and how refunds flow through the accounts.

Amazon: the settlement complexity

Amazon's biweekly settlement statement is one of the most complex financial documents a small business regularly receives. A single settlement can contain dozens of transaction types: product sales, refunds, FBA fees, storage fees, advertising charges, reserve transfers, promotional rebates, and more. Our detailed guide on how to record Amazon fees, refunds and reserves covers the line-item detail — but from a chart of accounts perspective, the key principle is straightforward: every transaction type in a settlement needs a home in your accounts.

Amazon FBA fulfilment fees deserve their own account because they scale with units shipped. In June 2026, Amazon UK FBA fees for a standard small parcel (up to 400g) run around £3.09 per unit — a material cost on a £15 product. Ship 500 units per month and that's £1,545 in FBA fees alone. It needs to be visible in your P&L under its own code (6110), not blended into a generic shipping line.

FBA storage fees work differently from fulfilment fees. They accrue monthly based on cubic feet of inventory held, and they spike in Q4 (October–December) when Amazon charges higher peak rates. Tracking these under 6120 separately from fulfilment fees lets you spot seasonal storage cost increases — and decide whether to run a clearance promotion or send in a smaller replenishment order. That's an operational decision driven directly by a clean chart of accounts. For teams managing replenishment across multiple fulfilment channels, inventory management tools that track stock across FBA and your own warehouse make this decision much easier.

Amazon reserves — the percentage of your balance Amazon withholds — are not an expense. They're a current asset. Record them under account 1300 (Amazon Reserve Balance) and move them to cash only when Amazon releases them. Getting this wrong inflates your apparent expenses and understates your assets.

Shopify: direct vs. third-party fulfilment

Shopify's fee structure is simpler at the platform level but more complex at the fulfilment level, because Shopify sellers often fulfil through multiple methods at once: in-house, a 3PL, dropship, or Shopify Fulfilment Network. Each needs its own expense code.

  • 6300 — Outbound Shipping (Own Warehouse)
  • 6310 — 3PL Fulfilment Fees
  • 6320 — Shopify Fulfilment Network Fees
  • 6330 — Packaging Materials
  • 6340 — Returns Processing Costs

Shopify transaction fees (account 6150) only apply if you're not using Shopify Payments. If you are using Shopify Payments, you'll see payment processing fees instead — typically a percentage per transaction plus a fixed amount. These go in 6160, not 6150, because they're categorically different costs (processor fees vs. platform transaction fees) even though they look similar on your bank statement.

Shopify's accounting and bookkeeping setup also needs to account for gift cards, discount codes, and Shop Pay instalments — all of which affect how revenue is recognised and when. Gift card liability (money received before goods are delivered) belongs under account 2200 (Deferred Revenue / Gift Card Liability), not revenue, until the customer actually redeems it.

Side-by-side: Amazon vs. Shopify key cost lines

Cost Type Amazon (FBA) Shopify (Own Fulfilment) Recommended Account Code
Platform subscription £25/month (Individual) or £25+ (Professional) Varies by plan tier 6130 / 6140
Selling fee per transaction Referral fee (6–45% by category) Transaction fee (if not using Shopify Payments) 6100 / 6150
Fulfilment / pick-pack-ship FBA fulfilment fee (per unit, weight-based) 3PL or own warehouse cost 6110 / 6310
Storage FBA monthly storage (per cubic foot) Warehouse rent / 3PL storage fee 6120 / 6310
Payment processing Included in referral fee structure Shopify Payments / Stripe fee 6100 / 6160
Advertising Sponsored Products, DSP Meta, Google, TikTok Ads 6200 / 6220–6240
Reserves / holds Amazon reserve (asset, not expense) Shopify Payments reserve (occasional) 1300 (Asset)
Refunds Deducted from settlement, net of Amazon's restocking fee Full refund issued directly 4160 (Contra-revenue)

Setting up your chart of accounts: structure and best practices

A well-structured ecommerce chart of accounts uses a consistent numbering block system, clear naming conventions, and enough granularity to produce useful P&L reports — but not so many accounts that your bookkeeper needs a manual to navigate it. For most brands doing £200k–£5m per year, somewhere between 60 and 90 accounts is the right range.

Numbering conventions

Use the standard block system:

  • 1000–1999: Assets (cash, bank accounts, Amazon reserve balance, inventory, prepaid expenses)
  • 2000–2999: Liabilities (VAT payable, sales tax payable, deferred revenue, credit cards)
  • 3000–3999: Equity
  • 4000–4999: Revenue
  • 5000–5999: Cost of Goods Sold
  • 6000–6999: Operating Expenses
  • 7000–7999: Other Income / Finance Costs

When we were running our own brands, we made the mistake of starting with a flat list of 20-something accounts and bolting on channel-specific codes later. It's a nightmare. Platform fees ended up in random places, advertising spend was half under COGS and half under operating expenses, and reconciling the Amazon settlements took hours each month. Start with a logical block system — even if some accounts begin empty — and you'll thank yourself at every month-end close.

Asset accounts worth getting right

Most sellers obsess over the expense side and under-build the asset side. But ecommerce businesses have asset complexity that traditional retail doesn't.

  • 1010 — Business Bank Account
  • 1020 — Amazon Payments Balance (uncleared settlements)
  • 1030 — Shopify Payments Balance
  • 1100 — Accounts Receivable
  • 1200 — Inventory — Finished Goods (Own Warehouse)
  • 1210 — Inventory — FBA (Amazon Warehouse)
  • 1220 — Inventory — In Transit
  • 1300 — Amazon Reserve Balance
  • 1310 — Shopify Payments Reserve
  • 1400 — Prepaid Expenses (e.g., annual SaaS subscriptions)

The split between 1200, 1210, and 1220 matters more than it looks. If you're replenishing FBA from a UK warehouse, you need to know what inventory is physically in each location at any point — both for stock-on-hand valuation and for operational decisions like sending in an emergency shipment. Keeping Shopify and Amazon inventory in sync across these locations is where a purpose-built inventory system pays for itself quickly. Ceendesis IMS tracks inventory across FBA, own-warehouse, and in-transit simultaneously, so your 1200/1210/1220 balances stay accurate without manual reconciliation.

Liability accounts for ecommerce

  • 2100 — VAT Payable (UK)
  • 2110 — EU VAT Payable (OSS)
  • 2120 — US Sales Tax Payable
  • 2200 — Deferred Revenue (Gift Cards)
  • 2210 — Customer Deposits / Pre-orders
  • 2300 — Credit Card Payable
  • 2400 — Accrued Expenses (platform fees invoiced but not yet paid)

US sales tax payable (2120) matters if you have economic nexus in US states. Many UK-based Amazon sellers crossing the economic nexus thresholds in California, Texas, or New York need a liability account to track what they owe before remittance. Getting this wrong isn't just a bookkeeping issue — it's a compliance liability.

Naming conventions

Be consistent and specific. "Amazon Fees" is not a useful account name. "Amazon FBA Fulfilment Fees" is. Use platform names, not generic terms. If you ever bring in a bookkeeper or accountant, they need to understand your chart of accounts in five minutes — not after a briefing call.

Honestly, most brands overthink the naming and underthink the structure. Long descriptive names are fine — accounting software handles them without complaint. What kills you is a vague account name that means something different to three different people on your team.

Integrating your chart of accounts with accounting software

Your chart of accounts only works if data flows into it accurately and consistently. The weakest link for most ecommerce sellers isn't the chart of accounts design — it's the mapping between marketplace settlement data and the accounts. This is where a surprising amount of bookkeeping time goes, and it's worth understanding how the data actually flows before assuming your setup is correct.

How settlement data maps to accounts

Amazon settlements arrive as flat files (or via SP-API) containing dozens of transaction types. Each transaction type needs to map to a specific account code. Here's how the main ones work:

  • Principal (gross product sale) → 4100 Amazon UK Sales
  • FBAPerUnitFulfillmentFee → 6110 Amazon FBA Fulfilment Fees
  • Commission (referral fee) → 6100 Amazon Referral Fees
  • FBAStorageFee → 6120 Amazon FBA Storage Fees
  • Shipping (if applicable, non-FBA) → 6300 Outbound Shipping
  • PROMOTIONS → reduce revenue at 4100 (or a separate 4165 Promotional Discounts account)
  • Refund/Principal → 4160 Sales Refunds
  • Advertising → 6200 Amazon Sponsored Products
  • Reserve_Increase → debit 1300 Amazon Reserve Balance (no P&L impact)
  • Reserve_Release → credit 1300, debit bank (no P&L impact)

Shopify's payout data is somewhat cleaner — each payout includes a breakdown of gross sales, discounts, refunds, shipping charged, and Shopify Payments fees. But Shopify doesn't automatically split your own shipping costs or 3PL fees; those come from separate invoices that you code manually or through automation.

The reconciliation problem

Here's where sellers consistently go wrong: they import the net payout from Amazon or Shopify as a single line in their bank feed and code it to "Amazon Income" or "Shopify Income." That bypasses the entire chart of accounts structure we've just built. The net payout is not revenue. It's revenue minus fees minus refunds minus advertising minus reserves. Recording it as revenue understates your gross sales and hides every cost category underneath it.

The fix is to reconcile each settlement — not each bank transfer. That means parsing the full settlement data, mapping each transaction type to an account, and posting a journal entry that hits all the right codes. The net of that journal should equal the bank transfer amount. You can do this manually in Google Sheets, but at any meaningful volume it becomes a serious time sink. We also have a guide on ecommerce accounting for sellers that goes deeper on the reconciliation workflow if you want the full picture.

Setting up account mapping in your accounting software

Most ecommerce accounting integrations let you define a mapping table that specifies which transaction type from a marketplace goes to which account code in your ledger. Getting this mapping right at setup is everything. A few principles:

  • Map every transaction type — don't leave anything as "uncategorised." An uncategorised entry doesn't disappear; it sits in a holding bucket accumulating until someone has to spend a Friday afternoon sorting out where it belongs.
  • Tax is not revenue. Any marketplace-collected tax (Amazon collects VAT on UK sales, for instance) should map to your VAT liability account (2100), not to revenue. If it lands in 4100, your revenue is overstated and you'll owe more tax than you expect.
  • Review your mapping every time a marketplace changes its settlement format. Amazon periodically introduces new transaction types. If your mapping doesn't include them, they'll fall into the wrong bucket — or create unmatched entries.
  • For multi-currency sellers, each currency needs its own bank account and revenue account. Don't blend GBP and USD sales unless you want your monthly P&L to require currency conversion gymnastics.

If you're operating across Shopify, Amazon, and additional channels like eBay, Etsy, or TikTok Shop, the volume of settlement data gets substantial fast. For teams doing this at scale, Ceendesis Accounting handles the full settlement parsing for Amazon (via SP-API, covering all transaction types), Shopify, eBay, Etsy, Walmart, TikTok Shop, Square, and WooCommerce — splitting each payout into sales, fees, refunds, reserves, and tax, with per-product COGS tracking, and posting clean accrual-correct journals directly into Xero. It currently integrates with Xero, with QuickBooks Online support rolling out and Sage not yet supported.

Monthly P&L reviews: what to actually look for

With a properly structured chart of accounts, your monthly P&L should answer these questions without you having to dig:

  • What was gross revenue per channel?
  • What was gross margin per channel (revenue minus COGS)?
  • What were total platform fees as a percentage of revenue?
  • What was advertising spend as a percentage of revenue (blended TACOS)?
  • What did storage cost, and is it trending up?
  • Are refund rates moving?

A brand doing £600k across Amazon UK and Shopify might find, when they run this analysis properly for the first time, that their Amazon channel has a 55% gross margin but only a 12% contribution margin after FBA fees, storage, and PPC — while Shopify has a 48% gross margin but a 28% contribution margin because there are no referral fees and advertising spend is lower. We've watched teams sit with that number for a full minute before saying anything. It's completely invisible if your chart of accounts doesn't separate the costs.

For operations managers running multi-channel inventory across Amazon and Shopify, these monthly margin reviews should feed directly into reorder decisions. If a SKU has negative contribution margin on Amazon but positive margin on Shopify, you probably shouldn't be sending more units to FBA — you should be shifting fulfilment. Your chart of accounts makes that call possible. Without it, you're making that decision on instinct rather than numbers.

Frequently asked questions

What should be included in a chart of accounts for ecommerce sellers?

An ecommerce chart of accounts needs separate revenue accounts for each sales channel, cost of goods sold broken out from fulfilment costs, platform-specific fee accounts (FBA fulfilment fees, referral fees, storage fees, Shopify transaction fees), advertising spend by platform, and liability accounts for VAT, sales tax, and deferred revenue from gift cards. The difference from a traditional retail chart of accounts is the granularity at the platform and fee level — you need enough sub-accounts to produce a per-channel contribution margin, not just a blended gross profit figure.

How do you account for Amazon FBA fees in your chart of accounts?

Amazon FBA fees should be split across at least three separate expense accounts: one for FBA fulfilment fees (the per-unit pick-pack-ship cost), one for FBA monthly storage fees (which scale with cubic footage and spike in Q4), and one for Amazon referral fees (the percentage commission on each sale). Keeping these three costs separate matters because they behave differently — fulfilment fees scale with units sold, storage fees scale with inventory held, and referral fees are a fixed percentage of sale price. Blend them into a single "Amazon Fees" account and you can't identify which cost driver is eating your margin.

What is the difference between a Shopify chart of accounts and a traditional retail chart of accounts?

A Shopify chart of accounts needs additional account codes that traditional retail templates don't include: Shopify transaction fees (if not using Shopify Payments), Shopify Payments processing fees, deferred revenue for gift card liabilities, 3PL fulfilment costs as a distinct expense category, and a Shopify Payments reserve balance under current assets. Traditional retail charts of accounts are designed for point-of-sale revenue and direct bank deposits, not for the settlement reconciliation and multi-method fulfilment complexity of a direct-to-consumer ecommerce operation.

What to do next

Your settlement data is the problem. Everything else — margin analysis, tax planning, operational reorder decisions — depends on those payouts being correctly parsed and mapped to the right accounts. Get that wrong and even a beautifully structured chart of accounts produces garbage reports.

So: sketch out your account blocks first. Assets, liabilities, equity, revenue, COGS, operating expenses. Then add the channel-specific sub-accounts for each marketplace you're active on. Get the numbering right before importing a single transaction. It's a few hours of work upfront. But if your Amazon and Shopify payouts currently land as single-line bank entries coded to "income," that's the thing that needs fixing — because right now, every margin analysis you run, every reorder decision, every channel comparison is being made on numbers that don't reflect how your business actually earns and spends money.