Skill Tracer
Skills › Knowledge Work Plugins › cash-flow-snapshot › gotchas.md

gotchas.md

62 lines · small-business/skills/cash-flow-snapshot/reference/gotchas.md at 2574e29

Open on GitHub
1# Gotchas — cash-flow-snapshot
2
3Known edge cases and connector failure modes.
4
5---
6

Gotchas — cash-flow-snapshot

Known edge cases and connector failure modes.


Raw lines 1 to 6
7## 1. QuickBooks AR aging includes invoices already collected
8
9**Bad:** Including fully-paid invoices from the AR aging report inflates inflow
10projections. QuickBooks sometimes shows USD 0-balance invoices in aging exports.
12**Good:** Filter AR rows to `balance_due > 0` before computing inflows. If the
13connector doesn't expose balance_due, subtract known PayPal/Stripe settlements
14from the invoice total before including it.
16---

1. QuickBooks AR aging includes invoices already collected

Bad: Including fully-paid invoices from the AR aging report inflates inflow projections. QuickBooks sometimes shows USD 0-balance invoices in aging exports.

Good: Filter AR rows to balance_due > 0 before computing inflows. If the connector doesn't expose balance_due, subtract known PayPal/Stripe settlements from the invoice total before including it.


Raw lines 7 to 17
18## 2. PayPal settlement lag varies by transaction type
20**Bad:** Assuming all PayPal receipts settle in 1–2 business days. PayPal holds
21funds differently for disputes, new sellers, and high-value transactions — using
22a flat settlement assumption produces overconfident inflow timing.
24**Good:** Compute settlement lag from actual `transaction_date` → `completed_date`
25pairs in the PayPal transaction history. Use the computed mean and stddev per
26customer or transaction type.
28---

2. PayPal settlement lag varies by transaction type

Bad: Assuming all PayPal receipts settle in 1–2 business days. PayPal holds funds differently for disputes, new sellers, and high-value transactions — using a flat settlement assumption produces overconfident inflow timing.

Good: Compute settlement lag from actual transaction_date → completed_date pairs in the PayPal transaction history. Use the computed mean and stddev per customer or transaction type.


Raw lines 18 to 29
30## 3. CSV column names are inconsistent across accounting exports
32**Bad:** Requiring exact column names like "Date", "Amount", "Type". QuickBooks
33CSV exports use "Transaction Date", "Amount", "Transaction Type". Wave uses
34"Date", "Amount", "Account Type". Rigid parsing fails silently.
36**Good:** Fuzzy-match column headers (date → transaction date → txn date;
37amount → debit/credit; type → category → account type). Show the header row
38to the user and confirm mapping before computing — one question beats a silent
39wrong forecast.
41---

3. CSV column names are inconsistent across accounting exports

Bad: Requiring exact column names like "Date", "Amount", "Type". QuickBooks CSV exports use "Transaction Date", "Amount", "Transaction Type". Wave uses "Date", "Amount", "Account Type". Rigid parsing fails silently.

Good: Fuzzy-match column headers (date → transaction date → txn date; amount → debit/credit; type → category → account type). Show the header row to the user and confirm mapping before computing — one question beats a silent wrong forecast.


Raw lines 30 to 42
43## 4. Fixed costs hidden in one-off AP entries
45**Bad:** Only pulling recurring line items labeled as "recurring" in QuickBooks.
46Many SMBs don't tag fixed costs consistently — rent may appear as a one-off
47vendor bill each month.
49**Good:** Look for AP entries that appear in 3+ consecutive months with the same
50vendor and similar amount (±10%). Treat these as recurring fixed costs in the
51forecast. Surface the list to the user: "I'm treating these as fixed monthly
52costs — does that look right?"
54---

4. Fixed costs hidden in one-off AP entries

Bad: Only pulling recurring line items labeled as "recurring" in QuickBooks. Many SMBs don't tag fixed costs consistently — rent may appear as a one-off vendor bill each month.

Good: Look for AP entries that appear in 3+ consecutive months with the same vendor and similar amount (±10%). Treat these as recurring fixed costs in the forecast. Surface the list to the user: "I'm treating these as fixed monthly costs — does that look right?"


Raw lines 43 to 55
56## 5. Confidence band formula breaks when mean payment lag is zero
58**Bad:** Dividing stddev by a mean lag of 0 (e.g. immediate payment customers
59like Square POS) produces a divide-by-zero error or an infinite band.
61**Good:** If mean lag ≤ 1 day, set band_pct to 5% (low variance, near-immediate
62settlement). Don't attempt the division.

5. Confidence band formula breaks when mean payment lag is zero

Bad: Dividing stddev by a mean lag of 0 (e.g. immediate payment customers like Square POS) produces a divide-by-zero error or an infinite band.

Good: If mean lag ≤ 1 day, set band_pct to 5% (low variance, near-immediate settlement). Don't attempt the division.

Raw lines 56 to 62