The clearing model
This is the whole idea, and understanding it prevents every common error in this area. When you sell through a channel, three separate things happen: a customer pays, the processor takes fees, and some days later a payout lands in your bank. If you record the payout as income, your revenue is understated by the fees and your timing is wrong.
So sales post to a clearing account at gross. Fees post against it as an expense. The payout, when it arrives, clears the account. The account nets to zero once everything for a settlement has arrived — and a clearing account that will not clear is a specific, findable problem rather than a vague sense that the numbers are off.
Settlement — Stripe, 12 Mar
Clearing account 1210 · nets to zero
| Line | Account | Debit | Credit |
|---|---|---|---|
| Gross sales | 1210 Clearing | 2,610.00 | |
| Revenue | 4010 Services | 2,175.00 | |
| Sales tax collected | 2200 VAT control | 435.00 | |
| Processor fees | 5400 Payment fees | 128.80 | |
| Fees against clearing | 1210 Clearing | 128.80 | |
| Payout received | 1010 Bank | 2,481.20 | |
| Payout clears | 1210 Clearing | 2,481.20 |
Shopify
The Shopify connector authenticates with a custom-app access token created in your own Shopify admin, not with a public OAuth application. That means no app-store review and no third party in the middle, and it means you paste a token rather than clicking through a consent screen.
Shopify stores can price tax-inclusive or tax-exclusive, and the same order payload means different things in each case. Get it backwards and every order posts with revenue and tax swapped in proportion — the total is right, so nothing looks wrong until a return is prepared. The connector reads the store setting rather than assuming, and it is the first thing to check if revenue looks slightly low and tax slightly high.
The Shopify connector is not finished. It is documented here because it exists and is being built, not because it is ready to run against a store with real orders in it. This page is marked In progress for that reason.
Amazon
Amazon is handled by parsing an uploaded settlement flat file rather than by calling the marketplace API. Settlement files are the authoritative record of what Amazon actually paid you and why, which is exactly what the clearing model needs, and it avoids a marketplace API integration that would have to be maintained against frequent change.
On marketplace-facilitator sales, Amazon collects and remits the sales tax itself. In the settlement file that withholding sits among the fee lines. Treated as a fee, it becomes an expense you never incurred and a tax liability you never recorded — and the settlement still balances, which is why it survives review. The parser classifies facilitator tax separately for that reason.
Turning it on
Commerce is behind a per-organisation flag and is off by default. It changes how sales post, so it is not something to discover by accident. Ask before enabling it, and enable it at the start of a period rather than the middle.
What this does not do
Channels post revenue and fees. There is no stock ledger and no cost of goods from movements.
Do not connect a live store yet.
Shopify and Amazon settlement files. eBay, Etsy and the rest are not built.
Refunds appear in settlements and are posted; there is no separate returns workflow.
A settlement is handled in one currency.
Questions
Why not just record the payout?
Because it understates revenue by the fees and dates the sale wrongly. The clearing model is the fix.
What if the clearing account will not clear?
Something in the settlement has not been recorded — usually a fee category or facilitator tax. That is the account doing its job.
Can we use this with Stripe directly?
Stripe payouts are handled as settlements the same way. The channel connectors are the part that is in progress.
Related
Getting bank transactions into erp.io, the staging area between a feed and the ledger, and the five ways a bank feed double-counts.
ReconciliationMatching bank transactions to invoices, bills and journal entries in erp.io — the suggestion queue, confidence thresholds, and why you should never lower one to clear a backlog.