Accounting

In progressapp.erp.io/accounting/commerce

Commerce

Sales channels post through a clearing account, so a processor payout is settlement rather than income. Off by default, per organisation.

Default
Off
Model
Clearing account
Shopify
Custom-app token
Amazon
Uploaded settlement file

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.

app.erp.io/accounting/commerce
Settlement — Stripe, 12 Mar

Clearing account 1210 · nets to zero

LineAccountDebitCredit
Gross sales1210 Clearing2,610.00
Revenue4010 Services2,175.00
Sales tax collected2200 VAT control435.00
Processor fees5400 Payment fees128.80
Fees against clearing1210 Clearing128.80
Payout received1010 Bank2,481.20
Payout clears1210 Clearing2,481.20
A settlement in the clearing account. Gross sales, fees and the payout that clears them.

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.

The tax-inclusive pricing trap

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.

Do not point this at a live store yet

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.

The withheld-tax-as-a-fee trap

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

No inventory

Channels post revenue and fees. There is no stock ledger and no cost of goods from movements.

Shopify is not production-ready

Do not connect a live store yet.

No other marketplaces

Shopify and Amazon settlement files. eBay, Etsy and the rest are not built.

No refund automation

Refunds appear in settlements and are posted; there is no separate returns workflow.

No multi-currency settlements

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.