As of 2026, customer deposits remain common but often get misunderstood in accounting. Whether you're running a small business, freelancing, or handling books for someone else, calling a deposit income can land you in hot water with compliance, taxes, or messy financial statements. Here’s a no-nonsense troubleshooting guide to handling customer deposits the right way in your books.
Quick Fix Summary
When a deposit lands in your account, debit Cash and credit a Customer Deposits liability account in your general ledger. Never treat it as income right away. Hang onto the contract, receipt, or invoice that proves why you got the money. Once you’ve earned the revenue, flip the liability to income.
What’s really going on here? Deposits aren’t income
Customer deposits are cash you get before you deliver goods or services. They’re not revenue—they’re liabilities sitting on your balance sheet under Current Liabilities or Unearned Revenue, depending on how you set up your chart of accounts. As of 2026, U.S. GAAP and IRS rules still require this approach to stop businesses from counting money they haven’t actually earned yet. That keeps earnings and tax bills honest.
Say a custom furniture shop takes a $5,000 deposit for a handmade dining set. That cash isn’t taxable in the year it arrives. It only becomes income when the set is delivered and the liability is cleared. The IRS spells this out in Publication 538: advance payments are taxable only when you’ve earned them.
How to record a customer deposit step by step
Here’s how to log a deposit in your accounting software—QuickBooks Desktop 2026, QuickBooks Online, Xero Business, or Sage 50 Accounting. The steps are basically the same everywhere, unless noted.
- Set up a liability account
- In QuickBooks Desktop: go to Lists > Chart of Accounts > Account > New.
- Pick Other Account Type > Other Current Liability.
- Call it “Customer Deposits” or “Unearned Revenue.”
- Save it.
- Log the deposit
- Open the Make Deposits window (Desktop) or + New > Bank Deposit (Online/Xero).
- In the Received From field, pick the customer—create one if they’re new.
- In the Account field, choose the bank account where the deposit landed.
- In the From Account field, select the new “Customer Deposits” liability account.
- Type the deposit amount in the Amount column.
- Add a memo—something like “Deposit for custom sofa, Contract #SO-2026-045.”
- Save and close.
- Double-check the entry
- Pull a Balance Sheet report (Reports > Company & Financial > Balance Sheet Standard).
- Make sure the deposit shows up under Current Liabilities > Customer Deposits.
- Peek at the General Ledger to confirm a debit to your Bank Account and a credit to Customer Deposits.
If the deposit isn’t showing up right, try these fixes
Deposits can slip through the cracks. Here’s what to do when things go sideways, depending on your setup:
- Oops—used a sales receipt instead of a deposit
- In QuickBooks Online, if you accidentally created a sales receipt, undo it by making a credit memo (Customer > Create Credit Memos/Refunds) for the same amount.
- Then record a fresh deposit using Make Deposits and link it to the Customer Deposits liability account.
- What about non-refundable deposits?
- Even if a deposit is non-refundable—say, a reservation fee—it’s still a liability until you’ve earned it.
- But if it’s truly non-refundable and can’t be clawed back, talk to a CPA. Under some rules, it might need to be booked as income right away.
- Long projects and installment revenue
- For deposits tied to projects that drag on past a year—think construction or software builds—use percentage-of-completion accounting.
- Set up a Long-Term Liability account in your software and recognize revenue as you hit milestones.
- In QuickBooks Desktop: Lists > Chart of Accounts > New > Long Term Liability.
How to stop deposit errors before they start
Put these controls in place so deposits never trip you up:
- Lock down contract wording
- Spell out the deposit amount, whether it’s refundable, and when you’ll fulfill the deal.
- Example: “A non-refundable 30% deposit is due on signing; the rest is due when we deliver.”
- Let software do the heavy lifting
- In QuickBooks Online, set an automated rule to flag any sales receipt coded to income that’s over $1,000 and isn’t tied to a signed contract.
- In Xero, use Bank Rules to auto-dump deposits into a “Pending Revenue” liability account when they come from unknown customers.
- Reconcile and review every month
- Each month, run a Customer Deposits Aging Report (Custom Reports > Transaction List by Date, filtered for the Customer Deposits account).
- Match open deposits to active contracts. If something doesn’t line up, you might be missing an invoice or lost paperwork.
- Check tax and compliance rules
- Make sure your deposit handling lines up with state sales tax laws—some states tax deposits when you get them.
- Loop in your CPA during year-end close to confirm every deposit has flipped to revenue properly.
| Scenario | Account Type | Balance Sheet Location | Action When Earned |
|---|---|---|---|
| Refundable deposit for service | Current Liability | Customer Deposits | Debit Customer Deposits; Credit Service Revenue |
| Non-refundable reservation fee | Current Liability (until earned) | Unearned Revenue | Recognize as income upon fulfillment |
| Long-term project deposit (18 months) | Long-Term Liability | Other Liabilities | Recognize revenue monthly via accrual |
| Security deposit for lease | Current Liability | Customer Deposits | Offset against future rent or return at lease end |
Stick to this guide and your deposits will be logged cleanly, your financials will show real obligations, and your tax filings will stay compliant in 2026. If anything feels shaky—especially with tricky contracts or multi-year deals—run it by a licensed CPA or tax pro. Deposits aren’t just cash; they’re promises, and your books should reflect that.
