In this article
- What exactly goes between Shopify and your accounts?
- Why do the accounts so often not add up?
- Step 1: choose per order or per day
- Step 2: settle VAT and shipping costs before you connect
- Step 3: let one system own the stock
- Step 4: connect payments separately from orders
- Step 5: build retries without double entries
- What to watch on the technical side
- When is a standard app enough?
- Frequently asked questions
Your online store is running, orders are coming in, and at the end of the month the revenue in your accounts doesn't quite match. That is rarely down to the connector itself. It is almost always down to three choices nobody made explicitly: how granular your bookkeeping is, which system owns the stock and what happens to a return.
What exactly goes between Shopify and your accounts?
- Orders: to sales invoices or to a daily journal entry in your accounting software.
- Customers: only if you need them in your accounts, for example business customers with a VAT number.
- Products: from your ERP or stock system to the online store, including price and status.
- Stock: levels back to Shopify, per location if you have several warehouses.
- Payments and payouts: the amounts that land in your bank account, including transaction fees.
- Returns and credit notes: back to your accounts and back into stock.
What each combination involves is covered under Shopify integration, for example Shopify and Exact Online, Shopify and Moneybird or Shopify and Bol, the Dutch marketplace.
Why do the accounts so often not add up?
Because an online store and an accounting system don't count the same event. Shopify counts an order the moment it is placed. Your accounts want to know when it was delivered, what was paid and which VAT rate applied.
On top of that, the payment provider doesn't pay out each amount separately. You receive a lump sum with fees already deducted. Anyone who tries to match that one to one with individual orders loses a day every month.
Step 1: choose per order or per day
Do you book each order as a separate sales invoice, or a daily total per VAT rate? For a store with lots of small consumer orders, a daily entry is almost always enough and keeps your books readable.
If you sell to businesses, with invoices in their name and payment on terms, you want to book per order. Choose one and stick with it. Mixing the two is exactly where discrepancies start.
Agree when you book, too. At the moment of ordering, of payment or of shipping? Those three moments can be days apart, and at month end that gap shows up in your revenue.
Step 2: settle VAT and shipping costs before you connect
Write down which VAT rates you use, what happens with deliveries abroad and how you treat shipping costs and discounts. This isn't integration work but bookkeeping, and it is the main cause of discrepancies.
Keep the mapping to general ledger accounts in a table your bookkeeper can edit, not in code. If your rates or your chart of accounts change, you don't want to need a developer for it.
Step 3: let one system own the stock
Name one system that holds the truth about stock. Usually that is your ERP or warehouse system, and Shopify follows. Two systems that can both deduct stock will inevitably sell what you don't have.
Think about locations. Shopify can track stock per location, so decide which location the online store sells from and what happens when it runs out. Flagging that something is running low can be automated; see automated stock management.
Step 4: connect payments separately from orders
Treat the payout as a flow of its own. For each payout, retrieve which orders it contains and what the fees were, and book those fees as costs. Your bank account then reconciles with your general ledger without manual work.
Do the same with refunds. A return is a credit note and a stock movement at once, and the two must never happen separately.
Allow for gift cards, discount codes and buy-now-pay-later methods, too. They change when the money arrives and sometimes the amount as well. Ask your bookkeeper to specify how each method should be booked.
Step 5: build retries without double entries
Shopify can notify you when an order comes in. That notification can arrive twice, or not at all if your side is briefly unreachable. So plan for it.
Give every message a unique key, such as the order number, and check it before you book. Put messages in a queue and retry at growing intervals. On top of that, run a nightly check for missing orders, because that safety net is the one that most often catches something.
What to watch on the technical side
Shopify offers an Admin API and webhooks that notify you as soon as something changes. There are limits on the number of calls; check Shopify's own documentation for the current values, because they change.
So don't fetch everything every minute; fetch only the changes since the last run. Process in batches where you can, and make it visible when a flow goes silent. An integration that does nothing is otherwise only noticed at month-end close.
When is a standard app enough?
Often. For popular combinations there are ready-made connectors that do exactly this. Check whether they can handle your VAT situation, whether they include returns and whether you can access the log yourself.
Building your own makes sense once you combine several sales channels, need your own logic in the mapping, or put your own front end on Shopify. What that involves is covered under Shopify Plus, and what it costs under having an integration built. The design choices on the accounting side are set out in connecting Exact Online to your own software.
Frequently asked questions
Do you need to book every Shopify order separately?
Not necessarily. For consumer sales with lots of small orders, a daily total per VAT rate is usually enough and keeps your books readable. If you sell to businesses with invoices in their name and payment on terms, book per order. Choose one and stick with it.
Why doesn't the revenue in my accounts match Shopify?
Usually because the payment provider pays out lump sums with transaction fees already deducted, and because returns and shipping costs are booked differently from how they were sold. Treat payouts as a flow of their own and book the fees separately.
Does Shopify have an API?
Yes. Shopify offers an Admin API and webhooks that notify you as soon as something changes. There are limits on the number of calls; check Shopify's documentation for the current values, as they are adjusted from time to time.
Which system should own the stock?
One system, usually your ERP or warehouse system, with the online store following. Two systems that can both deduct stock will sooner or later sell what you don't have. Record which location the online store sells from, too.
How do you prevent double entries?
Give every message a unique key, such as the order number, and check it before you book. Put messages in a queue and retry at growing intervals. On top of that, run a daily check for orders that never arrived.
Is an app from the Shopify App Store enough?
Often, yes. Check whether it can handle your VAT situation, whether returns and credit notes go across and whether you can access the log yourself. Building your own makes sense once you combine several sales channels or need your own logic in the mapping.





