Turn a PDF or scanned bank statement into an OFX, QFX or CSV file the NetSuite bank statement parsers accept, then upload it and reconcile.
Upload your bank statement
Drop file here or click to upload
PDF, JPG, PNG, BMP, HEIC, TIFF
Uploading...
NetSuite imports bank statements through parser plug-ins rather than by reading a PDF. The default parsers accept OFX, QFX, CSV, BAI2 and CAMT.053, and the Bank Statement Parsers SuiteApp adds MT940 alongside them. QIF is not supported at all. You upload the file on the Bank Statement Upload page against a Financial Institution record and its format profile, then track the result in Banking Import History. Since a PDF statement is not one of those formats, the practical route is to convert the statement first. An OFX file is usually the cleanest choice, because the NetSuite OFX and QFX parser reads versions 102, 103, 211 and 220, and the OFX built here is version 102.
NetSuite is strict about statement formats in a way that smaller accounting packages are not, and the file most finance teams actually hold is the one format it will never read.
Every supported route into bank reconciliation goes through a parser that expects structured data. A PDF statement, whether it came from online banking or from a scanner, is not one of the accepted inputs and there is no setting that changes that.
Oracle documents QIF as unsupported for the default parsers. Teams migrating from older finance software often have QIF exports on hand and find out only at upload time that this particular format is a dead end in NetSuite.
Importing with the default CSV parser means using the template downloadable from the Bank Statement Upload page as-is, and a CSV file can only carry transactions for a single account. A spreadsheet you built yourself will not map cleanly.
The default BAI2 parser covers a short list of institutions: TD, Wells Fargo, US Bank, JP Morgan Chase and Bank of America Merrill Lynch. If your bank is not on it, the file that looked like the enterprise answer needs a custom parser instead.
Downloadable transaction history at most banks runs to roughly the last 90 days, while the statement archive goes back years. Loading prior periods for a reconciliation catch-up means working from statements, not from the download screen.
The parsers expect UTF-8, the CAMT.053 parser accepts UTF-8 only, and the OFX and QFX import asks you to pick a character encoding. A file saved with the wrong encoding fails in a way that rarely names the real cause.
The conversion step exists to bridge one gap: you have a PDF, and NetSuite wants OFX, QFX or a template-shaped CSV.
The OFX written here declares version 102, one of the four versions the NetSuite OFX and QFX parser reads, alongside 103, 211 and 220. That is the format match that makes the upload uneventful.
OFX and QFX carry a unique identifier on every transaction. That is what gives a reconciliation something to match against when statement periods overlap, which CSV rows cannot offer.
Image-only PDFs, scans and photographed pages are read the same way as text PDFs, which matters most for the older periods that exist on paper and nowhere else.
Up to 50 statements per upload, each up to 50MB, with an option to merge one account's monthly PDFs into a single continuous file before extraction.
If your workflow uses the CSV parser or a custom format profile, export CSV or Excel instead and map the columns to the NetSuite template.
Each transaction keeps the running balance exactly as printed on the statement, carried through unchanged into the file Banking Import History imports.
Convert first, then upload against the financial institution record you have already configured.
Upload the PDF or scanned statement here and export OFX, or CSV if your format profile expects the CSV template.
Tip: OFX is the least fragile choice, because it does not depend on matching a column template.
In NetSuite, confirm the Financial Institution record and its format profile point at the parser matching the file you just produced.
Tip: The format profile is where multiple accounts in one file are resolved, so it is worth getting right once.
Go to the Bank Statement Upload page, select the financial institution and format profile, choose the file, and set the character encoding when the OFX or QFX import asks for it.
Tip: Pick UTF-8 unless you have a specific reason not to.
Open Banking Import History to confirm the file parsed and the expected line count arrived, then move on to bank reconciliation.
Tip: The SuiteApp imports statement data only. It does not create NetSuite transactions for you.
Mostly finance teams handling periods or accounts the bank feed does not reach.
A reconciliation cannot wait on a bank connection that is down or on an account that was never linked, and the statement PDF is always available.
A new NetSuite implementation usually needs prior-period history loaded so opening balances reconcile, and that history lives in statements rather than in a 90 day download window.
Auditors ask for periods that predate the current feed. Converting the archived statements produces a dataset that ties back to the documents themselves.
Community banks and credit unions often serve statements and little else, with no BAI2 option and no supported feed, so conversion is the only route in.
NetSuite reads OFX, QFX, CSV, BAI2 and CAMT.053 through its default parsers, and the Bank Statement Parsers SuiteApp adds an MT940 parser. QIF is documented as not supported. PDF is not a supported input in any configuration, which is why a statement downloaded from online banking has to be converted before it can take part in a reconciliation.
Choosing between the accepted formats is mostly a question of what your bank actually provides and how much setup you want to maintain. The table below is the short version.
| Format | Supported by NetSuite | What to know |
|---|---|---|
| OFX | Yes, default parser | Versions 102, 103, 211 and 220. Character encoding is selected during import. Carries a transaction ID. |
| QFX | Yes, default parser | Read by the same parser as OFX, of which it is a variant. Same version list, same encoding prompt. |
| CSV | Yes, default parser | UTF-8, .csv extension, and the template from the Bank Statement Upload page used as-is. One account per file. |
| BAI2 | Yes, with limits | TXT in UTF-8. The default parser covers TD, Wells Fargo, US Bank, JP Morgan Chase and Bank of America Merrill Lynch. Can hold several accounts in one file. |
| CAMT.053 | Yes | XML, UTF-8 only. The ISO 20022 format, common in Europe and rarer on US accounts. |
| MT940 | Via the SuiteApp | The SWIFT format. Provided by the Bank Statement Parsers SuiteApp rather than by the default parsers. |
| QIF | No | Documented as not supported. Convert to OFX instead if QIF is what you have. |
| No | Not an input to any parser. Convert to OFX, QFX or the CSV template first. |
Yes. OFX is handled by a default parser, and the OFX and QFX parser in the Bank Statement Parsers SuiteApp reads versions 102, 103, 211 and 220, accepting either a period or a comma as the decimal separator. During the import you are asked to select the character encoding for the file. The OFX produced by this converter declares version 102, which sits inside that supported range.
OFX tends to be the path of least resistance for anyone loading statements by hand. Unlike the CSV route it does not depend on matching a column template exactly, and unlike BAI2 it does not depend on your bank being one of the handful the default parser recognizes. It also carries a unique identifier on each transaction, which gives reconciliation a real basis for spotting a line that has already been loaded. There is more on the structure of the format on the OFX file format page.
Statement files go in through the Bank Statement Upload page, which works against a Financial Institution record and the format profile attached to it. The financial institution record holds the bank and account details, the format profile tells NetSuite which parser to run and how fields map, and Banking Import History is where you confirm afterwards that the file parsed and the expected transactions arrived.
One detail worth setting expectations on: the Bank Statement Parsers SuiteApp imports statement data only. It does not create NetSuite transactions from the file. What you get is statement lines available to bank reconciliation, which is exactly what you want for matching, but it is not a shortcut for posting entries that were never recorded.
Plenty of teams reach for CSV first because a spreadsheet feels like the flexible option. In NetSuite it is the opposite. Importing with the default parser means using the CSV template that downloads from the Bank Statement Upload page exactly as it comes, in UTF-8, with a .csv extension, and a single file can only carry transactions belonging to one account. A spreadsheet assembled by hand, or exported from another tool with its own column order, will not line up.
That is fixable, either by reshaping the export to the template or by building a custom format profile with your own field mappings, and for a recurring monthly file it can be worth doing once. For a one-off catch-up across several accounts it is usually more work than converting to OFX and skipping the mapping question entirely. If a spreadsheet is genuinely the destination rather than a means to an end, the PDF bank statement to CSV converter covers that output directly.
This is the common reason finance teams end up converting statements at all. Bank download screens typically serve about 90 days of activity, while statements go back years, so any NetSuite implementation, account migration or audit request that touches prior periods runs past the edge of what a feed will give you. The statements themselves are the only complete record.
For that kind of catch-up, convert the monthly PDFs as one batch rather than one at a time. Up to 50 files go in a single upload, and when every document belongs to the same account you can merge them first, so twelve monthly statements come back as one continuous file covering the year and one upload into NetSuite instead of twelve. The bulk bank statement converter page covers how batching and merging behave in more detail.
Two checks catch nearly everything. First, compare the transaction count and the closing balance of each converted statement against the printed document, because a missed or misread amount changes the total and a matching closing balance is strong evidence the lines in between are correct. Second, open Banking Import History after the upload and confirm the file parsed and produced the number of lines you expected.
If a file is rejected without an obvious reason, encoding is the usual culprit. The parsers expect UTF-8, the CAMT.053 parser accepts UTF-8 only, and the OFX and QFX import asks you to choose an encoding rather than guessing. Re-saving the file as UTF-8 and re-running the upload resolves a good share of the failures that otherwise look like a corrupt statement.
NetSuite accepts OFX, QFX, CSV, BAI2 and CAMT.053 through its default parsers, and the Bank Statement Parsers SuiteApp adds MT940. QIF is documented as not supported, and PDF is not an input to any parser. A statement downloaded as a PDF has to be converted to one of the accepted formats before it can be uploaded.
Yes. OFX is read by a default parser, and the OFX and QFX parser supports versions 102, 103, 211 and 220, with either a period or a comma as the decimal separator. You select the character encoding during import. The OFX exported here is version 102, which is inside that supported range.
No. Every supported route into bank reconciliation runs through a parser that expects structured data, and PDF is not among the accepted formats in any configuration. Converting the PDF to OFX, QFX or the NetSuite CSV template first is the practical way in, and scanned statements convert the same way as text PDFs.
No. Oracle documents QIF as not supported for the default bank statement parsers. If QIF is what you have, typically from older finance software, convert the original statement to OFX instead, which the NetSuite parsers do read and which carries transaction identifiers QIF lacks.
Use the Bank Statement Upload page, selecting the Financial Institution record and the format profile that matches your file, then set the character encoding if the OFX or QFX import prompts for it. Afterwards, open Banking Import History to confirm the file parsed and the expected number of transactions arrived.
It is a parser plug-in bundle that reads bank and credit card statement files and imports the data for bank reconciliation. It provides BAI2, CAMT.053, CSV, MT940 and OFX or QFX parsers, and can identify multiple bank accounts in one file when the financial institution and format profiles are configured. It imports statement data only and does not create NetSuite transactions.
Oracle lists TD, Wells Fargo, US Bank, JP Morgan Chase and Bank of America Merrill Lynch for the default BAI2 parser. Accounts at other institutions, including most community banks and credit unions, need a different format or a custom parser, which is a common reason teams convert statements to OFX instead.
Encoding is the most frequent cause. The parsers expect UTF-8, the CAMT.053 parser accepts UTF-8 only, and the OFX and QFX import asks you to select an encoding. Other common causes are a CSV that does not match the NetSuite template, a CSV holding more than one account, and a BAI2 file from a bank the default parser does not cover.
Yes, by converting them as a batch first. Up to 50 statements go into a single upload here, and when they all belong to one account you can merge them before extraction, so a year of monthly PDFs becomes one continuous file and one NetSuite upload rather than twelve separate ones.
No. The Bank Statement Parsers SuiteApp imports statement data for reconciliation and does not create NetSuite transactions from the file. The imported lines are available to match against transactions already recorded, so the import supports reconciliation rather than replacing the posting of entries.
Odoo Accounting reads OFX and QIF natively. The import steps.
Import-ready CSV for Dynamics 365 Business Central.
The NetSuite converter page, formats and mapping notes.
The Sage Intacct route, where the assistant reads OFX.
Turn a PDF statement into an OFX file, format and import steps.
What is inside an OFX file and why the transaction ID matters.
Convert up to 50 statements in one batch, with merging.
CSV output when a format profile expects the CSV template.
The SWIFT MT940 format the SuiteApp parser reads.
Get started converting bank statements to OFX.
USD
per month
per month
$294 charged today
Choose speed vs accuracy when extracting
| Base AI Faster | 2,500 pages |
| Pro AI Best accuracy | 500 pages |
Scale statement conversion with bulk upload, custom templates and reports.
USD
per month
per month
$894 charged today
Choose speed vs accuracy when extracting
| Base AI Faster | 10,000 pages |
| Pro AI Best accuracy | 2,000 pages |
Enterprise-grade bank statement conversion and controls.
USD
per month
per month
$ charged today
Choose speed vs accuracy when extracting
| Base AI Faster | pages |
| Pro AI Best accuracy | pages |