1) Module HUD
- Module #: 6 / 13
- Time: 25–35 min
- Outcome: “After this, you can run progress billing + deposits/retainers in QBO without double-counting revenue, breaking A/R, or leaving money stuck in Undeposited Funds.”
- Prereqs: [Module 5 — Advanced Products & Services (Start simple → grow)]
- Stop here if: you invoice in simple phases and you’re fine with deposits being handled as early payments against invoices (no liability tracking).
- Level tags used in this module: ✅ Baseline / 🛠️ Operator Upgrade / ⚠️ Advanced
2) Answer Box (snippet block)
- What it is (2 lines)
A clean set of workflows for progress invoices and upfront money (deposits/retainers).
You’ll pick one path and stop before you overbuild. - When to use it (2–4 bullets)
- You bill in phases (deposit / rough-in / trim / final)
- You take upfront money before work is complete
- You want A/R to stay believable
- You want revenue recognition to match your intent (simple vs CPA-style)
- The common mistakeS (1-2 line)
Recording deposits as income and then invoicing later (double revenue), or using Undeposited Funds like it changes revenue (it doesn’t). - The fixES (1-2 line)
Choose one workflow and stick to it: simple phase invoicing, estimate-based progress invoicing, or deposits tracked as a liability.
3) The mental model (keep short)
- Invoice is what posts revenue (not the bank deposit).
- Undeposited Funds is a holding step for payments not yet deposited—nothing more.
- Deposits can be handled two ways:
- Simple: deposit is an early payment against an invoice
- CPA-style: deposit sits in a liability until applied/earned
- Mixing methods mid-job creates weird A/R and garbage reporting.
4) Do this in QBO (step-by-step)
Choose your path (Start simple → grow)
- Pick ONE path:
- ✅ Path A: Simple progress invoices + payments (fast, reliable)
- 🛠️ Path B: Estimate-based progress invoicing (cleaner phase consistency)
- ⚠️ Path C: Deposits/retainers as a liability until earned (most CPA-style)
✅ Path A — Simple progress invoices (stop after Step 7)
- Create the phase invoice:
- Go to + New → Invoice
- Select the customer
- (If you use jobs) select the Project
- Add a clear phase description: “Progress #1 – Rough-in”
- Repeat for each phase invoice (Progress #2, Final) as work is earned
- Receive the payment:
- Go to + New → Receive payment
- Select the invoice being paid
- Deposit to Undeposited Funds (if batching) or your bank account (if not)
- If using Undeposited Funds, complete the deposit:
- Go to + New → Bank deposit
- Select the payments from Undeposited Funds
- Choose the bank account
- Keep deposits simple:
- If you take “a deposit,” make it a phase invoice (Deposit / Mobilization) and receive payment against it
- Stop here marker (Path A):
If A/R is believable and you can find every payment tied to an invoice, stop.
Pro tip: If you want fewer arguments, put the phase name on the invoice. Memory is not a system.
🛠️ Path B — Estimate-based progress invoicing (stop after Step 12)
- Build the estimate/SOV once:
- Go to + New → Estimate
- Add scope lines using your items from Products and services (Rough-in, Trim, etc.)
- Save
- Generate progress invoices from the estimate workflow you use:
- Create an Invoice based on the estimate for the phase/portion earned
- Receive payment using Receive payment and apply it to the progress invoice
- Deposit payments using Bank deposit if you batch via Undeposited Funds
- Stop here marker (Path B):
If invoices stay consistent with the estimate/SOV and collections are clean, stop.
Warning: Don’t freehand new phase lines if your estimate is your control doc. That’s how scope control evaporates.
⚠️ Path C — Deposits as a liability (explicit, repeatable) (stop after Step 18)
- Create the liability account (one-time):
- Go to Accounting → Chart of accounts → New
- Account type: Other Current Liabilities
- Name: Customer Deposits (or Unearned Revenue)
- Create a deposit item mapped to the liability (one-time):
- Go to Sales → Products and services → New → Service
- Name: Customer Deposit
- Map the income/account to the liability account (Customer Deposits)
- Take the deposit using an invoice (keeps A/R clean):
- Go to + New → Invoice
- Add item: Customer Deposit
- Amount = deposit amount
- Receive the deposit:
- Go to + New → Receive payment
- Apply to the deposit invoice
- Deposit to Undeposited Funds (if batching) or bank account
- When you bill earned work later:
- Create your normal progress Invoice for earned work (income items)
- Add a negative line to apply the deposit:
- Item: Customer Deposit
- Amount: negative value (example: -5,000)
- This reduces the invoice total and reduces the liability balance
- Stop here marker (Path C):
If your Balance Sheet shows deposits sitting in the liability until applied, stop.
Pro tip: The deposit item is the “valve.” It lets you move money from liability to earned billing cleanly without inventing weird journal entries.
5) Real-world example (mandatory)
Job: Contract $20,000
Deposit $5,000
Progress #1 $7,000
Progress #2 $6,000
Final $2,000
✅ Path A
- Invoice Deposit/Mobilization $5,000 → Receive payment
- Invoice Progress #1 $7,000 → Receive payment
- Invoice Progress #2 $6,000 → Receive payment
- Invoice Final $2,000 → Receive payment
Result: simple, consistent A/R and revenue timing tied to invoices.
⚠️ Path C (liability)
- Deposit invoice uses item “Customer Deposit” mapped to liability
- Later progress invoice includes:
- Earned work items $7,000
- Customer Deposit -$5,000
Customer owes $2,000 on that invoice, and the liability drops by $5,000. Clean.
6) Run this report now (mandatory checkpoint)
- Report name: Balance Sheet
- Filters/settings:
- Date = today
- Click Run report
- What “good” looks like:
- A/R is believable (open invoices match reality)
- (Path C) Customer Deposits liability shows unapplied deposits
- Undeposited Funds is not ancient or bloated
- What “broken” looks like:
- A/R negative or wildly off
- Deposits counted as revenue twice
- Payments parked in Undeposited Funds forever
- One fix if broken:
- Clear deposits correctly using Bank deposit and verify payments are applied to invoices in Receive payment.
7) Lab (do it on your file)
- [PASS/FAIL] You picked a path (A, B, or C) and wrote it down
- [PASS/FAIL] You created at least 2 progress invoices for one job
- [PASS/FAIL] You used Receive payment and applied it to the correct invoice
- [PASS/FAIL] If using Undeposited Funds, you cleared it using Bank deposit
- [PASS/FAIL] You ran Balance Sheet and A/R looks believable
- [PASS/FAIL] (Path C) You created Customer Deposits liability + Customer Deposit item
- [PASS/FAIL] (Path C) You applied a deposit using a negative Customer Deposit line on a later invoice
- [PASS/FAIL] You can explain: what posts revenue (invoice) vs what posts cash (deposit)
8) Knowledge check (3 questions)
- What posts revenue in QBO: Invoice or Receive payment?
- What is Undeposited Funds actually for?
- In Path C, what reduces the deposit liability when you bill earned work?
9) Next + Related
- Previous: [Module 5 — Advanced Products & Services (Start simple → grow)]
- Next: [Module 7 — Change Orders]
- Related modules (2–3)
- [Module 10 — Monthly Close in QBO]
- [Module 11 — QBO Cleanup / Rebuild]
- [Module 9 — Enhanced Job Costing & Profit Reporting]
- Don’t do this warnings
- Don’t record a deposit as income and then invoice later. That’s double revenue.
- Don’t use Undeposited Funds as a revenue workaround. It doesn’t work.
- Don’t mix paths mid-job unless you like detective work.
Fast now = slow forever.
FAQ (short)
What’s the simplest progress billing workflow?
Phase invoices in Invoice, payments in Receive payment, deposits cleared with Bank deposit if using Undeposited Funds.
How do I track deposits without counting them as income yet?
Use Path C: a liability account + a deposit item mapped to that liability, and apply it later with a negative line item.
Why is my A/R weird after deposits?
Payments weren’t applied to invoices correctly, or deposits weren’t cleared from Undeposited Funds.
