How to Do My Accounting if I Use Shopify or Stripe

A practical guide for freelancers managing platform payouts

ChatGPT Image 4 ago 2025, 07_18_38 p.m..png

✨ The Problem ✨

Hundreds of Platform Transactions, One Bank Statement

As a Swiss sole proprietor (e.g. indie developer, digital creator, or micro‑shop owner), you might receive hundreds of transactions every month — think:

  • App Store subscriptions
  • One‑off purchases via Stripe checkout
  • Shopify orders (digital or physical) in dozens of currencies

Swiss law doesn’t require you to record each sale individually if your annual revenue is below CHF 500 000. Instead, you can use simplified cash‑basis accounting, i.e. record income when the money hits your bank account, not when customers click "Buy". That means you can book the monthly platform payout as a single line item, vastly reducing accounting overhead and staying compliant.

This approach works in tools like Bexio or Banana Accounting, or even a simple spreadsheet — just make sure you retain the platform’s monthly reports for verification. You still comply with Swiss bookkeeping under the simplified regime (Einnahmen‑Überschussrechnung).

Swiss Basics

Who Can Use Cash‑Basis Accounting?

✅ Eligibility

Under Swiss accounting rules:

  • Sole proprietors or freelancers

  • In preceding year, turnover under CHF 500 000

    • And non‑corporate entity (no AG, GmbH)
  • Then you’re allowed to keep simplified accounts: record only income, expenses, and assets/liabilities, without full double‑entry bookkeeping Federal Administration of Switzerland

Most small freelancers and software makers comfortably stay under that ceiling. Once you exceed CHF 500k in any year, you’ll need to switch to full CO double‑entry reporting.

📅 Timing: Cash, Not Accrual

In the Einnahmen‑Überschussrechnung (EÜR) (or Swiss “kassenbasis”):

  • Income is recorded when cash is received (not when you issue an invoice)
  • Expenses are recorded when paid, even if approved earlier
  • There is no accrual or deferral, minimizing complexity

That makes platforms' net payouts (after fees) perfect for this method.

Why Aggregating Platform Payouts Makes Sense for Freelancers

🔁 Platform Mechanics

Every platform works similarly:

  • Customer pays: e.g. CHF 1.99 in App Store, or via Stripe on your site.
  • Platform deducts fees: Apple 15–30 %, Stripe 2.9 % + CHF 0.30 (domestic card), Shopify’s platform + gateway fees.
  • You get a net payout at regular intervals

Because EÜR is cash‑based, you only record that net payout as client income — one transaction per platform per period.

📉 Net vs. Gross Approach

You have two choices:

  • ❌ Gross intake + expense of platform fee
    − E.g. record CHF 1 000 gross from sales, then record CHF 150 fee expense
  • ✔️ Net intake only
    − Record CHF 850 as income, skip fee entry

Taxable profit (income minus expenses) will be the same either way. Most freelancers prefer the net approach — it’s simpler and fits the cash methodology.


🧾 Verification

  • Always export and retain the platform’s monthly Sales + Payout report
  • These reports provide the audit trail needed in case of questions
  • Your line‑item entry must match the gross/net totals shown in these reports

Apple App Store

(iOS, macOS, in‑app subscriptions)

p1111ngegg.png

💸 How Apple Pays You

Through App Store Connect, Apple publishes:

  • Payments reports by territory, app, and subscription group
  • Apple deducts its commission (15 % or 30 %) before transferring the rest to your bank account

If you are in the App Store Small Business Programme, and your proceeds are under USD 1 million, your commission is reduced to 15 % instead of 30 % Apple Developer.

Apple then deposits your net proceeds around 45 days after month‑end, assuming you exceed a minimum threshold.

🗂 What to Record

  1. Wait for the monthly wire from Apple in CHF (or EUR/USD)

  2. In your books, make one entry:

    Datum      Bank         CHF 2 850
                Sales – Apple  CHF 2 850  (account "Digital income")
  3. You don’t need to create 100 per‑sale entries or record Apple’s commission separately

  4. Store the report from App Store Connect → Payments → Monthly Reports

📊 Why It Works

  • You’re following cash‑basis rules: income recorded when it lands
  • Net = gross sales minus fee = actual cash flow
  • Commission is implicitly handled without manual expense entries
  • Total profit (net income) equals gross profit minus platform fee

Stripe

– For Accepting Credit Cards on Your Site

[CITYPNG.COM]HD Stripe Official Logo PNG - 2000x2000.png

💲 Stripe Basics in Switzerland

Stripe charges (as of mid‑2025):

  • 2.9 % + CHF 0.30 per successful Swiss card transaction
  • 3.25 % + CHF 0.30 for international cards
  • +2 % for cross‑currency conversion, if applicable Stripe

Stripe processes hundreds of transactions per day and typically pays out:

  • Daily (if volume > threshold), otherwise weekly
  • Deposits are automated bank transfers grouped per calendar day
  • Deducts processing fees first; payouts = net proceeds

📦 Bookkeeping Approach

  • Summarize each month’s “Total payout” or “Net Payout Volume”

  • Record one income entry per month per Stripe-connected bank account

    2025‑07‑03  Bank (Stripe CH)   CHF 5 000
                   Sales – Stripe        CHF 5 000
  • Alternatively, if you want to show fees, you can record gross and separate expense

💡 Practical Tips

You can also download Stripe’s Payout Reconciliation report or Accounting CSV, but for EÜR you only need the final number.

Daily vs Weekly

Use whatever makes reconciliation easiest

Multi‑currency

Convert daily payouts to CHF at bank rate

Refunds/Chargebacks

Don’t record them separately — they’re netted out of payout

Shopify

– Selling Products Online (Physical or Digital)

pngegg.png

🛒 Payment Flow

  • Shopify processes orders via Shopify Payments (Stripe-backed or other gateway)

  • Charges customer cards, applies Shopify’s platform fee + payment gateway fee

  • Payout schedules in Switzerland:

    • 3 business days from capture to payout
    • Minimum payout: 5 CHF or 1 EUR
    • Example: a sale on Monday may be in your bank Wednesday or Thursday Shopify Help Center

You can choose payouts in CHF or EUR, or use multi-currency options.

📦 Bookkeeping Strategy

  • At every merchant payout, record it as one line:

    2025‑07‑04  Bank (Shopify Payments)   CHF 10 000
                   Sales – Shopify                 CHF 10 000
  • You can use Shopify’s "Payout CSV" export or go to Finance → Payouts → Export

  • If Shopify splits payouts into multiple deposits per week, just sum them in your business software as “Shopify gross payout”

Example Timeline

Order date Customer pays via Shopify Shopify captures, prepares deposit Bank receives net payout
July 1 CHF 200 July 2 (processing) July 3 (deposit)
July 3 CHF 300 July 4 July 7

On account software, you’d enter one July 3 payout (CHF 200) and one July 7 payout (CHF 300), or combine the period into a monthly summary.

Putting It All Together

Two Real‑World Scenarios

🧑‍💻 Case A: The Serial App Developer

July 2025 activity:

Platform Net payout (CHF) Entry in books
Apple 3 500 “Sales – Apple (July ’25)”
Stripe 5 200 “Sales – Stripe (July ’25)”
Total income: CHF 8 700

No need to enter each subscription or one‑off sale. End‑of‑month profit = CHF 8 700 minus any other expenses (hosting, home office, tools).

🏪 Case B: Niche E‑Commerce Seller Using Shopify + Stripe

July 2025 activity:

  • Shopify Payments deposits:

    • 1 500 € (converted to 1 570 CHF) on 7 July
    • 2 400 € (≈ 2 500 CHF) on 14 July
  • Stripe: sells digital services outside Shopify; net payout = 3 000 CHF

Books:

2025‑07‑07  Bank (Shopify) 1 570 CHF → Sales – Shopify  
2025‑07‑14  Bank (Shopify) 2 500 CHF → Sales – Shopify  
2025‑07‑28  Bank (Stripe)  3 000 CHF → Sales – Stripe  

Output:

  • Gross total: CHF 7 070
  • Fees and currency effects are already netted in the payout
  • Cash‑basis profit is just total receipts minus costs of goods sold or digital expenses

Tutorial: Using Magic Heidi for your Shopify, Stripe, Twint, ... bookkeeping

Quick video tutorial to explain how you can do this in Magic Heidi

Using Bexio, Banana Accounting or Even Spreadsheets

📂 Chart of Accounts Examples

Account code Description Usage
3000 Sales – Apple iOS/macOS app net income
3010 Sales – Stripe Payments from Stripe.com
3020 Sales – Shopify Orders via Shopify Payments

Use separate line items helps you see which platform brings in how much revenue — without per‑sale entry.

📄 Record Keeping

  • Always attach the platform’s monthly payout + sales report
  • Include CSV upload or link to PDF in your Herrena or Banana documents
  • If audited, platforms’ monthly reports prove your net income numbers

🧰 Cash vs Accrual Toggle

  • Make sure in Bexio / Banana that you record all entries under Cash (Kassen‑/Zuflussbasis), not accrual
  • Banana Accounting even automatically generates EÜR (Einnahmen‑Überschuss) when in cash mode

Reconciliation Steps Each Month

A short procedural checklist

  1. Apple/App Store:

    • Download monthly Payments report
    • Note the total net payout in bank statement
  2. Stripe:

    • Use Payout Reconciliation (CSV)
    • Check total matches bank deposit
  3. Shopify:

    • Download Payouts CSV from Finance → Payouts → Export
    • Check each deposit matches your bank record
  4. Book entry:

    • Post one line item per platform per calendar month
  5. Verify fees/refunds:

    • If refunds or chargebacks drop net amounts within platform — you don’t track them separately; it’s already in the final figure
  6. Exchange rates:

    • If platform paid in EUR or USD, use your bank’s actual CHF amount as recorded
  7. Audit folder:

    • Save report and bank statement pages showing deposit

Common Pitfalls & How to Avoid Them

Problem Cause Solution
Counting each sale separately Misunderstanding cash‑basis Stick to payouts only — sales tools for invoicing
Recording platform fees twice Gross vs net confusion If you use net method, skip fee lines — fees are auto‑deducted
Mix of currencies Multi‑currency payouts, USD/EUR Record exactly what bank credited; ignore irrelevant FX lines
Refund adjustment mismatch Stripe/Shopify adjust earlier Always book payout value, not original sales numbers
Bank return fails payouts Shopify auto‑debits for refunds Verify negative balance is cleared next month

VAT Compliance

(Brief Note, Separate Article Coming)

  • Since your business turnover is under CHF 100 000, you're likely not VAT registered
  • Even if you are (e.g. due to physical goods sales), your platform payout reports include VAT on their processing fees, not on your sales; VAT on your own Swiss sales is out of scope
  • We’ll publish a separate article on "Platform Income & VAT in Switzerland" — link coming soon

Final Takeaway

Why This Works for Swiss Freelancers

  • It’s legal: Small‑company rules allow simple cash methods under CHF 500 000 turnover Federal Administration of Switzerland
  • It’s efficient: One line per payout replaces hundreds of sales entries
  • It's accurate: Net receipt = real cash flow = profit‑impact
  • It’s verifiable: Platform reports + bank deposits = audit ready

If your business grows above CHF 500 k, or you acquire assets, hire staff, or take on VAT, it may be time to switch to full double-entry bookkeeping — but until then, this method is a straightforward, compliant lifeline for micro‑business.

📌 Summary Checklist

  • ✅ Are you a sole proprietor under CHF 500 000 revenue? 👉 cash‑basis EÜR applies
  • ✅ Do Apple/Stripe/Shopify send you net monthly payouts? 👉 book only those
  • ✅ Do your payout totals match your bank statement? 👉 good
  • ✅ Do you retain the platform report monthly? 👉 excellent
  • ✅ Is this all automated in your account tool? 👉 even better

Feel free to copy the bookkeeping snippets above and adapt them to your accounting platform. After building momentum, bookkeeping transitions from chore to checkpoint — and you can breathe.

Happy freelancing — and here’s to smoother Books in Switzerland™ 🎉