LibOFX: libofx.h File Reference

- Main Page
- Namespaces
- Data Structures
- Files
- Related Pages

- File List
- Globals

# libofx.h File Reference

## Detailed Description

Main header file containing the LibOfx API.

This file should be included for all applications who use this API. This header file will work with both C and C++ programs. The entire API is made of the following structures and functions.

All of the following ofx_proc_* functions are callbacks (Except ofx_proc_file which is the entry point). They must be implemented by your program, but can be left empty if not needed. They are called each time the associated structure is filled by the library.

Important note: The variables associated with every data element have a _valid companion. Always check that data_valid == true before using. Not only will you ensure that the data is meaningfull, but also that pointers are valid and strings point to a null terminated string. Elements listed as mandatory are for information purpose only, do not trust the bank not to send you non-conforming data...

Definition in file inc/libofx.h.

Go to the source code of this file.

## Data Structures
struct | LibofxFileFormatInfo
struct | OfxStatusData
| An abstraction of an OFX STATUS element. More...
struct | OfxAccountData
| An abstraction of an account. More...
struct | OfxSecurityData
| An abstraction of a security, such as a stock, mutual fund, etc. More...
struct | OfxTransactionData
| An abstraction of a transaction in an account. More...
struct | OfxStatementData
| An abstraction of an account statement. More...
struct | OfxCurrency
| NOT YET SUPPORTED. More...
struct | OfxFiServiceInfo
| Information returned by the OFX Partner Server about a financial institution. More...
struct | OfxFiLogin
| Information sufficient to log into an financial institution. More...
struct | OfxPayment
struct | OfxPayee
## Creating OFX Files
This group deals with creating OFX files
#define | OFX_AMOUNT_LENGTH (32 + 1)
#define | OFX_PAYACCT_LENGTH (32 + 1)
#define | OFX_STATE_LENGTH (5 + 1)
#define | OFX_POSTALCODE_LENGTH (11 + 1)
#define | OFX_NAME_LENGTH (32 + 1)
CFCT char * | libofx_request_statement (const struct OfxFiLogin *fi, const struct OfxAccountData *account, time_t date_from)
| Creates an OFX statement request in string form.
CFCT char * | libofx_request_accountinfo (const struct OfxFiLogin *login)
| Creates an OFX account info (list) request in string form.
CFCT char * | libofx_request_payment (const struct OfxFiLogin *login, const struct OfxAccountData *account, const struct OfxPayee *payee, const struct OfxPayment *payment)
CFCT char * | libofx_request_payment_status (const struct OfxFiLogin *login, const char *transactionid)
## Defines
#define | LIBOFX_MAJOR_VERSION 0
#define | LIBOFX_MINOR_VERSION 9
#define | LIBOFX_MICRO_VERSION 1
#define | LIBOFX_BUILD_VERSION 0
#define | LIBOFX_VERSION_RELEASE_STRING "0.9.1"
#define | CFCT
#define | true 1
#define | false 0
#define | OFX_ELEMENT_NAME_LENGTH 100
#define | OFX_SVRTID2_LENGTH (36 + 1)
#define | OFX_CHECK_NUMBER_LENGTH (12 + 1)
#define | OFX_REFERENCE_NUMBER_LENGTH (32 + 1)
#define | OFX_FITID_LENGTH (255 + 1)
#define | OFX_TOKEN2_LENGTH (36 + 1)
#define | OFX_MEMO_LENGTH (255 + 1)
#define | OFX_MEMO2_LENGTH (390 + 1)
#define | OFX_BALANCE_NAME_LENGTH (32 + 1)
#define | OFX_BALANCE_DESCRIPTION_LENGTH (80 + 1)
#define | OFX_CURRENCY_LENGTH (3 + 1)
#define | OFX_BANKID_LENGTH (9 + 1)
#define | OFX_BRANCHID_LENGTH (22 + 1)
#define | OFX_ACCTID_LENGTH (22 + 1)
#define | OFX_ACCTKEY_LENGTH (22 + 1)
#define | OFX_BROKERID_LENGTH (22 + 1)
#define | OFX_ACCOUNT_ID_LENGTH (OFX_BANKID_LENGTH + OFX_BRANCHID_LENGTH + OFX_ACCTID_LENGTH + 1)
#define | OFX_ACCOUNT_NAME_LENGTH 255
#define | OFX_MARKETING_INFO_LENGTH (360 + 1)
#define | OFX_TRANSACTION_NAME_LENGTH (32 + 1)
#define | OFX_UNIQUE_ID_LENGTH (32 + 1)
#define | OFX_UNIQUE_ID_TYPE_LENGTH (10 + 1)
#define | OFX_SECNAME_LENGTH (32 + 1)
#define | OFX_TICKER_LENGTH (32 + 1)
#define | OFX_ORG_LENGTH (32 + 1)
#define | OFX_FID_LENGTH (32 + 1)
#define | OFX_USERID_LENGTH (32 + 1)
#define | OFX_USERPASS_LENGTH (32 + 1)
#define | OFX_URL_LENGTH (500 + 1)
#define | OFX_APPID_LENGTH (32)
#define | OFX_APPVER_LENGTH (32)
#define | OFX_HEADERVERSION_LENGTH (32)
## Typedefs
typedef void * | LibofxContextPtr
## Enumerations
enum | LibofxFileFormat { AUTODETECT, OFX, OFC, QIF, UNKNOWN, LAST, AUTODETECT, OFX, OFC, QIF, UNKNOWN, LAST }
enum | TransactionType { OFX_CREDIT, OFX_DEBIT, OFX_INT, OFX_DIV, OFX_FEE, OFX_SRVCHG, OFX_DEP, OFX_ATM, OFX_POS, OFX_XFER, OFX_CHECK, OFX_PAYMENT, OFX_CASH, OFX_DIRECTDEP, OFX_DIRECTDEBIT, OFX_REPEATPMT, OFX_OTHER, OFX_CREDIT, OFX_DEBIT, OFX_INT, OFX_DIV, OFX_FEE, OFX_SRVCHG, OFX_DEP, OFX_ATM, OFX_POS, OFX_XFER, OFX_CHECK, OFX_PAYMENT, OFX_CASH, OFX_DIRECTDEP, OFX_DIRECTDEBIT, OFX_REPEATPMT, OFX_OTHER }
enum | InvTransactionType { OFX_BUYDEBT, OFX_BUYMF, OFX_BUYOPT, OFX_BUYOTHER, OFX_BUYSTOCK, OFX_CLOSUREOPT, OFX_INCOME, OFX_INVEXPENSE, OFX_JRNLFUND, OFX_JRNLSEC, OFX_MARGININTEREST, OFX_REINVEST, OFX_RETOFCAP, OFX_SELLDEBT, OFX_SELLMF, OFX_SELLOPT, OFX_SELLOTHER, OFX_SELLSTOCK, OFX_SPLIT, OFX_TRANSFER, OFX_BUYDEBT, OFX_BUYMF, OFX_BUYOPT, OFX_BUYOTHER, OFX_BUYSTOCK, OFX_CLOSUREOPT, OFX_INCOME, OFX_INVEXPENSE, OFX_JRNLFUND, OFX_JRNLSEC, OFX_MARGININTEREST, OFX_REINVEST, OFX_RETOFCAP, OFX_SELLDEBT, OFX_SELLMF, OFX_SELLOPT, OFX_SELLOTHER, OFX_SELLSTOCK, OFX_SPLIT, OFX_TRANSFER }
enum | FiIdCorrectionAction { DELETE, REPLACE, DELETE, REPLACE }
## Functions
CFCT LibofxContextPtr | libofx_get_new_context ()
| Initialise the library and return a new context.
CFCT int | libofx_free_context (LibofxContextPtr)
| Free all ressources used by this context.
CFCT void | libofx_set_dtd_dir (LibofxContextPtr libofx_context, const char *s)
CFCT enum LibofxFileFormat | libofx_get_file_format_from_str (const struct LibofxFileFormatInfo format_list[], const char *file_type_string)
| libofx_get_file_type returns a proper enum from a file type string.
CFCT const char * | libofx_get_file_format_description (const struct LibofxFileFormatInfo format_list[], enum LibofxFileFormat file_format)
| get_file_format_description returns a string description of a LibofxFileType.
CFCT int | libofx_proc_file (LibofxContextPtr libofx_context, const char *p_filename, enum LibofxFileFormat ftype)
| libofx_proc_file is the entry point of the library.
CFCT void | ofx_set_status_cb (LibofxContextPtr ctx, LibofxProcStatusCallback cb, void *user_data)
CFCT void | ofx_set_account_cb (LibofxContextPtr ctx, LibofxProcAccountCallback cb, void *user_data)
CFCT void | ofx_set_security_cb (LibofxContextPtr ctx, LibofxProcSecurityCallback cb, void *user_data)
CFCT void | ofx_set_transaction_cb (LibofxContextPtr ctx, LibofxProcTransactionCallback cb, void *user_data)
CFCT void | ofx_set_statement_cb (LibofxContextPtr ctx, LibofxProcStatementCallback cb, void *user_data)
CFCT int | libofx_proc_buffer (LibofxContextPtr ctx, const char *s, unsigned int size)
## Variables
LibofxFileFormatInfo | LibofxImportFormatList []
LibofxFileFormatInfo | LibofxExportFormatList []
CFCT typedef int(*) | LibofxProcStatusCallback (const struct OfxStatusData data, void *status_data)
| The callback function for the OfxStatusData stucture.
CFCT typedef int(*) | LibofxProcAccountCallback (const struct OfxAccountData data, void *account_data)
| The callback function for the OfxAccountData stucture.
CFCT typedef int(*) | LibofxProcSecurityCallback (const struct OfxSecurityData data, void *security_data)
| The callback function for the OfxSecurityData stucture.
CFCT typedef int(*) | LibofxProcTransactionCallback (const struct OfxTransactionData data, void *transaction_data)
| The callback function for the OfxTransactionData stucture.
CFCT typedef int(*) | LibofxProcStatementCallback (const struct OfxStatementData data, void *statement_data)
| The callback function for the OfxStatementData stucture.

## Enumeration Type Documentation

enum FiIdCorrectionAction

Enumerator:

  DELETE | The transaction with a fi_id matching fi_id_corrected should be deleted
  REPLACE | The transaction with a fi_id matching fi_id_corrected should be replaced with this one
  DELETE | The transaction with a fi_id matching fi_id_corrected should be deleted
  REPLACE | The transaction with a fi_id matching fi_id_corrected should be replaced with this one

Definition at line 410 of file inc/libofx.h.

enum InvTransactionType

Enumerator:

  OFX_BUYDEBT | Buy debt security
  OFX_BUYMF | Buy mutual fund
  OFX_BUYOPT | Buy option
  OFX_BUYOTHER | Buy other security type
  OFX_BUYSTOCK | Buy stock
  OFX_CLOSUREOPT | Close a position for an option
  OFX_INCOME | Investment income is realized as cash into the investment account
  OFX_INVEXPENSE | Misc investment expense that is associated with a specific security
  OFX_JRNLFUND | Journaling cash holdings between subaccounts within the same investment account
  OFX_JRNLSEC | Journaling security holdings between subaccounts within the same investment account
  OFX_MARGININTEREST | Margin interest expense
  OFX_REINVEST | Reinvestment of income
  OFX_RETOFCAP | Return of capital
  OFX_SELLDEBT | Sell debt security. Used when debt is sold, called, or reached maturity
  OFX_SELLMF | Sell mutual fund
  OFX_SELLOPT | Sell option
  OFX_SELLOTHER | Sell other type of security
  OFX_SELLSTOCK | Sell stock
  OFX_SPLIT | Stock or mutial fund split
  OFX_TRANSFER | Transfer holdings in and out of the investment account
  OFX_BUYDEBT | Buy debt security
  OFX_BUYMF | Buy mutual fund
  OFX_BUYOPT | Buy option
  OFX_BUYOTHER | Buy other security type
  OFX_BUYSTOCK | Buy stock
  OFX_CLOSUREOPT | Close a position for an option
  OFX_INCOME | Investment income is realized as cash into the investment account
  OFX_INVEXPENSE | Misc investment expense that is associated with a specific security
  OFX_JRNLFUND | Journaling cash holdings between subaccounts within the same investment account
  OFX_JRNLSEC | Journaling security holdings between subaccounts within the same investment account
  OFX_MARGININTEREST | Margin interest expense
  OFX_REINVEST | Reinvestment of income
  OFX_RETOFCAP | Return of capital
  OFX_SELLDEBT | Sell debt security. Used when debt is sold, called, or reached maturity
  OFX_SELLMF | Sell mutual fund
  OFX_SELLOPT | Sell option
  OFX_SELLOTHER | Sell other type of security
  OFX_SELLSTOCK | Sell stock
  OFX_SPLIT | Stock or mutial fund split
  OFX_TRANSFER | Transfer holdings in and out of the investment account

Definition at line 388 of file inc/libofx.h.

enum LibofxFileFormat

List of possible file formats

Enumerator:

  AUTODETECT | Not really a file format, used to tell the library to try to autodetect the format
  OFX | Open Financial eXchange (OFX/QFX) file
  OFC | Microsoft Open Financial Connectivity (OFC)
  QIF | Intuit Quicken Interchange Format (QIF)
  UNKNOWN | Unknown file format
  LAST | Not a file format, meant as a loop breaking condition
  AUTODETECT | Not really a file format, used to tell the library to try to autodetect the format
  OFX | Open Financial eXchange (OFX/QFX) file
  OFC | Microsoft Open Financial Connectivity (OFC)
  QIF | Intuit Quicken Interchange Format (QIF)
  UNKNOWN | Unknown file format
  LAST | Not a file format, meant as a loop breaking condition

Definition at line 114 of file inc/libofx.h.

enum TransactionType

Enumerator:

  OFX_CREDIT | Generic credit
  OFX_DEBIT | Generic debit
  OFX_INT | Interest earned or paid (Note: Depends on signage of amount)
  OFX_DIV | Dividend
  OFX_FEE | FI fee
  OFX_SRVCHG | Service charge
  OFX_DEP | Deposit
  OFX_ATM | ATM debit or credit (Note: Depends on signage of amount)
  OFX_POS | Point of sale debit or credit (Note: Depends on signage of amount)
  OFX_XFER | Transfer
  OFX_CHECK | Check
  OFX_PAYMENT | Electronic payment
  OFX_CASH | Cash withdrawal
  OFX_DIRECTDEP | Direct deposit
  OFX_DIRECTDEBIT | Merchant initiated debit
  OFX_REPEATPMT | Repeating payment/standing order
  OFX_OTHER | Somer other type of transaction
  OFX_CREDIT | Generic credit
  OFX_DEBIT | Generic debit
  OFX_INT | Interest earned or paid (Note: Depends on signage of amount)
  OFX_DIV | Dividend
  OFX_FEE | FI fee
  OFX_SRVCHG | Service charge
  OFX_DEP | Deposit
  OFX_ATM | ATM debit or credit (Note: Depends on signage of amount)
  OFX_POS | Point of sale debit or credit (Note: Depends on signage of amount)
  OFX_XFER | Transfer
  OFX_CHECK | Check
  OFX_PAYMENT | Electronic payment
  OFX_CASH | Cash withdrawal
  OFX_DIRECTDEP | Direct deposit
  OFX_DIRECTDEBIT | Merchant initiated debit
  OFX_REPEATPMT | Repeating payment/standing order
  OFX_OTHER | Somer other type of transaction

Definition at line 368 of file inc/libofx.h.

## Function Documentation

CFCT int libofx_free_context | ( | LibofxContextPtr |  | ) |

Free all ressources used by this context.

Returns:
  0 if successfull.

Definition at line 144 of file context.cpp.

Referenced by libofx_free_context(), and main().

CFCT const char* libofx_get_file_format_description | ( | const struct LibofxFileFormatInfo | format_list[],
|  | enum LibofxFileFormat | file_format |
| ) |  |  |

get_file_format_description returns a string description of a LibofxFileType.

The file format list in which the format should be looked up, usually LibofxImportFormatList or LibofxExportFormatList The file format which should match one of the formats in the list.

Returns:
  null terminated string suitable for debugging output or user communication.

Definition at line 37 of file file_preproc.cpp.

Referenced by libofx_proc_file().

CFCT enum LibofxFileFormat libofx_get_file_format_from_str | ( | const struct LibofxFileFormatInfo | format_list[],
|  | const char * | file_type_string |
| ) |  |  |

libofx_get_file_type returns a proper enum from a file type string.

The file format list in which the format string should be found, usually LibofxImportFormatList or LibofxExportFormatList The string which contain the file format matching one of the format_name of the list.

Returns:
  the file format, or UNKNOWN if the format wasn't recognised.

Definition at line 54 of file file_preproc.cpp.

Referenced by main().

CFCT LibofxContextPtr libofx_get_new_context | ( |  | ) |

Initialise the library and return a new context.

Note:
  : Actual object returned is LibofxContext *

Definition at line 140 of file context.cpp.

Referenced by libofx_get_new_context(), and main().

CFCT int libofx_proc_buffer | ( | LibofxContextPtr | ctx,
|  | const char * | s,
|  | unsigned int | size |
| ) |  |  |

Parses the content of the given buffer.

Definition at line 280 of file ofx_preproc.cpp.

CFCT int libofx_proc_file | ( | LibofxContextPtr | libofx_context,
|  | const char * | p_filename,
|  | enum LibofxFileFormat | ftype |
| ) |  |  |

libofx_proc_file is the entry point of the library.

libofx_proc_file must be called by the client, with a list of 1 or more OFX files to be parsed in command line format.

Definition at line 67 of file file_preproc.cpp.

Referenced by main().

CFCT char* libofx_request_accountinfo | ( | const struct OfxFiLogin * | login | ) |

Creates an OFX account info (list) request in string form.

Creates a string which should be passed to an OFX server. This string is an OFX request suitable to retrieve a list of accounts from the `fi`

Parameters:

  | fi | Identifies the financial institution and the user logging in.

Returns:
  string pointer to the request. This is allocated via malloc(), and is the callers responsibility to free.

CFCT char* libofx_request_statement | ( | const struct OfxFiLogin * | fi,
|  | const struct OfxAccountData * | account,
|  | time_t | date_from |
| ) |  |  |

Creates an OFX statement request in string form.

Creates a string which should be passed to an OFX server. This string is an OFX request suitable to retrieve a statement for the `account` from the `fi`

Parameters:

  | fi | Identifies the financial institution and the user logging in.
  | account | Idenfities the account for which a statement is desired

Returns:
  string pointer to the request. This is allocated via malloc(), and is the callers responsibility to free.

CFCT void ofx_set_account_cb | ( | LibofxContextPtr | ctx,
|  | LibofxProcAccountCallback | cb,
|  | void * | user_data |
| ) |  |  |

Set the account callback in the given context.

Parameters:

  | ctx | context
  | cb | callback function
  | user_data | user data to be passed to the callback

Definition at line 169 of file context.cpp.

Referenced by main(), and ofx_set_account_cb().

CFCT void ofx_set_security_cb | ( | LibofxContextPtr | ctx,
|  | LibofxProcSecurityCallback | cb,
|  | void * | user_data |
| ) |  |  |

Set the security callback in the given context.

Parameters:

  | ctx | context
  | cb | callback function
  | user_data | user data to be passed to the callback

Definition at line 177 of file context.cpp.

Referenced by main(), and ofx_set_security_cb().

CFCT void ofx_set_statement_cb | ( | LibofxContextPtr | ctx,
|  | LibofxProcStatementCallback | cb,
|  | void * | user_data |
| ) |  |  |

Set the statement callback in the given context.

Parameters:

  | ctx | context
  | cb | callback function
  | user_data | user data to be passed to the callback

Definition at line 193 of file context.cpp.

Referenced by main(), and ofx_set_statement_cb().

CFCT void ofx_set_status_cb | ( | LibofxContextPtr | ctx,
|  | LibofxProcStatusCallback | cb,
|  | void * | user_data |
| ) |  |  |

Set the status callback in the given context.

Parameters:

  | ctx | context
  | cb | callback function
  | user_data | user data to be passed to the callback

Definition at line 162 of file context.cpp.

Referenced by main(), and ofx_set_status_cb().

CFCT void ofx_set_transaction_cb | ( | LibofxContextPtr | ctx,
|  | LibofxProcTransactionCallback | cb,
|  | void * | user_data |
| ) |  |  |

Set the transaction callback in the given context.

Parameters:

  | ctx | context
  | cb | callback function
  | user_data | user data to be passed to the callback

Definition at line 185 of file context.cpp.

Referenced by main(), and ofx_set_transaction_cb().

## Variable Documentation

struct LibofxFileFormatInfo LibofxExportFormatList[]

Initial value:

    {
    {QIF, "QIF", "QIF (Intuit Quicken Interchange Format) NOT IMPLEMENTED"},
    {LAST, "LAST", "Not a file format, meant as a loop breaking condition"}
    }

Definition at line 140 of file inc/libofx.h.

struct LibofxFileFormatInfo LibofxImportFormatList[]

Initial value:

    {
    {AUTODETECT, "AUTODETECT", "AUTODETECT (File format will be automatically detected later)"},
    {OFX, "OFX", "OFX (Open Financial eXchange (OFX or QFX))"},
    {OFC, "OFC", "OFC (Microsoft Open Financial Connectivity)"},
    {QIF, "QIF", "QIF (Intuit Quicken Interchange Format) NOT IMPLEMENTED"},
    {LAST, "LAST", "Not a file format, meant as a loop breaking condition"}
    }

Definition at line 131 of file inc/libofx.h.

Referenced by libofx_get_file_format_description(), libofx_get_file_format_from_str(), libofx_proc_file(), and main().

CFCT typedef int(*) LibofxProcAccountCallback(const struct OfxAccountData data, void *account_data)

The callback function for the OfxAccountData stucture.

The ofx_proc_account_cb event is always generated first, to allow the application to create accounts or ask the user to match an existing account before the ofx_proc_statement and ofx_proc_transaction event are received. An OfxAccountData is passed to this event.

Note however that this OfxAccountData structure will also be available as part of OfxStatementData structure passed to ofx_proc_statement event, as well as a pointer to an arbitrary data structure.

Definition at line 310 of file inc/libofx.h.

CFCT typedef int(*) LibofxProcSecurityCallback(const struct OfxSecurityData data, void *security_data)

The callback function for the OfxSecurityData stucture.

An ofx_proc_security_cb event is generated for any securities listed in the ofx file. It is generated after ofx_proc_statement but before ofx_proc_transaction. It is meant to be used to allow the client to create a new commodity or security (such as a new stock type). Please note however that this information is usually also available as part of each OfxtransactionData. An OfxSecurityData structure is passed to this event, as well as a pointer to an arbitrary data structure.

Definition at line 366 of file inc/libofx.h.

CFCT typedef int(*) LibofxProcStatementCallback(const struct OfxStatementData data, void *statement_data)

The callback function for the OfxStatementData stucture.

The ofx_proc_statement_cb event is sent after all ofx_proc_transaction events have been sent. An OfxStatementData is passed to this event, as well as a pointer to an arbitrary data structure.

Definition at line 622 of file inc/libofx.h.

CFCT typedef int(*) LibofxProcStatusCallback(const struct OfxStatusData data, void *status_data)

The callback function for the OfxStatusData stucture.

An ofx_proc_status_cb event is sent everytime the server has generated a OFX STATUS element. As such, it could be received at any time(but not during other events). An OfxStatusData structure is passed to this event, as well as a pointer to an arbitrary data structure.

Definition at line 234 of file inc/libofx.h.

CFCT typedef int(*) LibofxProcTransactionCallback(const struct OfxTransactionData data, void *transaction_data)

The callback function for the OfxTransactionData stucture.

An ofx_proc_transaction_cb event is generated for every transaction in the ofx response, after ofx_proc_statement (and possibly ofx_proc_security is generated. An OfxTransactionData structure is passed to this event, as well as a pointer to an arbitrary data structure.

Definition at line 553 of file inc/libofx.h.