gotchas.md
131 lines · small-business/skills/ap-processor/reference/gotchas.md at 2574e29
Gotchas
The failure modes that pay a bill twice, pay the wrong one, or quietly wreck the books. Every one of these has a dollar value attached.
Raw lines 1 to 6
Gotcha: reading a total that isn't legible
Why it matters: The extracted total flows into the coded entry, the payment run, and the cash forecast. A confident wrong number is worse than a blank, because nobody checks a number that looks fine.
Raw lines 7 to 10Bad
Watsco, invoice 40218, total USD 1,847.00(read from a glare-washed photo where only "1,84" was visible)
Raw lines 11 to 17Good
Watsco, invoice 40218 — total unreadable, glare across the amount block.
Vendor, date, and PO are clear. Send me the figure or a better photo and
this one's ready.Raw lines 18 to 27
Gotcha: the same invoice on the email and the statement
Why it matters: Duplicate payment is the most expensive thing that goes wrong in AP, and it is quiet. The vendor rarely calls to say you overpaid.
Raw lines 28 to 31Bad
Stage the emailed PDF as a bill. Later, stage the statement line as a second bill because it has a different reference. Pay both.
Raw lines 32 to 35Good
Match on vendor plus invoice number before coding anything. Flag the pair, name both sources, and let the owner confirm. Statements never create entries on their own.
Raw lines 36 to 41
Gotcha: treating approval of coding as approval to pay
Why it matters: These are different decisions. An owner who agreed to file bills has not agreed to move USD 22,000. Getting this wrong once ends the trust relationship that makes the rest of the plugin useful.
Raw lines 42 to 45Good
19 bills staged in QuickBooks, USD 41,208, all as unpaid.
Separately: 11 of them are due or discountable this week, USD 22,140.
Want me to build that payment run?Raw lines 52 to 61
Gotcha: auto-paying the recurring bill
Why it matters: Recurrence tells you the account code. It tells you nothing about whether the amount is right this month. Rate increases arrive inside recurring bills, and an auto-approved run is where they slip past.
Raw lines 62 to 65Bad
Insurance bill arrives, matches last month's vendor and account, goes straight into the run.
Raw lines 66 to 69Good
Code it automatically, include it in the proposal, and flag that it moved from USD 1,410 to USD 1,690 — up 20%. The owner may have agreed to that. Often they did not.
Raw lines 70 to 75
Gotcha: splitting a job cost evenly because the split is unknown
Why it matters: An invented allocation is indistinguishable from a real one three months later, when the owner is trying to work out why the Maple St job lost money.
Raw lines 76 to 79Good
Code the whole thing to the most likely job, flag it as unsplit, and ask. A flagged single coding gets fixed. A tidy fake split never does.
Raw lines 84 to 89
Gotcha: staging a Ramp or Expensify charge as a payable
Why it matters: It is already paid. Staging it creates a liability that does not exist and sets up a genuine double payment.
Raw lines 90 to 93Good
Card charges get coded, not staged for payment. Keep them in a separate bucket and say so in the summary.
Raw lines 98 to 103
Gotcha: dropping an excluded bill silently
Why it matters: A bill held back for a good reason still has a vendor waiting on it. Silence turns a careful exclusion into a late payment.
Raw lines 104 to 107Good
Held 3: Johnstone (billed 12, received 8), Grainger (no receiving record),
Watsco (total unreadable). None of these are late yet. Two need the vendor.Raw lines 112 to 120
Gotcha: creating a vendor record from a bad name read
Why it matters: "ACME SUPPLY #4412" as a new vendor splits the history that makes future coding automatic, and it makes the AP aging report wrong.
Raw lines 121 to 124Good
Fuzzy-match against existing vendors first, propose the match, and only create a record when the owner confirms it is genuinely new.
Raw lines 129 to 131