Try with your file
Drop your PDF
1 file · 100 pages max · Free preview of 2 pages
1 file selected
Save hours every week
Turn your PDFs into Excel, CSV, or OFX, with no manual data entry.
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 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. It does not reconcile the account, categorize transactions, produce journal entries, or integrate directly with a third-party accounting platform. Those steps remain in the destination and the firm’s procedure. The accounting integrations overview frames the broader file-based workflow, but the destination’s current documentation is the authority for import requirements.
BankStatementLab prepares a reviewed transaction file; the practice controls approval, import, reconciliation, 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 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. Combine row count, date span, net movement, and table totals with source-to-row checks.
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 blocks the whole OFX request. No partial file is produced by silently dropping the affected row.
Log the exception, compare it with the statement, correct the table when evidence supports the change, repeat the review, and generate again. Do not delete a difficult row merely to make the export pass.
7. Map one OFX file to each transaction table
BankStatementLab generates one OFX file per processed transaction table. If the processed statement 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 prepare 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 table count, row count, and net movement with 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;
- submitted, 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 can generate OFX 1.6 SGML from a processed statement after the extracted transactions have been reviewed. The workflow is designed for preparing a structured file; it does not connect to a bank, reconcile the account, categorize transactions, create journal entries, or send data directly to third-party software.
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 processed transaction table; when a statement 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 blocks the whole OFX request. BankStatementLab does not silently omit the affected row and export the rest. Correct the source table, repeat the review, and generate the export again so the exception remains visible and documented.
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.