Accounting for E-commerce Businesses

A complete bookkeeping guide for Estonian online stores — chart of accounts, revenue recognition, inventory valuation, payment processor reconciliation, multi-currency management, and the monthly close process.

Chart of Accounts Gross Revenue Inventory Returns Stripe Shopify Multi-Currency Monthly Close
5th Monthly Close Target
FIFO Standard Inventory
Gross Revenue Recognition
3 Processor Types
7 yrs Record Retention
€500 Equipment Write-Off

5 Key Takeaways From This Page

Gross revenue — not net settlements — belongs in your P&L
Recording what Stripe or Shopify deposits in your bank as revenue understates your top line, hides platform costs, and violates accounting standards. Always record gross sales and fees separately.
Inventory must be reconciled every month — not annually
Stock levels change daily through sales, purchases, returns, and write-offs. An inventory value that is only updated at year-end creates materially incorrect COGS figures in every monthly P&L produced during the year.
Every non-EUR transaction requires a rate at the transaction date
Foreign currency orders, supplier payments, and processor settlements must each be converted to EUR at the exchange rate on the specific date of the transaction — not an average rate or the month-end rate.
Payment processor reconciliation is its own monthly workstream
Each processor — Stripe, PayPal, Shopify Payments, Wise — generates its own transaction history, fee structure, and settlement timing. Each needs its own reconciliation before the monthly close is complete.
Your chart of accounts determines whether your reports mean anything
A generic chart of accounts built for a service company produces meaningless e-commerce financials. The right structure — with separate accounts for each revenue channel, payment processor, and cost category — makes every report actionable.

What does accounting for an e-commerce business involve? Double-entry bookkeeping that captures gross revenue from each sales channel separately, records all platform fees as cost of revenue, values inventory using FIFO or weighted average, reconciles each payment processor to the accounting system monthly, handles returns and credit notes correctly, revalues foreign currency balances at month-end, and produces a monthly P&L, balance sheet, and cash flow statement. This page covers each of those workstreams in full.

Section 1 — Chart of Accounts for an E-commerce OÜ

How to structure your accounting codes to produce meaningful reports — by channel, by cost type, by processor

Why a Dedicated E-commerce CoA Matters

A chart of accounts designed for a standard Estonian OÜ will have a single ‘Revenue’ account and a ‘Cost of Goods Sold’ account. For an e-commerce business, that structure makes it impossible to answer the most basic management questions: which channel is most profitable, what is my true gross margin after platform fees, how much of my COGS is shipping vs product cost?

Code Range Structure
1000-1999: Assets | 2000-2999: Liabilities | 3000-3999: Equity | 4000-4999: Revenue | 5000-5999: COGS | 6000-6999: Operating Expenses | 7000-7999: Financial Items

Section 2 — Revenue Recognition: Gross Sales, Returns, and Marketplace Rules

When to recognise revenue, how to handle deferred revenue, and what changes when a marketplace is the deemed supplier

The Revenue Recognition Timing Rule

For e-commerce, revenue is recognised when control of the goods transfers to the customer — typically when the order is shipped for physical goods, or when the digital product is made available for download. Payment received in advance (before shipment) creates a deferred revenue liability. Payment received after delivery (credit terms for B2B) creates a trade receivable.

Journal Entry 1 — Customer Order Placed and Paid (B2C, Estonian customer)
DR Cash / Stripe: €122.00
CR Revenue (gross sale): €100.00
CR VAT Payable — KMD: €22.00
Deemed supplier rules affect your revenue recording — not your gross margin
When a marketplace collects VAT on your behalf, you still record the full gross sale value as revenue in your accounts. The VAT collection by the marketplace is their obligation — it does not reduce your revenue figure.

Section 3 — Inventory Valuation

FIFO vs weighted average — with fully worked examples showing how each method affects COGS and taxable profit

Why Inventory Valuation Method Matters

Method COGS (in rising-cost environment) Closing Inventory Value Gross Profit Impact Best For
FIFO Lower (older, cheaper stock sold first) Higher (recent, higher cost stock remains) Higher gross profit Most e-commerce; favoured by IFRS
Weighted Average Higher (blended cost sold each time) Lower (blended cost remains) Lower gross profit High-volume businesses with homogeneous SKUs
Inventory Write-Off — Journal Entry (damaged goods)
DR COGS — Returns and Write-offs: €340.00
CR Inventory: €340.00

Section 4 — Payment Processor Reconciliation

Stripe, Shopify Payments, PayPal, and Wise — a complete reconciliation framework for each

The Reconciliation Principle — Three Layers

Every payment processor sits between your customers and your bank account. Money passes through three layers: customer charges (gross), processor fees (deducted), and bank settlement (net). Your accounting must capture all three layers, with the gross charge as revenue and the fees as COGS — even though only the net settlement appears in your bank statement.

Stripe Monthly Reconciliation — October 2024
Gross charges: €18,450 → Less fees: €553.50 → Net settlement: €17,896.50
Difference: €0.00 — fully reconciled

Section 5 — Multi-Currency Management

Recording transactions in foreign currencies, monthly revaluation, and managing FX risk

The Rule: Transaction Date Rate for Every Entry

Every foreign currency transaction must be recorded at the exchange rate on the date the transaction occurs — not an average monthly rate, not the month-end rate. The transaction date rate is what creates an accurate EUR equivalent for each individual sale, purchase, or payment.

Type When It Occurs P&L Impact Cash Impact
Realised FX gain When a foreign currency monetary item is settled Posted to P&L immediately Yes — cash received differs from recorded EUR value
Unrealised FX gain/loss At month-end revaluation of open foreign currency balances Posted to P&L; reverses if rate moves back No — no cash changes hands

Section 6 — Returns, Refunds, and Credit Notes

The complete accounting treatment — revenue, inventory, VAT, and payment processor effects

Why Returns Are a Multi-Entry Event

1
Revenue Reversal
2
Inventory Effect
3
VAT Adjustment
4
Processor Refund
Return Scenario — Customer Returns €122 Order (€100 + €22 VAT)
DR Revenue — Shopify Store: €100.00
DR VAT Payable — KMD: €22.00
CR Cash — Stripe (refund): €122.00
DR Inventory: €42.00 / CR COGS — Product Cost: €42.00

Section 7 — The E-commerce Monthly Close

Complete checklist from day 1 to day 5 after month-end

Why E-commerce Close Takes Longer Than a Service Business

1
Day 1: Data Pull
2
Day 2: Processor Recon
3
Day 2: Inventory Recon
4
Day 3: FX Revaluation
5
Day 3: Journal Entries
6
Day 4–5: Review & Sign-off
Monthly Close Checklist
Stripe reconciliation | PayPal reconciliation | Shopify revenue check | Inventory reconciliation | Returns and credit notes | FX revaluation | VAT calculation | P&L and balance sheet review

Frequently Asked Questions

Yes — Shopify and Stripe serve different functions and produce different data. Shopify records your orders, products, and customer data — it shows you what was sold. Stripe (if you use Shopify Payments, Stripe is the underlying processor) records the financial transactions — what was charged, what fees were taken, and what was settled to your bank. Your revenue reconciliation starts with Shopify order data for the gross sale amounts, and the Stripe transaction report for the payment processing view. When Shopify Payments is enabled, Shopify’s Finance reports consolidate some of this — but you still need to trace from gross order value to net bank settlement for each month.

Each inventory location is a separate sub-account in your chart of accounts: Inventory — Estonian warehouse, Inventory — UK warehouse, Inventory — Amazon FBA (Germany). Stock transfers between locations are not sales — they are movements within your inventory system (DR Inventory Location B / CR Inventory Location A, at cost). Sales from each location are COGS entries at the carrying cost of that specific location’s stock. For Amazon FBA specifically: Amazon holds your stock and reports inventory levels in Seller Central — this report is your source for the FBA inventory balance each month-end.

Yes — shipping charges billed to customers are revenue. They should be recorded on a separate revenue line (e.g. ‘Revenue — Shipping Charged to Customer’) rather than netted against shipping costs. Your actual shipping cost (what you pay the courier) is recorded as COGS — Shipping Outbound. The difference between what you charge customers and what you pay the courier is your shipping margin, which appears in your gross profit. Many e-commerce businesses subsidise shipping (charging less than cost) — keeping these on separate lines makes that subsidy visible and measurable.

Each sale is recorded at the actual price charged to that customer — there is no need to normalise for different country pricing. If you sell a product for €25 to a German customer and €28 to a Swedish customer (different price lists), each sale is recorded at its actual amount in EUR. If the Swedish sale is in SEK, convert at the transaction-date rate to EUR. The different prices will naturally produce different per-unit gross margins — this is expected and visible in your channel-level P&L if you have separate revenue accounts by geography or channel.

The marketplace settlement is a single bank receipt that covers many individual orders. For accounting purposes, you should record the individual order-level revenue (from the marketplace’s settlement report, which itemises each order, its gross value, fees, and refunds) rather than treating the lump payment as a single revenue entry. Accounting software with marketplace integrations (e.g. A2X for Amazon or Shopify) can automate this breakdown, posting each order’s gross sale, fees, and refunds to the correct accounts and reconciling to the single bank settlement. For lower-volume sellers, the marketplace’s monthly settlement report provides the data needed to create monthly summary journal entries by category.

Ready to set up proper e-commerce accounting from day one?

Book a free 30-minute consultation. We configure your chart of accounts, connect your payment processors, and deliver clean monthly financials so you can focus on growing your store.

companyforbusiness.ee →