Try with your file
Drop your bank statement (PDF)
1 file · 100 pages max · Free preview of 2 pages
1 file selected
Save hours every week
Turn your bank statements (PDF) into Excel, CSV or OFX, without manual retyping.
Drop a PDF statement and watch the extraction happen live. Instant preview, no signup required.
An OFX converter for accountants and bookkeepers becomes valuable when a client sends archived bank statements but no usable transaction feed. The goal is not merely to produce an .ofx file. A firm needs to identify the client, account, and period; review the extracted rows; generate the right file for the right account; test the destination; and preserve evidence of what happened.
BankStatementLab now exports OFX from a processed statement. For practices handling historical records, closed accounts, feed gaps, or onboarding backlogs, this creates a controlled route from statement evidence to a structured file for a controlled import test. It does not remove professional review, and it does not promise that every destination will accept the result.
This page covers multi-client boundaries, review ownership, sign-off, and audit evidence. For one statement and the export mechanics themselves, use the step-by-step PDF-to-OFX conversion guide.
This guide turns the feature into a standard operating procedure for client work.
When should an accounting firm choose OFX conversion?
Use OFX conversion when the source statements are the available evidence and the intended destination explicitly supports the generated format. BankStatementLab produces OFX 1.6 SGML. Support for a file named .ofx does not by itself prove that a particular application, version, region, or account configuration will accept that syntax.
A bank-native structured download remains the preferable source when it covers the required period and fits the destination. Conversion is useful when that route is unavailable, incomplete, or no longer accessible.
| Selection criterion | Suitable candidate | Stop or investigate first |
|---|---|---|
| Source | Complete statement for one identified account and period | Screenshots, missing pages, or uncertain ownership |
| Account type | Checking/current or savings | Credit card, loan, investment, or another unsupported account type |
| Destination | Documented OFX route that can be tested | Unknown format support or no controlled test environment |
| Dates | Full dates, or a day/month order proved by the transaction column | Ambiguous dates or a single year across a calendar boundary |
| Account context | Verified currency, identifiers, and closing balance evidence | Values guessed from another account or a current portal view |
| Review capacity | Named preparer and reviewer with source access | Unowned batch with no sign-off or exception process |
An OFX file is structured, not self-validating. It can still carry the wrong date, sign, account identifier, or client context when source controls are weak.
What BankStatementLab does—and what remains with the firm
BankStatementLab processes the statement into transaction tables, lets the user review those rows, and generates OFX from the reviewed result. During export, a modal can request the account type, currency, closing balance, and account identifiers needed for the file.
The product does not provide a live bank feed. The OFX file does not carry a reconciliation decision, produce journal entries or connect to a third-party accounting platform. Pro and Business can provide category suggestions for review; those suggestions do not establish tax treatment or post entries. The separate BankStatementLab reconciliation report supports the bank-to-books comparison; final accounting classification and posting remain under the firm’s control. The accounting integrations overview frames the broader file-based workflow, but the destination’s current documentation is the authority for import requirements.
BankStatementLab prepares the OFX transaction file and also offers a separate bank reconciliation report. Compare processed statements with an accounting export, review the suggested pairs, and approve them individually or together after confirmation. The practice retains control of import, classification and posting.
A firm-ready OFX workflow, from intake to sign-off
A repeatable procedure treats each client-account-period combination as its own work unit. Avoid a generic folder of “statements to convert.” Identify the entity, account, period, and source without exposing unnecessary bank details.
| Workflow stage | Preparer action | Reviewer control | Evidence retained |
|---|---|---|---|
| 1. Register intake | Record client, entity, account label, period, source, and requested destination | Confirm scope and authorization | Intake record and original statement |
| 2. Isolate the work unit | Place only one client’s approved account material in the working boundary | Check that no other client or account is present | Folder or job identifier |
| 3. Process statement | Create the transaction table in BankStatementLab | Compare table boundaries and period with source | Processed result reference |
| 4. Review rows | Check dates, descriptions, amount signs, and table completeness | Reperform totals and sample source-to-row checks | Exception and correction log |
| 5. Complete OFX modal | Enter verified account type, currency, closing balance, and identifiers | Match every value to source evidence | Modal inputs or review note |
| 6. Generate and label | Create one OFX per retained table and label each output | Map every file to one source table and destination account | OFX file or ZIP manifest |
| 7. Test import | Use a small, controlled scope in the exact destination setup | Check rejects, duplicates, count, signs, and totals | Test results and approval |
| 8. Import and reconcile | Complete the approved import | Reconcile imported activity to the reviewed source | Import log and reconciliation evidence |
1. Register the client, account, and period before processing
Before upload, record the statement owner, legal entity, bank account, period, and intended destination. If any answer is uncertain, hold the job.
2. Keep strict boundaries between clients and accounts
Never combine statements because they arrived together, share a bank, or belong to related entities. Use separate work units for each client and account, apply the firm’s confidentiality and retention policies, and map every generated OFX to one approved destination account.
3. Review the processed transaction table against the source
OFX export starts from a processed statement. Review the first and last transaction, period, table boundaries, date sequence, descriptions, amount signs, repeated headers, carried balances, and subtotals. Check every transaction table. Combine row count, date span, net movement, and table totals with source-to-row checks: an equal balance alone does not rule out offsetting omissions.
4. Resolve missing years only when the date pattern proves the order
Some statements show day and month on each row but the year elsewhere. Use BankStatementLab’s missing-year choice only when the date pattern in the transaction column proves the day/month order, then confirm the selected year from the statement or another reliable source. December and January rows cannot all inherit one year. If one year cannot resolve the dates, correct the full dates or handle the periods separately before export.
5. Complete the account details from authoritative evidence
Enter the requested account type, currency, closing balance, and identifiers from the statement or an authoritative record for the same account and period. A French IBAN can provide the relevant banking components; otherwise supply the applicable local account and bank or routing identifiers. Do not copy details from a sibling account. BankStatementLab does not invent a closing balance, so resolve missing evidence rather than substituting a current balance.
6. Treat blocked exports as control exceptions
A transaction with an invalid date, missing description, or zero amount initially blocks generation. The export dialog can accept source-verified corrections for supported issues. Where offered, it can also explicitly exclude eligible invalid rows or tables. It shows the exclusion counts and checks the retained selection again; nothing is silently omitted. These actions change the export copy, not the saved extraction.
Log the exception and compare it with the statement before choosing a correction or exclusion. An excluded real transaction still needs separate resolution. Record its amount, reason, and destination treatment, and compare the retained export plus documented exclusions with the complete source population. A partial export must not be signed off as the full account period.
7. Map one OFX file to each transaction table
BankStatementLab generates one OFX file per retained transaction table. If the export contains multiple tables, the output is a ZIP containing those separate files.
A ZIP is a delivery container, not permission to merge accounts. Map each filename to its client, source table, date range, and intended destination. If ownership is unclear, stop.
Preparing an archived client period now? Create a BankStatementLab account and review a pilot OFX export, then apply your firm’s approval and test-import gates before using the output.
Controls before and after OFX export
The best workflow preserves the same account identity and transaction population at every stage. The following table turns that principle into review points.
| Control | Before generation | After test import |
|---|---|---|
| Client and entity | Confirm intake record matches the source | Confirm the destination company or ledger is the approved one |
| Account | Verify type, currency, identifiers, and statement label | Confirm the file mapped to the intended destination account |
| Period | Confirm first date, last date, and missing-year decisions | Confirm the imported range has not shifted or truncated |
| Population | Compare retained rows plus documented exclusions with the full source | Compare accepted, rejected, and existing rows with the test log |
| Amounts | Review signs, decimals, and zero-value exceptions | Reconcile debit/credit direction and totals |
| Narratives | Resolve blank or broken descriptions | Check material truncation or character handling |
| Balance | Use the documented period-end closing balance | Reconcile the resulting position using the firm’s normal process |
| Duplicates | Identify prior imports for the same account and dates | Review destination warnings and existing transaction matches |
An accepted file can still reach the wrong account or interact badly with existing transactions. “Import completed” is an event to review, not an audit conclusion.
How to test imports without making compatibility promises
OFX importers vary by version, account type, required fields, date rules, encoding, and duplicate logic. Never convert a full archive based on a generic compatibility claim. Test the exact destination version and account configuration on the smallest representative period available. Record:
- the source and generated filename;
- destination entity and account;
- software version or configuration relevant to the test;
- exported, explicitly excluded, accepted, rejected, and existing row counts;
- imported date range and net movement;
- warnings, mapping choices, corrections, and rollback action;
- preparer, reviewer, and approval date.
Expand only after the test passes the firm’s criteria. If rejected, investigate the documented requirement instead of repeatedly changing account data.
FITIDs may support duplicate checks, but do not replace them
BankStatementLab creates deterministic FITIDs for transactions. Stable identifiers may help an importer recognize a transaction it has previously seen. They do not guarantee that a destination will detect, reject, or merge duplicates.
The destination may ignore FITIDs, combine them with account identifiers, or apply separate date and history rules. Edited data can also change identifier inputs. Historical files may overlap with an old feed, manual batch, earlier import, or opening-balance work. Use layered controls: period register, account mapping, test import, destination review, and reconciliation.
Onboarding historical statements without losing the audit trail
A new client may provide years of archives with no usable feed. Inventory them by entity, account, currency, and month; identify gaps and overlaps; then pilot one representative account-period. Once it passes review and destination testing, process bounded batches. Preserve originals and track whether each period is unprocessed, reviewed, exported, tested, imported, reconciled, or held.
| Weak starting point | Controlled firm approach |
|---|---|
| Mixed archive named “client bank” | Inventory by entity, account, currency, and period |
| One conversion covering every year | Representative pilot followed by bounded batches |
| Files passed between staff without ownership | Named preparer, reviewer, status, and approval |
| Assumed account details | Values traced to statement or authoritative record |
| Import success used as proof of correctness | Source review plus import reconciliation |
| Generated outputs kept without mapping | Manifest linking source, table, OFX file, and destination |
For the wider handoff, see how to prepare bank statements for an accountant. OFX conversion sits inside that evidence and approval framework.
Frequently asked questions
Can an accounting firm use BankStatementLab to create OFX from client statements?
Yes. BankStatementLab generates OFX 1.6 SGML from reviewed statement transactions. Its separate bank reconciliation report compares processed statements with an accounting export, proposes matches for your approval, and exports the report as Excel, CSV or PDF. Neither workflow connects directly to your bank or posts journal entries to another system. Category suggestions still require review.
Which accounts and details are supported for OFX export?
The current OFX export supports checking or current accounts and savings accounts. The export modal may require account type, currency, closing balance, and account identifiers. A French IBAN can supply the relevant banking components; for other accounts, use the applicable local account and bank or routing identifiers. A missing closing balance is not invented.
What should a bookkeeper do when transaction dates have no year?
Use the missing-year choice only when the date pattern in the transaction column proves the day/month order. Confirm the year from reliable statement evidence. A year-end statement can contain both December and January, so one selected year may be wrong. If one year cannot resolve the dates, correct the full dates or handle the periods separately.
Can several client accounts be combined into one OFX file?
Keep clients and accounts strictly separate. BankStatementLab creates one OFX file for each retained transaction table; when the export contains multiple tables, those files are delivered in a ZIP. Treat each file as a separately identified account-period unit and map it to one approved destination account.
What happens if one transaction is invalid?
A missing description, invalid date, or zero amount initially blocks generation. Nothing is silently dropped. Resolve supported issues in the export dialog using source-verified corrections, or explicitly exclude eligible invalid rows or tables when the dialog offers that option. These choices affect the export copy, not the saved extraction. Record exclusions and reconcile them separately before treating the account period as complete.
Does OFX guarantee a successful import or prevent duplicates?
No. Import behavior depends on the destination’s supported OFX version, configuration, validation rules, and existing data. BankStatementLab generates deterministic FITIDs, which may help a destination identify repeated transactions, but they never guarantee duplicate detection. Run a small test import and reconcile the result before expanding the scope.
Build a controlled OFX workflow for client work
For an accounting practice, the value of OFX conversion is a repeatable handoff from statement evidence to a reviewable import file. BankStatementLab provides the processed table, export checks, OFX 1.6 SGML output, and separate files for separate tables. Your firm supplies the client boundary, source verification, account approval, destination test, reconciliation, and audit trail.
Start with one client, one account, and one representative period. Prove the dates, use source-verified account details and closing balance, resolve every blocked transaction, and test the exact destination before scaling the historical workload.
Create your BankStatementLab account and prepare a controlled OFX export.
Related Articles
Ready to prepare your OFX export?
Turn a processed statement into an OFX file, review the data, then test the import in your target software.