Skip to content

SOP: money — reconciliation, AR & ROAS

Chase checking + credit-card transactions are pulled automatically every morning into the read-only Bank Transactions ledger (Admin area). Balances show at the top — checking, credit-card owed, and net cash position. Cash never appears here by definition — it’s tracked through tech balances.

Goal: every Chase transaction gets accounted for. The auto-matcher does most of the work; the team confirms and fills gaps.

flowchart TD
PULL[Daily automatic pull + auto-matcher] --> TAB[Open Bank Transactions<br/>Needs review tab]
TAB --> SUG{Suggested match shown?}
SUG -- Yes --> OK["Confirm it (one click)"]
SUG -- No --> MAN[Match manually:<br/>job payment / part purchase / tech payout / misc]
OK --> ZERO{Badge at zero?}
MAN --> ZERO
ZERO -- No --> TAB
ZERO -- Yes --> DONE[Week reconciled]
  1. Open Bank Transactions — it lands on the Needs review tab (badge = open items).
  2. Confirm each suggested match (✓). Suggestions only appear when there’s exactly one candidate, so they’re safe to trust — but glance at them.
  3. Match the rest manually: pick the kind —
    • Job payment — incoming Zelle/CC → the job’s customer payment
    • Part purchase — vendor charge → the job(s) it was for (one charge can cover several)
    • Tech payout — outgoing Zelle → that day’s End-of-Day payout (matched on the net amount)
    • Misc — Google Ads, card autopay, bank fee, transfer, refund, other
  4. Repeat until the badge hits zero. Unmatch undoes any mistake.

Obvious recurring items (Google Ads charges, Chase card autopay, fees) are auto-matched with no review needed. If a new glass supplier shows up, ask Claude to add it to the parts-vendor keyword list so their charges auto-suggest.

Admin → Finance → Accounts Receivable shows two buckets — work through both regularly:

  • Awaiting payment — work is complete but no payment recorded. Action: Record payment.
  • Collected · unconfirmed — a non-cash payment (Zelle/Venmo/Stripe) was recorded but hasn’t been verified against the bank yet. It clears automatically when the bank reconciliation matches it, or hit Confirm received if you’ve verified it by hand.
  • Cash is always considered confirmed (the tech-balance system tracks it).

Weekly per-location: Ads spend + leads vs booked revenue & profit (revenue = job quote; profit = quote − part cost − tech pay; attributed to the week the job was created; lost/canceled excluded). Ad metrics pull automatically every morning from Google Ads.

Caveats to remember when reading it:

  • Insurance jobs understate revenue — the quote is just the deductible; the carrier’s payment isn’t counted (by design, for now).
  • If ad metrics stop updating, the Google OAuth token likely expired — flag to Alex/Claude.