Most shops close the month "when the bookkeeper gets to it" — sometimes 4-6 weeks later. By then, anything wrong is hard to fix. Here's the 90-minute monthly close routine.
Day 1 of new month — quick close (30 min)
Wait until 9 AM Day 1 to let any last-day-of-month Stripe payouts post.
### Step 1 — Confirm all jobs from last month are closed
Settings → Jobs → filter "last month" + status "in progress" or "ready for pickup". Should be zero or close to zero. Anything outstanding from prior month: chase it down, finalize the invoice.
### Step 2 — Confirm all invoices issued are reflected
Settings → Reports → Revenue by date → last month. Sum should match what you intuitively expected.
If revenue looks wrong: - Check if any jobs completed but weren't invoiced - Check if any invoices were voided mid-month - Reconcile against your Stripe dashboard
### Step 3 — Stripe payout reconciliation
Stripe Dashboard → Payouts → filter last month. Sum should match what landed in your bank.
In SalesThumb: Settings → Payments → Payout log → last month. Sum should match Stripe.
Discrepancies usually trace to: - ACH transfers that pending vs. settled crossed the month boundary - Refunds processed in the new month for old-month payments
Day 1-3 — Deep close (60 min)
### Step 4 — QBO sync confirmation
Settings → QuickBooks → Sync log → last month. Confirm:
- All paid invoices synced
- All refunds synced
- All Stripe fee entries posted
- No failures left unresolved
If failures: resolve them or escalate to support.
### Step 5 — Tip payouts
Settings → Tips → Payout log. Confirm last month's tips paid out to staff. Outstanding tip liability should be near $0 after all weekly payouts.
If outstanding: trigger a final tip payout to close the month.
### Step 6 — Inventory cycle count (the hardest step)
Settings → Inventory → Cycle count.
For each high-cost SKU: - Physically count what's in inventory - Compare to SalesThumb's running count - Investigate any variance >5%
Common causes of variance: - Tech consumed material but didn't mark the job - Material was used for re-do (warranty) without proper allocation - Theft (rare but real — usually small amounts that add up)
Adjust SalesThumb's count to match physical reality. Note the variance in the cycle count log.
Day 4-5 — Reports + analysis (30 min)
### Step 7 — Run monthly story report
Settings → Reports → Monthly story → last month → Generate.
Review: - Revenue total vs. prior month - Job count vs. prior month - Average ticket - Close rate - Bay utilization - Margin by service - Top 5 customers (by spend) - New vs. returning customer split
Note the 2-3 most-important takeaways for next month.
### Step 8 — Compare actual vs. budget
If you have a monthly budget: - Revenue: actual vs. budget - COGS: actual vs. budget - Labor: actual vs. budget - Operating margin: actual vs. budget
Anything off by >10%: investigate before next month repeats it.
### Step 9 — Team review
Hold a 30-min team meeting with managers: - Last month's numbers - 2-3 wins - 2-3 misses + plan to address - 1-2 focus areas for new month
Month-end edge cases
- Service performed in last month, invoiced in new month: revenue belongs to last month (accrual) per accounting standards. SalesThumb's revenue date defaults to invoice date; adjust manually if you accrue.
- Deposit paid last month, service performed this month: deposit revenue recognition varies. Most shops recognize at service completion; some at deposit. Pick one method and stick to it (talk to your CPA).
- Refund issued this month for last month's job: shows as negative revenue in current month, OR adjust last month's revenue and disclose the adjustment.
Annual close
December 31 close is the same routine, plus:
- 1099-NEC issuance for contractors over $600
- W-2 prep for employees
- Inventory physical count (full count, not just cycle count)
- Year-end P&L for tax filing
Start year-end close on Dec 28, finish by Jan 15.