Parse Open Financial Exchange (OFX) files into a usable data structure. Also supports Quicken/QFX files.
✨ Now includes fairly comprehensive TypeScript types and documentation of the various OLX data fields in the parsed data structure.
For details on the OFX file format, download the latest specification from https://financialdataexchange.org/about-fdx/ofx-work-group/
- Work in any JS environment (no dependencies at all)
- Have as small a footprint as possible
- Parse only, no serialization
- Full TypeScript types (opt-in using
parseStrictinstead ofparseSync)
This was originally based on node-ofx, but has since been modified extensively.
Installation:
npm install ofx-jsExample usage:
import { parseStrict as parseOFX } from 'ofx-js';
const ofxString = readFile("bank-statement.ofx");
const ofxData = parseOFX(ofxString);
// Check that this file includes the expected response data:
if (!ofxData.OFX.BANKMSGSRSV1?.STMTTRNRS || Array.isArray(ofxData.OFX.BANKMSGSRSV1.STMTTRNRS)) {
throw Error('Expected a single statement transaction response.');
}
const statementResponse = ofxData.OFX.BANKMSGSRSV1.STMTTRNRS.STMTRS;
if (!statementResponse) {
throw Error('Missing statement response payload.');
}
const accountId = statementResponse.BANKACCTFROM.ACCTID;
const currencyCode = statementResponse.CURDEF;
// Bank account transactions: may be an array of transactions, a single transaction, or undefined.
const transactionStatement = statementResponse.BANKTRANLIST?.STMTTRN;
// do something...