Xero & QBO App Store ratings

Bank Statement Extraction, Rebuilt From the Ground Up

Multi-account, multi-currency, account codes, tax rates, and double-entry, extracted automatically and validated line by line. Then it posts straight into Xero, no CSV in between.
Company logoCompany logo
MacBook mockup

Extraction Was Never the Hard Part

You could already get transactions out of a PDF. The work that ate your day was everything after: separating accounts, converting currencies, coding each line, and checking it all still balanced before you dared import it.

Splitting accounts and currencies by hand

One statement, three accounts, two currencies. Untangling which transaction belongs where is its own project before coding even starts.

Coding after extraction, not during it

Dates and amounts alone don't get you to a postable entry. Someone still has to assign account codes, apply the right tax rate, and tag each line, transaction by transaction.

No way to catch an error until reconciliation fails

A missed line or a bad running balance surfaces weeks later, in a client call, not at the moment it happened.

CSV as the missing link

Extract, export to CSV, reformat, re-import. Every hop is a chance for something to break or drop.

Upload the PDF. Tofu does the coding, the checking, and the posting.

From Statement to Posted Entry

Upload the PDF. Tofu does the coding, the checking, and the posting.

Multi-account, multi-currency, handled natively

A single statement with several accounts or currencies in different denominations gets split, matched, and converted correctly, no manual separation first.

Account code, tax rate, and tags per line, double-entry intact

Not just what happened and for how much, but how each line should be coded, automatically — with parent and child lines keeping their double-entry relationship intact instead of collapsing into a single flat row.

Multi-level validation, before anything reaches you

Opening and closing balances, transaction dates, credit and debit totals, and per-line running balances are all checked. If something doesn't reconcile, tofu re-extracts rather than handing you a broken file.

Direct to Xero, no CSV

The extracted, coded, validated entry posts straight into Xero. No export, no reformat, no re-import.

What's New?

Five upgrades that take a statement from PDF to posted entry.

Multi-account, multi-currency in one upload

A single statement with several accounts or currencies gets split, matched, and converted correctly. USD, SGD, EUR, and JPY accounts from one file, each balanced independently.

Tofu extracting four bank accounts in different currencies from a single statement upload
Tofu extraction settings showing tax rate, currency, and per-line field configuration

Automatic line-level coding

Account code, tax rate, and tags extracted per transaction. Not just what happened and for how much, but how it should be coded, automatically.

Double-entry support

Parent and child lines keep their relationship intact, with a full journal entry review of debits and credits, instead of collapsing into a single flat row.

Journal entry review in Tofu showing debit and credit lines with child transactions
Tofu validation summary comparing extracted and calculated balances with per-line checks

Four-point validation before anything is handed back

Opening and closing balances, transaction dates, credit and debit totals, and per-line running balances, all checked. If something doesn't reconcile, Tofu re-extracts rather than handing you a broken file.

Direct Xero posting

The extracted, coded, validated entry posts straight into Xero. No export, no reformat, no re-import.

Bank statement published to Xero from Tofu with View in Xero button

How It Works, in Four Steps

No templates or format settings. Drop any bank statement, including multi-account and multi-currency files, and Tofu extracts, codes, validates, and posts straight to Xero.

Step 1: Upload

Drop any bank statement PDF into Tofu, any bank, any country, any length, including multi-account and multi-currency statements in a single file.

Step 2: Extract and Code

Tofu reads every transaction, date, description, amount, reference, and debit or credit, then assigns account code, tax rate, and tags per line, preserving double-entry and child-transaction structure.

Step 3: Validate

Opening and closing balances, transaction dates, credit and debit totals, and per-line running balances are checked automatically. Click any field to see exactly where it came from on the original statement.

Step 4: Post

One click sends the validated entry straight into Xero. No CSV, no manual import.

What makes Tofu different

Capability Tofu Vendor A Vendor B Vendor C
Extract rows to CSV Yes Yes Yes Yes
Per-entity coding to client's own COA, tax, tags (double-entry / child transactions) Yes, self-learning from the GL Partial, receipts and invoices only Partial, learns nominal and VAT codes Rule based only
Multi-account plus multi-currency in one statement Yes (revamp) No, rejects multi-account No Splits multi-account, not multi-currency native
Validation and AI agentic self-correction loop Yes, re-extracts until math ties No Balance check only Balance check only
Multilingual plus handwriting (200+ languages) Yes No, English centric No, English centric No, English and Latin
Pricing Flat rate, unlimited users and entities Per client, costly at scale Credit based, statements cost more Tiered

Bank Statement Extraction FAQs

Can’t find the answer you’re looking for? Please contact our team.
What's different about the rebuilt bank statement extraction?

It now handles multi-account and multi-currency statements natively, extracts account code, tax rate, and tags per transaction, supports double-entry with child transactions, and posts directly to Xero without a CSV step.

Can it handle multiple accounts or currencies in one statement?

Yes. A single upload can contain several accounts and currencies, correctly split and converted.

Does it just extract, or does it code the transactions too?

It codes each line, account code, tax rate, and tags, so the output is postable, not just readable.

How does validation work?

Tofu checks opening and closing balances, transaction dates, credit and debit totals, and per-line running balances before anything is handed back. If it doesn't reconcile, it re-extracts.

Do I still need to export to CSV?

No. Validated entries post directly to Xero.

Can Tofu handle multi-page statements?

Yes, tested past 1,000 pages in a single upload, with no page limits.

How much does it cost?

Plans start at $79/month and include a monthly extraction allowance. Bank statement pages each count as one extraction. Xero integration is free, with unlimited users on every plan.

Does it support double-entry and child transactions?

Yes. Parent and child lines keep their relationship intact, with a full journal entry review of debits and credits, instead of collapsing into a single flat row.

Do I need bank templates or setup first?

No. Upload any bank statement from any bank or country. Tofu adapts automatically — no templates, format settings, or configuration required.

How bookkeepers like you use Tofu

Trusted by thousands of bookkeepers and accounting firms across 30+ countries.
"tofu's multilingual AI and simple UI could half our bookkeeping workload — we're excited for it."
Photo of Wincent Low, Director at Klozer
Wincent Low
Director
,
Klozer
"tofu definitely saves our bookkeeper's time and it is easy to use. tofu is a pivotal step for our digital transformation."
Photo of Kosuke Hiura, Partner at GoGlobal
Kosuke Hiura
Partner
,
Phoenix Accounting Group
"tofu cuts our invoice time nearly in half and nailed the translations—the learning curve is small compared with the payoff."
Photo of Leh Choon Wong, Head of GBS at GoGlobal
Leh Choon Wong
Head of GBS
,
GoGlobal

Upload Your Messiest Multi-Account, Multi-Currency Statement.

Coded, validated, and posted to Xero, no CSV required.