PrivbooksArticles

Bank CSV and live feeds: build reconciliation that survives real operations

Why resilient operators keep a deterministic CSV path alongside Plaid-style feeds—rules symmetry, duplicate detection, fraud signals, and month-end when connectivity fails.

15 min read

Bank connectivity is the highest-emotion module in small-business accounting. When it works, nobody talks about it. When it breaks — missing transactions, duplicated lines, stale balances — it erodes trust in the entire ledger. The fix is not blind faith in a provider; it is two paths to the same truth: a live feed when economical, and a boring CSV import when the feed lies.

Why feeds fail in the wild

CSV as operational backbone

A CSV import path is not retrograde — it is operational insurance. Your rules engine (vendor → expense category, memo patterns, splits) should run identically whether the row arrived from a feed or a download. That symmetry is what lets you close on a bad connectivity week without heroic manual entry.

Duplicates: the silent killer when mixing sources

The worst failures happen when teams toggle between feed and CSV mid-month without a documented dedupe strategy. Decide how you identify uniqueness: bank transaction id when present, otherwise hash of date+amount+description, otherwise manual exception handling. Write it down before chaos, not during.

Fraud signals still require human review

Rules accelerate posting; they do not replace skepticism. New payees, round amounts, unusual geographies, and sudden changes in transfer patterns deserve explicit review—even in small businesses.

Month-end when the feed is wrong

Strong teams default to a cutoff statement export from the bank’s website for material accounts when feeds look suspicious. The goal is not perfection—it is defensible cash. For a full checklist, read bank reconciliation checklist.

How Privbooks prices this honestly

Privbooks keeps CSV import on the free tier and places live Plaid on paid tiers where per-connection vendor costs are real. The product goal is simple: never trap you on a single brittle pipe.