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.
5 Key Takeaways From This Page
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.
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.
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.
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.
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?
The structure below creates the granularity needed for meaningful reporting without becoming so complex that the monthly close takes too long. Adapt it to your specific channels and cost profile — not every account will be relevant for every business.
| Code | Account Name | Notes |
|---|---|---|
| 1000–1999 ASSETS | ||
| 1010 | Cash — Estonian Bank (EUR) | Primary operating account |
| 1020 | Cash — Wise Business (EUR) | Wise EUR balance |
| 1030 | Cash — Wise Business (USD) | Wise USD balance — revalue monthly |
| 1040 | Cash — Stripe Reserve | Stripe rolling reserve; not immediately available |
| 1050 | Cash — PayPal Balance | PayPal EUR/USD balance |
| 1060 | Cash — Shopify Payments | Shopify payout pending balance if applicable |
| 1100 | Trade Receivables | Outstanding customer invoices (B2B only) |
| 1110 | VAT Receivable | Input VAT reclaimable from EMTA |
| 1200 | Inventory — Finished Goods | Stock held for sale; FIFO or weighted average |
| 1210 | Inventory — In Transit | Stock paid for but not yet received |
| 1220 | Inventory — Held by 3PL | Stock at third-party logistics warehouse |
| 1300 | Prepayments | Annual subscriptions, deposits paid in advance |
| 1500 | Fixed Assets — Equipment | Packaging machines, warehouse equipment > €500 |
| 2000–2999 LIABILITIES | ||
| 2010 | Trade Payables | Supplier invoices unpaid at month-end |
| 2100 | VAT Payable — Estonian KMD | Output VAT owed on Estonian sales |
| 2110 | VAT Payable — OSS | EU B2C VAT collected; payable via OSS return |
| 2120 | VAT Payable — IOSS | Import VAT collected; payable via IOSS return |
| 2200 | Customs Duty Payable | Duties assessed on imports not yet paid |
| 2300 | Deferred Revenue | Prepaid orders not yet shipped / gift cards sold |
| 2400 | Refunds Payable | Refunds approved but not yet processed |
| 2500 | Loans and Borrowings | Inventory financing, credit lines |
| 3000–3999 EQUITY | ||
| 3000 | Share Capital | Registered share capital (minimum €2,500) |
| 3100 | Share Premium | Investment above par |
| 3300 | Retained Earnings | Accumulated profit/loss from prior periods |
| 3400 | Current Year Result | Net P&L for current financial year |
| 4000–4999 REVENUE | ||
| 4010 | Revenue — Shopify Store | Gross product sales via Shopify direct |
| 4020 | Revenue — Amazon (EU) | Gross Amazon EU marketplace sales |
| 4030 | Revenue — Amazon (US) | Gross Amazon US marketplace sales |
| 4040 | Revenue — Etsy / Other Marketplace | Other platform gross sales |
| 4050 | Revenue — Wholesale / B2B | Direct B2B invoiced sales |
| 4060 | Revenue — Shipping Charged to Customer | Shipping revenue billed separately |
| 4090 | Revenue — Other | Miscellaneous income |
| 5000–5999 COST OF REVENUE (COGS) | ||
| 5010 | Product Cost — Domestic Supplier | Cost of goods purchased locally |
| 5020 | Product Cost — Import | CIF/DDP cost of imported goods |
| 5030 | Customs Duty | Import duties — capitalised into product cost or expensed |
| 5040 | Shipping Cost — Outbound | Courier cost to deliver to customers |
| 5050 | Fulfillment — 3PL Fees | Pick, pack, store fees from 3PL provider |
| 5060 | Platform Fees — Shopify | Payment processing and subscription fees |
| 5070 | Platform Fees — Amazon FBA | Referral fees, FBA storage and fulfilment |
| 5080 | Platform Fees — PayPal/Stripe | Transaction processing fees |
| 5090 | Packaging Materials | Boxes, tape, inserts — directly attributable to orders |
| 5100 | Returns and Write-offs | Cost of goods written off on return or damage |
| 6000–6999 OPERATING EXPENSES | ||
| 6010 | Marketing and Advertising | Google Ads, Meta, influencer, email marketing |
| 6020 | Software and Subscriptions | Shopify plan, apps, analytics tools |
| 6030 | Accounting and Legal | Professional fees |
| 6040 | Warehouse and Storage | Rent and operating costs if own warehouse |
| 6050 | Payroll — Operations | Staff salaries + social tax |
| 6060 | Travel and Office | Trade fairs, supplier visits, office costs |
| 7000–7999 FINANCIAL ITEMS | ||
| 7010 | FX Gain / (Loss) | Realised and unrealised currency movements |
| 7020 | Interest and Bank Charges | Bank fees, loan interest |
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.
For most DTC (direct-to-consumer) online stores using Shopify or WooCommerce, revenue is recognised at the point of dispatch. Orders placed in December but not shipped until January are January revenue. This timing rule affects both the P&L and the VAT period — VAT is owed in the period of supply, not the period of payment.
Journal Entry 1 — Customer Order Placed and Paid (B2C, Estonian customer)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Cash / Stripe | €124.00 | |
| Revenue (gross sale) | €100.00 | |
| VAT Payable — KMD | €24.00 |
€100 net + €24 VAT. Revenue recognised at point of dispatch — if not yet shipped, substitute ‘Deferred Revenue’ for Revenue until shipment.
Journal Entry 2 — Goods Dispatched (and COGS recognised)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| COGS — Product Cost | €42.00 | |
| Inventory | €42.00 | |
| COGS — Shipping Outbound | €6.50 | |
| Cash / Courier Payable | €6.50 |
COGS is recognised at the same time as revenue — when goods leave the warehouse. Both entries happen on the same date.
Deferred Revenue — Pre-Paid Orders and Gift Cards
Any payment received before the corresponding goods are delivered or service performed creates a deferred revenue liability. For e-commerce, the two most common deferred revenue scenarios are pre-orders (customer pays now, product ships in 6 weeks) and gift cards (customer buys a gift card; revenue is recognised when the card is redeemed, not when it is sold).
| Scenario | Cash Received | Revenue Recognised | Balance Sheet Effect |
|---|---|---|---|
| Pre-order — paid now, ships in 6 weeks | On payment date | On shipment date | DR Cash / CR Deferred Revenue on payment; reverses on shipment |
| Gift card sold | On sale date | On redemption date | DR Cash / CR Deferred Revenue; stays on balance sheet until redeemed |
| Subscription box — monthly plan, paid annually | On payment date | 1/12 per month as boxes are shipped | DR Cash / CR Deferred Revenue; release monthly as performance obligation met |
Marketplace Deemed Supplier Rules — When the Marketplace Collects VAT
Under the EU’s 2021 VAT reform, online marketplaces (Amazon, Etsy, Zalando, ASOS Marketplace, etc.) are treated as ‘deemed suppliers’ for VAT purposes on certain transactions. This means the marketplace — not you — collects and remits the VAT on those sales. Your invoice to the marketplace is then zero-rated, and the marketplace issues its own VAT receipt to the consumer.
| Sale Type | Goods Location | Consumer Location | VAT Collected By | Your Invoice to Marketplace |
|---|---|---|---|---|
| B2C goods ≤ €150, imported from outside EU | Outside EU | EU consumer | Marketplace (via IOSS) | Zero-rated — no VAT |
| B2C goods from EU warehouse, sold via marketplace | EU (e.g. Amazon DE FBA) | Same EU country consumer | Marketplace | Zero-rated — marketplace remits |
| B2B goods via marketplace | Any | VAT-registered business | Reverse charge — buyer accounts for VAT | Zero-rated invoice to business buyer |
| Goods sold via your own website (not marketplace) | Any | EU consumer | You (via OSS) | Not applicable — you charge and remit |
Deemed supplier rules affect your revenue recording — not your gross marginWhen 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. What does happen: you cannot also claim input VAT on the transaction (because you did not charge the output VAT). Ensure your accounting correctly reflects that these transactions have a different VAT treatment in your KMD and OSS returns compared to sales where you collect the VAT yourself.
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
The inventory valuation method you choose directly determines your COGS figure each month — and therefore your gross profit and taxable income. In a period of rising supplier costs (inflation), FIFO produces a lower COGS (older, cheaper stock is sold first) and therefore higher gross profit. Weighted average smooths the effect. Neither method is more ‘correct’ — both are permitted under Estonian GAAP and IFRS — but once chosen, it must be applied consistently and disclosed in your accounting policies.
FIFO Method — Worked Example (T-shirt supplier, prices rising)
| Event | Units | Unit Cost | Total Cost | Running Inventory Value |
|---|---|---|---|---|
| Opening balance (100 units @ €8.00) | 100 | €8.00 | €800.00 | €800.00 |
| Purchase (200 units @ €8.50) | 200 | €8.50 | €1,700.00 | €2,500.00 |
| Purchase (150 units @ €9.00) | 150 | €9.00 | €1,350.00 | €3,850.00 |
| Sale of 220 units | ||||
| COGS — 100 units @ €8.00 (oldest) | −100 | €8.00 | €800.00 | |
| COGS — 120 units @ €8.50 | −120 | €8.50 | €1,020.00 | |
| = Closing inventory (230 units) | 230 | — | — | €2,030.00 |
| = Total COGS recognised | — | — | €1,820.00 | |
FIFO: oldest units sold first. Closing inventory held at most recent purchase costs. COGS = €1,820.
Weighted Average Method — Same Purchases and Sales
| Event | Units | Unit Cost | Total Cost | Running Inventory Value |
|---|---|---|---|---|
| Opening balance (100 units @ €8.00) | 100 | €8.00 | €800.00 | €800.00 |
| Purchase (200 units @ €8.50) | 200 | €8.50 | €1,700.00 | €2,500.00 |
| Weighted avg after purchase: €2,500 ÷ 300 = €8.33 | ||||
| Purchase (150 units @ €9.00) | 150 | €9.00 | €1,350.00 | €3,850.00 |
| Weighted avg after purchase: €3,850 ÷ 450 = €8.56 | ||||
| Sale of 220 units @ €8.56 avg | ||||
| COGS — 220 units @ €8.56 | −220 | €8.56 | €1,882.22 | |
| = Closing inventory (230 units @ €8.56) | 230 | €8.56 | — | €1,967.78 |
| = Total COGS recognised | — | — | €1,882.22 | |
Weighted average: COGS = €1,882 vs FIFO = €1,820. Difference of €62 reduces gross profit under WA in this rising-cost scenario.
| 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; simpler to explain |
| Weighted Average | Higher (blended cost sold each time) | Lower (blended cost remains) | Lower gross profit | High-volume businesses with homogeneous SKUs; volatile pricing |
Inventory Write-Offs and Adjustments
Stock that is damaged, expired, lost, or obsolete must be written off — its cost removed from inventory and expensed. This reduces your inventory balance and increases COGS for the period. Write-offs are a legitimate and tax-deductible expense but require documentation: a written record of what was written off, why, when, and at what value.
Journal Entry — Inventory Write-Off (damaged goods)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| COGS — Returns and Write-offs | €340.00 | |
| Inventory | €340.00 |
Write off 20 units at their carrying cost of €17 each. Document: date, SKU, reason (water damage in warehouse), units, unit cost, approver.
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.
The most common e-commerce reconciliation error is using the bank statement as the primary source for revenue entry. The bank statement shows only net settlements — it hides the fee structure, the individual order breakdown, and any refunds already netted off before settlement. Always start from the processor’s transaction report, not the bank.
Stripe Monthly Reconciliation — October 2024
| Item | Amount (€) | Running Total (€) |
|---|---|---|
| Gross charges to customers | €18,450.00 | €18,450.00 |
| · Successful payments | €19,100.00 | |
| · Refunds issued | −€650.00 | |
| Less: Stripe processing fees | −€553.50 | €17,896.50 |
| · Per-transaction fee (1.4% + €0.25 per txn) | −€553.50 | |
| Less: Stripe reserve movement | +€120.00 | €18,016.50 |
| · Reserve held from prior periods released | +€120.00 | |
| Expected bank settlement (October) | €18,016.50 | €18,016.50 |
| Actual bank receipts (Stripe deposits) | €18,016.50 | |
| Reconciliation difference | €0.00 |
Monthly Stripe Journal Entry (October 2024)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Cash — Stripe (gross charges) | €18,450.00 | |
| Revenue — Shopify Store | €15,163.93 | |
| VAT Payable — KMD (24% on EST B2C) | €3,336.07 | |
| COGS — Platform Fees (Stripe) | €553.50 | |
| Cash — Stripe | €553.50 | |
| Cash — Estonian Bank (settlement) | €17,896.50 | |
| Cash — Stripe | €17,896.50 |
Revenue split: €15,163.93 net + €3,336.07 VAT = €18,500 gross for Estonian B2C sales. Non-Estonian sales recorded separately with appropriate VAT treatment.
PayPal Reconciliation — Key Differences
PayPal complicates reconciliation because it holds balances in multiple currencies, applies fees differently to domestic and international transactions, and may hold funds for extended periods. The reconciliation approach is the same as Stripe but requires an additional FX conversion layer for non-EUR balances.
| PayPal Complexity | Issue | Solution |
|---|---|---|
| Multi-currency balances | PayPal holds GBP, USD, SEK separately | Maintain separate ledger accounts for each PayPal currency; revalue monthly |
| Auto-conversion | PayPal sometimes converts currencies automatically at unfavourable rates | Disable auto-conversion; receive in native currency; convert manually via Wise |
| Pending and held funds | Some funds held for 21+ days for new sellers | Track as ‘PayPal Reserve’ account; only move to bank account when settled |
| Fee structure | Domestic vs cross-border fees differ | Record gross charge; fees as separate COGS line; verify per transaction report |
| Refund timing | Refund processing time may span months | Credit note in the month issued; PayPal balance adjustment in the same month |
Wise Business — Multi-Currency Account Reconciliation
Wise is not a payment processor — it is a multi-currency receiving account. It does not charge per-transaction fees on incoming transfers, making it popular for international B2B invoice payments and supplier transactions. The reconciliation is straightforward but requires monthly FX revaluation for each non-EUR balance.
Wise USD Balance — Month-End FX Revaluation
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Cash — Wise USD (opening balance, at prior rate) | — | — |
| Transaction: received $5,000 @ 1.0800 | $5,000 | €4,630 |
| Transaction: paid supplier $2,200 @ 1.0850 | $2,200 | |
| Closing USD balance: $2,800 | ||
| Prior month-end rate used: 1.0800 → €2,593 | ||
| Current month-end rate: 1.0950 → €2,557 | ||
| FX Loss (unrealised) | €36 | |
| Cash — Wise USD | €36 |
Revalue all foreign currency monetary balances at the closing rate each month-end. FX gain or loss recognised in P&L — even if no actual conversion occurred.
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, not the rate you wished you had received. The transaction date rate is what creates an accurate EUR equivalent for each individual sale, purchase, or payment.
At month-end, all monetary items still denominated in foreign currency (bank balances, receivables, payables) must be restated at the month-end closing rate. The difference between the rate used when the item was first recorded and the month-end rate is an unrealised foreign exchange gain or loss — posted to P&L even though no cash conversion has occurred.
| Currency Pair | Rate Source | When to Use | When NOT to Use |
|---|---|---|---|
| EUR/USD | Bank of Estonia daily rate OR bank statement rate | Transaction date; month-end closing rate | Average rates; invoice date rate for cash-basis payments |
| EUR/GBP | Bank of Estonia daily rate OR bank statement rate | Same as above | Approximate rates from internet searches |
| EUR/SEK, EUR/DKK etc. | European Central Bank or Bank of Estonia | Same as above | Prior month rates applied to current month transactions |
Wise and Revolut show the transaction rate — use itWise Business and Revolut Business show the exact exchange rate applied to every transaction in your account statement. This eliminates the need to look up rates separately. When you download your monthly Wise statement and import it to your accounting software, the EUR equivalent is already calculated at the correct transaction-date rate. This is one practical reason why online stores that handle multiple currencies benefit from using Wise or Revolut as primary accounts rather than traditional banks, which often apply their own (less favourable) conversion rates without clear rate disclosure per transaction.
Realised vs Unrealised FX Gains and Losses
| Type | When It Occurs | P&L Impact | Cash Impact | Example |
|---|---|---|---|---|
| Realised FX gain | When a foreign currency monetary item is settled (converted or paid) | Posted to P&L immediately | Yes — cash received differs from recorded EUR value | USD receivable recorded at 1.05; collected when rate is 1.02 → FX gain of €30 per $1,000 |
| 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 | USD bank balance of $10,000 revalued from 1.08 to 1.10 → unrealised FX loss of €168 |
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
A return is not a single transaction in accounting — it is a chain of four linked entries that must all happen in the correct period and reference the correct original transactions. Missing any one of the four creates a discrepancy that will surface in the bank reconciliation, the KMD return, or the inventory count.
Issue credit note — reduces revenue and VAT liability. Post in the month the credit note is issued.
If goods returnable: DR Inventory / CR COGS to restore stock at original cost. If damaged: write off as expense.
Output VAT on the original sale is reduced by the VAT on the credit note. Declare on KMD in the month the credit note is issued.
Stripe/PayPal processes the refund. Record the refund against the processor account, not as a new expense.
Return Scenario — Customer Returns €124 Order (€100 + €24 VAT)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Revenue — Shopify Store | €100.00 | |
| VAT Payable — KMD | €24.00 | |
| Cash — Stripe (refund) | €124.00 | |
| Inventory (if goods saleable) | €42.00 | |
| COGS — Product Cost | €42.00 |
Two separate journal entries on the same date. Inventory restored only if goods are confirmed saleable on inspection. Damaged goods: DR COGS Write-offs / CR Inventory instead.
Cross-Period Returns — When the Sale Was in a Prior Month
If a customer returns goods purchased in a prior month, the credit note is issued in the current month and all accounting entries (revenue reversal, VAT adjustment, inventory restoration) occur in the current month. You do not restate prior-month accounts. This is correct under both Estonian GAAP and IFRS — events in the current period are recorded in the current period.
The only exception is a material year-end adjustment: if a significant volume of December orders are returned in January, the year-end accounts should include an accrual for expected returns based on historical return rates. This ensures the December P&L is not overstated by sales that are subsequently reversed.
Year-End Returns Accrual — ExampleDecember gross revenue: €45,000
Historical return rate (last 3 months avg): 4.2%
Expected January returns of December sales: €45,000 × 4.2% = €1,890 gross value
Net value (excluding VAT): €1,890 ÷ 1.24 = €1,524
VAT component: €365
Product cost (COGS at 42%): €650
Year-end accrual entry:
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Revenue | €1,524 (reversal of expected returns) | |
| VAT Payable | €365 (VAT on expected returns) | |
| Returns Provision | €1,890 (balance sheet liability) | |
| Inventory | €650 (expected stock to be returned) | |
| COGS | €650 (reverse cost of goods) |
Provision reverses in January as actual returns are processed.
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
A service OÜ closes the month with bank reconciliation, a few journal entries, and a VAT return. An e-commerce OÜ needs all of that plus: payment processor reconciliation (one per processor), inventory reconciliation, return processing, FX revaluation for every non-EUR balance, and a cross-check between the e-commerce platform’s revenue report and the accounting system totals. Done systematically, this takes 1–3 days. Done unsystematically, it takes a week and still leaves errors.
Export transaction reports from all processors (Stripe, PayPal, Shopify). Pull order data from e-commerce platform. Download bank statements.
Reconcile each processor: gross charges → fees → refunds → settlement → bank arrival. One reconciliation per processor.
Compare opening balance + purchases − COGS = closing balance. Investigate any discrepancy > €50. Write off confirmed losses.
Revalue all non-EUR monetary balances at month-end closing rate. Post FX gains/losses to P&L.
Post all monthly journals: revenue by channel, COGS by category, returns, accruals, depreciation.
P&L, balance sheet, and inventory reviewed against prior month and budget. Unexplained variances investigated before close confirmed.
Monthly Close Checklist
| Task | Source Data | Expected Output | Sign-Off When |
|---|---|---|---|
| Stripe reconciliation | Stripe transaction CSV + bank statement | Gross revenue, fees, net settlement tied to bank | Stripe balance = bank + reserve |
| PayPal reconciliation | PayPal activity report + bank statement | All transactions accounted for; FX noted | PayPal balance reconciled to bank |
| Shopify revenue check | Shopify Finance summary | Shopify gross revenue = sum of channel accounts | Shopify ≈ accounting revenue (within returns timing) |
| Inventory reconciliation | Opening balance + purchase invoices − COGS | Closing inventory = physical count (quarterly) | Inventory balance within €100 tolerance |
| Returns and credit notes | Return authorisations + credit notes issued | All returns posted; inventory and VAT adjusted | Zero outstanding unprocessed returns |
| FX revaluation | Month-end rates from Bank of Estonia or ECB | All foreign currency balances restated | FX G/L account has current-month entries |
| VAT calculation | Output VAT from sales; input VAT from purchases | KMD figures ready for filing by 20th | Output − input = KMD liability tied to ledger |
| P&L and balance sheet review | Accounting system | Management accounts ready for client | No unexplained variances > 5% of prior month |