Skip to main content
All posts
Education · by Sharvari Joshi

The Clearing Account Pattern: Shopify and Stripe in Plain English

The clearing account pattern is the trick that makes Shopify and Stripe deposits actually balance to your sales. Here is how it works, in plain English.

You sold $5,200 of stuff on Shopify last week. Shopify deposited $4,318.62 in your bank. Those two numbers will never be equal, no matter how long you stare at the screen, and that is not a bug. The fix is one of the oldest patterns in accounting and it has a name almost nobody outside the bookkeeping world has heard of: the clearing account pattern.

This post is the plain-English explainer. We will cover what a clearing account actually is, why Shopify and Stripe both force you to use one whether you realize it or not, walk a single $100 sale through the entire money flow, and show what breaks when the pattern is missing. By the end you will know more about the clearing account pattern than 95% of Shopify and Stripe merchants, and you will know how to spot when yours is broken.

The thing nobody tells you about online payments

The mental model most founders start with is simple. A customer pays you $100. The $100 lands in your bank. You owe tax on $100. Easy.

Reality is messier. When a customer pays $100 on your Shopify or Stripe checkout, the money does not go straight to your bank. It goes to Shopify or Stripe first. They hold it for a couple of days. They take their cut. They net out any refunds, chargebacks, or app fees. Then they batch up several days of activity into one deposit, called a payout, and wire that to your bank.

So at any given moment, there is real money that legally belongs to you but is sitting in someone else’s account. That money is not in your bank yet. It is also not “gone.” It is in transit. You need a place on your books to track it. That place is a clearing account.

Without one, your books always look broken. With one, they balance to the cent.

What a clearing account actually is

Forget the accounting textbook for a second. A clearing account is a holding bucket on your books. It sits between Shopify or Stripe and your real bank account. Money flows into the bucket when a sale happens. Money flows out of the bucket when the deposit hits your bank.

Picture a wooden box on a shelf in your office labeled “Money Shopify owes me.” Every time someone buys a t-shirt, you write a slip and drop it in the box. Every time Shopify pays you, you take the matching slips out and clip them to the bank deposit. If the box is empty at the end of the month, your books match Shopify’s. If there are slips left over, that is money still owed to you. If the box goes negative (you took out more than you put in), something was double-counted.

The wooden box is the clearing account. That is the entire idea. The accounting textbook calls it a “transit account” or a “suspense account” or sometimes an “undeposited funds” account. The name does not matter. The pattern matters.

The reason this pattern is so widely used in real bookkeeping is that it gives you a built-in lie detector. Every transaction has to come into the bucket and leave the bucket. If the bucket does not zero out, you know something is wrong before your accountant or the tax authority does.

The canonical $100 sale, drawn out

Let us walk a single $100 Shopify sale through the bucket, step by step, with the math out loud. The same logic applies to Stripe, just with different deposit timing.

Step 1: The customer hits Pay

Customer buys a $100 t-shirt. Shopify Payments will keep about $3 in transaction fees and owe you the remaining $97. The order shows up in your Shopify admin instantly.

On your books:

  • Sales for the day go up by $100.
  • The “Shopify owes me” bucket goes up by $97.
  • Shopify fees expense goes up by $3.

The bucket now holds $97. Notice that nothing has hit your bank yet.

Step 2: Shopify holds the money for a couple of days

Standard US payouts settle 2 to 3 business days after the sale. During those two days, nothing changes on your books. The $97 just sits in the bucket. Your bank balance is still where it was. That is normal.

Step 3: Shopify wires the payout

Three business days later, $97 lands in your real bank account.

On your books:

  • Bank account goes up by $97.
  • The “Shopify owes me” bucket goes down by $97.

The bucket is now empty. Fully reconciled. The $100 sale, the $3 fee, and the $97 deposit all line up perfectly. You can prove every dollar to the IRS, your accountant, your investor, or anyone else who asks.

Now scale it to a real store

A real Shopify store does this hundreds of times per day, mixed with refunds, chargebacks, gift cards, and capital repayments. The exact same pattern handles all of it. The bucket fills up during the day, drains down each time a payout settles, and should always trend toward zero. The only money that should be sitting in the bucket at any given time is the last 2 to 3 days of sales that have not been paid out yet. That is called in-flight money, and it is normal.

If you want the formal version with debits and credits, the Shopify integration architecture page walks through the actual journal entries our connector posts. For this post, the bucket metaphor is the whole story.

Why Stripe needs the same pattern

Everything above applies to Stripe too. The numbers and the timing change, but the logic is identical.

A Stripe sale moves through the same three stages. The customer pays $100. Stripe takes its 2.9% plus 30 cents (so about $96.81 to you). Stripe holds the money in your Stripe balance for the standard 2-day rolling window for new accounts (or 7 days, or T+0, depending on your country and account type). Then Stripe batches up several charges into a payout and wires it to your bank.

If you have a Stripe Clearing account on your books, every successful charge fills the bucket and every payout drains it. Subscription renewals do the same thing. Refunds reverse the original entry in the bucket. Disputes hold money in reserve until they resolve. Application fees on Stripe Connect get netted out the same way Shopify Capital does.

The reason this matters even more for Stripe than for Shopify is that Stripe is often used for SaaS, marketplaces, and services where the gross-revenue number matters for ASC 606 revenue recognition, MRR reporting, and investor metrics. If you book the bank deposit as your revenue, your MRR is wrong, your gross margin is wrong, and your audit will be painful. The Stripe clearing account is what keeps gross revenue and net deposits clearly separated.

The Stripe integration architecture page goes deeper on the GL postings if you want to see the actual entries.

A2X invented this for ecommerce, but the pattern is older than the internet

Quick history note. The clearing account pattern has been in accounting textbooks for at least 80 years, used by every business that ever waited for a check to clear. What was new, around 2014, was applying the pattern in software, automatically, to Shopify payouts.

The credit goes to A2X. They were the first tool to look at the mess of “Shopify deposit minus fees minus refunds minus reserves” and say: stop trying to match the deposit to your sales. Match the deposit to the bucket, and match the bucket to your sales separately. Their summary-journal-entry approach became the de facto standard for serious ecommerce accounting, and the same approach is now used by Synder, Bookkeep, Webgility, and basically every payments accounting tool that ships in 2026.

What breaks the clearing balance

The clearing account is your truth-teller. When it does not zero out, something is wrong. After helping a lot of stores debug this, the broken clearing balance almost always comes from one of four causes.

1. Manual bank entries that bypass the bucket

Someone records the Shopify deposit straight to “Sales” instead of routing it through the clearing account. Now the bucket has the original sales sitting in it forever, and the bank deposit is double-counted as revenue. Classic mistake when a bookkeeper joins mid-year and was not told the pattern.

The fix: delete the manual bank entries and let the Shopify connector handle the deposit. If you really need to enter it by hand, post it as a transfer from the clearing account to the bank, not as new income.

2. Refund duplication

A customer returns a $50 item. Shopify refunds them. Your accounting tool catches the refund webhook and reverses the original entry, then your bookkeeper sees the negative number on the bank statement and reverses it again. The clearing account is now $50 short.

The fix: pick one source of truth for refunds and trust it. Do not record refunds twice.

3. Dispute reserves not handled

A customer disputes a $200 charge. Stripe or Shopify pulls $200 plus a $15 dispute fee out of your next payout and parks it as a reserve until the dispute resolves. If your books only know about “sales” and “fees,” that $215 looks like a missing payout.

The fix: have a separate Dispute Reserve account on your books. When the dispute resolves in your favor, the reserve releases back into the clearing account. When you lose, the reserve becomes an expense.

4. Currency conversion

You sold in EUR. Stripe paid you in USD. The conversion rate Stripe used and the rate your bank used disagree by a fraction of a percent. The clearing account is now $1.71 off. This will happen forever and is not an error. Record the difference as a foreign exchange gain or loss and move on.

How to fix a broken clearing balance

If your Shopify Clearing or Stripe Clearing account is sitting at a non-zero balance and it is not just in-flight money, here is the order to debug.

  1. Pull the clearing account ledger for the last 30 days. Look at the running balance day by day.
  2. Find the day it stopped zeroing out. That is your culprit window.
  3. Compare every entry in the bucket against the source. Pull Shopify or Stripe’s reports for the same window. Every entry in the bucket should map to a real event on the platform side.
  4. Look for the four causes above. Manual bank entry? Refund booked twice? Dispute reserve missing? Currency conversion?
  5. Post a correcting entry, not a fudge. Resist the urge to “plug” the balance with a journal entry to “Other Income.” That hides the problem and will repeat next month. Find the root cause, post the correction with a note explaining why, and move on.

For most stores, the first time you do this exercise it takes an afternoon. After that, if you have automation in place, the clearing account stays clean by itself.

Automating the pattern

The pattern is universal, but doing it by hand at any real volume is painful. ERPClaw runs the clearing account pattern automatically for both Shopify and Stripe, on hardware you control. You pair it to your store and your Stripe account, and from then on every order, payout, refund, dispute, and reserve flows through a clearing account you can audit at the per-transaction level. Because ERPClaw is AI-native, you ask the assistant “show me the Stripe clearing balance for last week and break out anything older than 3 days” in plain English instead of clicking through a reports menu. The Shopify features page and Stripe features page cover the install; the pricing page is mostly empty.

Most merchants check the clearing balance once a week, see “$0.00 balanced” or “$1,247 in-flight (last 2 days),” and move on. That is the whole reconciliation. No spreadsheet, no Saturday morning, no surprises in April.

FAQ

What is a clearing account in plain English?

A clearing account is a holding bucket on your books that sits between a payment processor (like Shopify or Stripe) and your real bank account. Sales fill it up. Payouts drain it down. When the bucket is empty, you are fully reconciled. The pattern is used so the deposit on your bank statement does not have to match your sales total directly.

Is a Shopify clearing account the same as a Stripe clearing account?

The pattern is identical. The accounts are separate (you would normally have one Shopify Clearing account and one Stripe Clearing account, so each platform’s activity stays auditable on its own). Both follow the same logic: sales in, fees and refunds out, payouts out, balance trends to zero.

Where does the clearing account live in QuickBooks or Xero?

You create it as a current asset account, usually called “Shopify Clearing” or “Shopify Payments Clearing” (and the same for Stripe). It is treated as money owed to you, so it sits next to your bank accounts on the balance sheet. The official Shopify Payments documentation explains the payout structure that the clearing account is designed to absorb.

Why does my clearing account never quite zero out?

Two reasons, one normal, one not. The normal one is in-flight money: sales from the last 2 to 3 days that have not been paid out yet. That should always be there during business hours. The not-normal one is one of the four causes above (manual bank entry, refund duplication, dispute reserve, currency conversion). If the balance is bigger than 2 to 3 days of typical sales, you have a real error to chase.

Do I need a clearing account if I am a tiny store?

Honestly, yes. Even at 10 orders a month, the moment you take your first refund or your first chargeback, the math without a clearing account stops working. Set up the pattern from day one and it will scale with you to 10,000 orders.

Can I do this with just spreadsheets?

You can, and a lot of solo founders do at the start. The pattern is the same. You just maintain the bucket in a sheet column and tick off entries as payouts settle. It works fine up to about 50 orders a month. Past that, you want either middleware (A2X, Synder, Bookkeep) or an integrated system (ERPClaw) doing it for you. The official Stripe Payouts documentation is worth reading regardless, since it explains exactly when money moves and why.

Is the clearing account different from “undeposited funds” in QuickBooks?

Same idea, different name. QuickBooks calls a generic clearing account “Undeposited Funds” by default. Shopify- and Stripe-specific clearing accounts are usually created as separate current asset accounts so each platform’s activity stays separated. That separation is what lets you audit each platform on its own.

Closing thought

The clearing account pattern is one of those ideas that sounds boring until you have lived through the alternative. Once you have spent one Saturday morning trying to make a Shopify deposit equal a sales total that it was never going to equal, the bucket metaphor clicks and never leaves you. It is the pattern that turns “my books always look broken” into “my books balance to the cent every week.”

If you want it running automatically against your Shopify store or Stripe account, the Shopify integration and Stripe integration ship with the pattern built in. If you would rather keep using your existing tools, just set up the clearing account in QuickBooks or Xero and route every Shopify or Stripe entry through it. Either way, the bucket is the answer.

Tags clearing-accountshopifystripeaccountingeducation