Skip to main content
BankFlow logoBankFlow

For accounting firms

One intake process, every client.

Whoever works the file, it enters the firm the same way and leaves it looking the same: one intake route per engagement, one set of rules, one validation step, and an API for the parts you want wired into your own systems.

50 free page credits · No card · Cancel anytime

  • Per-engagement import addresses
  • API & webhooks
  • DPA available

Add statements

50 free pages
PDFSelect statementsPDF, CSV, XLSX or JSON · max 50 MB each
3 files selectedReview before importing.Add files
statement_oct.pdf1.2 MB · 8 pages
amex_q3_2025.pdf3.4 MB · 12 pages
scanned_047.pdf6.1 MB · locked

At firm scale, the cost is that no two files match.

One preparer codes a vendor one way and the next codes it another. One chases documents by email, one by phone, and nobody can say which engagements are still waiting. The per-file minutes are real, but the expensive part arrives at review, when a partner has to learn each file's private conventions before they can sign anything. Speeding up a single step does not fix that. Making every file take the same route through the firm does.

How it works

The route every statement takes, whoever owns the file

  1. 01

    One way in, per engagement

    Each engagement gets its own import address. Clients forward to it or auto-forward permanently, preparers drag files in, and integrations post to the API: three routes, one queue, and no engagement whose documents live in somebody's inbox.

    Import dialog on the upload tab, accepting PDF, CSV, Excel, and JSON files up to 50 MB each.
    Whichever route a file takes, it arrives at the same import: PDF, CSV, Excel, or JSON, up to 50 MB each.
  2. 02

    Every file is validated the same way

    Each statement is read, its transactions extracted, its bank detected, and its balances reconciled against the total it printed. Intake gets a pass or fail signal from the process rather than from whoever happens to review it.

    Activity panel showing a Chase statement processing, with the current stage and elapsed time.
    The queue reports the stage and the elapsed time per job, whether it arrived by upload, by email, or through the API.
  3. 03

    The firm's rules, not the preparer's

    Shared rules give the same vendor the same treatment across every file, and run retroactively when a policy changes, so a decision made in March applies to the work done in January.

    The rule editor: include and exclude patterns, merchant scope, transaction type, and source scope.
    A rule is include patterns, exclusions, an optional merchant scope, and which sources it may touch.
  4. 04

    A handoff that looks the same every time

    Exports are scoped by selection and filter, so a preparer hands over exactly one account, one period, or one category rather than a whole database, and the column set is part of the export, not a habit.

    A statement selected in the library, with the Actions menu open on Configure export.
    Tick the statements the handoff covers, then Configure export: the scope is chosen before the format is.
  5. 05

    Or no handoff at all

    Register an endpoint and let statement and transaction events drive your practice management directly. Every delivery is signed, so your side can verify it came from us before acting on it.

    The webhooks tab: an endpoint URL, the events it subscribes to, and a signed delivery secret.
    Pick the events an endpoint subscribes to; each delivery carries an HMAC signature header.

The pieces that survive a second preparer

Document intake by email

A private forwarding address with per-sender allow-listing and auto-import rules. No mailbox access is ever requested or granted.

Consistent classification

Rules with inclusion phrases, exclusion keywords, and merchant scoping mean the same vendor is categorized the same way regardless of who is working the file.

A real API

Personal access tokens, POST a PDF, CSV, XLSX, or JSON file to /api/v1/parse, and list or export stored transactions programmatically.

Webhooks for workflow

Register webhooks for statement and transaction events and drive your practice management or workflow tooling from them instead of polling.

Validation as a control

Balance reconciliation on every parse gives intake a pass/fail signal, so incomplete documents are caught by the process rather than by a reviewer.

Clean handoffs

Filter-scoped exports mean a preparer hands over exactly one account, one period, or one category, not a whole database.

FAQ

Common questions

Can we keep client data separated?

Each account has its own transactions, rules, and import address. Scope exports with filters so a handoff contains only the engagement it should.

Is there an API for integrating with our own systems?

Yes. Generate a personal access token, POST files to /api/v1/parse, list or export transactions, and register webhooks for statement and transaction events. The API documentation covers the endpoints in full.

Do you offer a DPA?

Yes: a data processing agreement is published, alongside a security page describing how documents are handled and stored.

How do we standardize categorization across preparers?

Encode the firm's treatment as rules rather than leaving it to individual judgement. Rules apply retroactively, so when a policy changes you re-run rather than re-review.

What about statements we receive as scans?

Scanned PDFs are supported, as are multi-page and password-protected files up to 50 MB, plus CSV, XLSX, and JSON.

How do we evaluate it without a procurement cycle?

New accounts get 50 free page credits with no card required, enough to run a representative engagement end to end before talking about terms.

Make every client file look the same.

Standardize intake, encode the firm's rules once, and wire the rest into your own systems through the API.