FlowParse
Tool August 2026 17 min read

Campaign Finance Compliance

A campaign's FEC report is only as accurate as the reconciliation behind it. FlowParse reads bank statements and platform payout reports and matches every deposit back to the individual contributions that make it up, so what's reported ties to what actually hit the account.

FlowParse
flowparse.io
flowparse.iono audio needed
0:00 / 0:00

A report is only as good as the reconciliation behind it

An FEC report is a summary — total raised, total spent, a list of itemized contributions. Behind that summary sits a much less visible question: does every dollar the report claims was raised actually trace back to a specific bank deposit, and does every deposit trace back to specific, identifiable donors? When that tracing is solid, a report review is routine. When it isn't, a routine review turns into a Request for Additional Information, or worse, an audit.

This page describes how bank statements and payment platform payout reports are read and matched against each other, so that reconciliation — usually the least visible, most time-consuming part of compliance work — happens as a matter of course rather than a scramble before a filing deadline.

FlowParse
flowparse.io

Why campaign bank reconciliation is harder than it looks

Money arrives through several channels at once

Checks, direct bank transfers, and lump-sum payouts from online platforms all land in the same account, each needing a different reconciliation approach.

A single bank deposit can represent hundreds of contributions

A platform like ActBlue or WinRed batches many individual donations into one daily payout — the bank statement shows one line, not the donors behind it.

Compliance data and bank data are kept in different systems

The compliance database (often NGP VAN or similar) records what donors gave; the bank records what actually arrived — the two are supposed to agree, but nothing forces them to.

The reporting period and the bank statement period rarely align exactly

FEC reporting periods run on their own calendar, cutting across bank statement cycles, which makes a clean month-to-month reconciliation the exception rather than the rule.

None of these four points is unusual — it's simply how modern campaign fundraising works. But together they mean a bank statement glanced at once a month is nowhere near enough to confirm that the compliance system and the bank actually agree.

What this doesn't decide

Doesn't determine whether a contribution is legal

It reconciles the bank record against the contribution record. Whether a specific contribution is prohibited, excessive, or from an impermissible source is a legal determination for your compliance team.

Doesn't file your FEC report

It produces a reconciled, sourced dataset — the actual filing through NGP VAN, CampaignDeputy or FEC eFiling remains a separate step.

Doesn't resolve a genuinely unmatched deposit on its own

Where a bank deposit can't be tied to any known contribution batch, it's flagged for your review rather than guessed at.

Where this fits alongside NGP VAN, ActBlue and WinRed

Most campaigns already run on an established software stack: a compliance and CRM system like NGP VAN to record donors and generate the FEC report itself, and a donation-processing platform — ActBlue on the Democratic side, WinRed on the Republican side — to actually collect online contributions. Neither of these systems is built to answer one specific question well: does the money the compliance system says came in actually match, dollar for dollar, what landed in the bank account.

That gap is exactly what this fills — not a replacement for the compliance system that generates the report, and not a replacement for the platform that processes donations, but the reconciliation layer that checks the bank statement against both of them before the report goes out the door.

FlowParse
flowparse.io

What gets read

FieldSource
Deposit date and amountBank statement
Donor name, address, occupation, employerPayout report or compliance export
Individual contribution amount and datePayout report or compliance export
Batch/payout reference numberBank statement and payout report, matched together

Four categories of data, read from whatever documents a campaign already has on hand — no pre-arranged integration with any specific bank or platform required.

FlowParse
flowparse.io

Batch deposits from a payment processor

A platform like ActBlue or WinRed typically deposits contributions in a batch — one bank transfer per day or per payout cycle, representing the sum of every individual donation processed in that window, minus processing fees. The bank statement shows a single line; the platform's own payout report shows the individual contributions that add up to it.

Reconciling a batch deposit means reading both documents and confirming that the sum of the itemized contributions in the payout report, less the disclosed processing fee, equals the deposit amount on the bank statement. When it doesn't — a common cause is a fee miscalculation or a contribution that was refunded after the payout report was generated — the discrepancy is surfaced specifically, not buried in a rounding assumption.

FlowParse
flowparse.io

Occupation and employer, the field that triggers RFAIs

Federal law requires a committee to make a best effort to obtain and report a donor's occupation and employer for any individual whose contributions exceed $200 in aggregate for the election cycle. In practice, this is one of the single most common reasons the FEC sends a committee a Request for Additional Information — a donor field left blank, or filled with something too vague to count as compliant, on an otherwise correct contribution.

Because this gap is easy to miss inside a large itemized contribution list and expensive to fix after a report has already been filed, it's treated as its own flagged category during reconciliation — every itemized contribution above the threshold is checked for a present, usable occupation and employer field, not just for a matching dollar amount.

How it works

1

Upload the bank statement and payout reports

The period you want reconciled, from the bank and from any donation platforms used.

2

Every deposit and contribution is read

Amount, date and donor detail extracted from each document's own structure.

3

Deposits are matched to their underlying contributions

Batch payouts broken down and checked against the sum of individual donations.

4

Gaps are flagged, not filled in

Missing occupation/employer fields, unmatched deposits and amount discrepancies surfaced for review.

5

Exported

Excel, CSV or JSON, with every contribution traceable to its source deposit.

A month of fundraising, reconciled

A House candidate committee raises money through direct checks and a steady stream of ActBlue online contributions over a reporting month, then reconciles the full period at once.

CategoryResult
ActBlue batch payouts matched to contribution detail22 of 22
Direct check deposits matched to compliance records14 of 15
Itemized contributions missing occupation/employer6, flagged
Unmatched bank deposit1, flagged for review

The unmatched check deposit turns out to be a contribution entered in the compliance system a day after the bank actually processed it — a timing gap resolved in minutes once flagged, rather than surfacing as an unexplained discrepancy during a report review weeks later.

Contribution limits and aggregation

Federal contribution limits apply per election, per donor, and are indexed for inflation each two-year cycle — an individual can give up to the limit for a primary and, separately, up to the limit again for a general election. Tracking a donor's aggregate giving across a full election cycle, not just within a single reporting period, is what determines whether a later contribution pushes them over the line.

Reconciliation surfaces the aggregate figure a compliance reviewer needs — every contribution from a given donor, across every reconciled period, rolled up into one running total — without making the legal determination of whether a specific total is compliant. That judgment, and any refund or redesignation it requires, stays with the campaign's treasurer or counsel.

FlowParse
flowparse.io

In-kind contributions and their own reporting rules

Not every contribution arrives as cash through the bank account — a donated venue, discounted printing, or volunteer-provided professional services above a certain value are in-kind contributions, valued at fair market value and reported alongside cash contributions, but with no corresponding bank deposit to reconcile against.

Because in-kind contributions don't appear on a bank statement, they're read from whatever documentation a campaign maintains for them separately — an invoice, a donated-services acknowledgment — rather than assumed to be covered by the bank reconciliation process at all.

Keeping in-kind contributions clearly separated from the cash-based reconciliation, rather than blended into it, also makes each type of contribution easier to audit on its own terms — a cash total that ties to bank deposits, and an in-kind total that ties to its own supporting documentation, checked independently rather than forced into a single combined figure.

Manual vs. automatic

ManualAutomatic
Payout reports and bank statements compared by eyeEvery deposit matched to its contributions automatically
Missing occupation/employer caught only at filing reviewFlagged during reconciliation, well before a report is due
A batch deposit accepted at face valueThe batch broken down and its sum verified against the deposit

From a local race to a federal campaign

A city council race with a handful of donors and one bank account can be reconciled in an afternoon by hand. A congressional campaign running multiple fundraising channels, hundreds of transactions a month, and a treasurer juggling reporting deadlines alongside everything else on a campaign calendar faces a fundamentally different volume problem — not a harder task in kind, just one that stops fitting into the time actually available.

Reading every deposit and contribution the same way regardless of volume keeps the reconciliation effort proportional to what actually needs a human decision — the flagged exceptions — rather than growing linearly with every additional donor and every additional bank transaction.

Who this is for

Campaign treasurers

A reconciled bank record ready for report review, without a manual line-by-line match every filing period.

Compliance consultants and firms

The same reconciliation process applied consistently across multiple campaign clients.

PAC and party committee finance staff

Bank deposits matched to contribution records regardless of committee type.

Bookkeepers supporting political clients

A structured, sourced dataset handed off to the treasurer instead of a raw bank statement.

Candidate committees, PACs, and party committees

A candidate committee, a political action committee, and a state or national party committee all file different forms with different reporting requirements — Form 3 for candidate committees, Form 3X for PACs and party committees, among others — but each one rests on the same underlying obligation: every dollar reported has to be traceable to an actual bank record.

Because the reconciliation task itself doesn't depend on which form eventually gets filed, the same process applies whether the entity is a single-candidate committee running its first race or an established PAC managing contributions across many candidates at once.

Why grounding every number in a bank record matters

A compliance system that reports what donors are supposed to have given, without independently confirming it against what the bank actually received, is trusting its own input data by definition. A data-entry error, a donation that bounced, or a contribution recorded twice can sit undetected in that system indefinitely, since nothing forces a cross-check against the bank record unless someone does it deliberately.

Reconciling against the bank statement — the one record in the whole chain that reflects what actually happened, not what was supposed to happen — is what catches these errors before an FEC reviewer does, which is a meaningfully better position for a campaign to be in.

This principle holds regardless of how sophisticated a campaign's compliance system is — even the most carefully configured system is only as accurate as the data entered into it, and no amount of software polish substitutes for an independent check against the one document that can't be argued with.

Get started with your first bank statement

Upload one real bank statement, with or without an accompanying payout report, to see how the reconciliation works — no signup required to try it.

Security and privacy

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 a bank statement and donor records carrying sensitive financial and personal information, that matters — full details are on the security page.

This is worth taking seriously beyond the obvious — donor address and employer information is exactly the kind of personal detail campaigns have a responsibility to handle carefully, independent of any FEC reporting obligation.

Frequently asked questions

Reconcile your campaign's bank account

Upload a real bank statement — no signup — and see the reconciliation immediately.

Keep reading