Help & guide
How each part of the app works. Opened from a page, this jumps to that page’s section.
Cash Flow
The home page is your weekly triage: a single running-cash ledger in date order, starting from the bank balance. Each row moves the running total; it turns red where you’d go negative.
- Deposits (Square in-transit + receivables) add to cash on their date.
- Reserved rows (🔒) are non-negotiable — critical vendors, recurring obligations, and artist payouts. They’re always subtracted.
- Discretionary bills are ranked by Claude; Snooze one to free its cash for the next priority (the running total updates instantly), or Mark paid.
- Every QBO-backed bill has a “QBO ↗” link to open it in QuickBooks for troubleshooting.
- Available to allocate = bank balance + counted Square deposits − reserved − safety buffer. Receivables are shown for context but not counted (too unpredictable).
Receipts
Every vendor invoice the bills pipeline processes lands here — whether it posted to QBO or needs a look — so you can correct what the AI read and book it, with no email back-and-forth.
- Statuses: Needs review (extracted, awaiting you) · In QBO ✓(booked) · Error · Ignored.
- Expand a row to fix vendor, amount, GST, dates, expense account, etc. Saving an expense account / tax rule teaches that vendor for next time.
- Accuracy check: posted receipts show ✓ (amount + GST match QuickBooks) or ⚠ with the gap, so old/incorrect entries surface.
- PST is booked as a deductible expense line (it’s non-recoverable, so not a tax credit). Tips book with no GST.
- Combine a split expense (itemized bill + card slip): open the itemized receipt → “Combine another receipt into this one” → pick the slip → set the total. The tip is added automatically and both images attach to QBO.
- Note → QBO memo: what you type in the note posts to the QBO transaction (e.g. who attended a meal — required to substantiate meals & entertainment).
- Delete & re-post: on a posted receipt this removes the old QBO entry and books the corrected one (use it to fix the PST/old entries flagged ⚠).
- A “Posting…” badge persists while a post is in flight, even if you leave and come back.
Deposits
Turns each Square payout into a categorized QBO deposit whose total equals the bank line to the cent — the bank feed then auto-matches it. Replaces the old accept-then-adjusting-JE routine. (Eventbrite remittances aren’t split — they stay on the cash forecast and get matched in the bank feed directly.)
- Where the split comes from: Square’s own payout ledger (exact gross, fees, and the 10% loan holdback) + the catalog category of every item sold that day.
- Map once: the mapping table at the bottom ties each Square category (and the fixed roles: fees, loan holdback, tips, refunds) to a QBO account + tax code. Saving a mapping immediately fills every pending split.
- Posting rules: a split posts only when every line has an account, the lines sum exactly to the deposit (the Σ chip), and the payout has landed (“in transit” rows wait). Nothing posts without your click.
- Tax: the GST/PST Square collected rides each split as its own tax lines — the exact cents from the register, never recomputed from a rate — and income lines are pre-tax. Posting books the taxes through QBO’s sales tax module, so the Sales Tax Centre and your returns track the true obligation. Two one-time mappings: each “Square tax” row picks its QBO sales tax rate, and each taxed income category picks a QBO tax code that carries those rates (e.g. alcohol → a combined GST + PST Liquor code, soft drinks → GST/PST BC) — QBO only accepts tax amounts for rates that some line’s code carries. After every post a check verifies QBO booked the exact bank amount, and deletes + errors if not. Check the first posted deposit in QBO before doing them in bulk.
- Delete & re-post works like receipts; posted rows show ✓/⚠ against what QBO actually booked.
Vendors
Set each vendor’s tier — critical (reserved, paid first), important, or deferrable — and free-text notes. Both are fed into Claude’s ranking every run, so this is your main lever for teaching it who to pay first. Changes save as you type.
Data & obligations
The Data page validates everything ingested from QBO and is where you manage recurring items.
- Bank balance breakdown — which QBO accounts count as spendable cash (set on Settings); clearing/contra accounts are excluded.
- Forecast math — the exact available-cash calculation.
- All ingested items — every bill/inflow with its QBO id, to reconcile against QuickBooks.
- Recurring obligations — add rent, a loan paydown like SQRQ, etc. Set the amount, frequency, and an optional outstanding balance (you maintain it by hand — it isn’t auto-amortized, since it can grow or be forgiven). These appear on the cash ledger as reserved outflows each period. Overdue ones show too if you’re behind (e.g. last week’s + this week’s payment); each recurring row on the ledger has a Mark paid button. Set the obligation’s starting date to the first date you owe from.
- Long-term liabilities: for a loan vendor like SQRQ, tick “LT liability” on the Vendors page — its QBO bills move off the cash view to the Liabilities page (so they don’t distort weekly triage), and you track the real payment as a recurring obligation here.
- Artist payouts come from the event tracker (deal terms + sales): guarantees are exact, door splits are estimated from ticket sales and firm up at settlement. They show as reserved “Artist: …” rows on their settlement due date.
Settings
Safety buffer (cash you never spend below), forecast horizon(default 5 weeks), the counted bank accounts, and a manual balance override for when the QBO bank feed lags.
How “Refresh” works
One Refresh button in the top nav does everything, and the “updated …” marker next to it shows when it last ran (from the button or the nightly job). A single click runs:
- QBO open bills + bank balance + chart of accounts
- Square pending deposits
- Recurring obligations (rent, SQRQ, …)
- Artist payouts owed (from the event tracker)
- The Receipts ↔ QBO comparison (✓/⚠) + catches transactions deleted in QBO
- Re-ranks the weekly payment run
The nightly job runs the same refresh ~6 AM PDT. So if a posted receipt’s ✓/⚠ comparison is blank (e.g. just after a re-post), one Refresh brings it back.
Changelog
- Vendors page: vendors merged into another (or deleted) in QuickBooks now drop out of the priority list into a collapsible “Merged / removed in QBO” section, so triage only shows vendors you actually pay.
- Settings “Save” now confirms with “Saved ✓” (and shows “Saving…” while it works). Changing your bank balance auto-re-runs the analysis, so the dashboard text isn’t stale — unless this week’s run is already approved, which is left untouched.
- Recurring obligations (rent, SQRQ…) can now be mapped to a real QBO vendor, so they stop showing as “Unknown” on the dashboard — and they’re editable right on the Liabilities page (add/edit/delete), not just Data.
- A long-term-liability vendor’s recurring obligation now appears on the weekly cash view (mapped to the vendor) as the real cash commitment, while its underlying QBO bills stay on the Liabilities page.
- Cash is installable as an app: an “Install app” button appears in the nav (Chrome/Edge desktop + Android; on iPhone use Share → Add to Home Screen). Opens in its own window with a Cash icon.
- Deposits: one-time backfill to catch up older payouts beyond the usual 14-day window — visit /api/deposits/backfill?since=2026-06-01 (signed in) and it ingests every Square payout back to that date as review-ready splits. Safe to re-run; if a big range doesn't finish in one go, hit it again to drain the rest. The everyday refresh window is unchanged.
- Deposits: “Re-build all pending” button — re-runs the classifier on every not-yet-posted split (needs-review + error) using fresh Square data and your current mappings, in one click. Use it after changing a mapping or fixing a Square tax setting. It replaces those splits' draft lines, and deliberately leaves alone anything you've hand-edited (so your edits aren't lost) and anything already posted. A confirmation spells this out before it runs; a large backlog rebuilds in batches (click again to continue).
- Deposits: fixed QBO “429” rate-limit errors during “Post all ready” — deposit posts now run one at a time (QBO throttles per company, and the company is shared with our other tools), and any transient 429/503 now backs off and retries automatically instead of failing the split. Bulk posting a backlog just takes a little longer; nothing errors out.
- Deposits: “Post all ready” button — one click books every reviewed split that's mapped, balances to the cent, and has landed; anything needing attention is skipped and reported. (Never touches already-posted splits, so no re-match dance.)
- Deposits: fixed “in transit” sticking on payouts that are already in the bank — a payout now counts as landed once its deposit date is today or past, not only when Square's (refresh-stale) status flips to PAID.
- Deposits: the “Lands” column is now “Deposit Date” (the date the QBO deposit is dated / the bank-feed match date).
- Deposits: each split now shows when it was Built/Rebuilt, last Edited, and Posted to QBO (expand the row).
- Deposits: the mapping table now expresses INTENT (what each category should collect — e.g. Cover/Tickets → GST only), and the builder reconciles it with REALITY per deposit: if Square actually collected a tax the intended code can't carry, that deposit's line is coded to the smallest QBO code that can carry it, with an amber ⚠ note naming the category and the collected tax — your cue to fix the Square item/channel settings. Once Square matches the intent, the override stops firing by itself.
- Cover/Tickets and Uncategorized are mapped back to your intent (GST); the tax-code snapshot now records each code's rate composition to power the check (kicks in from the next Refresh).
- Deposits: after a SUCCESSFUL post, if what Square collected doesn't match what the coded sales imply at their rates (e.g. covers charged 7% PST on the door but $0 online), the row shows an amber ⚠ note with collected vs expected per rate — a pointer to fix the Square tax settings. The deposit itself always books the exact collected amounts.
- Mappings: Cover/Tickets and Uncategorized reverted to GST/PST BC — Square still collects PST on door covers, and a tax can only book if some line's code carries its rate. Rule of thumb: codes with extra rates are harmless ($0), missing rates block the post — when unsure, pick the broader code.
- Deposits: fixed posting splits where Square collected NO tax but the categories are tax-coded (e.g. untaxed online ticket sales) — QBO ignores “tax inclusive” on deposits and was adding 12% on top, drifting the total (the post-check caught it and deleted the deposit, leaving an error). Tax-coded lines now always book through the exact-override path with every code-implied rate pinned to $0.
- Deposits: each posted deposit's QBO memo now carries a visible “posted YYYY-MM-DD HH:mm PT” stamp so you can see when it was booked.
- Deposits: rows no longer jump to the top of the list while posting and back afterwards — they stay put; the “Posting…” chip shows progress in place.
- Deposits: a row stuck on “Posting…” now updates itself — the page polls while a post is in flight, so the chip flips to Posted/Error without a manual reload.
- Re-posting a deposit that's already matched in the QBO bank feed fails with a clear instruction (undo the match in Banking → Categorized first, then re-post and re-match) instead of QBO's cryptic 6480 “Matched Transaction Delete Error”.
- Deposits: diagnosed QBO's “encountered an error while calculating tax” (error 6000) on tax-aware posts — the combined “GST + PST Liquor” code in QBO was built from the 0% “GST ES” (exempt) rate instead of the real 5% GST, so QBO couldn't allocate the GST override across the alcohol lines. The poster now catches this shape before posting: when a tax amount implies more taxable sales than the lines carrying that rate add up to, it fails with a plain-English error naming the suspect tax codes. Fix in QBO: recreate the combined code from the real GST 5% + PST Liquor 10% rates, remap alcohol categories, Re-build, re-post.
- Deposits: an open split row now updates on screen when its lines change server-side (Re-build, a mapping save refilling pending splits, a refresh upgrade). Before, the row kept showing its old lines until a full page reload — which made Re-build look like it hadn't applied the new tax codes.
- Deposits: fixed the “Invalid Tax Rate” post error — QBO only accepts tax amounts for rates carried by some line's tax CODE, so taxed income categories now need a code (one-time, in the mapping table: alcohol → a combined GST + PST Liquor code, soft drinks → GST/PST BC, food → GST). The poster validates this up front with a plain-English error naming the right codes, and pins any extra code-implied rate to $0 so QBO can't drift the total.
- Deposits: investigating QBO's “Invalid Tax Rate” on tax-aware posts — added a read-only tax-structure diagnostic (/api/refresh?debug=taxes) and rate-id logging on the poster.
- Deposits: “Re-build” now clears a split's old post error (and flips Error back to Needs review) — a fixed split no longer keeps shouting last attempt's failure.
- Tax names with special characters (e.g. “GST/PST Liquor (Sales)”) display and match correctly — QBO returns them HTML-encoded and they're now decoded everywhere.
- Deposits: the tax pickers are now dropdowns of your REAL QBO names — income lines pick from your tax codes, tax lines from your sales tax rates (e.g. “PST Liquor (Sales)”) — snapshotted from QBO on every Refresh. No more free-typing names QBO has to match; a saved name QBO doesn't recognize shows with a ⚠.
- Posting is also more forgiving: a tax line named “GST” finds your “GST (Sales)” rate automatically when the match is unambiguous.
- Deposits: “Re-build” is now available on POSTED splits too — re-posting an old split reused its pre-tax-passthrough lines (deposit landed “Out of Scope of Tax” in QBO). Now: Re-build (pulls fresh tax-aware lines), then Delete & re-post books it correctly.
- Deposits now track your tax obligations exactly: the GST / PST (liquor 10%) / PST (7%) that Square actually collected ride each split as their own tax lines — exact cents, straight from the register — and income lines are pre-tax. Posting books the taxes through QuickBooks' sales tax module (Sales Tax Centre / returns see the real collected amounts), not as a rate re-computation.
- Map each Square tax to its QBO sales tax rate once in the mapping table (new “Square tax” rows — GST defaults sensibly; set the PSTs). A safety check after every post verifies QBO booked the exact bank amount; if its tax engine disagrees, the deposit is removed and the split shows the error instead of stranding a mismatched deposit in QBO.
- Existing pending splits upgrade themselves to the tax-aware format on the next Refresh (owner-edited and posted splits are left alone — use “Re-build” on those if you want the tax lines).
- Bank balance fixed: QBO's book balance was −$13.9k because months of deposits sit unbooked in the bank feed. The forecast now uses a working balance = QBO book balance + landed Square deposits that are still awaiting categorization on the Deposits tab (real money the books haven't caught up to). It self-corrects: each split you post moves from the adjustment into the book balance. The stat shows the math.
- Nothing is auto-reserved anymore — the buffer you set in Settings is the only held-back amount. Critical vendors and artist payouts now sit in the movable pay list with everything else (critical still ranks first); the whole list stays live so you can shuffle what little cash there is.
- Fixed the top-nav Refresh crashing the app (“Application error: a client-side exception…”): the refresh grew past its server time budget once deposit splits joined it, and the timed-out call took the page down. The budget is now 3 minutes everywhere, the refresh itself got faster, and if it ever fails again you get a “Refresh didn't finish — try again” note instead of a broken page.
- Deposits: dropped Eventbrite from the tab — EB remittances have no category split, so they stay on the cash forecast only and get matched in the bank feed directly. The tab is Square payouts only now.
- Deposits: account pickers no longer hide accounts by type — your COGS-typed sales accounts now lead the list (“Suggested”), with every other account reachable under “All accounts.”
- New Deposits tab: every Square payout and Eventbrite remittance arrives pre-split into your sales categories (Draft, Wine, Well Booze, Zero-Proof, Food, …) from what was actually sold — minus Square's fees and the 10% loan holdback — so the split equals the bank deposit to the cent. Review, tweak if needed, and Post to QBO; the bank feed then matches the deposit automatically. No more adjusting journal entries.
- Map each Square category to its QuickBooks income account once (bottom of the Deposits tab); every future deposit books itself. Unmapped items land in “Uncategorized sales” for you to sort.
- Recurring bills: mark a receipt's vendor as “Repeats” (weekly/biweekly/monthly) and the forecast anticipates the next invoice. When the real bill arrives it replaces the projection — small variances (the internet bill that moves a dollar or two) match automatically; bigger ones ask you to confirm.
- Receipts: the Type selector is now Bill (owed) / Paid receipt / Credit — so you can fix the AI when it mistakes a bill for an already-paid receipt (or vice versa). Picking “Paid receipt” asks for the paid-from account; save (or Delete & re-post) books it as the right QBO entity.
- Fixed the “QBO ↗” / “View in QBO” links: they now use app.qbo.intuit.com so QBO opens the actual bill instead of redirecting to a blank page (the bare qbo.intuit.com host dropped the transaction id).
- The Receipts nav link now shows a red count bubble for how many receipts need review.
- The “Watch” section on the dashboard has a ▸ chevron that rotates when open, so it's clearly expandable.
- Cash flow: the pay/defer badge is now a compact dropdown (Auto · pay / Pay / Defer) that sets the pin inline — replaces the separate Pay/Defer buttons to save horizontal space.
- Cash flow is now pay-priority ordered: drag a bill to reprioritize and pay/defer re-cascades from your available cash (pay top-down until it runs out); a “cash runs out here” line shows the cutoff.
- Pin any bill to Pay or Defer (📌) to override the cascade, or Auto to hand it back. Pinning asks an optional “why?” that’s fed to the ranker so it learns your preferences.
- Receipts: a receipt folded into another now shows its status as “Combined” instead of “Ignored,” and the combine note no longer reads like an error.
- Talent settlements pushed from Jimmy now land here as real QBO bills, due the day after the show — and the soft “Artist (est.)” estimate for that show drops off so it's never double-counted.
- Those bills show a “Proof ↗” link on the cash ledger (next to “QBO ↗”) that opens the original settlement in Jimmy — the calc, the door split, and the plain-English explanation.
- Long-term liabilities: flag a vendor (e.g. SQRQ) as “LT liability” on the Vendors page and its QBO bills move off the cash view to the new Liabilities page; the real cash commitment is the recurring obligation you pay.
- Recurring obligations now show OVERDUE occurrences (e.g. last week's + this week's $2,500), and recurring/payout rows on the ledger have a “Mark paid” button so you can clear each as you pay it.
- Square: completed (closed) business-day batches now count as expected deposits on the cash timeline + in available cash, at the accurate net (90% − fees). Today's active sales stay reference-only (not counted). Replaces the old payout-feed number that lagged until Square cut the payout.
- Square: the pending/“not yet paid out” estimate now uses the real payout formula — 90% of card sales minus fees (the other 10% is withheld off the top to repay the Square loan) — so each day's Net matches what actually deposits (e.g. it now lands on Square's pending instead of being ~$50–200 high).
- Settings: bank accounts that count as cash are now checkboxes of your real QBO account names (no more typing names that must match exactly).
- Cash Flow: the “Reserved + buffer” stat now includes the safety buffer, so it ties out with Available.
- Square: the “not yet paid out” estimate now counts full business days (was truncating the latest day), so it tracks closer to Square's pending.
- Receipts: added an editable PST field so you can correct a missed PST and re-post it to QBO.
- Extraction now captures PST on beer/brewery/liquor invoices (it was wrongly assuming alcohol is PST-exempt).
- Unified Refresh: one “Refresh” button in the top nav now does everything — QBO, Square, recurring obligations, artist payouts, the receipts QBO comparison, and the re-rank — with a “last updated …” marker (also reflects the nightly cron). The per-page Refresh buttons were removed.
- Receipts: the QBO ✓/⚠ accuracy comparison now refills automatically right after you post or re-post (no separate Refresh needed).
- Receipts: removed the small inline document preview — use the “View original” link to open the full receipt.
- This Help & guide page — opens to the section for whichever module you came from, with a changelog of releases.
- Artist payouts: what you owe acts/organizers is pulled from the event tracker and shown on the cash ledger as reserved “Artist: …” outflows, dated by the deal's settlement terms (guarantees exact; door splits estimated from ticket sales, firming up at settlement).
- Receipts ↔ QBO accuracy check: each posted receipt is compared to what actually landed in QuickBooks (✓ matches / ⚠ differs), and entries deleted in QBO flip back to review.
- PST is now booked as a non-recoverable expense line (was being dropped).
- Bills book with the invoice's own due terms, defaulting to due-on-receipt (no longer inherit the vendor's stored QBO term).
- Combine tool: merge an itemized bill + its card slip into one expense, adding a no-GST tip line; both images attach to QBO.
- Owner memo on a receipt → posts to the QBO transaction's note (e.g. who you dined with).
- Persistent “Posting…” status that survives leaving the page.
- Recurring obligations (rent, SQRQ loan paydown) generate weekly/monthly ledger entries; managed on the Data page.
- QBO deep-links (“QBO ↗”) on every bill row in the cash ledger.
- Receipts: AI pre-picks the expense account; your correction trains it for that vendor next time. Plus exact GST, reliable account dropdowns, and an in-app Refresh on the Receipts tab.
- Receipts: inline document preview + match-or-create vendor/account dropdowns.
- Dark mode toggle.
- Receipts: correct-and-post to QBO (Bill / Vendor Credit / paid-receipt Purchase) + per-vendor rule learning.
- Receipts inbox: every vendor invoice the pipeline processes is stored and shown here.
- Pending Square deposits factored into available cash; unified cash ledger with a running balance.
- Vendor tiers save-on-change and feed the ranking; owner overrides are logged and taught back to the AI.
- First release: QBO open bills + bank balance, Claude-ranked weekly payment run.