This is the LibOFX library. It is a parser and an API designed to allow applications to very easily support OFX command responses, usually provided by financial institutions for statement downloads. To my knowledge, it is the first working OpenSource implementation of the OFX (Open Financial eXchange) specification on the client side. This project was first started as my end of degree project, with the objective to add OFX support to GnuCash. It since evolved into a generic library, so all OpenSource Financial software can benefit.


News: For the latest version of LibOFX, see the Project News or the NEWS file


LibOFX is based on the excellent OpenSP library written by James Clark, and now part of the OpenJADE project . OpenJADE 1.3.1 includes a version on OpenSP that will link, however, it has some major problems with LibOFX and isn't recommended. Since LibOFX uses the generic interface to OpenSP, it should be compatible with all recent versions of OpenSP (It has been developed with OpenSP-1.5pre5).

LibOFX strives to achieve the following design goals:

*Simplicity: OFX is a VERY complex spec. However, few if any software needs all this complexity. The library tries to hide this complexity by "flattening" the data structures, doing timezone conversions, currency conversion, etc.
*Data directly usable from C, without conversion: A date is a C time_t, money is a float, strings are char[], etc.
*C style interface: Although LibOFX is written in C++, it provides an interface usable transparently from both C and C++, using a single header file.


Current status:

LibOFX was implemented directly from the full OFX 1.6 spec, and currently supports:

Future projects for libofx include:

Full documentation of the API and library internals generated using doxygen is available. For a quick start, you should learn all you need to know to get started by reading the libofx.h file in the INC directory, and ofxdump.cpp in the ofxdump directory.


Human nature being what it is, no one would be willing to try out this library, or even believe that it is operational if I didn't do something usefull as distributed. For this reason two utilities are included with libofx:

*ofxdump: ofxdump outputs to stdout, in human readable form, everything the library understands about a particular ofx response file, and sends errors to stderr. It is as C++ code example and demo of the library (it uses every functions and every structures of LibOFX) usage: ofxdump path_to_ofx_file/ofx_filename

*ofxtoqif: ofx2qif is a OFX "file" to QIF (Quicken Interchange Format) converter. It was written as a C code example, and as a way for LibOFX to immediately provide something usefull, as an incentive for people to try out the library. It is not recommended that financial software use the output of this utility for OFX support. The QIF file format is very primitive, and much information is lost. The utility curently supports every tansaction tags of the qif format except the address lines, and supports many of the tags of !Account. It should generate QIF files that will import sucesfully in just about every software with QIF support. I do not plan on working on this utility much further, but I would be more than happy to accept contributions.
usage: ofx2qif path_to_ofx_file/ofx_filename > output_filename.qif

Call for help:

Benoit Grégoire (benoitg@coeus.c)

If you have any problem or inquiry regarding this site, don't hesitate to contact me ----------

SourceForge Logo