The document layer under your onboarding flow
"Company document extraction" is a deliberately narrow name — it doesn't mean reading every document a company might ever produce, and it specifically doesn't mean reading incorporation certificates or registry filings. It means reading the two documents a fintech's onboarding flow actually asks applicants to submit as financial evidence: a bank statement, and, for higher-risk tiers, a set of financials.
A fintech onboarding a new business customer doesn't have one document to read — it has whatever the applicant submits, in whatever format their bank or accounting software produces. Every one of those documents needs to become clean, structured data before your name-match logic or risk decisioning can do anything useful with it.
This tool reads every one of those documents the same way, regardless of source or layout, and embeds directly into your platform's own onboarding pipeline over a single API call — no separate UI, no workflow of its own, just the structured data your risk logic already expects.
Think of it as the layer that sits between a raw document an applicant uploads and everything your onboarding flow needs from it — name matching, activity verification, risk scoring. All of those downstream steps depend on the underlying document data being extracted accurately and consistently first.
Why onboarding is only as reliable as the documents behind it
A name-match and activity check is only as reliable as its weakest input, and the document is usually the one arriving as an unstructured PDF from an applicant your platform doesn't control. A verification flow built on inconsistent or partially-read document data produces false mismatches that erode trust in the automation, even when the registry and screening checks alongside it are perfectly accurate.
This isn't a hypothetical edge case — it's the normal state of a growing fintech. As the applicant base diversifies across countries and bank relationships, a reading process that only worked reliably against a narrow set of well-behaved statement formats breaks down exactly where it matters most: an applicant from a bank or region your platform has never onboarded before.
What it reads
Bank statements
From any bank, digital or scanned, classified and read automatically.
Financial reports
P&L statements, balance sheets, annual accounts, with a totals check.
Multi-page documents
Statements and reports with line-item tables spanning several pages.
What fields get extracted
| Field | Example |
|---|---|
| Bank name, account holder, statement period | Example Bank, Acme Trading Ltd, 2026-06-01 to 2026-06-30 |
| Transactions | Date, description, signed amount, running balance — every row |
| Report entity, period, currency | Acme Trading Ltd, Year ended 2025, GBP |
| Report line-item sections and totals check | Revenue, expenses, whether totals tie out |
How it works
Your pipeline sends the document
One POST to /extract, whichever way your platform already collects onboarding documents.
Automatic classification and extraction
Bank statement or financial report, read from the document's own layout.
Confidence-based routing
Your platform decides the threshold for auto-approval versus manual review.
Feeds your risk logic
Structured JSON, or a file export, ready for your own onboarding decision.
A batch of applicant documents, processed
A fintech onboarding a cohort of new business applicants processes a first batch of 20 documents — mostly bank statements, a few financial reports for higher-limit applications — from banks and accounting systems it has never seen before.
| Document type | Count | Result |
|---|---|---|
| Bank statements from known banks | 13 | All fields read with high confidence |
| Bank statements from new banks | 5 | Read the same way, no template needed |
| Financial reports | 2 | Both classified correctly, totals tie out |
All 20 documents ended up in the same structured output — the new applicant cohort's unfamiliar bank mix didn't slow down onboarding, which is exactly the scenario a narrow, template-based in-house parser tends to struggle with most.
A high-volume fintech, at scale
A larger fintech processes roughly 8,000 onboarding applications a month, each submitting at least one document, across hundreds of distinct banks and accounting systems.
| Metric | Before | With embedded extraction |
|---|---|---|
| Engineering time on extraction maintenance | Roughly a third of an engineer's time monthly | None — extraction is a vendor dependency, not internal code |
| Onboarding friction from unfamiliar banks | Common source of applicant support tickets | No noticeable friction tied to unfamiliar sources |
| Straight-through approval rate | Held back by low-confidence extraction on some documents | Improved once confidence scoring routed only genuinely uncertain ones |
Applicants from unfamiliar banks aren't an edge case
A fintech growing beyond its initial launch market inevitably starts onboarding applicants whose banking relationships fall outside whatever set of banks its team originally tested against. For a template-based in-house parser, this is where accuracy quietly degrades — a new bank means a new layout, and a new layout means either a support ticket or a manual workaround until someone builds a new template.
Because extraction here reads from each document's own printed structure rather than a fixed per-bank template, an applicant from a bank processed for the first time is handled exactly like one from a bank seen a thousand times before — which matters directly for a fintech whose growth plan depends on onboarding an increasingly diverse applicant base, not a static one.
What precision looks like across applicants
Field accuracy on a clean, digitally-generated document sits near the top of the range regardless of which bank or applicant it came from. A scanned or photographed submission introduces more variability, which is exactly where per-field confidence scoring earns its keep — flagging the specific fields worth a second look rather than treating the whole document as suspect.
Across a typical fintech's diversifying applicant base, overall field accuracy lands around 99% — and because extraction doesn't depend on a fixed template tied to any one bank, an applicant from a bank your platform has never onboarded before doesn't require you to notice and adapt.
Output formats
JSON by default for direct integration into your platform's own risk logic, or Excel and CSV via /export when your compliance team needs a file attached to a case record.
curl -X POST https://flowparse.io/api/v1/export \
-H "Authorization: Bearer pf_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "format": "xlsx", "type": "bank_statement", "data": { ... } }'How pricing works
Extraction is billed per page, in complexity tiers — a clean single-page bank statement costs less than a dense multi-page financial report or a lower-quality scan. There's no per-seat licensing and no minimum monthly commitment required to start.
curl https://flowparse.io/api/v1/usage \
-H "Authorization: Bearer pf_live_xxx"
# → { "plan":"PRO", "pageRangeEur": { "minEur":0.01, "maxEur":0.15 },
# "balance": { "pages":812, "monthlyRemaining":712, "bonusPages":100 } }For an onboarding pipeline, this maps directly onto a per-application cost — the cost of verifying one applicant's submitted documents becomes a known, predictable number your platform can fold into its own onboarding pricing or cost model, rather than an unpredictable infrastructure line item.
Monitoring accuracy as your applicant base grows
A fintech's applicant mix rarely stays static — new markets, new banking relationships, new document formats show up as the business grows. Worth tracking over time: the share of documents landing below your confidence threshold, broken down by document type and, where practical, by source bank or report format. A rising trend in any one slice is a concrete, early signal — far more useful than waiting for a broader drop in overall approval rates to notice something has shifted.
Because extraction quality is maintained centrally rather than by your own team's parsing code, a gap discovered this way is a report worth raising, not a bug your engineers need to schedule time to fix themselves.
Manual vs. embedded
| Task | Building it yourself | Embedded via API |
|---|---|---|
| Handling an applicant from an unfamiliar bank | A new rule or template built or a workaround | Read the same way as any other bank |
| Multi-page financial reports | A recurring source of parsing bugs | Line items reassembled and totals checked automatically |
| Scaling to more applicants and geographies | Maintenance burden grows with document diversity | No incremental engineering work required |
From a pilot cohort to production onboarding
The same call handles a pilot cohort of a handful of applicants a day or a production platform onboarding thousands a month — review effort scales with the flagged exceptions, not with raw volume, since pricing and throughput are usage-based rather than tied to infrastructure your platform would otherwise need to provision ahead of demand.
Common situations this handles
An applicant whose bank is entirely unfamiliar to your platform — read the same way as any known bank, with no onboarding delay while a new template gets built. An applicant submitting a document with a legal name that doesn't exactly match your registry data due to formatting differences — read exactly as printed, leaving the matching logic to your platform. A financial report in an unfamiliar layout — line items read from the document's own structure, not a fixed template.
A statement submitted as a low-resolution phone photo rather than a clean export — read through the same pipeline, with per-field confidence scoring surfacing exactly which parts of it, if any, are genuinely uncertain rather than treating the whole submission as unreliable.
In each case, the value isn't a special-purpose feature built for that specific situation — the same general reading process handles all of them without requiring your engineering team to build a workaround.
Why embedding beats a separate verification tool
Some document-verification products are built as their own standalone workflow — a separate portal an applicant or a reviewer logs into, outside your own onboarding UI. That can work, but it fragments the applicant experience across two systems and gives your platform less control over exactly when and how the check runs relative to the rest of your risk decision.
Embedding extraction as a direct API call keeps the entire onboarding experience inside your own product — the applicant never sees a second system, and your platform decides exactly where in the flow the document check happens, how its result combines with the registry and screening checks, and what the applicant sees if something needs a second look.
Who uses this
Fintech and neobank onboarding teams
Embed document verification without building or maintaining an in-house extraction layer.
KYB and business verification platforms
Structured, confidence-scored document data feeding your own risk logic.
Embedded finance and BaaS platforms
Document verification for business accounts opened through your own product.
Compliance and risk engineering
Auditable extraction output that traces every field back to the submitted document.
Integrating this into your onboarding pipeline
For a platform receiving documents from dozens or hundreds of applicants every day, this is designed to be called directly from wherever your onboarding flow already collects documents — without a person needing to touch every individual submission.
Most teams start with a handful of manual test calls to confirm the response shape matches their internal risk model, then wire it into the real onboarding pipeline once confidence-threshold routing is tuned to their own risk tolerance.
A common integration pattern is to call /extract synchronously right after upload, so the applicant sees an immediate status — approved, or a short note that their submission is under review — rather than a delayed follow-up days later.
What this doesn't do
Doesn't confirm legal existence
That's registry data — a separate check from a company registry provider, not a document-reading problem.
Doesn't run sanctions screening
Watchlist and PEP checks come from a dedicated screening provider, run alongside this API.
Doesn't decide your risk score
Surfaces confidence-scored fields; the workflow and threshold logic stay entirely yours.
Errors and rate limits
| Code | Meaning |
|---|---|
| 400 | Malformed request body or unsupported format |
| 401 | Missing, invalid or revoked API key |
| 422 | No extractable data in the supplied document |
| 429 | Page balance exhausted — top up to continue |
There's no request-per-second throttling to design around — the only limit is your page balance, so a burst of new applications arriving together doesn't need any special-cased handling in your onboarding pipeline.
Security
Uploaded documents are processed encrypted and not shared with third parties. Full detail is on the security page.
Applicant document data is never used to train AI models or shared with third parties.
For a compliance-adjacent flow specifically, this is worth confirming explicitly with your own security or legal team before launch, rather than assuming any document-processing vendor meets the bar by default.
