Two documents, two formats, one reconciliation
A campaign's fundraising record lives across two kinds of documents that rarely look alike: a bank statement, showing what actually landed in the account, and a platform payout report, showing the individual donors behind each deposit. Before any reconciliation against contribution limits or occupation/employer requirements can happen, both documents first have to be read accurately and turned into structured, comparable data.
Why bank and platform documents are hard to automate together
Every bank has its own statement format, and every donation platform has its own payout report layout — none of them share a common structure, and the fields that matter for reconciliation (date, amount, donor detail) can appear in completely different order and under different headings across the two document types. A solution built for one specific bank or platform breaks down the moment a campaign uses a different one, or switches banks mid-cycle.
Reading from each document's own printed structure rather than a template built for one bank or platform sidesteps that fragility entirely. A community bank's statement and a national donation platform's payout report look nothing alike on the page, but the same underlying fields — a date, an amount, a donor identifier — are present in both, and extraction is built to recognize those fields regardless of how a specific document happens to lay them out.
The fields that get read
| Field | Used for |
|---|---|
| Transaction/contribution date | Attaching each contribution to the correct reporting period |
| Amount | Building the reconciled contribution and deposit totals |
| Donor name, address, occupation, employer | Compliance-required itemization detail |
| Bank running balance / payout batch reference | Confirming no transaction is missed or double-counted |
Four categories of data, read exactly as they exist on each source document — without assuming the bank record and the platform record already agree before the reconciliation itself checks that.
Every field is captured whether or not it turns out to matter for a specific reconciliation task — an operating expense, a transfer between committee accounts, an ordinary bank fee are all read the same way as a donation deposit. That completeness is deliberate: the same read supports a full bank reconciliation alongside the compliance-specific use case, from one upload.
How accuracy is actually measured
Every field carries its own confidence score, not just a single overall pass/fail for the whole document. A date read cleanly from a well-formatted digital payout report might score near-perfect confidence, while a smudged figure on a faxed or scanned bank statement gets flagged individually — the rest of that same statement's clean fields aren't held hostage to the one unclear line.
In practice this means review time concentrates exactly where it's needed: a handful of flagged fields on an otherwise clean document, rather than a blanket instruction to re-check everything because one number looked uncertain.
PDF, CSV, or a scan — all read the same way
Not every bank statement or payout report arrives as a clean digital PDF. Some banks export a CSV directly; some platforms generate a spreadsheet-style payout summary rather than a formatted report; older bank records sometimes only exist as a scanned or faxed document. Each format is read through the pipeline appropriate to it — a scan or fax goes through OCR first — but the output is the same structured field set either way, so downstream reconciliation works identically regardless of what the source document actually was.
Raw transaction data vs. a reconciled contribution record
Reading the statement or payout report is a direct extraction — every line, exactly as printed. Turning that into a reconciled contribution record means matching bank deposits to their underlying contributions and checking donor fields for completeness, which is what the contribution limit validation feature does on top of the raw data this page describes.
Keeping these two steps distinct rather than one opaque black box matters for trust: the raw, unfiltered transaction data is available to review on its own, independent of whatever matching logic ran afterward. If a match decision ever looks questionable during a compliance review, the underlying transaction data it was built from is right there to check it against.
How it works
Bank statements and platform payout reports are uploaded together or separately, fields are recognized automatically regardless of the bank's or platform's format, and the result is displayed structured and ready for review — with anything uncertain flagged for a quick manual check before it's exported.
Processing many documents at once
A folder of documents — several months of bank statements for one committee, or one reporting period across several PAC-affiliated candidates — can be uploaded together rather than one at a time. Each document is still read and structured independently, so a batch upload doesn't risk one document's data bleeding into another's; it's purely a convenience for getting a large volume of documents through the same review step in one sitting.
For a compliance consultant working across a caseload of campaign clients, this is where the time savings compound the most — the difference between an afternoon spent uploading and reviewing twenty documents versus an afternoon spent manually transcribing even a handful of them.
More than one donation platform at once
Some campaigns run fundraising through more than one platform — a primary online processor alongside a text-to-donate service, for example. Each payout report is read on its own terms, so having more than one platform in play adds no extra setup burden.
This matters specifically for compliance reconciliation because a batch payout's fee structure and reporting format can differ meaningfully between platforms — reading each one from its own printed structure, rather than assuming they all follow one platform's conventions, is what keeps the resulting reconciliation accurate regardless of how many platforms a campaign actually uses, no matter how differently each one formats its reports.
When the fundraising channel mix changes mid-cycle
A campaign that starts with mostly direct checks and shifts toward heavier online fundraising as the cycle progresses shows up as a change in the mix of document types processed, not a break in the reconciliation itself. Reading every period's documents independently, rather than assuming the channel mix is static, keeps the reconciled record accurate through any shift.
This is also why reading several consecutive reporting periods together, rather than one isolated document, tends to produce a more reliable reconciliation — a change that looks ambiguous within a single period's data is often obvious once the prior and following periods are visible alongside it.
Processing fees mixed into the same batch
A platform's processing fee, deducted before a batch payout hits the bank account, is read as its own line item on the payout report, distinct from the individual contributions around it, so the fee doesn't get blended into a contribution amount it doesn't actually belong to.
This distinction matters more than it might first appear — a fee structure that changes partway through a cycle, or a platform that adjusts its rate, can otherwise produce a batch total that looks like a reconciliation error when it's actually just a fee change that was never explicitly tracked.
The manual process this replaces
Manually, this means opening each bank statement and each payout report, cross-referencing line by line, and retranscribing donor detail into a compliance spreadsheet — a process that for a busy reporting period easily takes hours, and is vulnerable to transcription errors precisely because it's repeated every filing cycle.
It's also a process that scales poorly with client volume — a compliance consultant adding a second or third campaign client doesn't just add work, they add a second and third fully manual transcription routine running in parallel, each one carrying the same transcription-error risk as the first.
With tooling vs. by hand
By hand, the task is fully workable for a campaign with a small, simple donor base. The advantage of automatic reading shows up as the transaction count and channel count grow — the time per reporting period drops to minutes instead of hours, without a loss in accuracy.
| By hand | Automatic |
|---|---|
| Hours per reporting period, cross-referencing manually | A few minutes per document, any transaction count |
| Transcription error risk grows with transaction volume | Every line read the same way regardless of volume |
| Effort multiplies with each additional client or platform | Additional documents queue the same way as the first |
Where the structured data goes next
Structured output exports to Excel or CSV, ready to drop into whichever spreadsheet template a treasurer or consultant already uses for tracking contributions, or to import into a compliance system alongside a campaign's other financial records. The extraction itself doesn't assume a specific downstream format — it produces clean, complete transaction data that fits whatever process comes after it.
Who this is relevant for
Campaign treasurers who handle bank statements and platform payout reports for each reporting period, compliance consultants reviewing multiple campaign clients' accounts, and bookkeepers supporting political clients directly.
Each of these has a slightly different scale of need — a single first-time candidate reading their own account, a treasurer reading statements for one active campaign, or a consultant working across a larger caseload — but the underlying task is identical at every scale. What changes is only how many documents pass through the same process in a given reporting period.
How often statements and payouts arrive, and why it matters
Bank statements typically arrive monthly and platform payouts often arrive daily or weekly, which makes this a recurring, predictable task — and that predictability is exactly what makes it worth automating, even if any single document only takes a few minutes by hand.
A predictable cadence also means the reading step can become part of a routine rather than a special task reached for only when a filing deadline prompts it — uploading each new statement or payout report as soon as it's available, the same way every period, keeps the underlying contribution data current without requiring a deliberate decision to catch up on backlog.
Get started with your first document
The easiest way to see if this fits your campaign's documents is to try it with one real bank statement or payout report — the result shows immediately which fields were recognized correctly.
There's no setup step required before that first upload — no template to configure for a specific bank or platform, no account mapping to define in advance. The document is read from its own printed structure the first time it's uploaded, the same way it would be on the hundredth upload.
What happens to your data
Uploads are encrypted with TLS from end to end.
Processing runs on infrastructure with SOC 2-aligned controls.
Original documents are deleted shortly after processing.
Nothing you upload is ever used to train AI models.
For documents carrying both a campaign's finances and its donors' personal information, that matters — full details are on the security page.
This applies equally to documents from any platform used — the same handling standards apply whether a payout report comes from a major national processor or a smaller, less common donation tool a campaign happens to use.
A typical example with mixed fundraising channels
A congressional campaign uploads one monthly bank statement covering 180 transactions, alongside six weekly payout reports from its online donation platform.
| Category | Transactions |
|---|---|
| Bank deposits (batch payouts and checks) | 42 |
| Individual contributions in payout reports | 612 |
| Operating expenses and transfers | 138 |
Read automatically, the full document set is structured in a few minutes, ready for the reconciliation step that matches the 42 bank deposits to the 612 individual contributions that make them up.
Done by hand, a document set of this size would typically take a treasurer the better part of a day to cross-reference line by line — the same volume that automatic reading turns around before the coffee gets cold.
