Invoiced Isn't Revenue, and Paid Isn't Cash
Cade Cunningham
Author

So I spent a long time in finance before I did this, and the thing I still find myself explaining more than anything else is that money has states, and the software almost never tells you which state you're looking at. You open a dashboard, it says revenue, and it's a number. What it doesn't say is whether that number is what you billed, what people started paying, what the processor accepted, what's sitting in your Stripe balance, or what actually hit the bank. Those are five different numbers, and on any given Tuesday they can be tens of thousands of dollars apart.
So let me go through the states in order, because the order is how the money moves.
Invoiced
You sent a bill. That's it. Nothing has happened yet except that you told somebody they owe you. On an accrual basis this is revenue, and your accountant is right to book it that way, but if you're the one making payroll, invoiced money is a promise, not a balance.
Pending
Somebody initiated a payment and it hasn't settled. A card was run, an ACH was started, a check is on its way. This is where most of the trouble lives, because a lot of software shows pending money in the same color as paid money.
And I'll tell you exactly why I'm writing this one this week. Last week we found a place in our own numbers where a payments system's pending status was being counted as cash collected in a month-to-date figure. For one customer that overstated cash collected by about $100,000 before we caught it. Nothing was wrong with their data, and the status was right. The mistake was ours, treating everything that wasn't marked failed as money in hand. So we fixed it the way it should have been built in the first place. Cash collected is an allow-list now. A payment counts as cash only if its status is one of the handful that actually mean settled, like completed, paid, succeeded or captured. Anything else isn't cash yet, no matter how likely it is to become cash.
Paid
The processor says the charge succeeded. The customer is done. You're not, because the money is in the processor's balance, not yours.
With Stripe in the US, for example, funds from a charge settle two business days after it's captured, and if your account is new, the first payout takes 7 to 14 days. Payouts that would land on a weekend or a holiday move to the next business day. So a card that ran Thursday afternoon is paid in every report you own and is not in your bank account until Monday. Stripe's own balance report splits your balance into available, pending and reserved, and if you've never looked at that report, it's worth ten minutes, because it's the honest version of your Stripe number.
And paid is not the full amount either. At Stripe's standard 2.9% plus 30 cents on a domestic card, a $1,000 invoice paid by card lands as $970.70. Your invoicing system says $1,000. Your bank says $970.70. Both are right, and if you're reconciling by hand, that $29.30 is the thing you'll spend twenty minutes looking for.
In the bank
The payout hit. Now it's cash. And even here there's one more wrinkle, which is that the bank sees one deposit and your books see several payments. QuickBooks handles this with an Undeposited Funds account, which Intuit describes as a temporary lockbox. Five $100 checks from five customers get held there and then recorded as the one $500 deposit the bank actually shows. If you skip that step, you've got five payments and one deposit and a reconciliation that will never tie out.
Voided and refunded
And then some of it goes backwards. A voided invoice was never money. A refund was money and now isn't, and it usually comes with the original processing fee not coming back. If your revenue number doesn't subtract these, it's a gross number pretending to be a net one.
What to do with this
So the practical version is, never let anyone hand you one number called revenue. Ask which state it is. Better, ask for all five side by side for the same window, invoiced, pending, paid, in the bank, and voided or refunded. The gap between invoiced and in the bank is your collections problem. The gap between paid and in the bank is just time and fees, and once you know it's two business days plus 2.9%, it stops being scary.
That's how we lay it out in Liaison. The finance view shows Cash, Pending, Invoiced, Outstanding and Voided as separate blocks, pulled from the payment processor and the books directly, and cash only counts settled statuses, because we learned that the expensive way last week. Every block opens to the transactions underneath it, so when a number looks wrong you can see which state it's in instead of guessing. We've written before about what happens when AI sits on top of numbers that aren't ready, and this is the most common way they aren't ready.
Invoiced isn't revenue you can spend. Paid isn't cash you can spend. Only the last state is, and the whole job is knowing how far away from it you are. If your numbers come to you as one blob called revenue, let's pull them apart on a call.
Share this article
Related Articles

A Spreadsheet Column Changed Type and Almost Put 146 People Back on the Roster
Nothing in the data was wrong. A spreadsheet column was re-saved as text, our reader saw blanks, and a perfectly clean dry run was about to put 146 departed reps back on a customer's roster. Reading the delta's shape caught it.

The Customer Who Went Quiet
Most businesses find out a customer left when the customer tells them. The signal was sitting in the invoices, the processor, the inbox and the CRM for weeks. Four rules that catch it while it's still cheap.

Month-End Close in Hours, Not Days: The Actual Steps
The close takes four days because it's when everybody catches up. Seven steps in the right order, and the reason five of them should happen during the month so the first of the month is an hour of checking boxes.