Shopify Accounting for Estonian Businesses
A complete accounting setup guide for Shopify store owners — chart of accounts configuration, Shopify Payments reconciliation, multi-currency handling, VAT configuration, integration with Estonian accounting software, and the monthly close process.
5 Key Takeaways From This Page
Shopify deposits net amounts after deducting processing fees and any refunds. Recording the bank deposit as revenue understates your top line and misrepresents your gross margin. Always start from the gross order value.
Shopify Payments typically settles 1–3 business days after the order. December sales may arrive in January. Your accounting must track the balance in transit so the month-end bank balance and the Shopify report always agree.
Shopify Tax (or third-party apps) determines the correct VAT rate at checkout and tracks your liability. But it does not file your KMD, OSS, or IOSS returns. That step is done through EMTA by you or your accountant.
If your Shopify store accepts GBP, USD, or SEK, each order must be converted to EUR at the rate on the date of the transaction — not the settlement date or a monthly average.
Connecting Shopify directly to your accounting software via A2X, Xero, or Merit Aktiva reduces the monthly reconciliation from a two-day manual process to a 30-minute review. Set it up once; benefit every month.
What does Shopify accounting involve for an Estonian OÜ? Monthly gross revenue recording from Shopify Finance reports, Shopify Payments reconciliation (gross orders → processing fees → refunds → payout → bank receipt), EU VAT configuration and reporting (Estonian KMD for domestic sales, OSS for EU B2C cross-border), multi-currency order handling, integration with accounting software for automated transaction import, and a month-end close that ties Shopify’s finance summary to the general ledger. This page covers each of those workstreams in full.
Section 1 — Shopify’s Financial Architecture
How Shopify structures money flow — from order to payout to your bank account
The Five Layers of Shopify Money Movement
Before setting up accounting for a Shopify store, it is important to understand how money actually moves through the platform. Shopify is simultaneously an order management system, a payment processor (if Shopify Payments is enabled), and a financial reporting tool. Each of these functions generates different data that feeds into your accounts.
Customer pays. Shopify records the order: gross amount, products, shipping, discounts, taxes collected.
Shopify Payments (or third-party gateway) authorises and captures the payment. Processing fee is assessed.
Shopify batches transactions into payouts. Fees and any refunds are netted against gross amounts.
Typically 1–3 business days after payment capture. Funds transfer to your designated bank account.
Net payout appears in your bank. This is what most sellers mistakenly record as revenue.
Shopify Payments vs Third-Party Gateways
| Feature | Shopify Payments | Third-Party Gateway (Stripe, PayPal) |
|---|---|---|
| Integration | Built into Shopify — no separate account | Requires separate payment account + gateway fee |
| Transaction fees | Included in Shopify plan rate (0.5–2%) | Shopify charges an extra 0.5–2% on top of gateway fees |
| Payout timing | 1–3 business days (varies by country) | Varies by gateway — Stripe typically 2 business days |
| Payout report | Shopify Finance → Payouts | Must reconcile separately via gateway dashboard |
| Multi-currency | Shopify Payments handles FX at settlement | FX handled by gateway; conversion rates may differ |
| Chargeback management | Handled via Shopify admin | Handled via gateway dashboard; alert Shopify separately |
| Accounting data | Shopify Finance reports include fee breakdown | Gateway provides separate transaction exports |
If you use both Shopify Payments and PayPal, you need two separate reconciliations
Many Shopify stores offer PayPal as an alternative checkout method. This means two different processors each with their own payout timing, fee structure, and transaction report. A month where you have €12,000 in Shopify Payments and €3,000 in PayPal requires both reconciliations independently before the total bank receipt can be confirmed. Never combine them into a single reconciliation — the fee structures, timing, and data formats are different.
Section 2 — Shopify Payments Reconciliation
Line-by-line: from gross orders to net payout to bank receipt — with a fully worked monthly example
The Shopify Payments Flow — Three Reports You Need
Reconciling Shopify Payments requires three data sources: the Shopify Finance → Payouts report (shows each payout batch and its components), the Shopify Finance → Transactions report (shows individual order charges, refunds, and fees), and your bank statement (confirms the actual amount received). Together, these three sources produce a complete picture from gross sales to confirmed bank receipt.
Shopify Admin → Finances → Payouts. Download all payouts for the month.
Shopify Admin → Finances → Transactions. Download transaction-level detail.
Your bank statement for the same month.
Each payout should match an incoming bank transfer.
Sum of gross orders = sum of net payouts + fees + refunds.
Monthly Payout Reconciliation — Worked ExampleShopify Payments Reconciliation — November 2025
| Item | Amount (€) | Running Total (€) |
|---|---|---|
| Gross customer payments (all orders) | €22,400.00 | €22,400.00 |
| · Orders charged | €23,100.00 | |
| · Refunds issued (net of charges) | −€700.00 | |
| Less: Shopify Payments processing fees | −€403.20 | €21,996.80 |
| · Transaction fee (1.4% + €0.25/txn on 160 orders) | −€403.20 | |
| Less: Shopify subscription fee (Growth) | −€79.00 | €21,917.80 |
| Less: App and theme charges | −€45.00 | €21,872.80 |
| Add: Prior period reserve released | +€128.40 | €22,001.20 |
| Expected total bank payouts (November) | €22,001.20 | €22,001.20 |
| Actual bank receipts from Shopify | €22,001.20 | |
| Reconciliation difference | €0.00 |
Understanding the Shopify Finance Report Breakdown
Shopify Finance Summary — November 2025 (Accounting View)
| Category | Gross (€) | Deductions (€) | Net to Bank (€) |
|---|---|---|---|
| Revenue | |||
| Product sales (gross) | €21,800.00 | ||
| Shipping charged | €600.00 | ||
| Discounts given | −€320.00 | ||
| Returns / refunds | −€700.00 | ||
| = Net Revenue | €22,400.00 | −€1,020.00 | €21,380.00 |
| Fees and Charges | |||
| Shopify Payments processing | −€403.20 | ||
| Shopify subscription | −€79.00 | ||
| App charges | −€45.00 | ||
| = Total Fees | −€527.20 | −€527.20 | |
| VAT / Tax Collected | |||
| Estonian VAT (24%) | €2,244.00 | ||
| EU B2C VAT (various rates) | €1,856.00 | ||
| = Total Tax Collected | €4,100.00 | €4,100.00 | |
| TOTAL PAYOUT TO BANK | €22,400.00 | −€1,547.20 | €22,001.20 |
VAT collected through Shopify is a liability — quarantine it immediately
The €4,100 VAT collected appears in your Shopify Finance report. This money belongs to EMTA and your EU OSS obligations — not to your business. It must flow to your KMD and OSS returns. When you post the monthly journal entry, credit VAT Payable (KMD) for €2,244 and VAT Payable (OSS) for €1,856. Never include VAT in your revenue figures. If your accounting software is correctly set up, this separation happens automatically.
Section 3 — Monthly Journal Entries for Shopify
The complete set of entries from order to payout to VAT payment
Entry 1 — Recording Gross Revenue and VAT (at month-end from Finance report)JE-1: Monthly Revenue and VAT Recognition (November 2025)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Cash — Shopify Payments (gross) | €22,400.00 | |
| Revenue — Shopify Store (net sales) | €17,044.52 | |
| VAT Payable — Estonian KMD | €2,372.88 | |
| VAT Payable — OSS (EU B2C) | €1,962.60 | |
| Deferred Revenue (pre-orders pending) | €1,020.00 |
Net sales = Gross €22,400 minus VAT €4,335.48 minus deferred revenue €1,020. Deferred revenue posted for orders placed but not yet shipped.
Entry 2 — Recording Shopify FeesJE-2: Shopify Platform Fees as Cost of Revenue
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| COGS — Platform Fees (Shopify Payments) | €403.20 | |
| Operating Expense — Software (Subscription) | €79.00 | |
| Operating Expense — Apps | €45.00 | |
| Cash — Shopify Payments | €527.20 |
Shopify Payments processing fees are COGS (direct cost of generating sales). Subscription and app fees are operating expenses — they are period costs not tied to individual transactions.
Entry 3 — Shopify Payout to BankJE-3: Shopify Payout Received in Bank Account
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Cash — Estonian Bank (EUR) | €22,001.20 | |
| Cash — Shopify Payments | €22,001.20 |
Moves the net settlement from the Shopify Payments holding account to the actual bank account. The difference between JE-1 gross (€22,400) and this entry (€22,001.20) reconciles via JE-2 fees (€527.20) plus reserve movements (€128.40).
Entry 4 — COGS for Products ShippedJE-4: COGS Recognised on Shipments (November)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| COGS — Product Cost | €8,950.00 | |
| Inventory | €8,950.00 | |
| COGS — Shipping Outbound | €1,340.00 | |
| Cash / Courier Payable | €1,340.00 |
COGS recognised when goods are dispatched — not when orders are placed or when payout arrives. Inventory reduced at carrying cost (FIFO or weighted average). Shipping cost from courier invoice or platform rate.
Entry 5 — VAT Payment to EMTA (monthly KMD)JE-5: Monthly KMD VAT Payment to EMTA
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| VAT Payable — Estonian KMD | €2,244.00 | |
| VAT Receivable (input VAT) | €381.00 | |
| Cash — Bank | €1,863.00 |
Output VAT €2,244 minus input VAT on purchases €381 = €1,863 net payment to EMTA by 20th of December. OSS payment is separate — made to EMTA OSS account 30 days after quarter end.
Section 4 — VAT Configuration in Shopify
Setting up tax rates, handling EU B2C correctly, and avoiding the most common configuration errors
Shopify’s Tax Options — Which One to Use
| Option | What It Does | Best For | Limitation |
|---|---|---|---|
| Shopify Tax (built-in) | Calculates US sales tax automatically; limited EU support | US-focused stores | Does not handle OSS or multi-country EU VAT rates natively |
| Manual tax rates | You set specific rates per country in Settings → Taxes | Simple setups with a few countries | Must be manually updated when rates change; no automatic validation |
| Third-party tax app (TaxJar, Avalara, Quaderno) | Automatic rate lookup by product and destination; OSS integration | EU sellers with complex rate requirements | Monthly subscription cost; setup time |
| Shopify Markets + Tax | Shopify’s newer multi-market framework with improved tax handling | Sellers using Shopify Markets for geo-specific pricing | Still limited for complex EU VAT scenarios |
Manual EU VAT Rate Configuration
For an Estonian e-commerce business selling across the EU, the most reliable approach is to configure manual tax rates in Shopify for each EU country — using the standard VAT rates published by each member state. This is a one-time setup that provides predictable, consistent tax calculation at checkout.
| Shopify Setting | Where to Find It | What to Configure |
|---|---|---|
| Tax regions | Settings → Taxes and Duties → Tax Regions | Add each EU country you ship to as a separate tax region |
| Country tax rate | Settings → Taxes → [Country] → Tax Rate | Set the standard VAT rate for each country (e.g. Germany: 19%, France: 20%) |
| Product-specific rates | Products → [Product] → Tax Settings | Override the standard rate if the product qualifies for a reduced rate (e.g. books at 5.5% in France) |
| Tax-inclusive prices | Settings → Taxes → All Prices Include Tax | Set whether displayed prices include or exclude VAT — affects checkout calculations |
| Shipping tax | Settings → Taxes → Charge Tax on Shipping | Enable if shipping is taxable in the destination country (rules vary by country) |
| Tax exemptions | Settings → Taxes → Tax Exempt Customers | For B2B customers with VAT numbers — mark as tax-exempt and record the customer’s VAT number |
Handling EU B2B Customers — Reverse Charge
When a VAT-registered business from another EU country places an order, the transaction is zero-rated under reverse charge rules. In Shopify, this means removing VAT from the invoice and adding a reverse-charge note. The correct way to handle this in Shopify:
At checkout or via customer account: customer enters their EU VAT number
Use a VIES validation app to verify the number in real-time at checkout
Once validated, Shopify removes VAT from the order automatically
Configure invoice template to include reverse charge note
This sale appears on your Estonian KMD as a zero-rated intra-community supply — Row 2
The €40,000 Estonian VAT Threshold in Shopify Context
Your Shopify store’s total Estonian revenue (sales to Estonian customers) counts toward the €40,000 mandatory VAT registration threshold. EU B2B sales (reverse charge) also count toward the threshold even though they are zero-rated. Monitor your running total in Shopify’s Finance reports — once you approach €35,000 in rolling 12-month taxable supplies, initiate VAT registration before the threshold is crossed.
Threshold Monitoring — What Counts Toward €40,000
| Sales Type | Counts Toward €40K? |
|---|---|
| Estonian B2C sales (24% rate applies) | ✅ Counts |
| Estonian B2B sales (if charging VAT) | ✅ Counts |
| EU B2B sales (zero-rated reverse charge) | ✅ Counts |
| EU B2C sales below €10K threshold (24% Estonian) | ✅ Counts |
| EU B2C sales above €10K threshold (via OSS) | ✅ Counts |
| Non-EU sales (US, UK, UAE — outside scope) | ❌ Does NOT count |
Threshold check: sum of all ✅ rows above
If rolling 12-month total exceeds €40,000: register for VAT
Shopify Analytics → Overview: filter by country for Estonian orders. Add EU B2B order totals separately from EU B2B orders report.
Section 5 — Multi-Currency in Shopify
Enabling multiple currencies, how Shopify handles FX, and the accounting implications of each approach
How Shopify Multi-Currency Works
Shopify allows your store to display prices and accept payments in multiple currencies. When a buyer in the UK sees prices in GBP and pays in GBP, Shopify either converts the payment to your payout currency (EUR) at settlement using their conversion rate, or holds it in a foreign currency balance if you use Shopify Payments with multi-currency payouts enabled.
For accounting purposes, the key question is: what rate applies to each transaction? The rate used determines the EUR value of every foreign-currency sale — and therefore your revenue, your VAT base (VAT must be calculated in EUR for Estonian and OSS filings), and your FX gains or losses.
| Shopify Multi-Currency Approach | How FX is Handled | EUR Rate for Accounting | FX Gain/Loss |
|---|---|---|---|
| Auto-conversion at settlement | Shopify converts GBP/USD to EUR at their rate when payout is released | Shopify’s conversion rate on payout date — not transaction date | Shopify absorbs the FX spread; your EUR receipt is the accounting rate |
| Multi-currency payouts (Shopify Payments) | Shopify holds GBP, USD, EUR balances separately; you choose when to convert | Transaction date rate for each GBP/USD sale; convert manually when favourable | FX gain/loss arises when you convert foreign balance to EUR |
| Third-party gateway with own FX | e.g. PayPal converts at its own rate | PayPal’s rate on settlement date | No explicit FX line — difference absorbed in fee/settlement amount |
Multi-Currency Sale — GBP Order (£250 @ 1.1680 EUR/GBP = €292.00)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Cash — Shopify Payments (GBP balance) | €292.00 | |
| Revenue — Shopify (GBP orders) | €239.34 | |
| VAT Payable — UK orders |
UK post-Brexit: outside EU VAT scope. Revenue = £250 at transaction-date rate of 1.1680 = €292.00 gross (no VAT). When GBP balance is eventually converted to EUR, any rate change creates a realised FX gain or loss.
Month-End GBP Balance Revaluation (holding £1,400 in Shopify)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Cash — Shopify Payments (GBP) | ||
| Prior month-end rate: 1.1680 → €1,635.20 | ||
| Current month-end rate: 1.1590 → €1,622.60 | ||
| FX Loss (unrealised) | €12.60 | |
| Cash — Shopify Payments (GBP) | €12.60 |
Revalue all open foreign currency balances at month-end closing rate. GBP depreciation creates an unrealised FX loss. No cash impact — reverses if GBP recovers.
Section 6 — Connecting Shopify to Your Accounting Software
Integration options — native connectors, A2X, and manual import — with setup guidance for Merit Aktiva and Xero
Why Integration Is Essential at Scale
A Shopify store processing 100 orders per month generates approximately 400–600 accounting entries if each order is posted individually (revenue, COGS, VAT, payout, fee). Manual data entry at this scale takes 10–15 hours per month and introduces high error risk. Integration reduces this to a 30-minute review of automatically imported, categorised transactions.
The integration approach depends on your accounting software. Not every tool connects to Shopify natively — but all major platforms can be connected either directly or through A2X, the industry-standard Shopify-to-accounting middleware.
| Accounting Software | Shopify Integration Method | Setup Time | Monthly Effort | Cost |
|---|---|---|---|---|
| Merit Aktiva | Manual import via CSV or bank feed; no native Shopify connector | 2–3 hours setup | 3–5 hours/month for reconciliation | No connector fee; accountant time |
| Xero | A2X connector (best option); or direct Shopify-Xero integration | 1–2 hours with A2X | 30–60 min/month review | A2X: from €19/month depending on order volume |
| QuickBooks | A2X connector; or manual import | 1–2 hours with A2X | 30–60 min/month | A2X: from €19/month |
| Odoo | Native Shopify connector available | 3–5 hours setup | Near-automated | Depends on Odoo plan |
| Wave | Manual CSV import only | Low setup | 2–4 hours/month | Free software; time cost |
A2X — How It Works With Shopify
A2X is a connector that sits between Shopify and your accounting software. It pulls Shopify Finance data daily, groups transactions into accounting-ready monthly summary entries, applies your pre-configured account mapping, and posts the journal entry to your accounting software automatically. The accountant then reviews and approves the posted entries during the monthly close.
A2X pulls daily payout and transaction data from Shopify Finance automatically — no manual exports
Each transaction type (sales, fees, refunds, VAT) mapped to your pre-configured account codes
Transactions grouped into a monthly journal entry — one entry per payout batch or per month
Journal entry posted directly to Xero or QuickBooks — accountant reviews and confirms
Bank feed matches the payout receipt; reconciliation takes minutes instead of hours
Merit Aktiva — Manual Import Workflow
Merit Aktiva does not have a native Shopify connector, but it is the most common accounting software in Estonia. For Shopify stores using Merit, the reconciliation is done manually using Shopify’s Finance export reports. This is manageable for lower-volume stores but becomes time-consuming above 200 orders per month.
Monthly transaction summary from Shopify Admin → Finances → Download. Export as CSV.
Open CSV in Excel. Map each transaction type to Merit account codes using a pre-built template.
Summarise the month: gross revenue by VAT category, fees by type, payout total, VAT amounts.
Post the journal entry manually. Attach the Shopify export as supporting documentation.
Merit Aktiva’s bank feed should show the Shopify payouts. Match each payout to the journal entry.
Section 7 — Shopify-Specific Accounting Challenges
Gift cards, discount codes, abandoned checkout revenue, and other Shopify mechanics that create non-standard entries
Gift Cards — Deferred Revenue Until Redemption
Gift cards sold through Shopify are not revenue when sold — they are liabilities (deferred revenue). The cash is received in advance of the actual performance obligation (delivering a product). Revenue is recognised when the gift card is redeemed and the corresponding order is fulfilled.
Gift Card Sale (€50 gift card sold)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Cash — Shopify Payments | €50.00 | |
| Deferred Revenue (Gift Cards) | €50.00 |
Gift card creates a liability, not revenue. No VAT at point of sale — VAT arises when the gift card is redeemed for specific goods.
Gift Card Redemption (€50 card redeemed on €60 order)
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Deferred Revenue (Gift Cards) | €50.00 | |
| Cash — Shopify Payments | €9.84 | |
| Revenue — Shopify | €49.18 | |
| VAT Payable — KMD (24%) | €12.00 | |
| COGS — Product Cost | €22.00 | |
| Inventory | €22.00 |
At redemption: deferred revenue released, balance paid in cash (€60 total − €50 card = €10 cash payment, €9.84 + €0.16 rounding). VAT applied to the full order value at redemption. COGS posted simultaneously.
Discount Codes — Revenue Net of Discount
When a customer uses a discount code, Shopify records the order at the discounted price. The discount is shown as a line item in the order but the net sale value is what becomes revenue. You do not record full-price revenue and then a discount expense — revenue is the actual amount charged to the customer after the discount.
This is important for VAT: VAT is calculated on the discounted price (the actual amount the customer pays), not the original list price. Shopify’s tax calculation handles this correctly — ensure your accounting entries match the net amounts from the Shopify report, not the pre-discount prices.
Shopify Capital Advances — Not Revenue
Shopify offers merchant cash advances (Shopify Capital) to eligible stores. These are financing arrangements — the advance is repaid automatically through a percentage of future sales. Accounting treatment: the advance is a liability (loan), not income. Repayments reduce the liability. Any fee or cost of the advance is a financing cost (interest expense), not an operating expense.
Shopify Capital Advance Received
| Account | Debit (DR) | Credit (CR) |
|---|---|---|
| Cash — Estonian Bank | €10,000.00 | |
| Shopify Capital Loan | €10,000.00 |
Do not record as revenue. The advance creates a liability on the balance sheet. Repayments (deducted automatically from payouts) reduce the liability each time.
Section 8 — Shopify Monthly Close Checklist
Every step from month-end to filed returns — in order
The Complete Shopify Monthly Close — Day by Day
| Day | Task | Source Data | Sign-Off Criterion |
|---|---|---|---|
| Day 1 | Export Shopify Finance reports | Shopify Admin → Finances | All payouts, transactions, tax summary downloaded |
| Day 1 | Export bank statements | Bank portal | Month’s transactions including all Shopify payouts |
| Day 2 | Shopify Payments reconciliation | Shopify payouts + bank statement | Each payout matches bank receipt; timing gaps noted |
| Day 2 | Post revenue journal entry (JE-1) | Shopify Finance summary | Gross revenue, VAT amounts, deferred revenue posted |
| Day 2 | Post fees journal entry (JE-2) | Shopify Finance → Transaction fees | Processing fees posted to COGS; subscription to OpEx |
| Day 2 | Post payout settlement (JE-3) | Bank receipt + Shopify balance | Shopify balance cleared; bank account credited |
| Day 3 | Post COGS for shipments (JE-4) | Shopify orders shipped + inventory | COGS recognised; inventory reduced |
| Day 3 | FX revaluation (if multi-currency) | Month-end rates from Bank of Estonia | All non-EUR balances restated |
| Day 3 | Post adjustments (gift cards, discounts, etc.) | Shopify Finance special transactions | All non-standard items accounted for |
| Day 4 | Prepare KMD (Estonian VAT return) | Revenue journal VAT amounts | Output VAT − input VAT = KMD liability |
| By 20th | File and pay Estonian KMD | EMTA e-Tax portal | Confirmation received from EMTA |
| Quarter end | Prepare OSS return | Shopify country-level sales data | All EU B2C sales by country declared and paid |