E-Banking Integrator V4
  • Latest Releases
  • Send Feedback

E-Banking Integrator V4

Thank you for choosing our E-Banking Integrator package for your Open Financial eXchange solution. You have chosen a powerful banking component library from the leading provider of professional Internet components.

/n software E-Banking Integrator implements Open Financial eXchange, an open standards protocol used to communicate with financial institutions over HTTP with the security of SSL. E-Banking Integrator allows you to quickly and easily add banking functionality, such as account summary retrieval, to your desktop or web applications by providing an easy way to securely communicate with banks, credit card companies, and many other financial institutions that support Open Financial eXchange.

You will always find /n software E-Banking Integrator and any updates to the product at our web site - www.nsoftware.com. You may download full versions of our product for a free 30-day evaluation period.

For detailed information about OFX specifications, please visit http://www.ofx.net

Please direct all of your technical questions to support@nsoftware.com. You will speed up your answers if you provide an accurate description of your problem, the results you expected, and the results you received when using our product. For all other inquiries, please direct your questions to sales@nsoftware.com.

E-Banking Integrator V4 C++ Edition. - Copyright (c) 2014 /n software inc. - All rights reserved. - For more information, please visit our website at www.nsoftware.com.


Account Class

Account Class

Properties Methods Events Configuration Settings Errors

The Account component is a single component that supports the SignOn and Account Information function of Open Financial Exchange, as described by Specification 1.0.2.

Syntax

Account

Remarks

The Account class supports the Account information request sent to the server to identify and describe a precise list of the account information and available services for each account accessible by the signed-on user.

However, the interpretation of this request depends on the FI. At a minimum, the server provides information about all accounts that it can activate for one or more OFX services. To give the user a complete picture of his relationship with an FI, FIs can give information on other accounts, even if those accounts are available only for limited OFX services. Please note that some service providers do not have prior knowledge of user account information. This is reported in their profile (you can use the FIProfile class for this). FIs can provide limited information on accounts that would not ordinarily be suitable to OFX services

To get this list of service-specific account identification and detailed information on each one, you can call the GetInfo method.

First, identify the signon required information:

  • OFX user and application by setting the OFXUser, OFXPassword, OFXAppId and OFXAppVersion properties;
  • financial institution by setting the FIId, FIOrganization and FIUrl properties.

Next, specify the LastUpdate, which indicates the last time the server updated the information. The server sends the entire account information response if the LastUpdate is older.

The accounts might be bank accounts, credit card accounts, or investment accounts. This service-specific is indicated by AccServiceType. The following properties will be populated automatically (if applicable for the type of account) for each account aggregate returned in the response:

  • LastUpdate
  • Accounts

The availability and possible values for the Accounts properties depend on the AccServiceType and are described in details under each property description.

Property List

The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

AccCount | The number of records in the Acc arrays.
AccType | Indicates the type of account.
AccAggregate | Wrapper for an account information.
AccBankId | If the returned ServiceType is BANK, the BankId indicates routing and transit number of the account.
AccBranchId | This is applicable for bank accounts only (neither credit card, nor investment accounts).
AccChecking | Whether the account has check writing privileges (applicable for investment accounts only).
AccDescription | This is optional to be returned in the response and applicable to all service types (BANK, INVESTMENT, CREDITCARD).
AccId | This is the account number available at the current FI.
AccIsTransferDestination | This is not applicable for investment accounts (i.
AccIsTransferSource | This is not applicable for investment accounts (i.
AccKey | This is not applicable for investment accounts (i.
AccPhone | Telephone number for the account.
AccServiceType | Service-specific account type.
AccStatus | The status of the current account.
AccSupportDownload | True if account supports transaction detail downloads.
AccUSProductType | The USProductType classifies investment accounts according to their account type.
FIId | Financial institution identifier.
FIOrganization | Financial institution organization name.
FirewallAutoDetect | This property tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallType | This property determines the type of firewall to connect through.
FirewallHost | This property contains the name or IP address of firewall (optional).
FirewallPassword | This property contains a password if authentication is to be used when connecting through the firewall.
FirewallPort | This property contains the TCP port for the firewall Host .
FirewallUser | This property contains a user name if authentication is to be used connecting through a firewall.
FIUrl | Financial institution URL.
LastUpdate | Date and time of last update to account information on the server.
OFXAccessKey | Access key value received after a MFA authentication in a previous signon.
OFXAppId | OFX application identifier.
OFXAppVersion | OFX application version.
OFXPassword | User's password.
OFXRequest | The current OFX request aggregate.
OFXResponse | The current OFX response aggregate.
OFXUser | User's id.
OFXVersion | OFX API version.
SSLAcceptServerCertEncoded | The certificate (PEM/base64 encoded).
SSLCertEncoded | The certificate (PEM/base64 encoded).
SSLCertStore | The name of the certificate store for the client certificate.
SSLCertStorePassword | If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.
SSLCertStoreType | The type of certificate store for this certificate.
SSLCertSubject | The subject of the certificate used for client authentication.
SSLServerCertEncoded | The certificate (PEM/base64 encoded).
Timeout | A timeout for the component.

Method List

The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

Config | Sets or retrieves a configuration setting.
GetInfo | Identifies and describes all of the accounts accessible by the signed-on user.
ReadOFXDataFile | Reads an OFX response from a file.
Reset | Reset the internal state of the component and all properties to their default values.
WriteOFXDataFile | Writes the OFX response sent by the server to a file.

Event List

The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ConnectionStatus | Fired to indicate changes in connection state.
Error | Information about errors during data delivery.
SSLServerAuthentication | Fired after the server presents its certificate to the client.
SSLStatus | Shows the progress of the secure connection.

Configuration Settings

The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

CurrencyFormat | The format to be used for returning currency values.
OFXDateFormat | The date format as required by OFX FI server.
DateFormat | The format to be used for input and output dates.
GetResponseVar | Parses additional information out of the response.
NewPassword | New password for the current OFX user.
OFXLog | Log file for the OFX transaction.
ServerMessage | Server message if a warning or other information returned.
ClientUId | Unique ID identifying OFX Client.
UserCred1A | Additional user credential required by server.
UserCred2A | Additional user credential required by server.
AuthToken | Authentication token required for this signon session only.
CorrectFITID[i] | The FITID of a previously sent transaction corrected by the current one.
CorrectAction[i] | The action taken to a previously sent transaction corrected by the current one.
AcceptEncoding | Used to tell the server which types of content encodings the client supports.
AllowHTTPCompression | This property enables HTTP compression for receiving data.
Authorization | The Authorization string to be sent to the server.
BytesTransferred | Contains the number of bytes transferred in the response data.
EncodeURL | If set to true the URL will be encoded by the component.
FollowRedirects | Determines what happens when the server issues a redirect.
GetOn302Redirect | If set to true the component will perform a GET on the new location.
HTTPVersion | The version of HTTP used by the component.
IfModifiedSince | A date determining the maximum age of the desired document.
KeepAlive | Determines whether the HTTP connection is closed after completion of the request.
MaxRedirectAttempts | Limits the number of redirects that are followed in a request.
OtherHeaders | Other headers as determined by the user (optional).
ProxyAuthorization | The authorization string to be sent to the proxy server.
ProxyAuthScheme | The authorization scheme to be used for the proxy.
ProxyPassword | A password if authentication is to be used for the proxy.
ProxyPort | Port for the proxy server (default 80).
ProxyServer | Name or IP address of a proxy server (optional).
ProxyUser | A user name if authentication is to be used for the proxy.
TransferredDataLimit | The maximum number of incoming bytes to be stored by the component.
UseChunkedEncoding | Enables or Disables HTTP chunked encoding for transfers.
ChunkSize | Specifies the chunk size in bytes when using chunked encoding.
UsePlatformHTTPClient | Whether or not to use the platform HTTP client.
UserAgent | Information about the user agent (browser).
KerberosSPN | The Service Principal Name for the Kerberos Domain Controller.
FirewallAutoDetect | Tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallHost | Name or IP address of firewall (optional).
FirewallPassword | Password to be used if authentication is to be used when connecting through the firewall.
FirewallPort | The TCP port for the FirewallHost;.
FirewallType | Determines the type of firewall to connect through.
FirewallUser | A user name if authentication is to be used connecting through a firewall.
KeepAliveTime | The inactivity time in milliseconds before a TCP keep-alive packet is sent.
KeepAliveInterval | The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.
Linger | When set to True, connections are terminated gracefully.
LingerTime | Time in seconds to have the connection linger.
LocalHost | The name of the local host through which connections are initiated or accepted.
LocalPort | The TCP port in the local host where the component binds.
MaxLineLength | The maximum amount of data to accumulate when no EOL is found.
MaxTransferRate | The transfer rate limit in bytes per second.
TCPKeepAlive | Determines whether or not the keep alive socket option is enabled.
UseIPv6 | Whether or not to use IPv6.
TcpNoDelay | Whether or not to delay when sending packets.
ReuseSSLSession | Determines if the SSL session is reused.
SSLCipherStrength | The minimum cipher strength used for bulk encryption.
SSLEnabledProtocols | Used to enable/disable the supported security protocols.
SSLProvider | The name of the security provider to use.
SSLSecurityFlags | Flags that control certificate verification.
OpenSSLCADir | The path to a directory containing CA certificates.
OpenSSLCAFile | Name of the file containing the list of CA's trusted by your application.
OpenSSLCipherList | A string that controls the ciphers to be used by SSL.
OpenSSLPrngSeedData | The data to seed the pseudo random number generator (PRNG).
SSLAlgorithmList | A string that controls the cipher algorithms to be used by SSL.
AbsoluteTimeout | Determines whether timeouts are inactivity timeouts or absolute timeouts.
FirewallData | Used to send extra data to the firewall.
InBufferSize | The size in bytes of the incoming queue of the socket.
OutBufferSize | The size in bytes of the outgoing queue of the socket.
CodePage | The system code page used for Unicode to Multibyte translations.

More Info

Please click here for updates, questions, feedback, and more information on this particular topic.


AccCount Property

AccCount Property (Account Class)

The number of records in the Acc arrays.

Syntax

int GetAccCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • AccAggregate
  • AccBankId
  • AccBranchId
  • AccChecking
  • AccDescription
  • AccId
  • AccIsTransferDestination
  • AccIsTransferSource
  • AccKey
  • AccPhone
  • AccServiceType
  • AccStatus
  • AccSupportDownload
  • AccType
  • AccUSProductType

The array indices start at 0 and end at AccCount-1.

This property is read-only and not available at design time.

Data Type

Integer

More Info


AccType Property

AccType Property (Account Class)

Indicates the type of account.

Syntax

char* GetAccType(int iAccIndex);

Default Value

""

Remarks

Indicates the type of account.

For bank accounts (i.e., when AccServiceType is BANK), the possible values for AccType are: CHECKING, SAVINGS, MONEYMRKT, CREDITLINE.

If an investment account information is present in the server response (i.e., when AccServiceType is INVESTMENT), the possible values for AccType are: INDIVIDUAL, JOINT, TRUST, CORPORATE.

This is not applicable for credit card accounts.

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


AccAggregate Property

AccAggregate Property (Account Class)

Wrapper for an account information.

Syntax

char* GetAccAggregate(int iAccIndex);

Default Value

""

Remarks

Wrapper for an account information.

Each account information aggregate contains elements and values associated with the following properties:

  • AccBankId
  • AccBranchId
  • AccId
  • AccKey
  • AccType
  • AccStatus
  • AccDescription
  • AccPhone
  • AccSupportDownload
  • AccIsTransferSource
  • AccIsTransferDestination
  • AccUSProductType
  • AccChecking

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


AccBankId Property

AccBankId Property (Account Class)

If the returned ServiceType is BANK, the BankId indicates routing and transit number of the account.

Syntax

char* GetAccBankId(int iAccIndex);

Default Value

""

Remarks

If the returned AccServiceType is BANK, the AccBankId indicates routing and transit number of the account. If the value of AccServiceType is INVESTMENT, then AccBankId indicates broker id.

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


AccBranchId Property

AccBranchId Property (Account Class)

This is applicable for bank accounts only (neither credit card, nor investment accounts).

Syntax

char* GetAccBranchId(int iAccIndex);

Default Value

""

Remarks

This is applicable for bank accounts only (neither credit card, nor investment accounts).

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


AccChecking Property

AccChecking Property (Account Class)

Whether the account has check writing privileges (applicable for investment accounts only).

Syntax

int GetAccChecking(int iAccIndex);

Default Value

FALSE

Remarks

Whether the account has check writing privileges (applicable for investment accounts only). True if investment account has check writing privileges. If investment account information is present in the server response (i.e., when AccServiceType is INVESTMENT), the AccChecking is always returned.

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

Boolean


AccDescription Property

AccDescription Property (Account Class)

This is optional to be returned in the response and applicable to all service types (BANK, INVESTMENT, CREDITCARD).

Syntax

char* GetAccDescription(int iAccIndex);

Default Value

""

Remarks

This is optional to be returned in the response and applicable to all service types (BANK, INVESTMENT, CREDITCARD).

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


AccId Property

AccId Property (Account Class)

This is the account number available at the current FI.

Syntax

char* GetAccId(int iAccIndex);

Default Value

""

Remarks

This is the account number available at the current FI. For checking and savings accounts, this is the number that appears at the bottom of the user's checks or deposit slips, to the right of the routing number.

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


AccIsTransferDestination Property

AccIsTransferDestination Property (Account Class)

This is not applicable for investment accounts (i.

Syntax

int GetAccIsTransferDestination(int iAccIndex);

Default Value

FALSE

Remarks

This is not applicable for investment accounts (i.e., when the returned AccServiceType is INVESTMENT).

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

Boolean


AccIsTransferSource Property

AccIsTransferSource Property (Account Class)

This is not applicable for investment accounts (i.

Syntax

int GetAccIsTransferSource(int iAccIndex);

Default Value

FALSE

Remarks

This is not applicable for investment accounts (i.e., when the returned AccServiceType is INVESTMENT).

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

Boolean


AccKey Property

AccKey Property (Account Class)

This is not applicable for investment accounts (i.

Syntax

char* GetAccKey(int iAccIndex);

Default Value

""

Remarks

This is not applicable for investment accounts (i.e., when the returned AccServiceType is INVESTMENT).

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


AccPhone Property

AccPhone Property (Account Class)

Telephone number for the account.

Syntax

char* GetAccPhone(int iAccIndex);

Default Value

""

Remarks

Telephone number for the account. This is optional to be returned in the response and applicable to all service types (BANK, INVESTMENT, CREDITCARD).

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


AccServiceType Property

AccServiceType Property (Account Class)

Service-specific account type.

Syntax

char* GetAccServiceType(int iAccIndex);

Default Value

""

Remarks

Service-specific account type. Possible values are: BANKING, INVESTMENT, CREDITCARD. Availability and values of all other properties that describe the account, depend on the AccServiceType value.

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


AccStatus Property

AccStatus Property (Account Class)

The status of the current account.

Syntax

char* GetAccStatus(int iAccIndex);

Default Value

""

Remarks

The status of the current account. Possible values are: AVAIL, PEND, ACTIVE.

For bank or credit card accounts (i.e., when AccServiceType is BANK or CREDITCARD), the meaning of AccStatus is as follows:

AVAIL | Available, but not yet requested
PEND | Requested, but not yet available
ACTIVE | In use

For investment accounts (i.e., when AccServiceType is INVESTMENT), the AccStatus indicates the activation status for investment statement download for the account. Possible values are the same, but the meaning is slightly different:

AVAIL | Have not signed up
PEND | In the process of signing up
ACTIVE | Signed up

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


AccSupportDownload Property

AccSupportDownload Property (Account Class)

True if account supports transaction detail downloads.

Syntax

int GetAccSupportDownload(int iAccIndex);

Default Value

FALSE

Remarks

True if account supports transaction detail downloads. False if it is balance-only. This is not applicable for investment accounts (i.e., when the returned AccServiceType is INVESTMENT).

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

Boolean


AccUSProductType Property

AccUSProductType Property (Account Class)

The USProductType classifies investment accounts according to their account type.

Syntax

char* GetAccUSProductType(int iAccIndex);

Default Value

""

Remarks

The AccUSProductType classifies investment accounts according to their account type. This is intended for use by FIs in the United States. If an investment account information is present in the server response (i.e., when AccServiceType is INVESTMENT), the AccUSProductType is always returned.

Valid values are:

Product Type | Description
401K | A 401(K) account
403B | A 403(B) account
IRA | An IRA account
KEOGH | Keogh (Money Purchase/Profit Sharing)
OTHER | Other account type
SARSEP | Salary Reduction Simplified Employer Pension plan
SIMPLE | Savings Incentive Match Plan for employees
NORMAL | Regular account
TDA | Tax Deferred Annuity
TRUST | Trust (including UTMA)
UGMA | Custodial account

The size of the array is controlled by the AccCount property.

This property is read-only and not available at design time.

Data Type

String


FIId Property

FIId Property (Account Class)

Financial institution identifier.

Syntax

char* GetFIId();

int SetFIId(char* lpszFIId);

Default Value

""

Remarks

FIId holds the identifier of the OFX Financial Institution and is used during signon. This value is unique for each organization name.

Data Type

String


FIOrganization Property

FIOrganization Property (Account Class)

Financial institution organization name.

Syntax

char* GetFIOrganization();

int SetFIOrganization(char* lpszFIOrganization);

Default Value

""

Remarks

This is the name of the OFX Financial Institution and is used during signon. Each organization has a unique FIId that must also be used at signon.

Data Type

String


FirewallAutoDetect Property

FirewallAutoDetect Property (Account Class)

This property tells the component whether or not to automatically detect and use firewall system settings, if available.

Syntax

int GetFirewallAutoDetect();

int SetFirewallAutoDetect(int bFirewallAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use firewall system settings, if available.

Data Type

Boolean


FirewallType Property

FirewallType Property (Account Class)

This property determines the type of firewall to connect through.

Syntax

int GetFirewallType();

int SetFirewallType(int iFirewallType);

Possible Values

  FW_NONE(0),
  FW_TUNNEL(1),
  FW_SOCKS4(2),
  FW_SOCKS5(3)

Default Value

0

Remarks

This property determines the type of firewall to connect through. The applicable values are the following:

fwNone (0) | No firewall (default setting).
fwTunnel (1) | Connect through a tunneling proxy. FirewallPort is set to 80.
fwSOCKS4 (2) | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
fwSOCKS5 (3) | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

Data Type

Integer


FirewallHost Property

FirewallHost Property (Account Class)

This property contains the name or IP address of firewall (optional).

Syntax

char* GetFirewallHost();

int SetFirewallHost(char* lpszFirewallHost);

Default Value

""

Remarks

This property contains the name or IP address of firewall (optional). If a FirewallHost is given, the requested connections will be authenticated through the specified firewall when connecting.

If this property is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, this property is set to the corresponding address. If the search is not successful, the class fails with an error.

Data Type

String


FirewallPassword Property

FirewallPassword Property (Account Class)

This property contains a password if authentication is to be used when connecting through the firewall.

Syntax

char* GetFirewallPassword();

int SetFirewallPassword(char* lpszFirewallPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used when connecting through the firewall. If FirewallHost is specified, the FirewallUser and FirewallPassword properties are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

Data Type

String


FirewallPort Property

FirewallPort Property (Account Class)

This property contains the TCP port for the firewall Host .

Syntax

int GetFirewallPort();

int SetFirewallPort(int lFirewallPort);

Default Value

0

Remarks

This property contains the TCP port for the firewall FirewallHost. See the description of the FirewallHost property for details.

Note that this property is set automatically when FirewallType is set to a valid value. See the description of the FirewallType property for details.

Data Type

Long


FirewallUser Property

FirewallUser Property (Account Class)

This property contains a user name if authentication is to be used connecting through a firewall.

Syntax

char* GetFirewallUser();

int SetFirewallUser(char* lpszFirewallUser);

Default Value

""

Remarks

This property contains a user name if authentication is to be used connecting through a firewall. If the FirewallHost is specified, this property and FirewallPassword properties are used to connect and authenticate to the given Firewall. If the authentication fails, the class fails with an error.

Data Type

String


FIUrl Property

FIUrl Property (Account Class)

Financial institution URL.

Syntax

char* GetFIUrl();

int SetFIUrl(char* lpszFIUrl);

Default Value

""

Remarks

This is the URL of the OFX Financial Institution to which the class will signon and fetch data.

Data Type

String


LastUpdate Property

LastUpdate Property (Account Class)

Date and time of last update to account information on the server.

Syntax

char* GetLastUpdate();

int SetLastUpdate(char* lpszLastUpdate);

Default Value

""

Remarks

This is a string representing the last update date at which the account information was changed on the server. This is required to be provided when calling GetInfo. It is returned in the response as well indicating the last time a server updated the information. This is the value that can be used in a subsequent account information request. The server compares it to the current modification time and only send information if it is more recent. The server sends the entire account information response if the LastUpdate provided in the request is older. There is no attempt to incrementally update specific account information.

If the LastUpdate is set to a date later than the time when the actual update occurred, the request will still be considered successful, but no account information will be returned. The server response will contain a message (such as: "Client is up-to-date", etc.), which will be stored in ServerMessage config setting.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Data Type

String


OFXAccessKey Property

OFXAccessKey Property (Account Class)

Access key value received after a MFA authentication in a previous signon.

Syntax

char* GetOFXAccessKey();

int SetOFXAccessKey(char* lpszOFXAccessKey);

Default Value

""

Remarks

This might be returned in the server response after a MFA authentication (i.e. MFA challenge question/answer pairs were validated by the server when the SendChallengeAnswers method in FIProfile class was called).

To prevent servers from needing to authenticate the user in each OFX request, the server may respond to a correct set of challenge answers with a OFXAccessKey on the signon response (when the SendChallengeAnswers method in FIProfile class was called).

The server determines the contents of this optional element. On each subsequent signon request, the client will send the last value of the OFXAccessKey it has received, even after the end of the current session. The server has the option to respond to any subsequent request with a 3000 error code, requiring the client to send the MFA challenge questions request again (by calling the RequestChallengeQuestions method in FIProfile class). This allows the server to determine the lifetime of the OFXAccessKey.

Data Type

String


OFXAppId Property

OFXAppId Property (Account Class)

OFX application identifier.

Syntax

char* GetOFXAppId();

int SetOFXAppId(char* lpszOFXAppId);

Default Value

""

Remarks

This is the unique identifier of the user's OFX application.

Data Type

String


OFXAppVersion Property

OFXAppVersion Property (Account Class)

OFX application version.

Syntax

char* GetOFXAppVersion();

int SetOFXAppVersion(char* lpszOFXAppVersion);

Default Value

""

Remarks

This is the version of the user's OFX application.

Data Type

String


OFXPassword Property

OFXPassword Property (Account Class)

User's password.

Syntax

char* GetOFXPassword();

int SetOFXPassword(char* lpszOFXPassword);

Default Value

""

Remarks

This is the password used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXRequest Property

OFXRequest Property (Account Class)

The current OFX request aggregate.

Syntax

char* GetOFXRequest();

Default Value

""

Remarks

Polling OFXRequest will cause the class to generate and return an OFX request aggregate.

This property is read-only and not available at design time.

Data Type

String


OFXResponse Property

OFXResponse Property (Account Class)

The current OFX response aggregate.

Syntax

char* GetOFXResponse();

int SetOFXResponse(char* lpszOFXResponse);

Default Value

""

Remarks

This can be used especially for debugging purposes. This can also be used to parse an OFX Response. To do so, you can set the OFX Response data (in string format) to OFXResponse. Once set, the supplied OFX data will be parsed and will populate the same read-only properties that ReadOFXDataFile does.

This property is not available at design time.

Data Type

String


OFXUser Property

OFXUser Property (Account Class)

User's id.

Syntax

char* GetOFXUser();

int SetOFXUser(char* lpszOFXUser);

Default Value

""

Remarks

This is the UserID used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXVersion Property

OFXVersion Property (Account Class)

OFX API version.

Syntax

char* GetOFXVersion();

int SetOFXVersion(char* lpszOFXVersion);

Default Value

"102"

Remarks

This is the OFX API version used in all requests sent to your FI server (such as 1.0.2, 2.0.1, 2.1.1, etc.). Valid values: 102, 103, 200, 201, 203, 210, 211. Note that not all OFX Versions are supported by FIs.

Note: If the OFXVersion is set to 1x, the request and the response are going to be in SGML format. If set to 2x, the request will be in XML format (the response format depends on the FI's server capabilities). Note that if the OFX FI server does not support version 2x, the server will return an error (such as 'Bad Request').

Certain services are available only for a specific OFX version. For example, image download, is available only in OFX version 2.1.1.

Data Type

String


SSLAcceptServerCertEncoded Property

SSLAcceptServerCertEncoded Property (Account Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLAcceptServerCertEncoded(char *&lpSSLAcceptServerCertEncoded, int &lenSSLAcceptServerCertEncoded);

int SetSSLAcceptServerCertEncoded(char *lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLAcceptServerCertStore and SSLAcceptServerCertSubject properties may also be used to specify a certificate.

When SSLAcceptServerCertEncoded is set, a search is initiated in the current SSLAcceptServerCertStore for the private key of the certificate. If the key is found, SSLAcceptServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLAcceptServerCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertEncoded Property

SSLCertEncoded Property (Account Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLCertEncoded(char *&lpSSLCertEncoded, int &lenSSLCertEncoded);

int SetSSLCertEncoded(char *lpSSLCertEncoded, int lenSSLCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLCertStore and SSLCertSubject properties may also be used to specify a certificate.

When SSLCertEncoded is set, a search is initiated in the current SSLCertStore for the private key of the certificate. If the key is found, SSLCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertStore Property

SSLCertStore Property (Account Class)

The name of the certificate store for the client certificate.

Syntax

int GetSSLCertStore(char *&lpSSLCertStore, int &lenSSLCertStore);

int SetSSLCertStore(char *lpSSLCertStore, int lenSSLCertStore);

Default Value

"MY"

Remarks

The name of the certificate store for the client certificate.

The SSLCertStoreType property specifies the type of the certificate store specified by SSLCertStore. If the store is password protected, specify the password in SSLCertStorePassword.

SSLCertStore is used in conjunction with the SSLCertSubject property in order to specify client certificates. If SSLCertStore has a value, and SSLCertSubject or SSLCertEncoded is set, a search for a certificate is initiated. Please refer to the SSLCertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MY | A certificate store holding personal certificates with their associated private keys.
CA | Certifying authority certificates.
ROOT | Root certificates.
SPC | Software publisher certificates.

In Java, the certificate store normally is a file containing certificates and optional private keys.

When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).

If the provider is OpenSSL, the certificate store is a file containing a certificate and a private key. This property must be set to the name of the file.

Data Type

Binary String


SSLCertStorePassword Property

SSLCertStorePassword Property (Account Class)

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Syntax

char* GetSSLCertStorePassword();

int SetSSLCertStorePassword(char* lpszSSLCertStorePassword);

Default Value

""

Remarks

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Data Type

String


SSLCertStoreType Property

SSLCertStoreType Property (Account Class)

The type of certificate store for this certificate.

Syntax

int GetSSLCertStoreType();

int SetSSLCertStoreType(int iSSLCertStoreType);

Possible Values

  CST_USER(0),
  CST_MACHINE(1),
  CST_PFXFILE(2),
  CST_PFXBLOB(3),
  CST_JKSFILE(4),
  CST_JKSBLOB(5),
  CST_PEMKEY_FILE(6),
  CST_PEMKEY_BLOB(7),
  CST_PUBLIC_KEY_FILE(8),
  CST_PUBLIC_KEY_BLOB(9),
  CST_SSHPUBLIC_KEY_BLOB(10),
  CST_P7BFILE(11),
  CST_P7BBLOB(12),
  CST_SSHPUBLIC_KEY_FILE(13),
  CST_PPKFILE(14),
  CST_PPKBLOB(15),
  CST_XMLFILE(16),
  CST_XMLBLOB(17)

Default Value

0

Remarks

The type of certificate store for this certificate.

This property can take one of the following values:

0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java.
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java.
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates.
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format.
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java.
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java.
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate.
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate.
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate.
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate.
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key.
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates.
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format.
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key.
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key).
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key).
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format.
17 (cstXMLlob) | The certificate store is a string that contains a certificate in XML format.

Data Type

Integer


SSLCertSubject Property

SSLCertSubject Property (Account Class)

The subject of the certificate used for client authentication.

Syntax

char* GetSSLCertSubject();

int SetSSLCertSubject(char* lpszSSLCertSubject);

Default Value

""

Remarks

The subject of the certificate used for client authentication.

When this property is set, a search is performed in the current certificate store certificate with matching subject.

If a matching certificate is found, the property is set to the full subject of the matching certificate.

If an exact match is not found, the store is searched for subjects containing the value of the property.

If a match is still not found, the property is set to an empty string, and no certificate is selected.

The special value "*" picks a random certificate in the certificate store.

The certificate subject is a comma separated list of distinguished name properties and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common properties and their meanings are displayed below.

Field | Meaning
CN | Common Name. This is commonly a host name like www.server.com.
O | Organization
OU | Organizational Unit
L | Locality
S | State
C | Country
E | Email Address

If a property value contains a comma it must be quoted.

Data Type

String


SSLServerCertEncoded Property

SSLServerCertEncoded Property (Account Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLServerCertEncoded(char *&lpSSLServerCertEncoded, int &lenSSLServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLServerCertStore and SSLServerCertSubject properties may also be used to specify a certificate.

When SSLServerCertEncoded is set, a search is initiated in the current SSLServerCertStore for the private key of the certificate. If the key is found, SSLServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLServerCertSubject is set to empty string.

This property is read-only and not available at design time.

Data Type

Binary String


Timeout Property

Timeout Property (Account Class)

A timeout for the component.

Syntax

int GetTimeout();

int SetTimeout(int iTimeout);

Default Value

60

Remarks

If the Timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.

If Timeout is set to a positive value, the class will wait for the operation to complete before returning control.

The class will use DoEvents to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not "freeze" and remains responsive.

If Timeout expires, and the operation is not yet complete, the class fails with an error.

Please note that by default, all timeouts are inactivity timeouts, i.e. the timeout period is extended by Timeout seconds when any amount of data is successfully sent or received.

Optionally, the behavior of the class may be changed to absolute timeouts, i.e. the class will wait for a maximum of Timeout seconds since the beginning of the operation, without extending the timeout period during communications.

This behavior is controlled by the AbsoluteTimeout configuration setting.

The default value for the Timeout property is 60 (seconds).

Data Type

Integer


Config Method

Config Method (Account Class)

Sets or retrieves a configuration setting.

Syntax

 char* Config(char* lpszConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.


GetInfo Method

GetInfo Method (Account Class)

Identifies and describes all of the accounts accessible by the signed-on user.

Syntax

 int GetInfo();

Remarks

This function generates the Signon and Account Information request page, submits it to the financial institution via secure HTTPS Post, receives and parses the server's response. Besides the information that is required for Signon, the LastUpdate should be provided as well. For each account, there is one AccAggregate returned.

The following read-only properties are populated as a result of parsing account information response:

  • LastUpdate
  • Accounts

If the LastUpdate is set to a date later than the time when the actual update occurred, the request will still be considered successful, but no account information will be returned. The server response will contain a message (such as: "Client is up-to-date", etc.), which will be stored in ServerMessage config setting.


ReadOFXDataFile Method

ReadOFXDataFile Method (Account Class)

Reads an OFX response from a file.

Syntax

 int ReadOFXDataFile(char* lpszFileName);

Remarks

This method reads a previously recorded OFX response from a file, including HTTP and OFX headers.

The following read-only properties are populated as a result of parsing the data file:

  • LastUpdate
  • Accounts


Reset Method

Reset Method (Account Class)

Reset the internal state of the component and all properties to their default values.

Syntax

 int Reset();

Remarks

The Reset method does not have any parameters and does not return any value.


WriteOFXDataFile Method

WriteOFXDataFile Method (Account Class)

Writes the OFX response sent by the server to a file.

Syntax

 int WriteOFXDataFile(char* lpszFileName);

Remarks

This method records the entire OFX response, including HTTP and OFX headers to a file. This file can later be read and parsed by the ReadOFXDataFile method as though it were a live response.


ConnectionStatus Event

ConnectionStatus Event (Account Class)

Fired to indicate changes in connection state.

Syntax

 virtual int FireConnectionStatus(AccountConnectionStatusEventParams *e);

 typedef struct {

  char* ConnectionEvent;
  int StatusCode;
  char* Description;

  int reserved;

 } AccountConnectionStatusEventParams;

Remarks

The ConnectionStatus event is fired when the connection state changes: completion of a firewall or proxy connection, completion of a security handshake, etc.

The ConnectionEvent parameter indicates the type of connection event. Values may include:

Firewall connection complete.
SSL or S/Shell handshake complete (where applicable).
Remote host connection complete.
Remote host disconnected.
SSL or S/Shell connection broken.
Firewall host disconnected.

StatusCode has the error code returned by the TCP/IP stack. Description contains a description of this code. The value of StatusCode is equal to the value of the error.


Error Event

Error Event (Account Class)

Information about errors during data delivery.

Syntax

 virtual int FireError(AccountErrorEventParams *e);

 typedef struct {

  int ErrorCode;
  char* Description;

  int reserved;

 } AccountErrorEventParams;

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Messages section.


SSLServerAuthentication Event

SSLServerAuthentication Event (Account Class)

Fired after the server presents its certificate to the client.

Syntax

 virtual int FireSSLServerAuthentication(AccountSSLServerAuthenticationEventParams *e);

 typedef struct {

  char* CertEncoded;
  char* CertSubject;
  char* CertIssuer;
  char* Status;
  int Accept;

  int lenCertEncoded;
  int reserved;

 } AccountSSLServerAuthenticationEventParams;

Remarks

This event is where the client can decide whether to continue with the connection process or not. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether to continue or not.

When Accept is False, Status shows why the verification failed (otherwise, Status contains the string "OK"). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.


SSLStatus Event

SSLStatus Event (Account Class)

Shows the progress of the secure connection.

Syntax

 virtual int FireSSLStatus(AccountSSLStatusEventParams *e);

 typedef struct {

  char* Message;

  int reserved;

 } AccountSSLStatusEventParams;

Remarks

The event is fired for informational and logging purposes only. Used to track the progress of the connection.


Account Configuration

Configuration Settings (Account Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

OFX Configuration Settings

CurrencyFormat: The format to be used for returning currency values.

If this is set to a non-empty string, the class will attempt to use the value as a pattern to format all currency strings returned from the server. You may use any of the system's default number formatting strings.

OFXDateFormat: The date format as required by OFX FI server.

Most of OFX FI servers, accept the default format, where the offset (G) and timezone (Z) are specified. However, there might still be some servers that do not accept that part. In such cases, you will have to set the OFXDateFormat to "YYYYMMddHHmmss.xxx" and GMT will be assumed as the default value.

Your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat (format that OFX FI server recognizes) right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

DateFormat: The format to be used for input and output dates.

This format is used for input and output dates. You may use any of the system's default date formatting strings.

When submitting the request: all your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

When parsing the response: if DateFormat is set to a non-empty string, the class will attempt to use the value as a pattern to format all date strings as they are returned. Otherwise, the system's default value will be used for formatting.

If the DateFormat is set to the special value "OFXDATE": During input:, any values you supply to date properties are passed to the server directly with no changes; During output: all dates will be returned in the OFX format as it was provided by the server without performing any modifications.

GetResponseVar: Parses additional information out of the response.

Any additional response information contained within the OFX response that is not available via the Response fields, may be retrieved with this GetResponseVar config.

To obtain a response value, pass the XPath to the value you wish to receive. For instance, if the OFX response contains:

    "<OFX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0<SEVERITY>INFO</STATUS><DTSERVER>20120104223836.575<LANGUAGE>ENG"

Then calling GetResponseVar("/OFX/SIGNONMSGSRVSV1/LANGUAGE") will return "ENG".

NewPassword: New password for the current OFX user.

Setting NewPassword to a non-empty value will cause the class to issue a password change request during sign-on along with the regular current OFX request. After the request is sent, this value will be cleared.

The correct current password is needed as well during signon request and must be supplied through the OFXPassword. Upon successful reply from the server, the NewPassword used becomes the new password.

OFXLog: Log file for the OFX transaction.

This setting records the OFX communication, but without including HTTP headers, to a file.

Please note that ReadOFXDataFile will not be able to parse this file because of the OFX request content present. If only the response of the server is required, please look at the WriteOFXDataFile method instead.

ServerMessage: Server message if a warning or other information returned.

When sending a transaction request to a FI, their server with return either a successful reply or an error. However, even when a transaction is successful, a warning or other server messages might still be returned and are to be treated as informational notes only.

ClientUId: Unique ID identifying OFX Client.

In the profile response, if SignOnClientUIdReq is True, then ClientUId should be set and included in all future requests.

UserCred1A: Additional user credential required by server.

In the profile response, if SignOnUserCred1Q is present, then UserCred1A should be set (as the answer to question identified by SignOnUserCred1Q) and it should be included in all future requests as part of the signon.

UserCred2A: Additional user credential required by server.

In the profile response, if SignOnUserCred2Q is present, then UserCred2A should be set (as the answer to question identified by SignOnUserCred2Q) and it should be included in all future requests as part of the signon.

AuthToken: Authentication token required for this signon session only.

This credential is provided to the user out of band.

In the profile response, if SignOnAuthTokenFirst is True, then AuthToken should be sent in the very first signon.

CorrectFITID[i]: The FITID of a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the FITID of a previously sent transaction that is corrected by this record. Based on the value of CorrectAction[i], this transaction replaces or deletes the transaction that it corrects. This is applicable to statement download components only.

CorrectAction[i]: The action taken to a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the action taken to a previously sent transaction that is corrected by this record. Possible values are: REPLACE or DELETE. REPLACE replaces the transaction that it corrects referenced by CorrectFITID[i]. DELETE deletes it. This is applicable to statement download components only.

HTTP Configuration Settings

AcceptEncoding: Used to tell the server which types of content encodings the client supports.

When AllowHTTPCompression is true, the class adds an "Accept-Encoding: " header to the request being sent to the server. By default, this header's value is "gzip, deflate". This config allows you to change the value of the "Accept-Encoding" header. NOTE: The class only supports gzip and deflate decompression algorithms.

AllowHTTPCompression: This property enables HTTP compression for receiving data.

This is the same as the AllowHTTPCompression property. This setting is exposed here for use by classs that inherit from HTTP.

Authorization: The Authorization string to be sent to the server.

If the Authorization property contains a non-empty string, an Authorization HTTP request header is added to the request. This header conveys Authorization information to the server.

This property is provided so that the HTTP class can be extended with other security schemes in addition to the authorization schemes already implemented by the class.

The AuthScheme property defines the authentication scheme used. In the case of HTTP Basic Authentication (default), every time User and Password are set, they are Base64 encoded, and the result is put in the Authorization property in the form "Basic [encoded-user-password]".

BytesTransferred: Contains the number of bytes transferred in the response data.

Returns the raw number of bytes from the HTTP response data, prior to the component processing the data, whether it is chunked and/or compressed. This returns the same value as the Transfer event, by BytesTransferred.

EncodeURL: If set to true the URL will be encoded by the class.

The default value is false. If set to true the URL passed to the class will be URL encoded.

FollowRedirects: Determines what happens when the server issues a redirect.

This option determines what happens when the server issues a redirect. Normally, the class returns an error if the server responds with an "Object Moved" message. If this property is set to 1 (always), the new URL for the object is retrieved automatically every time.

If this property is set to 2 (Same Scheme), the new URL is retrieved automatically only if the URL Scheme is the same, otherwise the class fails with an error.

Note that following the HTTP specification, unless this option is set to 1 (Always), automatic redirects will be performed only for 'GET' or 'HEAD' requests. Other methods could potentially change the conditions of the initial request and create security vulnerabilities.

Furthermore, if either the new URL server and port are different than the existing one, User and Password are also reset to empty, unless this property is set to 1 (Always), in which case the same credentials are used to connect to the new server.

A Redirect event is fired for every URL the product is redirected to. In the case of automatic redirections, the Redirect event is a good place to set properties related to the new connection (e.g. new authentication parameters).

The default value is 0 (Never). In this case, redirects are never followed, and the class fails with an error instead.

Valid options are:

  • 0 - Never
  • 1 - Always
  • 2 - Same Scheme

GetOn302Redirect: If set to true the class will perform a GET on the new location.

The default value is false. If set to true the class will perform a GET on the new location. Otherwise it will use the same HTTP method again.

HTTPVersion: The version of HTTP used by the class.

Possible values include "1.0", and "1.1". The default is "1.1".

IfModifiedSince: A date determining the maximum age of the desired document.

This is the same as the IfModifiedSince property. This setting is exposed here for use by classs that inherit from HTTP.

KeepAlive: Determines whether the HTTP connection is closed after completion of the request.

If true, the component will not send the 'Connection: Close' header. The absence of the Connection header indicates to the server that HTTP persistent connections should be used if supported. Note that not all server support persistent connections. You may also explicitly add the Keep-Alive header to the request headers by setting OtherHeaders to 'Connection: Keep-Alive'. If false, the connection will be closed immediately after the server response is received.

The default value for KeepAlive is false.

MaxRedirectAttempts: Limits the number of redirects that are followed in a request.

When FollowRedirects is set to any value besides frNever the class will follow redirects until this maximum number of redirect attempts are made. The default value is 20.

OtherHeaders: Other headers as determined by the user (optional).

This configuration option can be set to a string of headers to be appended to the HTTP request headers.

The headers must be of the format "header: value" as described in the HTTP specifications. Header lines should be separated by CRLF ("\r\ n") .

Use this configuration option with caution. If this configuration option contains invalid headers, HTTP requests may fail.

This configuration option is useful for extending the functionality of the class beyond what is provided.

ProxyAuthorization: The authorization string to be sent to the proxy server.

Similar to the Authorization config, but for proxy authorization. If this config contains a non-empty string, a Proxy-Authorization HTTP request header is added to the request. This header conveys proxy authorization information to the server. If ProxyUser and ProxyPassword are specified, this value is calculated using the algorithm specified by ProxyAuthScheme.

ProxyAuthScheme: The authorization scheme to be used for the proxy.

This is the same as ProxyAuthScheme. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPassword: A password if authentication is to be used for the proxy.

This is the same as ProxyPassword. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPort: Port for the proxy server (default 80).

This is the same as ProxyPort. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyServer: Name or IP address of a proxy server (optional).

This is the same as ProxyServer. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyUser: A user name if authentication is to be used for the proxy.

This is the same as ProxyUser. This setting is provided for use by classs that do not directly expose Proxy properties.

TransferredDataLimit: The maximum number of incoming bytes to be stored by the class.

If TransferredDataLimit is set to 0 (default), no limits are imposed. Otherwise this reflects the maximum number of incoming bytes that can be stored by the class. If TransferredDataLimit is set to 0, no limits are imposed.

UseChunkedEncoding: Enables or Disables HTTP chunked encoding for transfers.

If UseChunkedEncoding is set to true, the class will use HTTP chunked encoding when posting if possible. HTTP chunked encoding allows large files to be sent in chunks instead of all at once. If set to false, the class will not use HTTP chunked encoding. The default value is false.

Note: Some servers (such as the ASP.NET Development Server) may not support chunked encoding.

ChunkSize: Specifies the chunk size in bytes when using chunked encoding.

This is only applicable when UseChunkedEncoding is true. This setting specifies the chunk size in bytes to be used when posting data. The default value is 16384.

UsePlatformHTTPClient: Whether or not to use the platform HTTP client.

If True, the component will use the default HTTP client for the platform (URLConnection in Java or WebRequest in .NET) instead of the internal HTTP implementation. This is important for environments where direct access to sockets is limited or not allowed (as in the Google AppEngine for instance).

UserAgent: Information about the user agent (browser).

This is the value supplied in the HTTP User-Agent header. The default setting is "/n software IPWorks HTTP/S Component - www.nsoftware.com".

Override the default with the name and version of your software.

KerberosSPN: The Service Principal Name for the Kerberos Domain Controller.

If the Service Principal Name on the Kerberos Domain Controller is not the same as the URL that you are authenticating to, the Service Principal Name should be set here.

IPPort Configuration Settings

FirewallAutoDetect: Tells the class whether or not to automatically detect and use firewall system settings, if available.

This is the same as FirewallAutoDetect. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallHost: Name or IP address of firewall (optional).

If a FirewallHost is given, requested connections will be authenticated through the specified firewall when connecting.

If the FirewallHost setting is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, the FirewallHost setting is set to the corresponding address. If the search is not successful, an error is returned.

NOTE: This is the same as FirewallHost. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPassword: Password to be used if authentication is to be used when connecting through the firewall.

If FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallPassword. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPort: The TCP port for the FirewallHost;.

Note that the FirewallPort is set automatically when FirewallType is set to a valid value.

NOTE: This is the same as FirewallPort. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallType: Determines the type of firewall to connect through.

The appropriate values are as follows:

0 | No firewall (default setting).
1 | Connect through a tunneling proxy. FirewallPort is set to 80.
2 | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
3 | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

NOTE: This is the same as FirewallType. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallUser: A user name if authentication is to be used connecting through a firewall.

If the FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the Firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallUser. This setting is provided for use by classs that do not directly expose Firewall properties.

KeepAliveTime: The inactivity time in milliseconds before a TCP keep-alive packet is sent.

When set, TCPKeepAlive will automatically be set to true. By default the operating system will determine the time a connection is idle before a TCP keep-alive packet is sent. This system default if this value is not specified here is 2 hours. In many cases a shorter interval is more useful. Set this value to the desired interval in milliseconds.

Note: This value is not applicable in Java.

KeepAliveInterval: The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.

When set, TCPKeepAlive will automatically be set to true. A TCP keep-alive packet will be sent after a period of inactivity as defined by KeepAliveTime. If no acknowledgement is received from the remote host the keep-alive packet will be re-sent. This setting specifies the interval at which the successive keep-alive packets are sent in milliseconds. This system default if this value is not specified here is 1 second.

Note: This value is not applicable in Java or MAC.

Linger: When set to True, connections are terminated gracefully.

This property controls how a connection is closed. The default is True.

In the case that Linger is True (default), there are two scenarios for determining how long the connection will linger. The first, if LingerTime is 0 (default), the system will attempt to send pending data for a connection until the default IP protocol timeout expires.

In the second scenario, LingerTime is a positive value, the system will attempt to send pending data until the specified LingerTime is reached. If this attempt fails, then the system will reset the connection.

The default behavior (which is also the default mode for stream sockets) might result in a long delay in closing the connection. Although the class returns control immediately, the system could hold system resources until all pending data is sent (even after your application closes).

Setting this property to False forces an immediate disconnection. If you know that the other side has received all the data you sent (by a client acknowledgment, for example), setting this property to False might be the appropriate course of action.

LingerTime: Time in seconds to have the connection linger.

LingerTime is the time, in seconds, to leave the socket connection linger. This value is 0 by default, which means it will use the default IP protocol timeout.

LocalHost: The name of the local host through which connections are initiated or accepted.

The LocalHost setting contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.

In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the class initiate connections (or accept in the case of server classs) only through that interface.

If the class is connected, the LocalHost setting shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).

LocalPort: The TCP port in the local host where the class binds.

This must be set before a connection is attempted. It instructs the class to bind to a specific port (or communication endpoint) in the local machine.

Setting this to 0 (default) enables the system to choose a port at random. The chosen port will be shown by LocalPort after the connection is established.

LocalPort cannot be changed once a connection is made. Any attempt to set this when a connection is active will generate an error.

This; setting is useful when trying to connect to services that require a trusted port in the client side. An example is the remote shell (rsh) service in UNIX systems.

MaxLineLength: The maximum amount of data to accumulate when no EOL is found.

MaxLineLength is the size of an internal buffer, which holds received data while waiting for an EOL string.

If an EOL string is found in the input stream before MaxLineLength bytes are received, the DataIn event is fired with the EOL parameter set to True, and the buffer is reset.

If no EOL is found, and MaxLineLength bytes are accumulated in the buffer, the DataIn event is fired with the EOL parameter set to False, and the buffer is reset.

The minimum value for MaxLineLength is 256 bytes. The default value is 2048 bytes. The maximum value is 65536 bytes.

MaxTransferRate: The transfer rate limit in bytes per second.

This setting can be used to throttle outbound TCP traffic. Set this to the number of bytes to be sent per second. By default this is not set and there is no limit.

TCPKeepAlive: Determines whether or not the keep alive socket option is enabled.

If set to true, the socket's keep-alive option is enabled and keep-alive packets will be sent periodically to maintain the connection. Set KeepAliveTime and KeepAliveInterval to configure the timing of the keep-alive packets.

Note: This value is not applicable in Java.

UseIPv6: Whether or not to use IPv6.

By default, the component expects an IPv4 address for local and remote host properties, and will create an IPv4 socket. To use IPv6 instead, set this to True.

TcpNoDelay: Whether or not to delay when sending packets.

When true, the socket will send all data that is ready to send at once. When false, the socket will send smaller buffered packets of data at small intervals. This is known as the Nagle algorithm.

By default, this config is set to false.

SSL Configuration Settings

ReuseSSLSession: Determines if the SSL session is reused.

If set to true, the component will reuse the context if and only if the following criteria are met:

  • The target host name is the same.
  • The system cache entry has not expired (default timeout is 10 hours).
  • The application process that calls the function is the same.
  • The logon session is the same.
  • The instance of the component is the same.

SSLCipherStrength: The minimum cipher strength used for bulk encryption.

This minimum cipher strength largely dependent on the security modules installed on the system. If the cipher strength specified is not supported, an error will be returned when connections are initiated.

Please note that this setting contains the minimum cipher strength requested from the security library. The actual cipher strength used for the connection is shown by the SSLStatus event.

Use this setting with caution. Requesting a lower cipher strength than necessary could potentially cause serious security vulnerabilities in your application.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

SSLEnabledProtocols: Used to enable/disable the supported security protocols.

Used to enable/disable the supported security protocols.

Not all supported protocols are enabled by default (the value of this setting is 240). If you want more granular control over the enabled protocols, you can set this property to the binary 'OR' of one or more of the following values:

TLS1.2 | 3072 (Hex C00)
TLS1.1 | 768 (Hex 300)
TLS1 | 192 (Hex C0) (Default)
SSL3 | 48 (Hex 30) (Default)
SSL2 | 12 (Hex 0C)

Please note that although a number of sites still support SSL2, it is usually a good idea to disable it because of potential security vulnerabilities.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

TLS 1.1 and TLS1.2 support are only available starting with Windows 7.

SSLProvider: The name of the security provider to use.

Change this setting to use security providers other than the system default.

Use this setting with caution. Disabling SSL security or pointing to the wrong provider could potentially cause serious security vulnerabilities in your application.

The special value "*" (default) picks the default SSL provider defined in the system. On Windows, this is "Microsoft Unified Security Protocol Provider".

SSLSecurityFlags: Flags that control certificate verification.

The following flags are defined (specified in hexadecimal notation). They can be or-ed together to exclude multiple conditions:

0x00000001 | Ignore time validity status of certificate.
0x00000002 | Ignore time validity status of CTL.
0x00000004 | Ignore non-nested certificate times.
0x00000010 | Allow unknown Certificate Authority.
0x00000020 | Ignore wrong certificate usage.
0x00000100 | Ignore unknown certificate revocation status.
0x00000200 | Ignore unknown CTL signer revocation status.
0x00000400 | Ignore unknown Certificate Authority revocation status.
0x00000800 | Ignore unknown Root revocation status.
0x00008000 | Allow test Root certificate.
0x00004000 | Trust test Root certificate.
0x80000000 | Ignore non-matching CN (certificate CN not-matching server name).

This functionality is currently not available when the provider is OpenSSL.

OpenSSLCADir: The path to a directory containing CA certificates.

This functionality is available only when the provider is OpenSSL.

The path set by this property should point to a directory containing CA certificates in PEM format. The files each contain one CA certificate. The files are looked up by the CA subject name hash value, which must hence be available. If more than one CA certificate with the same name hash value exist, the extension must be different (e.g. 9d66eef0.0, 9d66eef0.1 etc). OpenSSL recommends to use the c_rehash utility to create the necessary links. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCAFile: Name of the file containing the list of CA's trusted by your application.

This functionality is available only when the provider is OpenSSL.

The file set by this property should contain a list of CA certificates in PEM format. The file can contain several CA certificates identified by

-----BEGIN CERTIFICATE-----

... (CA certificate in base64 encoding) ...

-----END CERTIFICATE-----

sequences. Before, between, and after the certificates text is allowed which can be used e.g. for descriptions of the certificates. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCipherList: A string that controls the ciphers to be used by SSL.

This functionality is available only when the provider is OpenSSL.

The format of this string is described in the OpenSSL man page ciphers(1) section "CIPHER LIST FORMAT". Please refer to it for details. The default string "DEFAULT" is determined at compile time and is normally equivalent to "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH".

OpenSSLPrngSeedData: The data to seed the pseudo random number generator (PRNG).

This functionality is available only when the provider is OpenSSL.

By default OpenSSL uses the device file "/dev/urandom" to seed the PRNG and setting OpenSSLPrngSeedData is not required. If set, the string specified is used to seed the PRNG.

SSLAlgorithmList: A string that controls the cipher algorithms to be used by SSL.

This configuration option takes a semicolon (;) delimited list of cipher algorithms to specify what algorithms may be used by SSL. This option can be used in conjunction with SSLEnabledProtocols to control which ciphers are used.

For example:

  obj.Config("SSLEnabledProtocols=3027"); // TLS1.2  (it supports SHA_256)
  obj.Config("SSLAlgorithmList=CALG_SHA_256;CALG_MD5");
Possible values include:
  • CALG_3DES
  • CALG_3DES_112
  • CALG_AES
  • CALG_AES_128
  • CALG_AES_192
  • CALG_AES_256
  • CALG_AGREEDKEY_ANY
  • CALG_CYLINK_MEK
  • CALG_DES
  • CALG_DESX
  • CALG_DH_EPHEM
  • CALG_DH_SF
  • CALG_DSS_SIGN
  • CALG_ECDH
  • CALG_ECDSA
  • CALG_ECMQV
  • CALG_HASH_REPLACE_OWF
  • CALG_HUGHES_MD5
  • CALG_HMAC
  • CALG_KEA_KEYX
  • CALG_MAC
  • CALG_MD2
  • CALG_MD4
  • CALG_MD5
  • CALG_NO_SIGN
  • CALG_OID_INFO_CNG_ONLY
  • CALG_OID_INFO_PARAMETERS
  • CALG_PCT1_MASTER
  • CALG_RC2
  • CALG_RC4
  • CALG_RC5
  • CALG_RSA_KEYX
  • CALG_RSA_SIGN
  • CALG_SCHANNEL_ENC_KEY
  • CALG_SCHANNEL_MAC_KEY
  • CALG_SCHANNEL_MASTER_HASH
  • CALG_SEAL
  • CALG_SHA
  • CALG_SHA1
  • CALG_SHA_256
  • CALG_SHA_384
  • CALG_SHA_512
  • CALG_SKIPJACK
  • CALG_SSL2_MASTER
  • CALG_SSL3_MASTER
  • CALG_SSL3_SHAMD5
  • CALG_TEK
  • CALG_TLS1_MASTER
  • CALG_TLS1PRF

This option is only valid in Windows.

Socket Configuration Settings

AbsoluteTimeout: Determines whether timeouts are inactivity timeouts or absolute timeouts.

If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.

Note: This option is not valid for UDP ports.

FirewallData: Used to send extra data to the firewall.

When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).

InBufferSize: The size in bytes of the incoming queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be receiving. Increasing the value of the InBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

OutBufferSize: The size in bytes of the outgoing queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be sending. Increasing the value of the OutBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

Base Configuration Settings

SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

Base Configuration Settings

CodePage: The system code page used for Unicode to Multibyte translations.

The default code page is the Active Code Page (0).

The following is a list of valid code page identifiers:

Identifier | Name
037 | IBM EBCDIC - U.S./Canada
437 | OEM - United States
500 | IBM EBCDIC - International
708 | Arabic - ASMO 708
709 | Arabic - ASMO 449+, BCON V4
710 | Arabic - Transparent Arabic
720 | Arabic - Transparent ASMO
737 | OEM - Greek (formerly 437G)
775 | OEM - Baltic
850 | OEM - Multilingual Latin I
852 | OEM - Latin II
855 | OEM - Cyrillic (primarily Russian)
857 | OEM - Turkish
858 | OEM - Multlingual Latin I + Euro symbol
860 | OEM - Portuguese
861 | OEM - Icelandic
862 | OEM - Hebrew
863 | OEM - Canadian-French
864 | OEM - Arabic
865 | OEM - Nordic
866 | OEM - Russian
869 | OEM - Modern Greek
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2)
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875 | IBM EBCDIC - Modern Greek
932 | ANSI/OEM - Japanese, Shift-JIS
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore)
949 | ANSI/OEM - Korean (Unified Hangeul Code)
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026 | IBM EBCDIC - Turkish (Latin-5)
1047 | IBM EBCDIC - Latin 1/Open System
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141 | IBM EBCDIC - Germany (20273 + Euro symbol)
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144 | IBM EBCDIC - Italy (20280 + Euro symbol)
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147 | IBM EBCDIC - France (20297 + Euro symbol)
1148 | IBM EBCDIC - International (500 + Euro symbol)
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 | Unicode UCS-2 Big-Endian
1250 | ANSI - Central European
1251 | ANSI - Cyrillic
1252 | ANSI - Latin I
1253 | ANSI - Greek
1254 | ANSI - Turkish
1255 | ANSI - Hebrew
1256 | ANSI - Arabic
1257 | ANSI - Baltic
1258 | ANSI/OEM - Vietnamese
1361 | Korean (Johab)
10000 | MAC - Roman
10001 | MAC - Japanese
10002 | MAC - Traditional Chinese (Big5)
10003 | MAC - Korean
10004 | MAC - Arabic
10005 | MAC - Hebrew
10006 | MAC - Greek I
10007 | MAC - Cyrillic
10008 | MAC - Simplified Chinese (GB 2312)
10010 | MAC - Romania
10017 | MAC - Ukraine
10021 | MAC - Thai
10029 | MAC - Latin II
10079 | MAC - Icelandic
10081 | MAC - Turkish
10082 | MAC - Croatia
12000 | Unicode UCS-4 Little-Endian
12001 | Unicode UCS-4 Big-Endian
20000 | CNS - Taiwan
20001 | TCA - Taiwan
20002 | Eten - Taiwan
20003 | IBM5550 - Taiwan
20004 | TeleText - Taiwan
20005 | Wang - Taiwan
20105 | IA5 IRV International Alphabet No. 5 (7-bit)
20106 | IA5 German (7-bit)
20107 | IA5 Swedish (7-bit)
20108 | IA5 Norwegian (7-bit)
20127 | US-ASCII (7-bit)
20261 | T.61
20269 | ISO 6937 Non-Spacing Accent
20273 | IBM EBCDIC - Germany
20277 | IBM EBCDIC - Denmark/Norway
20278 | IBM EBCDIC - Finland/Sweden
20280 | IBM EBCDIC - Italy
20284 | IBM EBCDIC - Latin America/Spain
20285 | IBM EBCDIC - United Kingdom
20290 | IBM EBCDIC - Japanese Katakana Extended
20297 | IBM EBCDIC - France
20420 | IBM EBCDIC - Arabic
20423 | IBM EBCDIC - Greek
20424 | IBM EBCDIC - Hebrew
20833 | IBM EBCDIC - Korean Extended
20838 | IBM EBCDIC - Thai
20866 | Russian - KOI8-R
20871 | IBM EBCDIC - Icelandic
20880 | IBM EBCDIC - Cyrillic (Russian)
20905 | IBM EBCDIC - Turkish
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932 | JIS X 0208-1990 & 0121-1990
20936 | Simplified Chinese (GB2312)
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027 | Extended Alpha Lowercase
21866 | Ukrainian (KOI8-U)
28591 | ISO 8859-1 Latin I
28592 | ISO 8859-2 Central Europe
28593 | ISO 8859-3 Latin 3
28594 | ISO 8859-4 Baltic
28595 | ISO 8859-5 Cyrillic
28596 | ISO 8859-6 Arabic
28597 | ISO 8859-7 Greek
28598 | ISO 8859-8 Hebrew
28599 | ISO 8859-9 Latin 5
28605 | ISO 8859-15 Latin 9
29001 | Europa 3
38598 | ISO 8859-8 Hebrew
50220 | ISO 2022 Japanese with no halfwidth Katakana
50221 | ISO 2022 Japanese with halfwidth Katakana
50222 | ISO 2022 Japanese JIS X 0201-1989
50225 | ISO 2022 Korean
50227 | ISO 2022 Simplified Chinese
50229 | ISO 2022 Traditional Chinese
50930 | Japanese (Katakana) Extended
50931 | US/Canada and Japanese
50933 | Korean Extended and Korean
50935 | Simplified Chinese Extended and Simplified Chinese
50936 | Simplified Chinese
50937 | US/Canada and Traditional Chinese
50939 | Japanese (Latin) Extended and Japanese
51932 | EUC - Japanese
51936 | EUC - Simplified Chinese
51949 | EUC - Korean
51950 | EUC - Traditional Chinese
52936 | HZ-GB2312 Simplified Chinese
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte)
57002 | ISCII Devanagari
57003 | ISCII Bengali
57004 | ISCII Tamil
57005 | ISCII Telugu
57006 | ISCII Assamese
57007 | ISCII Oriya
57008 | ISCII Kannada
57009 | ISCII Malayalam
57010 | ISCII Gujarati
57011 | ISCII Punjabi
65000 | Unicode UTF-7
65001 | Unicode UTF-8

The following is a list of valid code page identifiers for Mac OS only:

Identifier | Name
1 | ASCII
2 | NEXTSTEP
3 | JapaneseEUC
4 | UTF8
5 | ISOLatin1
6 | Symbol
7 | NonLossyASCII
8 | ShiftJIS
9 | ISOLatin2
10 | Unicode
11 | WindowsCP1251
12 | WindowsCP1252
13 | WindowsCP1253
14 | WindowsCP1254
15 | WindowsCP1250
21 | ISO2022JP
30 | MacOSRoman
10 | UTF16String
0x90000100 | UTF16BigEndian
0x94000100 | UTF16LittleEndian
0x8c000100 | UTF32String
0x98000100 | UTF32BigEndian
0x9c000100 | UTF32LittleEndian
65536 | Proprietary


Account Errors

Trappable Errors (Account Class)

OFX Errors

2000 Required field missing from server response.
2001 OFX server error. Description follows.
2002 Invalid OFX response.
2003 OFX response contains unknown element tags.

The class may also return one of the following error codes, which are inherited from other classes.

XMLp Errors

101 Invalid attribute index.
102 No attributes available.
103 Invalid namespace index.
104 No namespaces available.
105 Invalid element index.
106 No elements available.
107 Attribute does not exist.
201 Unbalanced element tag.
202 Unknown element prefix (can't find namespace).
203 Unknown attribute prefix (can't find namespace).
204 Invalid XML markup.
205 Invalid end state for parser.
206 Document contains unbalanced elements.
207 Invalid XPath.
208 No such child.
209 Top element does not match start of path.
210 DOM tree unavailable (set BuildDOM to true and reparse).
302 Can't open file.

HTTP Errors

118 Firewall Error. Error description contains detailed message.
143 Busy executing current method.
151 HTTP protocol error. The error message has the server response.
152 No server specified in URL
153 Specified URLScheme is invalid.
155 Range operation is not supported by server.
156 Invalid cookie index (out of range).
301 Interrupted.
302 Can't open AttachedFile.

The class may also return one of the following error codes, which are inherited from other classes.

IPPort Errors

100 You cannot change the RemotePort at this time. A connection is in progress.
101 You cannot change the RemoteHost (Server) at this time. A connection is in progress.
102 The RemoteHost address is invalid (0.0.0.0).
104 Already connected. If you want to reconnect, close the current connection first.
106 You cannot change the LocalPort at this time. A connection is in progress.
107 You cannot change the LocalHost at this time. A connection is in progress.
112 You cannot change MaxLineLength at this time. A connection is in progress.
116 RemotePort cannot be zero. Please specify a valid service port number.
117 Cannot change UseConnection option while the class is Active.
135 Operation would block.
201 Timeout.
211 Action impossible in control's present state.
212 Action impossible while connected.
213 Action impossible while listening.
303 Could not open file.
434 Unable to convert string to selected CodePage
1105 Already connecting. If you want to reconnect, close the current connection first.
1117 You need to connect first.
1119 You cannot change the LocalHost at this time. A connection is in progress.
1120 Connection dropped by remote host.

SSL Errors

270 Cannot load specified security library.
271 Cannot open certificate store.
272 Cannot find specified certificate.
273 Cannot acquire security credentials.
274 Cannot find certificate chain.
275 Cannot verify certificate chain.
276 Error during handshake.
280 Error verifying certificate.
281 Could not find client certificate.
282 Could not find server certificate.
283 Error encrypting data.
284 Error decrypting data.

TCP/IP Errors

10004 [10004] Interrupted system call.
10009 [10009] Bad file number.
10013 [10013] Access denied.
10014 [10014] Bad address.
10022 [10022] Invalid argument.
10024 [10024] Too many open files.
10035 [10035] Operation would block.
10036 [10036] Operation now in progress.
10037 [10037] Operation already in progress.
10038 [10038] Socket operation on non-socket.
10039 [10039] Destination address required.
10040 [10040] Message too long.
10041 [10041] Protocol wrong type for socket.
10042 [10042] Bad protocol option.
10043 [10043] Protocol not supported.
10044 [10044] Socket type not supported.
10045 [10045] Operation not supported on socket.
10046 [10046] Protocol family not supported.
10047 [10047] Address family not supported by protocol family.
10048 [10048] Address already in use.
10049 [10049] Can't assign requested address.
10050 [10050] Network is down.
10051 [10051] Network is unreachable.
10052 [10052] Net dropped connection or reset.
10053 [10053] Software caused connection abort.
10054 [10054] Connection reset by peer.
10055 [10055] No buffer space available.
10056 [10056] Socket is already connected.
10057 [10057] Socket is not connected.
10058 [10058] Can't send after socket shutdown.
10059 [10059] Too many references, can't splice.
10060 [10060] Connection timed out.
10061 [10061] Connection refused.
10062 [10062] Too many levels of symbolic links.
10063 [10063] File name too long.
10064 [10064] Host is down.
10065 [10065] No route to host.
10066 [10066] Directory not empty
10067 [10067] Too many processes.
10068 [10068] Too many users.
10069 [10069] Disc Quota Exceeded.
10070 [10070] Stale NFS file handle.
10071 [10071] Too many levels of remote in path.
10091 [10091] Network subsystem is unavailable.
10092 [10092] WINSOCK DLL Version out of range.
10093 [10093] Winsock not loaded yet.
11001 [11001] Host not found.
11002 [11002] Non-authoritative 'Host not found' (try again or check DNS setup).
11003 [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP.
11004 [11004] Valid name, no data record (check DNS setup).


BankStatement Class

BankStatement Class

Properties Methods Events Configuration Settings Errors

The BankStatement component is a single component that supports the SignOn and Bank Statement Download functions of Open Financial eXchange, as described by the OFX Specification version 1.0.2.

Syntax

BankStatement

Remarks

The BankStatement class adds bank statement download functionality to your desktop application, or allows your web application to fetch a user's bank statement without having to redirect to another website. All downloads are done using a secure HTTPS Post to send account sign-on information to a financial institution. The class receives the secure response and parses the response into its properties.

To use the BankStatement class first identify the financial institution by setting the FIId, FIOrganization and FIUrl, properties. Next identify the OFX user and application by setting the OFXUser, OFXPassword, OFXAppId and OFXAppVersion properties. Next set the BankId, AccountId and AccountType properties to the appropriate values to identify the account for which you wish to download a statement. You may also set StartDate and EndDate properties to constrain the transaction list.

Once you have finished setting the properties that describe the statement you wish to download, use the GetStatement method to build and transmit the request automatically. When the response returns, the transaction properties will be populated automatically, as well as the StartDate, EndDate, AvailableBalance, LedgerBalance and any other data the bank statement includes.

The transaction properties (TxAmount, TxCheckNumber TxDatePosted, TxFITID, TxMemo, TxPayeeName, and TxType) may be imagined as arrays, so that the getter function for each property takes as its argument the index of a transaction in the list.

For example, TxAmount(0) gives the amount of the first transaction for the last statement downloaded.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting.

Property List

The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

AccountId | The account number used for the next statement download.
AccountType | Indicates the type of bank account.
AvailableBalance | Amount of the available balance.
AvailableBalanceDate | Date of the available balance.
BankId | Number that identifies the bank.
ClosingDetailCount | The number of records in the ClosingDetail arrays.
ClosingDetailAggregate | Aggregates are pieces of XML taken from the financial institution's original response.
ClosingDetailBalanceClosing | Closing statement balance.
ClosingDetailBalanceOpening | Opening statement balance.
ClosingDetailDateClose | Closing statement date.
ClosingDetailDateEnd | End date of transaction data for this statement.
ClosingDetailDateOpen | Opening statement date.
ClosingDetailDateStart | Start date of transaction data for this statement.
ClosingDetailFITID | Unique identifier assigned by financial institution to identify this particular statement closing information.
ClosingDetailImageRef | Server specified unique identifier for the statement closing image.
ClosingDetailImageRefType | Type of retrieval method for actual statement closing image.
ClosingDetailTotalCredit | Total credit posted on the account for this statement (period indicated by DateStart and DateEnd ).
ClosingDetailTotalDebit | Total of debit posted on the account for this statement (period indicated by DateStart and DateEnd ).
ClosingDetailTotalFees | Total fees.
ClosingDetailTotalInterest | Total interest.
CurrencyCode | Default currency code for this statement.
EndDate | End date of statement requested.
FIId | Financial institution identifier.
FIOrganization | Financial institution organization name.
FirewallAutoDetect | This property tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallType | This property determines the type of firewall to connect through.
FirewallHost | This property contains the name or IP address of firewall (optional).
FirewallPassword | This property contains a password if authentication is to be used when connecting through the firewall.
FirewallPort | This property contains the TCP port for the firewall Host .
FirewallUser | This property contains a user name if authentication is to be used connecting through a firewall.
FIUrl | Financial institution URL.
ImageFileName | Filename and location to save the image content of a transaction or statement.
IncludeImages | Whether the server has to return data for bank transactions or closing statements images.
LedgerBalance | Amount of the ledger balance.
LedgerBalanceDate | Date of the ledger balance.
OFXAccessKey | Access key value received after a MFA authentication in a previous signon.
OFXAppId | OFX application identifier.
OFXAppVersion | OFX application version.
OFXPassword | User's password.
OFXRequest | The current OFX request aggregate.
OFXResponse | The current OFX response aggregate.
OFXUser | User's id.
OFXVersion | OFX API version.
SSLAcceptServerCertEncoded | The certificate (PEM/base64 encoded).
SSLCertEncoded | The certificate (PEM/base64 encoded).
SSLCertStore | The name of the certificate store for the client certificate.
SSLCertStorePassword | If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.
SSLCertStoreType | The type of certificate store for this certificate.
SSLCertSubject | The subject of the certificate used for client authentication.
SSLServerCertEncoded | The certificate (PEM/base64 encoded).
StartDate | Start date of requested transaction list.
Timeout | A timeout for the component.
TxCount | The number of records in the Tx arrays.
TxAggregate | Wrapper for a bank transaction.
TxAmount | This is the amount of money exchanged during a given transaction.
TxCheckNumber | The check number as found on the original check.
TxDate | This is the date the transaction was made by the account holder as recorded by the financial institution, stored as a string.
TxDatePosted | This is the date the transaction was posted to the financial institution, stored as a string.
TxFITID | Transaction Id assigned by the financial institution.
TxImageRef | Server specified unique identifier for the transaction image.
TxImageRefType | Type of retrieval method for actual transaction image.
TxMemo | The memo property stores a notice from the payee to the customer as a string.
TxPayeeName | If this property has a value, the NAME element replaces the entire PAYEE aggregate in the request XML.
TxType | This is the type of transaction that was made on the account.
TxTypeDescription | A description of the transaction type.

Method List

The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

Config | Sets or retrieves a configuration setting.
GetClosingInfo | Download a statement closing information for a bank account.
GetImage | Request and retrieve a check or statement image (if available).
GetStatement | Download a bank statement.
ReadOFXDataFile | Reads an OFX response from a file.
Reset | Reset the internal state of the component and all properties to their default values.
WriteOFXDataFile | Writes the OFX response sent by the server to a file.

Event List

The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ConnectionStatus | Fired to indicate changes in connection state.
Error | Information about errors during data delivery.
SSLServerAuthentication | Fired after the server presents its certificate to the client.
SSLStatus | Shows the progress of the secure connection.

Configuration Settings

The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

Overwrite | Determines whether image files will be overwritten.
BankIdPresent | Determines whether Bank Id should be present in the request.
CurrencyFormat | The format to be used for returning currency values.
OFXDateFormat | The date format as required by OFX FI server.
DateFormat | The format to be used for input and output dates.
GetResponseVar | Parses additional information out of the response.
NewPassword | New password for the current OFX user.
OFXLog | Log file for the OFX transaction.
ServerMessage | Server message if a warning or other information returned.
ClientUId | Unique ID identifying OFX Client.
UserCred1A | Additional user credential required by server.
UserCred2A | Additional user credential required by server.
AuthToken | Authentication token required for this signon session only.
CorrectFITID[i] | The FITID of a previously sent transaction corrected by the current one.
CorrectAction[i] | The action taken to a previously sent transaction corrected by the current one.
AcceptEncoding | Used to tell the server which types of content encodings the client supports.
AllowHTTPCompression | This property enables HTTP compression for receiving data.
Authorization | The Authorization string to be sent to the server.
BytesTransferred | Contains the number of bytes transferred in the response data.
EncodeURL | If set to true the URL will be encoded by the component.
FollowRedirects | Determines what happens when the server issues a redirect.
GetOn302Redirect | If set to true the component will perform a GET on the new location.
HTTPVersion | The version of HTTP used by the component.
IfModifiedSince | A date determining the maximum age of the desired document.
KeepAlive | Determines whether the HTTP connection is closed after completion of the request.
MaxRedirectAttempts | Limits the number of redirects that are followed in a request.
OtherHeaders | Other headers as determined by the user (optional).
ProxyAuthorization | The authorization string to be sent to the proxy server.
ProxyAuthScheme | The authorization scheme to be used for the proxy.
ProxyPassword | A password if authentication is to be used for the proxy.
ProxyPort | Port for the proxy server (default 80).
ProxyServer | Name or IP address of a proxy server (optional).
ProxyUser | A user name if authentication is to be used for the proxy.
TransferredDataLimit | The maximum number of incoming bytes to be stored by the component.
UseChunkedEncoding | Enables or Disables HTTP chunked encoding for transfers.
ChunkSize | Specifies the chunk size in bytes when using chunked encoding.
UsePlatformHTTPClient | Whether or not to use the platform HTTP client.
UserAgent | Information about the user agent (browser).
KerberosSPN | The Service Principal Name for the Kerberos Domain Controller.
FirewallAutoDetect | Tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallHost | Name or IP address of firewall (optional).
FirewallPassword | Password to be used if authentication is to be used when connecting through the firewall.
FirewallPort | The TCP port for the FirewallHost;.
FirewallType | Determines the type of firewall to connect through.
FirewallUser | A user name if authentication is to be used connecting through a firewall.
KeepAliveTime | The inactivity time in milliseconds before a TCP keep-alive packet is sent.
KeepAliveInterval | The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.
Linger | When set to True, connections are terminated gracefully.
LingerTime | Time in seconds to have the connection linger.
LocalHost | The name of the local host through which connections are initiated or accepted.
LocalPort | The TCP port in the local host where the component binds.
MaxLineLength | The maximum amount of data to accumulate when no EOL is found.
MaxTransferRate | The transfer rate limit in bytes per second.
TCPKeepAlive | Determines whether or not the keep alive socket option is enabled.
UseIPv6 | Whether or not to use IPv6.
TcpNoDelay | Whether or not to delay when sending packets.
ReuseSSLSession | Determines if the SSL session is reused.
SSLCipherStrength | The minimum cipher strength used for bulk encryption.
SSLEnabledProtocols | Used to enable/disable the supported security protocols.
SSLProvider | The name of the security provider to use.
SSLSecurityFlags | Flags that control certificate verification.
OpenSSLCADir | The path to a directory containing CA certificates.
OpenSSLCAFile | Name of the file containing the list of CA's trusted by your application.
OpenSSLCipherList | A string that controls the ciphers to be used by SSL.
OpenSSLPrngSeedData | The data to seed the pseudo random number generator (PRNG).
SSLAlgorithmList | A string that controls the cipher algorithms to be used by SSL.
AbsoluteTimeout | Determines whether timeouts are inactivity timeouts or absolute timeouts.
FirewallData | Used to send extra data to the firewall.
InBufferSize | The size in bytes of the incoming queue of the socket.
OutBufferSize | The size in bytes of the outgoing queue of the socket.
CodePage | The system code page used for Unicode to Multibyte translations.


AccountId Property

AccountId Property (BankStatement Class)

The account number used for the next statement download.

Syntax

char* GetAccountId();

int SetAccountId(char* lpszAccountId);

Default Value

""

Remarks

This is the account number for which the user wishes to download a statement. For checking and savings accounts, this is the number that appears at the bottom of the user's checks or deposit slips, to the right of the routing number.

Data Type

String


AccountType Property

AccountType Property (BankStatement Class)

Indicates the type of bank account.

Syntax

int GetAccountType();

int SetAccountType(int iAccountType);

Possible Values

  AT_CHECKING(0),
  AT_SAVINGS(1),
  AT_MONEY_MARKET(2),
  AT_LINE_OF_CREDIT(3),
  AT_CREDIT_CARD(4)

Default Value

0

Remarks

This property uses the following four values:

  • atChecking (0)
  • atSavings (1)
  • atMoneyMarket (2)
  • atLineOfCredit (3)

Data Type

Integer


AvailableBalance Property

AvailableBalance Property (BankStatement Class)

Amount of the available balance.

Syntax

char* GetAvailableBalance();

Default Value

""

Remarks

This is the amount of money available from a given account.

For bank accounts, LedgerBalance represents the last balance recorded in official documents. AvailableBalance represents the value in the ledger balance once all temporary authorizations, such as ATM withdrawals, have posted to the ledger. Any positive value means that funds are available while negative values mean that the account is overdrawn.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

This property is read-only.

Data Type

String


AvailableBalanceDate Property

AvailableBalanceDate Property (BankStatement Class)

Date of the available balance.

Syntax

char* GetAvailableBalanceDate();

Default Value

""

Remarks

This is the date as of which the account balance is valid.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is read-only.

Data Type

String


BankId Property

BankId Property (BankStatement Class)

Number that identifies the bank.

Syntax

char* GetBankId();

int SetBankId(char* lpszBankId);

Default Value

""

Remarks

The meaning of this string differs with the location of the bank.

BEL | Bank code
CAN | Routing and transit number
CHE | Clearing number
DEU | Bankleitzahl
ESP | Entidad
FRA | Banque
GBR | Sort code
ITA | ABI
NLD | Not used; contents of this field are ignored
USA | Routing and transit number.

Data Type

String


ClosingDetailCount Property

ClosingDetailCount Property (BankStatement Class)

The number of records in the ClosingDetail arrays.

Syntax

int GetClosingDetailCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • ClosingDetailAggregate
  • ClosingDetailBalanceClosing
  • ClosingDetailBalanceOpening
  • ClosingDetailDateClose
  • ClosingDetailDateEnd
  • ClosingDetailDateOpen
  • ClosingDetailDateStart
  • ClosingDetailFITID
  • ClosingDetailImageRef
  • ClosingDetailImageRefType
  • ClosingDetailTotalCredit
  • ClosingDetailTotalDebit
  • ClosingDetailTotalFees
  • ClosingDetailTotalInterest

The array indices start at 0 and end at ClosingDetailCount-1.

This property is read-only and not available at design time.

Data Type

Integer


ClosingDetailAggregate Property

ClosingDetailAggregate Property (BankStatement Class)

Aggregates are pieces of XML taken from the financial institution's original response.

Syntax

char* GetClosingDetailAggregate(int iClosingDetailIndex);

Default Value

""

Remarks

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

This aggregate describes a statement closing information. It contains data (elements and values) associated with the following properties:

  • ClosingDetailFITID
  • ClosingDetailDateStart
  • ClosingDetailDateEnd
  • ClosingDetailDateOpen
  • ClosingDetailDateClose
  • ClosingDetailDateDue (applicable to credit card accounts only)
  • ClosingDetailBalanceOpening
  • ClosingDetailBalanceClosing
  • ClosingDetailTotalInterest (not applicable to credit card accounts)
  • ClosingDetailTotalFees
  • ClosingDetailTotalCredit
  • ClosingDetailTotalDebit
  • ClosingDetailCreditLimit (applicable to credit card accounts only)
  • ClosingDetailImageRef
  • ClosingDetailImageRefType

For each aggregate returned, clients can retrieve corresponding transactions by using ClosingDetailDateStart and ClosingDetailDateEnd in a statement download request (when calling GetStatement method).

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailBalanceClosing Property

ClosingDetailBalanceClosing Property (BankStatement Class)

Closing statement balance.

Syntax

char* GetClosingDetailBalanceClosing(int iClosingDetailIndex);

Default Value

""

Remarks

Closing statement balance.

This is not applicable for loan accounts.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailBalanceOpening Property

ClosingDetailBalanceOpening Property (BankStatement Class)

Opening statement balance.

Syntax

char* GetClosingDetailBalanceOpening(int iClosingDetailIndex);

Default Value

""

Remarks

Opening statement balance.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateClose Property

ClosingDetailDateClose Property (BankStatement Class)

Closing statement date.

Syntax

char* GetClosingDetailDateClose(int iClosingDetailIndex);

Default Value

""

Remarks

Closing statement date.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateEnd Property

ClosingDetailDateEnd Property (BankStatement Class)

End date of transaction data for this statement.

Syntax

char* GetClosingDetailDateEnd(int iClosingDetailIndex);

Default Value

""

Remarks

End date of transaction data for this statement. A client should be able to use this date when requesting individual transactions that match this statement.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateOpen Property

ClosingDetailDateOpen Property (BankStatement Class)

Opening statement date.

Syntax

char* GetClosingDetailDateOpen(int iClosingDetailIndex);

Default Value

""

Remarks

Opening statement date.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateStart Property

ClosingDetailDateStart Property (BankStatement Class)

Start date of transaction data for this statement.

Syntax

char* GetClosingDetailDateStart(int iClosingDetailIndex);

Default Value

""

Remarks

Start date of transaction data for this statement. A client should be able to use this date when requesting individual transactions that match this statement.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailFITID Property

ClosingDetailFITID Property (BankStatement Class)

Unique identifier assigned by financial institution to identify this particular statement closing information.

Syntax

char* GetClosingDetailFITID(int iClosingDetailIndex);

Default Value

""

Remarks

Unique identifier assigned by financial institution to identify this particular statement closing information. This id provides a way for the client to distinguish one closing statement from another.

This is always returned in the server response for each statement.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailImageRef Property

ClosingDetailImageRef Property (BankStatement Class)

Server specified unique identifier for the statement closing image.

Syntax

char* GetClosingDetailImageRef(int iClosingDetailIndex);

Default Value

""

Remarks

Server specified unique identifier for the statement closing image.

This can be either image identifier (to be used during the request to retrieve the actual image when the GetImage method is called) or URL, depending on the value of ClosingDetailImageRefType.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailImageRefType Property

ClosingDetailImageRefType Property (BankStatement Class)

Type of retrieval method for actual statement closing image.

Syntax

char* GetClosingDetailImageRefType(int iClosingDetailIndex);

Default Value

""

Remarks

Type of retrieval method for actual statement closing image.

If ClosingDetailImageRef is returned in the response, this can be either image identifier (to be used during the request for the image when the GetImage method is called) or a URL.

Possible values for ClosingDetailImageRefType are:

Value | Meaning
OPAQUE | Requires the client to send a separate OFX request to access the image. The image can be retrieved by calling the GetImage method where ClosingDetailImageRef will be the parameter value for this method.
URL | The image is accessed directly via the URL provided. The client will not provide authentication and will simply follow the URL provided.
FORMURL | The image is accessed directly via an encoded URL. The client will send authentication to the server.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailTotalCredit Property

ClosingDetailTotalCredit Property (BankStatement Class)

Total credit posted on the account for this statement (period indicated by DateStart and DateEnd ).

Syntax

char* GetClosingDetailTotalCredit(int iClosingDetailIndex);

Default Value

""

Remarks

Total credit posted on the account for this statement (period indicated by ClosingDetailDateStart and ClosingDetailDateEnd).

In a bank statement (checking, savings or money market account), this represents total of deposits and credits, including interest. In a credit card statement, this represents total of payments and credits.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailTotalDebit Property

ClosingDetailTotalDebit Property (BankStatement Class)

Total of debit posted on the account for this statement (period indicated by DateStart and DateEnd ).

Syntax

char* GetClosingDetailTotalDebit(int iClosingDetailIndex);

Default Value

""

Remarks

Total of debit posted on the account for this statement (period indicated by ClosingDetailDateStart and ClosingDetailDateEnd).

In a bank statement (checking, savings or money market account), this represents total of checks and debits, including fees. In a credit card statement, this represents total of payments and credits.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailTotalFees Property

ClosingDetailTotalFees Property (BankStatement Class)

Total fees.

Syntax

char* GetClosingDetailTotalFees(int iClosingDetailIndex);

Default Value

""

Remarks

Total fees.

In a bank statement (checking, savings or money market account), this represents total of all fees. While in a credit card statement, this represents finance charge.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailTotalInterest Property

ClosingDetailTotalInterest Property (BankStatement Class)

Total interest.

Syntax

char* GetClosingDetailTotalInterest(int iClosingDetailIndex);

Default Value

""

Remarks

Total interest.

For bank or investment accounts, this indicates total interest posted on the account for this statement (period indicated by ClosingDetailDateStart and ClosingDetailDateEnd).

For loan accounts, this indicates total interest paid year to date.

This is not applicable for credit card accounts.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


CurrencyCode Property

CurrencyCode Property (BankStatement Class)

Default currency code for this statement.

Syntax

char* GetCurrencyCode();

Default Value

""

Remarks

Indicates how to interpret the monetary amounts in the current statement. This is a 3-character ISO-4217 currency code, such as USD and EUR.

This property is read-only.

Data Type

String


EndDate Property

EndDate Property (BankStatement Class)

End date of statement requested.

Syntax

char* GetEndDate();

int SetEndDate(char* lpszEndDate);

Default Value

""

Remarks

This is a string representing the date at which to stop listing transactions on the statement. Use this property and StartDate to constrain the list of transactions retrieved when calling GetStatement.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Data Type

String


FIId Property

FIId Property (BankStatement Class)

Financial institution identifier.

Syntax

char* GetFIId();

int SetFIId(char* lpszFIId);

Default Value

""

Remarks

FIId holds the identifier of the OFX Financial Institution and is used during signon. This value is unique for each organization name.

Data Type

String


FIOrganization Property

FIOrganization Property (BankStatement Class)

Financial institution organization name.

Syntax

char* GetFIOrganization();

int SetFIOrganization(char* lpszFIOrganization);

Default Value

""

Remarks

This is the name of the OFX Financial Institution and is used during signon. Each organization has a unique FIId that must also be used at signon.

Data Type

String


FirewallAutoDetect Property

FirewallAutoDetect Property (BankStatement Class)

This property tells the component whether or not to automatically detect and use firewall system settings, if available.

Syntax

int GetFirewallAutoDetect();

int SetFirewallAutoDetect(int bFirewallAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use firewall system settings, if available.

Data Type

Boolean


FirewallType Property

FirewallType Property (BankStatement Class)

This property determines the type of firewall to connect through.

Syntax

int GetFirewallType();

int SetFirewallType(int iFirewallType);

Possible Values

  FW_NONE(0),
  FW_TUNNEL(1),
  FW_SOCKS4(2),
  FW_SOCKS5(3)

Default Value

0

Remarks

This property determines the type of firewall to connect through. The applicable values are the following:

fwNone (0) | No firewall (default setting).
fwTunnel (1) | Connect through a tunneling proxy. FirewallPort is set to 80.
fwSOCKS4 (2) | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
fwSOCKS5 (3) | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

Data Type

Integer


FirewallHost Property

FirewallHost Property (BankStatement Class)

This property contains the name or IP address of firewall (optional).

Syntax

char* GetFirewallHost();

int SetFirewallHost(char* lpszFirewallHost);

Default Value

""

Remarks

This property contains the name or IP address of firewall (optional). If a FirewallHost is given, the requested connections will be authenticated through the specified firewall when connecting.

If this property is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, this property is set to the corresponding address. If the search is not successful, the class fails with an error.

Data Type

String


FirewallPassword Property

FirewallPassword Property (BankStatement Class)

This property contains a password if authentication is to be used when connecting through the firewall.

Syntax

char* GetFirewallPassword();

int SetFirewallPassword(char* lpszFirewallPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used when connecting through the firewall. If FirewallHost is specified, the FirewallUser and FirewallPassword properties are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

Data Type

String


FirewallPort Property

FirewallPort Property (BankStatement Class)

This property contains the TCP port for the firewall Host .

Syntax

int GetFirewallPort();

int SetFirewallPort(int lFirewallPort);

Default Value

0

Remarks

This property contains the TCP port for the firewall FirewallHost. See the description of the FirewallHost property for details.

Note that this property is set automatically when FirewallType is set to a valid value. See the description of the FirewallType property for details.

Data Type

Long


FirewallUser Property

FirewallUser Property (BankStatement Class)

This property contains a user name if authentication is to be used connecting through a firewall.

Syntax

char* GetFirewallUser();

int SetFirewallUser(char* lpszFirewallUser);

Default Value

""

Remarks

This property contains a user name if authentication is to be used connecting through a firewall. If the FirewallHost is specified, this property and FirewallPassword properties are used to connect and authenticate to the given Firewall. If the authentication fails, the class fails with an error.

Data Type

String


FIUrl Property

FIUrl Property (BankStatement Class)

Financial institution URL.

Syntax

char* GetFIUrl();

int SetFIUrl(char* lpszFIUrl);

Default Value

""

Remarks

This is the URL of the OFX Financial Institution to which the class will signon and fetch data.

Data Type

String


ImageFileName Property

ImageFileName Property (BankStatement Class)

Filename and location to save the image content of a transaction or statement.

Syntax

char* GetImageFileName();

int SetImageFileName(char* lpszImageFileName);

Default Value

""

Remarks

When calling the GetImage method, the image content is returned by that method. If you want the image content to be written to disk, you can set the ImageFileName to a desired file name without specifying the type. The file type will be set automatically depending on the image type supported by the server. Possible image types are: jpeg, tiff, png, pdf.

If the filename exists, you can choose to overwrite it or not by setting the Overwrite config setting (which defaults to True).

Note: Image download is available only for OFX version 2.1.1. When this method is called, the OFXVersion is automatically set to '211'.

Data Type

String


IncludeImages Property

IncludeImages Property (BankStatement Class)

Whether the server has to return data for bank transactions or closing statements images.

Syntax

int GetIncludeImages();

int SetIncludeImages(int bIncludeImages);

Default Value

FALSE

Remarks

If False (default value), the server will not return any image references in the response.

Otherwise, if the FI supports image download service :

  • when the GetStatement method is called, the server will return the image references for each transaction (e.g., check image).
  • when the GetClosingInfo method is called, the server will return a reference to the statement closing information image.

These references can then be used as parameters when the GetImage method is called.

This is optional and supported in OFX 2.1.1 version only (i.e., if this is requested, the OFXVersion should be set to '211').

Note: Clients may request images in statement download and/or closing requests in various message sets. But not all FIs support image download. Prior to requesting these images, clients must verify that support exists on the server for image download. This is indicated by the presence of the IMAGEMSGSET aggregate in the profile response, as well as the IMAGEPROF aggregate in the profile response for the specific message set in question.

For instance, if a client wishes to request transaction images in the banking statement download request, the client must verify the presence of IMAGEMSGSET in the profile as well as transaction image support in the IMAGEPROF aggregate in the BANKMSGSET in the profile. Image download requests are allowed only in OFX 2.1.1 in the Banking, Credit Card, Loan and Investments message sets.

To verify whether your FI supports this service, you should check its profile (by calling the GetProfile method in FIProfile class) and check the values of FIMessageSetTxImage and FIMessageSetClosingInfoImage for each message set (bank, credit card, loan and investment).

Data Type

Boolean


LedgerBalance Property

LedgerBalance Property (BankStatement Class)

Amount of the ledger balance.

Syntax

char* GetLedgerBalance();

Default Value

""

Remarks

This value reflects the account balance as posted in the financial institution's records.

For bank accounts, LedgerBalance represents the last balance recorded in official documents. AvailableBalance represents the value in the ledger balance once all temporary authorizations, such as ATM withdrawals, have posted to the ledger. Any positive value means that funds are available while negative values mean that the account is overdrawn.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

This property is read-only.

Data Type

String


LedgerBalanceDate Property

LedgerBalanceDate Property (BankStatement Class)

Date of the ledger balance.

Syntax

char* GetLedgerBalanceDate();

Default Value

""

Remarks

This is the date, as of which, the ledger balance is valid.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is read-only.

Data Type

String


OFXAccessKey Property

OFXAccessKey Property (BankStatement Class)

Access key value received after a MFA authentication in a previous signon.

Syntax

char* GetOFXAccessKey();

int SetOFXAccessKey(char* lpszOFXAccessKey);

Default Value

""

Remarks

This might be returned in the server response after a MFA authentication (i.e. MFA challenge question/answer pairs were validated by the server when the SendChallengeAnswers method in FIProfile class was called).

To prevent servers from needing to authenticate the user in each OFX request, the server may respond to a correct set of challenge answers with a OFXAccessKey on the signon response (when the SendChallengeAnswers method in FIProfile class was called).

The server determines the contents of this optional element. On each subsequent signon request, the client will send the last value of the OFXAccessKey it has received, even after the end of the current session. The server has the option to respond to any subsequent request with a 3000 error code, requiring the client to send the MFA challenge questions request again (by calling the RequestChallengeQuestions method in FIProfile class). This allows the server to determine the lifetime of the OFXAccessKey.

Data Type

String


OFXAppId Property

OFXAppId Property (BankStatement Class)

OFX application identifier.

Syntax

char* GetOFXAppId();

int SetOFXAppId(char* lpszOFXAppId);

Default Value

""

Remarks

This is the unique identifier of the user's OFX application.

Data Type

String


OFXAppVersion Property

OFXAppVersion Property (BankStatement Class)

OFX application version.

Syntax

char* GetOFXAppVersion();

int SetOFXAppVersion(char* lpszOFXAppVersion);

Default Value

""

Remarks

This is the version of the user's OFX application.

Data Type

String


OFXPassword Property

OFXPassword Property (BankStatement Class)

User's password.

Syntax

char* GetOFXPassword();

int SetOFXPassword(char* lpszOFXPassword);

Default Value

""

Remarks

This is the password used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXRequest Property

OFXRequest Property (BankStatement Class)

The current OFX request aggregate.

Syntax

char* GetOFXRequest();

Default Value

""

Remarks

Polling OFXRequest will cause the class to generate and return an OFX request aggregate.

This property is read-only and not available at design time.

Data Type

String


OFXResponse Property

OFXResponse Property (BankStatement Class)

The current OFX response aggregate.

Syntax

char* GetOFXResponse();

int SetOFXResponse(char* lpszOFXResponse);

Default Value

""

Remarks

This can be used especially for debugging purposes. This can also be used to parse an OFX Response. To do so, you can set the OFX Response data (in string format) to OFXResponse. Once set, the supplied OFX data will be parsed and will populate the same read-only properties that ReadOFXDataFile does.

This property is not available at design time.

Data Type

String


OFXUser Property

OFXUser Property (BankStatement Class)

User's id.

Syntax

char* GetOFXUser();

int SetOFXUser(char* lpszOFXUser);

Default Value

""

Remarks

This is the UserID used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXVersion Property

OFXVersion Property (BankStatement Class)

OFX API version.

Syntax

char* GetOFXVersion();

int SetOFXVersion(char* lpszOFXVersion);

Default Value

"102"

Remarks

This is the OFX API version used in all requests sent to your FI server (such as 1.0.2, 2.0.1, 2.1.1, etc.). Valid values: 102, 103, 200, 201, 203, 210, 211. Note that not all OFX Versions are supported by FIs.

Note: If the OFXVersion is set to 1x, the request and the response are going to be in SGML format. If set to 2x, the request will be in XML format (the response format depends on the FI's server capabilities). Note that if the OFX FI server does not support version 2x, the server will return an error (such as 'Bad Request').

Certain services are available only for a specific OFX version. For example, image download, is available only in OFX version 2.1.1.

Data Type

String


SSLAcceptServerCertEncoded Property

SSLAcceptServerCertEncoded Property (BankStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLAcceptServerCertEncoded(char *&lpSSLAcceptServerCertEncoded, int &lenSSLAcceptServerCertEncoded);

int SetSSLAcceptServerCertEncoded(char *lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLAcceptServerCertStore and SSLAcceptServerCertSubject properties may also be used to specify a certificate.

When SSLAcceptServerCertEncoded is set, a search is initiated in the current SSLAcceptServerCertStore for the private key of the certificate. If the key is found, SSLAcceptServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLAcceptServerCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertEncoded Property

SSLCertEncoded Property (BankStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLCertEncoded(char *&lpSSLCertEncoded, int &lenSSLCertEncoded);

int SetSSLCertEncoded(char *lpSSLCertEncoded, int lenSSLCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLCertStore and SSLCertSubject properties may also be used to specify a certificate.

When SSLCertEncoded is set, a search is initiated in the current SSLCertStore for the private key of the certificate. If the key is found, SSLCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertStore Property

SSLCertStore Property (BankStatement Class)

The name of the certificate store for the client certificate.

Syntax

int GetSSLCertStore(char *&lpSSLCertStore, int &lenSSLCertStore);

int SetSSLCertStore(char *lpSSLCertStore, int lenSSLCertStore);

Default Value

"MY"

Remarks

The name of the certificate store for the client certificate.

The SSLCertStoreType property specifies the type of the certificate store specified by SSLCertStore. If the store is password protected, specify the password in SSLCertStorePassword.

SSLCertStore is used in conjunction with the SSLCertSubject property in order to specify client certificates. If SSLCertStore has a value, and SSLCertSubject or SSLCertEncoded is set, a search for a certificate is initiated. Please refer to the SSLCertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MY | A certificate store holding personal certificates with their associated private keys.
CA | Certifying authority certificates.
ROOT | Root certificates.
SPC | Software publisher certificates.

In Java, the certificate store normally is a file containing certificates and optional private keys.

When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).

If the provider is OpenSSL, the certificate store is a file containing a certificate and a private key. This property must be set to the name of the file.

Data Type

Binary String


SSLCertStorePassword Property

SSLCertStorePassword Property (BankStatement Class)

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Syntax

char* GetSSLCertStorePassword();

int SetSSLCertStorePassword(char* lpszSSLCertStorePassword);

Default Value

""

Remarks

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Data Type

String


SSLCertStoreType Property

SSLCertStoreType Property (BankStatement Class)

The type of certificate store for this certificate.

Syntax

int GetSSLCertStoreType();

int SetSSLCertStoreType(int iSSLCertStoreType);

Possible Values

  CST_USER(0),
  CST_MACHINE(1),
  CST_PFXFILE(2),
  CST_PFXBLOB(3),
  CST_JKSFILE(4),
  CST_JKSBLOB(5),
  CST_PEMKEY_FILE(6),
  CST_PEMKEY_BLOB(7),
  CST_PUBLIC_KEY_FILE(8),
  CST_PUBLIC_KEY_BLOB(9),
  CST_SSHPUBLIC_KEY_BLOB(10),
  CST_P7BFILE(11),
  CST_P7BBLOB(12),
  CST_SSHPUBLIC_KEY_FILE(13),
  CST_PPKFILE(14),
  CST_PPKBLOB(15),
  CST_XMLFILE(16),
  CST_XMLBLOB(17)

Default Value

0

Remarks

The type of certificate store for this certificate.

This property can take one of the following values:

0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java.
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java.
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates.
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format.
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java.
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java.
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate.
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate.
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate.
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate.
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key.
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates.
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format.
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key.
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key).
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key).
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format.
17 (cstXMLlob) | The certificate store is a string that contains a certificate in XML format.

Data Type

Integer


SSLCertSubject Property

SSLCertSubject Property (BankStatement Class)

The subject of the certificate used for client authentication.

Syntax

char* GetSSLCertSubject();

int SetSSLCertSubject(char* lpszSSLCertSubject);

Default Value

""

Remarks

The subject of the certificate used for client authentication.

When this property is set, a search is performed in the current certificate store certificate with matching subject.

If a matching certificate is found, the property is set to the full subject of the matching certificate.

If an exact match is not found, the store is searched for subjects containing the value of the property.

If a match is still not found, the property is set to an empty string, and no certificate is selected.

The special value "*" picks a random certificate in the certificate store.

The certificate subject is a comma separated list of distinguished name properties and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common properties and their meanings are displayed below.

Field | Meaning
CN | Common Name. This is commonly a host name like www.server.com.
O | Organization
OU | Organizational Unit
L | Locality
S | State
C | Country
E | Email Address

If a property value contains a comma it must be quoted.

Data Type

String


SSLServerCertEncoded Property

SSLServerCertEncoded Property (BankStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLServerCertEncoded(char *&lpSSLServerCertEncoded, int &lenSSLServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLServerCertStore and SSLServerCertSubject properties may also be used to specify a certificate.

When SSLServerCertEncoded is set, a search is initiated in the current SSLServerCertStore for the private key of the certificate. If the key is found, SSLServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLServerCertSubject is set to empty string.

This property is read-only and not available at design time.

Data Type

Binary String


StartDate Property

StartDate Property (BankStatement Class)

Start date of requested transaction list.

Syntax

char* GetStartDate();

int SetStartDate(char* lpszStartDate);

Default Value

""

Remarks

This is a string representing the date at which to start listing transactions on the statement. Use this property and EndDate to constrain the list of transactions retrieved when calling GetStatement. When provided in the request, StartDate value will be echoed in the server's response.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Data Type

String


Timeout Property

Timeout Property (BankStatement Class)

A timeout for the component.

Syntax

int GetTimeout();

int SetTimeout(int iTimeout);

Default Value

60

Remarks

If the Timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.

If Timeout is set to a positive value, the class will wait for the operation to complete before returning control.

The class will use DoEvents to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not "freeze" and remains responsive.

If Timeout expires, and the operation is not yet complete, the class fails with an error.

Please note that by default, all timeouts are inactivity timeouts, i.e. the timeout period is extended by Timeout seconds when any amount of data is successfully sent or received.

Optionally, the behavior of the class may be changed to absolute timeouts, i.e. the class will wait for a maximum of Timeout seconds since the beginning of the operation, without extending the timeout period during communications.

This behavior is controlled by the AbsoluteTimeout configuration setting.

The default value for the Timeout property is 60 (seconds).

Data Type

Integer


TxCount Property

TxCount Property (BankStatement Class)

The number of records in the Tx arrays.

Syntax

int GetTxCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • TxAggregate
  • TxAmount
  • TxCheckNumber
  • TxDate
  • TxDatePosted
  • TxFITID
  • TxImageRef
  • TxImageRefType
  • TxMemo
  • TxPayeeName
  • TxType
  • TxTypeDescription

The array indices start at 0 and end at TxCount-1.

This property is read-only and not available at design time.

Data Type

Integer


TxAggregate Property

TxAggregate Property (BankStatement Class)

Wrapper for a bank transaction.

Syntax

char* GetTxAggregate(int iTxIndex);

Default Value

""

Remarks

Wrapper for a bank transaction.

Each bank transaction aggregate contains data (elements and values) associated with the following properties:

  • TxAmount
  • TxCheckNumber
  • TxDatePosted
  • TxFITID
  • TxMemo
  • TxPayeeName
  • TxType
  • TxImageRef
  • TxImageRefType

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxAmount Property

TxAmount Property (BankStatement Class)

This is the amount of money exchanged during a given transaction.

Syntax

char* GetTxAmount(int iTxIndex);

Default Value

""

Remarks

This is the amount of money exchanged during a given transaction.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxCheckNumber Property

TxCheckNumber Property (BankStatement Class)

The check number as found on the original check.

Syntax

char* GetTxCheckNumber(int iTxIndex);

Default Value

""

Remarks

The check number as found on the original check. Some stores that use electronic checks may put a randomly generated value in this property.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxDate Property

TxDate Property (BankStatement Class)

This is the date the transaction was made by the account holder as recorded by the financial institution, stored as a string.

Syntax

char* GetTxDate(int iTxIndex);

Default Value

""

Remarks

This is the date the transaction was made by the account holder as recorded by the financial institution, stored as a string.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Note: this property is optional. This is not applicable to loan accounts. If the server's response does not contain this information, querying this property will return an empty string.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxDatePosted Property

TxDatePosted Property (BankStatement Class)

This is the date the transaction was posted to the financial institution, stored as a string.

Syntax

char* GetTxDatePosted(int iTxIndex);

Default Value

""

Remarks

This is the date the transaction was posted to the financial institution, stored as a string.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxFITID Property

TxFITID Property (BankStatement Class)

Transaction Id assigned by the financial institution.

Syntax

char* GetTxFITID(int iTxIndex);

Default Value

""

Remarks

Transaction Id assigned by the financial institution.

This is a unique id number that the financial institution uses to identify a particular transaction. Its primary purpose is to allow a client to detect duplicate responses, whether the server previously downloaded the transaction.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxImageRef Property

TxImageRef Property (BankStatement Class)

Server specified unique identifier for the transaction image.

Syntax

char* GetTxImageRef(int iTxIndex);

Default Value

""

Remarks

Server specified unique identifier for the transaction image.

This can be either image identifier (to be used during the request to retrieve the actual image when the GetImage method is called) or URL, depending on the value of TxImageRefType.

Note: This is not applicable for credit card accounts.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxImageRefType Property

TxImageRefType Property (BankStatement Class)

Type of retrieval method for actual transaction image.

Syntax

char* GetTxImageRefType(int iTxIndex);

Default Value

""

Remarks

Type of retrieval method for actual transaction image.

If TxImageRef is returned in the response, this can be either image identifier (to be used during the request for the image when the GetImage method is called) or a URL.

Possible values for TxImageRefType are:

Value | Meaning
OPAQUE | Requires the client to send a separate OFX request to access the image. The image can be retrieved by calling the GetImage method where TxImageRef will be the parameter value for this method.
URL | The image is accessed directly via the URL provided. The client will not provide authentication and will simply follow the URL provided.
FORMURL | The image is accessed directly via an encoded URL. The client will send authentication to the server.

Note: This is not applicable for credit card accounts.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxMemo Property

TxMemo Property (BankStatement Class)

The memo property stores a notice from the payee to the customer as a string.

Syntax

char* GetTxMemo(int iTxIndex);

Default Value

""

Remarks

The memo property stores a notice from the payee to the customer as a string.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxPayeeName Property

TxPayeeName Property (BankStatement Class)

If this property has a value, the NAME element replaces the entire PAYEE aggregate in the request XML.

Syntax

char* GetTxPayeeName(int iTxIndex);

Default Value

""

Remarks

If this property has a value, the NAME element replaces the entire PAYEE aggregate in the request XML.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxType Property

TxType Property (BankStatement Class)

This is the type of transaction that was made on the account.

Syntax

int GetTxType(int iTxIndex);

Possible Values

  TT_CREDIT(0),
  TT_DEBIT(1),
  TT_INTEREST(2),
  TT_DIVIDEND(3),
  TT_FIFEE(4),
  TT_SERVICE_CHARGE(5),
  TT_DEPOSIT(6),
  TT_ATM(7),
  TT_POINT_OF_SALE(8),
  TT_TRANSFER(9),
  TT_CHECK(10),
  TT_PAYMENT(11),
  TT_CASH(12),
  TT_DIRECT_DEPOSIT(13),
  TT_DIRECT_DEBIT(14),
  TT_REPEAT_PAYMENT(15),
  TT_LATE_FEE(16),
  TT_ADVANCE(17),
  TT_BALLOON(18),
  TT_OTHER(255)

Default Value

0

Remarks

This is the type of transaction that was made on the account. The effect on the account balance depends upon the sign of the amount, not upon the value of this transaction.

For example, if the amount is negative and the type is a credit, a negative credit is applied to the account. If the amount is negative and the type is debit, the amount is still debited from the account. A positive amount indicates the addition of money to the account, regardless of the type.

The types and their meanings are as follows:

ttCredit (0) | Generic credit
ttDebit (1) | Generic debit
ttInterest (2) | Interest earned or paid (note: depends on signage of amount)
ttDividend (3) | Dividend
ttFIFee (4) | FI fee
ttServiceCharge (5) | Service charge
ttDeposit (6) | Deposit
ttATM (7) | ATM debit or credit (note: depends on signage of amount)
ttPointOfSale (8) | Point of sale debit or credit (note: depends on signage of amount)
ttTransfer (9) | Transfer
ttCheck (10) | Check
ttPayment (11) | Payment
ttCash (12) | Cash withdrawal
ttDirectDeposit (13) | Direct deposit
ttDirectDebit (14) | Merchant initiated debit
ttRepeatPayment (15) | Repeating payment/standing order
ttLateFee (16) | Late Fee (note: applicable to loan accounts only)
ttAdvance (17) | Cash Advance which adds to Principal Balance (note: applicable to loan accounts only)
ttBalloon (18) | Payment of Balloon Amount (note: applicable to loan accounts only)
ttOther (255) | Other (note: see TxMemo for a possible transaction description)

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

Integer


TxTypeDescription Property

TxTypeDescription Property (BankStatement Class)

A description of the transaction type.

Syntax

char* GetTxTypeDescription(int iTxIndex);

Default Value

"Credit"

Remarks

A description of the transaction type. This is a string representation of the value returned by the TxType property.

The values translate as follows:

The types and their meanings are as follows:

ttCredit (0) | Credit
ttDebit (1) | Debit
ttInterest (2) | Interest
ttDivident (3) | Dividend
ttFIFee (4) | FI Fee
ttServiceCharge (5) | Service Charge
ttDeposit (6) | Deposit
ttATM (7) | ATM
ttPointOfSale (8) | Point of Sale
ttTransfer (9) | Transfer
ttCheck (10) | Check
ttPayment (11) | Payment
ttCash (12) | Cash Withdrawal
ttDirectDeposit (13) | Direct Deposit
ttDirectDebit (14) | Direct Debit
ttRepeatPayment (15) | Repeat Payment
ttLateFee (16) | Late Fee (note: applicable to loan accounts only)
ttAdvance (17) | Cash Advance which adds to Principal Balance (note: applicable to loan accounts only)
ttBalloon (18) | Payment of Balloon Amount (note: applicable to loan accounts only)
ttOther (255) | Other

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


Config Method

Config Method (BankStatement Class)

Sets or retrieves a configuration setting.

Syntax

 char* Config(char* lpszConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.


GetClosingInfo Method

GetClosingInfo Method (BankStatement Class)

Download a statement closing information for a bank account.

Syntax

 int GetClosingInfo();

Remarks

This function generates the Signon and Bank Statement Closing Information request page, submits it to the financial institution via secure HTTPS Post, receives and parses the closing statement information (that typically appears as part of a paper statement).

This information includes opening and closing dates and balances for a statement period, as well as a detailed breakdown of debits, credits, fees, and interest that are usually part of a paper statement. In addition to this information, you will also receive a date range for transactions that correspond to the closing statement. You can use this date range to retrieve transactions through statement download request (by calling the GetStatement method).

The following properties should be set when this method is called:

  • FIId (required)
  • FIOrganization (required)
  • FIUrl (required)
  • OFXAppId (required)
  • OFXAppVersion (required)
  • OFXVersion (required if 2.x OFX version is the one supported by your FI)
  • OFXUser (required)
  • OFXPassword (required)
  • BankId (required)
  • AccountId (required)
  • AccountType (required)

The client can also specify a date range (by setting the StartDate and EndDate properties) to limit the number of closing information aggregates that the server returns. If the client does not specify a date range, the server returns as many closing information aggregates as it can (which will be stored in ClosingDetails).

If you want the server to return an image reference for each statement closing information, and if the server supports this service, you will have to set the IncludeImages to True.

The following read-only properties are populated as a result of parsing the statement response:

  • CurrencyCode
  • ClosingDetails


GetImage Method

GetImage Method (BankStatement Class)

Request and retrieve a check or statement image (if available).

Syntax

 char* GetImage(char* lpszImageRef, char* lpszImageRefType, int *lpSize = NULL);

Remarks

This function generates the Signon and Download Image request page, submits it to the financial institution via secure HTTPS Post.

The requested image of a check or statement closing information is identified by ImageRef parameter. The type of this image reference should be specified by ImageRefType parameter.

Possible values and their meanings for the ImageRefType parameter are:

OPAQUE (default value) | The class will send an OFX request to access this image. This request will be in the form of a normal OFX request (complete with Signon) and the login credentials are required to authenticate the client. However, whereas the request file contains typical OFX syntax, the successful response returned is in the form of raw bytes. If a failure condition occurs, the class will return an error with a specific message.
URL | The URL identifies a service on an FI server that can accept an image request and produce a response. The class issues an HTTP request (over SSL) to the URL specified by the ImageRef parameter. The client will then authenticate. Once this authentication takes place, the image can be displayed
FORMURL | The class issues an HTTP request (over SSL), with encoded data specified in the URL retrieved from the ImageRef parameter. The image can then be displayed.

If you want the server to return image references for each transaction or statement closing information, and if the server supports image download service via OFX, you will have to set the IncludeImages to True when either GetStatement or GetClosingInfo method is called.

If available, then you can access that particular image by calling the GetImage method, where ImageRef parameter value is set to the image reference stored in TxImageRef (or ClosingDetailImageRef) and the ImageRefType parameter is set to the respective TxImageRefType (or ClosingDetailImageRefType) corresponding to the requested check or statement.

Upon successful response, the image content will be returned by this method. If you want the image to be saved to a file, you can set the ImageFileName to a desired name without specifying the type. The file type will be set automatically depending on the image type supported by the server. Possible image types are: jpeg, tiff, png, pdf.

Otherwise, the class will throw an error.

Image download is available only for OFX version 2.1.1. When this method is called, the OFXVersion is automatically set to '211'.

Note: Clients may request images in statement download and/or closing requests in various message sets. But not all FIs support image download. Prior to requesting these images, clients must verify that support exists on the server for image download. This is indicated by the presence of the IMAGEMSGSET aggregate in the profile response, as well as the IMAGEPROF aggregate in the profile response for the specific message set in question.

For instance, if a client wishes to request transaction images in the banking statement download request, the client must verify the presence of IMAGEMSGSET in the profile as well as transaction image support in the IMAGEPROF aggregate in the BANKMSGSET in the profile. Image download requests are allowed only in OFX 2.1.1 in the Banking, Credit Card, Loan and Investments message sets.

To verify whether your FI supports this service, you should check its profile (by calling the GetProfile method in FIProfile class) and check the values of FIMessageSetTxImage and FIMessageSetClosingInfoImage for each message set (bank, credit card, loan and investment).


GetStatement Method

GetStatement Method (BankStatement Class)

Download a bank statement.

Syntax

 int GetStatement();

Remarks

This function generates the Signon and Bank Statement request page, submits it to the financial institution via secure HTTPS Post, receives and parses the bank statement. Individual transactions are downloaded with the statement.

The following properties should be set when this method is called:

  • FIId (required)
  • FIOrganization (required)
  • FIUrl (required)
  • OFXAppId (required)
  • OFXAppVersion (required)
  • OFXVersion (required if 2.x OFX version is the one supported by your FI)
  • OFXUser (required)
  • OFXPassword (required)
  • BankId (required)
  • AccountId (required)
  • AccountType (required)

You may constrain this transaction list by setting the StartDate and EndDate properties. The server will use default values if no dates are supplied.

If you want the server to return image references for each transaction, and if the server supports this service, you will have to set the IncludeImages to True.

The following read-only properties are populated as a result of parsing the statement response:

  • AvailableBalance
  • AvailableBalanceDate
  • LedgerBalance
  • LedgerBalanceDate
  • CurrencyCode
  • Transactions


ReadOFXDataFile Method

ReadOFXDataFile Method (BankStatement Class)

Reads an OFX response from a file.

Syntax

 int ReadOFXDataFile(char* lpszFileName);

Remarks

This method reads a previously recorded OFX response from a file, including HTTP and OFX headers.

The following read-only properties are populated as a result of parsing the data file:

  • AvailableBalance
  • AvailableBalanceDate
  • LedgerBalance
  • LedgerBalanceDate
  • CurrencyCode
  • Transactions
  • ClosingDetails


Reset Method

Reset Method (BankStatement Class)

Reset the internal state of the component and all properties to their default values.

Syntax

 int Reset();

Remarks

The Reset method does not have any parameters and does not return any value.


WriteOFXDataFile Method

WriteOFXDataFile Method (BankStatement Class)

Writes the OFX response sent by the server to a file.

Syntax

 int WriteOFXDataFile(char* lpszFileName);

Remarks

This method records the entire OFX response, including HTTP and OFX headers to a file. This file can later be read and parsed by the ReadOFXDataFile method as though it were a live response.


ConnectionStatus Event

ConnectionStatus Event (BankStatement Class)

Fired to indicate changes in connection state.

Syntax

 virtual int FireConnectionStatus(BankStatementConnectionStatusEventParams *e);

 typedef struct {

  char* ConnectionEvent;
  int StatusCode;
  char* Description;

  int reserved;

 } BankStatementConnectionStatusEventParams;

Remarks

The ConnectionStatus event is fired when the connection state changes: completion of a firewall or proxy connection, completion of a security handshake, etc.

The ConnectionEvent parameter indicates the type of connection event. Values may include:

Firewall connection complete.
SSL or S/Shell handshake complete (where applicable).
Remote host connection complete.
Remote host disconnected.
SSL or S/Shell connection broken.
Firewall host disconnected.

StatusCode has the error code returned by the TCP/IP stack. Description contains a description of this code. The value of StatusCode is equal to the value of the error.


Error Event

Error Event (BankStatement Class)

Information about errors during data delivery.

Syntax

 virtual int FireError(BankStatementErrorEventParams *e);

 typedef struct {

  int ErrorCode;
  char* Description;

  int reserved;

 } BankStatementErrorEventParams;

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Messages section.


SSLServerAuthentication Event

SSLServerAuthentication Event (BankStatement Class)

Fired after the server presents its certificate to the client.

Syntax

 virtual int FireSSLServerAuthentication(BankStatementSSLServerAuthenticationEventParams *e);

 typedef struct {

  char* CertEncoded;
  char* CertSubject;
  char* CertIssuer;
  char* Status;
  int Accept;

  int lenCertEncoded;
  int reserved;

 } BankStatementSSLServerAuthenticationEventParams;

Remarks

This event is where the client can decide whether to continue with the connection process or not. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether to continue or not.

When Accept is False, Status shows why the verification failed (otherwise, Status contains the string "OK"). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.


SSLStatus Event

SSLStatus Event (BankStatement Class)

Shows the progress of the secure connection.

Syntax

 virtual int FireSSLStatus(BankStatementSSLStatusEventParams *e);

 typedef struct {

  char* Message;

  int reserved;

 } BankStatementSSLStatusEventParams;

Remarks

The event is fired for informational and logging purposes only. Used to track the progress of the connection.


BankStatement Configuration

Configuration Settings (BankStatement Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

BankStatement Configuration Settings

Overwrite: Determines whether image files will be overwritten.

If True (default value) the check or statement image files are overwritten. Otherwise, an error is returned if the file exist.

BankIdPresent: Determines whether Bank Id should be present in the request.

If True (default value) the BankId is required to be provided in the request. Most of FI OFX servers require the BankId to be present in a statement download request. If your FI OFX server does not require this, you will have to set the BankIdPresent to False.

Note: This is done since the error message returned by most of FI OFX servers return a non-descriptive error message if the BankId is required and not present.

OFX Configuration Settings

CurrencyFormat: The format to be used for returning currency values.

If this is set to a non-empty string, the class will attempt to use the value as a pattern to format all currency strings returned from the server. You may use any of the system's default number formatting strings.

OFXDateFormat: The date format as required by OFX FI server.

Most of OFX FI servers, accept the default format, where the offset (G) and timezone (Z) are specified. However, there might still be some servers that do not accept that part. In such cases, you will have to set the OFXDateFormat to "YYYYMMddHHmmss.xxx" and GMT will be assumed as the default value.

Your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat (format that OFX FI server recognizes) right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

DateFormat: The format to be used for input and output dates.

This format is used for input and output dates. You may use any of the system's default date formatting strings.

When submitting the request: all your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

When parsing the response: if DateFormat is set to a non-empty string, the class will attempt to use the value as a pattern to format all date strings as they are returned. Otherwise, the system's default value will be used for formatting.

If the DateFormat is set to the special value "OFXDATE": During input:, any values you supply to date properties are passed to the server directly with no changes; During output: all dates will be returned in the OFX format as it was provided by the server without performing any modifications.

GetResponseVar: Parses additional information out of the response.

Any additional response information contained within the OFX response that is not available via the Response fields, may be retrieved with this GetResponseVar config.

To obtain a response value, pass the XPath to the value you wish to receive. For instance, if the OFX response contains:

    "<OFX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0<SEVERITY>INFO</STATUS><DTSERVER>20120104223836.575<LANGUAGE>ENG"

Then calling GetResponseVar("/OFX/SIGNONMSGSRVSV1/LANGUAGE") will return "ENG".

NewPassword: New password for the current OFX user.

Setting NewPassword to a non-empty value will cause the class to issue a password change request during sign-on along with the regular current OFX request. After the request is sent, this value will be cleared.

The correct current password is needed as well during signon request and must be supplied through the OFXPassword. Upon successful reply from the server, the NewPassword used becomes the new password.

OFXLog: Log file for the OFX transaction.

This setting records the OFX communication, but without including HTTP headers, to a file.

Please note that ReadOFXDataFile will not be able to parse this file because of the OFX request content present. If only the response of the server is required, please look at the WriteOFXDataFile method instead.

ServerMessage: Server message if a warning or other information returned.

When sending a transaction request to a FI, their server with return either a successful reply or an error. However, even when a transaction is successful, a warning or other server messages might still be returned and are to be treated as informational notes only.

ClientUId: Unique ID identifying OFX Client.

In the profile response, if SignOnClientUIdReq is True, then ClientUId should be set and included in all future requests.

UserCred1A: Additional user credential required by server.

In the profile response, if SignOnUserCred1Q is present, then UserCred1A should be set (as the answer to question identified by SignOnUserCred1Q) and it should be included in all future requests as part of the signon.

UserCred2A: Additional user credential required by server.

In the profile response, if SignOnUserCred2Q is present, then UserCred2A should be set (as the answer to question identified by SignOnUserCred2Q) and it should be included in all future requests as part of the signon.

AuthToken: Authentication token required for this signon session only.

This credential is provided to the user out of band.

In the profile response, if SignOnAuthTokenFirst is True, then AuthToken should be sent in the very first signon.

CorrectFITID[i]: The FITID of a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the FITID of a previously sent transaction that is corrected by this record. Based on the value of CorrectAction[i], this transaction replaces or deletes the transaction that it corrects. This is applicable to statement download components only.

CorrectAction[i]: The action taken to a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the action taken to a previously sent transaction that is corrected by this record. Possible values are: REPLACE or DELETE. REPLACE replaces the transaction that it corrects referenced by CorrectFITID[i]. DELETE deletes it. This is applicable to statement download components only.

HTTP Configuration Settings

AcceptEncoding: Used to tell the server which types of content encodings the client supports.

When AllowHTTPCompression is true, the class adds an "Accept-Encoding: " header to the request being sent to the server. By default, this header's value is "gzip, deflate". This config allows you to change the value of the "Accept-Encoding" header. NOTE: The class only supports gzip and deflate decompression algorithms.

AllowHTTPCompression: This property enables HTTP compression for receiving data.

This is the same as the AllowHTTPCompression property. This setting is exposed here for use by classs that inherit from HTTP.

Authorization: The Authorization string to be sent to the server.

If the Authorization property contains a non-empty string, an Authorization HTTP request header is added to the request. This header conveys Authorization information to the server.

This property is provided so that the HTTP class can be extended with other security schemes in addition to the authorization schemes already implemented by the class.

The AuthScheme property defines the authentication scheme used. In the case of HTTP Basic Authentication (default), every time User and Password are set, they are Base64 encoded, and the result is put in the Authorization property in the form "Basic [encoded-user-password]".

BytesTransferred: Contains the number of bytes transferred in the response data.

Returns the raw number of bytes from the HTTP response data, prior to the component processing the data, whether it is chunked and/or compressed. This returns the same value as the Transfer event, by BytesTransferred.

EncodeURL: If set to true the URL will be encoded by the class.

The default value is false. If set to true the URL passed to the class will be URL encoded.

FollowRedirects: Determines what happens when the server issues a redirect.

This option determines what happens when the server issues a redirect. Normally, the class returns an error if the server responds with an "Object Moved" message. If this property is set to 1 (always), the new URL for the object is retrieved automatically every time.

If this property is set to 2 (Same Scheme), the new URL is retrieved automatically only if the URL Scheme is the same, otherwise the class fails with an error.

Note that following the HTTP specification, unless this option is set to 1 (Always), automatic redirects will be performed only for 'GET' or 'HEAD' requests. Other methods could potentially change the conditions of the initial request and create security vulnerabilities.

Furthermore, if either the new URL server and port are different than the existing one, User and Password are also reset to empty, unless this property is set to 1 (Always), in which case the same credentials are used to connect to the new server.

A Redirect event is fired for every URL the product is redirected to. In the case of automatic redirections, the Redirect event is a good place to set properties related to the new connection (e.g. new authentication parameters).

The default value is 0 (Never). In this case, redirects are never followed, and the class fails with an error instead.

Valid options are:

  • 0 - Never
  • 1 - Always
  • 2 - Same Scheme

GetOn302Redirect: If set to true the class will perform a GET on the new location.

The default value is false. If set to true the class will perform a GET on the new location. Otherwise it will use the same HTTP method again.

HTTPVersion: The version of HTTP used by the class.

Possible values include "1.0", and "1.1". The default is "1.1".

IfModifiedSince: A date determining the maximum age of the desired document.

This is the same as the IfModifiedSince property. This setting is exposed here for use by classs that inherit from HTTP.

KeepAlive: Determines whether the HTTP connection is closed after completion of the request.

If true, the component will not send the 'Connection: Close' header. The absence of the Connection header indicates to the server that HTTP persistent connections should be used if supported. Note that not all server support persistent connections. You may also explicitly add the Keep-Alive header to the request headers by setting OtherHeaders to 'Connection: Keep-Alive'. If false, the connection will be closed immediately after the server response is received.

The default value for KeepAlive is false.

MaxRedirectAttempts: Limits the number of redirects that are followed in a request.

When FollowRedirects is set to any value besides frNever the class will follow redirects until this maximum number of redirect attempts are made. The default value is 20.

OtherHeaders: Other headers as determined by the user (optional).

This configuration option can be set to a string of headers to be appended to the HTTP request headers.

The headers must be of the format "header: value" as described in the HTTP specifications. Header lines should be separated by CRLF ("\r\ n") .

Use this configuration option with caution. If this configuration option contains invalid headers, HTTP requests may fail.

This configuration option is useful for extending the functionality of the class beyond what is provided.

ProxyAuthorization: The authorization string to be sent to the proxy server.

Similar to the Authorization config, but for proxy authorization. If this config contains a non-empty string, a Proxy-Authorization HTTP request header is added to the request. This header conveys proxy authorization information to the server. If ProxyUser and ProxyPassword are specified, this value is calculated using the algorithm specified by ProxyAuthScheme.

ProxyAuthScheme: The authorization scheme to be used for the proxy.

This is the same as ProxyAuthScheme. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPassword: A password if authentication is to be used for the proxy.

This is the same as ProxyPassword. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPort: Port for the proxy server (default 80).

This is the same as ProxyPort. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyServer: Name or IP address of a proxy server (optional).

This is the same as ProxyServer. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyUser: A user name if authentication is to be used for the proxy.

This is the same as ProxyUser. This setting is provided for use by classs that do not directly expose Proxy properties.

TransferredDataLimit: The maximum number of incoming bytes to be stored by the class.

If TransferredDataLimit is set to 0 (default), no limits are imposed. Otherwise this reflects the maximum number of incoming bytes that can be stored by the class. If TransferredDataLimit is set to 0, no limits are imposed.

UseChunkedEncoding: Enables or Disables HTTP chunked encoding for transfers.

If UseChunkedEncoding is set to true, the class will use HTTP chunked encoding when posting if possible. HTTP chunked encoding allows large files to be sent in chunks instead of all at once. If set to false, the class will not use HTTP chunked encoding. The default value is false.

Note: Some servers (such as the ASP.NET Development Server) may not support chunked encoding.

ChunkSize: Specifies the chunk size in bytes when using chunked encoding.

This is only applicable when UseChunkedEncoding is true. This setting specifies the chunk size in bytes to be used when posting data. The default value is 16384.

UsePlatformHTTPClient: Whether or not to use the platform HTTP client.

If True, the component will use the default HTTP client for the platform (URLConnection in Java or WebRequest in .NET) instead of the internal HTTP implementation. This is important for environments where direct access to sockets is limited or not allowed (as in the Google AppEngine for instance).

UserAgent: Information about the user agent (browser).

This is the value supplied in the HTTP User-Agent header. The default setting is "/n software IPWorks HTTP/S Component - www.nsoftware.com".

Override the default with the name and version of your software.

KerberosSPN: The Service Principal Name for the Kerberos Domain Controller.

If the Service Principal Name on the Kerberos Domain Controller is not the same as the URL that you are authenticating to, the Service Principal Name should be set here.

IPPort Configuration Settings

FirewallAutoDetect: Tells the class whether or not to automatically detect and use firewall system settings, if available.

This is the same as FirewallAutoDetect. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallHost: Name or IP address of firewall (optional).

If a FirewallHost is given, requested connections will be authenticated through the specified firewall when connecting.

If the FirewallHost setting is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, the FirewallHost setting is set to the corresponding address. If the search is not successful, an error is returned.

NOTE: This is the same as FirewallHost. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPassword: Password to be used if authentication is to be used when connecting through the firewall.

If FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallPassword. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPort: The TCP port for the FirewallHost;.

Note that the FirewallPort is set automatically when FirewallType is set to a valid value.

NOTE: This is the same as FirewallPort. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallType: Determines the type of firewall to connect through.

The appropriate values are as follows:

0 | No firewall (default setting).
1 | Connect through a tunneling proxy. FirewallPort is set to 80.
2 | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
3 | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

NOTE: This is the same as FirewallType. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallUser: A user name if authentication is to be used connecting through a firewall.

If the FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the Firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallUser. This setting is provided for use by classs that do not directly expose Firewall properties.

KeepAliveTime: The inactivity time in milliseconds before a TCP keep-alive packet is sent.

When set, TCPKeepAlive will automatically be set to true. By default the operating system will determine the time a connection is idle before a TCP keep-alive packet is sent. This system default if this value is not specified here is 2 hours. In many cases a shorter interval is more useful. Set this value to the desired interval in milliseconds.

Note: This value is not applicable in Java.

KeepAliveInterval: The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.

When set, TCPKeepAlive will automatically be set to true. A TCP keep-alive packet will be sent after a period of inactivity as defined by KeepAliveTime. If no acknowledgement is received from the remote host the keep-alive packet will be re-sent. This setting specifies the interval at which the successive keep-alive packets are sent in milliseconds. This system default if this value is not specified here is 1 second.

Note: This value is not applicable in Java or MAC.

Linger: When set to True, connections are terminated gracefully.

This property controls how a connection is closed. The default is True.

In the case that Linger is True (default), there are two scenarios for determining how long the connection will linger. The first, if LingerTime is 0 (default), the system will attempt to send pending data for a connection until the default IP protocol timeout expires.

In the second scenario, LingerTime is a positive value, the system will attempt to send pending data until the specified LingerTime is reached. If this attempt fails, then the system will reset the connection.

The default behavior (which is also the default mode for stream sockets) might result in a long delay in closing the connection. Although the class returns control immediately, the system could hold system resources until all pending data is sent (even after your application closes).

Setting this property to False forces an immediate disconnection. If you know that the other side has received all the data you sent (by a client acknowledgment, for example), setting this property to False might be the appropriate course of action.

LingerTime: Time in seconds to have the connection linger.

LingerTime is the time, in seconds, to leave the socket connection linger. This value is 0 by default, which means it will use the default IP protocol timeout.

LocalHost: The name of the local host through which connections are initiated or accepted.

The LocalHost setting contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.

In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the class initiate connections (or accept in the case of server classs) only through that interface.

If the class is connected, the LocalHost setting shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).

LocalPort: The TCP port in the local host where the class binds.

This must be set before a connection is attempted. It instructs the class to bind to a specific port (or communication endpoint) in the local machine.

Setting this to 0 (default) enables the system to choose a port at random. The chosen port will be shown by LocalPort after the connection is established.

LocalPort cannot be changed once a connection is made. Any attempt to set this when a connection is active will generate an error.

This; setting is useful when trying to connect to services that require a trusted port in the client side. An example is the remote shell (rsh) service in UNIX systems.

MaxLineLength: The maximum amount of data to accumulate when no EOL is found.

MaxLineLength is the size of an internal buffer, which holds received data while waiting for an EOL string.

If an EOL string is found in the input stream before MaxLineLength bytes are received, the DataIn event is fired with the EOL parameter set to True, and the buffer is reset.

If no EOL is found, and MaxLineLength bytes are accumulated in the buffer, the DataIn event is fired with the EOL parameter set to False, and the buffer is reset.

The minimum value for MaxLineLength is 256 bytes. The default value is 2048 bytes. The maximum value is 65536 bytes.

MaxTransferRate: The transfer rate limit in bytes per second.

This setting can be used to throttle outbound TCP traffic. Set this to the number of bytes to be sent per second. By default this is not set and there is no limit.

TCPKeepAlive: Determines whether or not the keep alive socket option is enabled.

If set to true, the socket's keep-alive option is enabled and keep-alive packets will be sent periodically to maintain the connection. Set KeepAliveTime and KeepAliveInterval to configure the timing of the keep-alive packets.

Note: This value is not applicable in Java.

UseIPv6: Whether or not to use IPv6.

By default, the component expects an IPv4 address for local and remote host properties, and will create an IPv4 socket. To use IPv6 instead, set this to True.

TcpNoDelay: Whether or not to delay when sending packets.

When true, the socket will send all data that is ready to send at once. When false, the socket will send smaller buffered packets of data at small intervals. This is known as the Nagle algorithm.

By default, this config is set to false.

SSL Configuration Settings

ReuseSSLSession: Determines if the SSL session is reused.

If set to true, the component will reuse the context if and only if the following criteria are met:

  • The target host name is the same.
  • The system cache entry has not expired (default timeout is 10 hours).
  • The application process that calls the function is the same.
  • The logon session is the same.
  • The instance of the component is the same.

SSLCipherStrength: The minimum cipher strength used for bulk encryption.

This minimum cipher strength largely dependent on the security modules installed on the system. If the cipher strength specified is not supported, an error will be returned when connections are initiated.

Please note that this setting contains the minimum cipher strength requested from the security library. The actual cipher strength used for the connection is shown by the SSLStatus event.

Use this setting with caution. Requesting a lower cipher strength than necessary could potentially cause serious security vulnerabilities in your application.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

SSLEnabledProtocols: Used to enable/disable the supported security protocols.

Used to enable/disable the supported security protocols.

Not all supported protocols are enabled by default (the value of this setting is 240). If you want more granular control over the enabled protocols, you can set this property to the binary 'OR' of one or more of the following values:

TLS1.2 | 3072 (Hex C00)
TLS1.1 | 768 (Hex 300)
TLS1 | 192 (Hex C0) (Default)
SSL3 | 48 (Hex 30) (Default)
SSL2 | 12 (Hex 0C)

Please note that although a number of sites still support SSL2, it is usually a good idea to disable it because of potential security vulnerabilities.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

TLS 1.1 and TLS1.2 support are only available starting with Windows 7.

SSLProvider: The name of the security provider to use.

Change this setting to use security providers other than the system default.

Use this setting with caution. Disabling SSL security or pointing to the wrong provider could potentially cause serious security vulnerabilities in your application.

The special value "*" (default) picks the default SSL provider defined in the system. On Windows, this is "Microsoft Unified Security Protocol Provider".

SSLSecurityFlags: Flags that control certificate verification.

The following flags are defined (specified in hexadecimal notation). They can be or-ed together to exclude multiple conditions:

0x00000001 | Ignore time validity status of certificate.
0x00000002 | Ignore time validity status of CTL.
0x00000004 | Ignore non-nested certificate times.
0x00000010 | Allow unknown Certificate Authority.
0x00000020 | Ignore wrong certificate usage.
0x00000100 | Ignore unknown certificate revocation status.
0x00000200 | Ignore unknown CTL signer revocation status.
0x00000400 | Ignore unknown Certificate Authority revocation status.
0x00000800 | Ignore unknown Root revocation status.
0x00008000 | Allow test Root certificate.
0x00004000 | Trust test Root certificate.
0x80000000 | Ignore non-matching CN (certificate CN not-matching server name).

This functionality is currently not available when the provider is OpenSSL.

OpenSSLCADir: The path to a directory containing CA certificates.

This functionality is available only when the provider is OpenSSL.

The path set by this property should point to a directory containing CA certificates in PEM format. The files each contain one CA certificate. The files are looked up by the CA subject name hash value, which must hence be available. If more than one CA certificate with the same name hash value exist, the extension must be different (e.g. 9d66eef0.0, 9d66eef0.1 etc). OpenSSL recommends to use the c_rehash utility to create the necessary links. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCAFile: Name of the file containing the list of CA's trusted by your application.

This functionality is available only when the provider is OpenSSL.

The file set by this property should contain a list of CA certificates in PEM format. The file can contain several CA certificates identified by

-----BEGIN CERTIFICATE-----

... (CA certificate in base64 encoding) ...

-----END CERTIFICATE-----

sequences. Before, between, and after the certificates text is allowed which can be used e.g. for descriptions of the certificates. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCipherList: A string that controls the ciphers to be used by SSL.

This functionality is available only when the provider is OpenSSL.

The format of this string is described in the OpenSSL man page ciphers(1) section "CIPHER LIST FORMAT". Please refer to it for details. The default string "DEFAULT" is determined at compile time and is normally equivalent to "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH".

OpenSSLPrngSeedData: The data to seed the pseudo random number generator (PRNG).

This functionality is available only when the provider is OpenSSL.

By default OpenSSL uses the device file "/dev/urandom" to seed the PRNG and setting OpenSSLPrngSeedData is not required. If set, the string specified is used to seed the PRNG.

SSLAlgorithmList: A string that controls the cipher algorithms to be used by SSL.

This configuration option takes a semicolon (;) delimited list of cipher algorithms to specify what algorithms may be used by SSL. This option can be used in conjunction with SSLEnabledProtocols to control which ciphers are used.

For example:

  obj.Config("SSLEnabledProtocols=3027"); // TLS1.2  (it supports SHA_256)
  obj.Config("SSLAlgorithmList=CALG_SHA_256;CALG_MD5");
Possible values include:
  • CALG_3DES
  • CALG_3DES_112
  • CALG_AES
  • CALG_AES_128
  • CALG_AES_192
  • CALG_AES_256
  • CALG_AGREEDKEY_ANY
  • CALG_CYLINK_MEK
  • CALG_DES
  • CALG_DESX
  • CALG_DH_EPHEM
  • CALG_DH_SF
  • CALG_DSS_SIGN
  • CALG_ECDH
  • CALG_ECDSA
  • CALG_ECMQV
  • CALG_HASH_REPLACE_OWF
  • CALG_HUGHES_MD5
  • CALG_HMAC
  • CALG_KEA_KEYX
  • CALG_MAC
  • CALG_MD2
  • CALG_MD4
  • CALG_MD5
  • CALG_NO_SIGN
  • CALG_OID_INFO_CNG_ONLY
  • CALG_OID_INFO_PARAMETERS
  • CALG_PCT1_MASTER
  • CALG_RC2
  • CALG_RC4
  • CALG_RC5
  • CALG_RSA_KEYX
  • CALG_RSA_SIGN
  • CALG_SCHANNEL_ENC_KEY
  • CALG_SCHANNEL_MAC_KEY
  • CALG_SCHANNEL_MASTER_HASH
  • CALG_SEAL
  • CALG_SHA
  • CALG_SHA1
  • CALG_SHA_256
  • CALG_SHA_384
  • CALG_SHA_512
  • CALG_SKIPJACK
  • CALG_SSL2_MASTER
  • CALG_SSL3_MASTER
  • CALG_SSL3_SHAMD5
  • CALG_TEK
  • CALG_TLS1_MASTER
  • CALG_TLS1PRF

This option is only valid in Windows.

Socket Configuration Settings

AbsoluteTimeout: Determines whether timeouts are inactivity timeouts or absolute timeouts.

If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.

Note: This option is not valid for UDP ports.

FirewallData: Used to send extra data to the firewall.

When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).

InBufferSize: The size in bytes of the incoming queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be receiving. Increasing the value of the InBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

OutBufferSize: The size in bytes of the outgoing queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be sending. Increasing the value of the OutBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

Base Configuration Settings

SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

Base Configuration Settings

CodePage: The system code page used for Unicode to Multibyte translations.

The default code page is the Active Code Page (0).

The following is a list of valid code page identifiers:

Identifier | Name
037 | IBM EBCDIC - U.S./Canada
437 | OEM - United States
500 | IBM EBCDIC - International
708 | Arabic - ASMO 708
709 | Arabic - ASMO 449+, BCON V4
710 | Arabic - Transparent Arabic
720 | Arabic - Transparent ASMO
737 | OEM - Greek (formerly 437G)
775 | OEM - Baltic
850 | OEM - Multilingual Latin I
852 | OEM - Latin II
855 | OEM - Cyrillic (primarily Russian)
857 | OEM - Turkish
858 | OEM - Multlingual Latin I + Euro symbol
860 | OEM - Portuguese
861 | OEM - Icelandic
862 | OEM - Hebrew
863 | OEM - Canadian-French
864 | OEM - Arabic
865 | OEM - Nordic
866 | OEM - Russian
869 | OEM - Modern Greek
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2)
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875 | IBM EBCDIC - Modern Greek
932 | ANSI/OEM - Japanese, Shift-JIS
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore)
949 | ANSI/OEM - Korean (Unified Hangeul Code)
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026 | IBM EBCDIC - Turkish (Latin-5)
1047 | IBM EBCDIC - Latin 1/Open System
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141 | IBM EBCDIC - Germany (20273 + Euro symbol)
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144 | IBM EBCDIC - Italy (20280 + Euro symbol)
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147 | IBM EBCDIC - France (20297 + Euro symbol)
1148 | IBM EBCDIC - International (500 + Euro symbol)
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 | Unicode UCS-2 Big-Endian
1250 | ANSI - Central European
1251 | ANSI - Cyrillic
1252 | ANSI - Latin I
1253 | ANSI - Greek
1254 | ANSI - Turkish
1255 | ANSI - Hebrew
1256 | ANSI - Arabic
1257 | ANSI - Baltic
1258 | ANSI/OEM - Vietnamese
1361 | Korean (Johab)
10000 | MAC - Roman
10001 | MAC - Japanese
10002 | MAC - Traditional Chinese (Big5)
10003 | MAC - Korean
10004 | MAC - Arabic
10005 | MAC - Hebrew
10006 | MAC - Greek I
10007 | MAC - Cyrillic
10008 | MAC - Simplified Chinese (GB 2312)
10010 | MAC - Romania
10017 | MAC - Ukraine
10021 | MAC - Thai
10029 | MAC - Latin II
10079 | MAC - Icelandic
10081 | MAC - Turkish
10082 | MAC - Croatia
12000 | Unicode UCS-4 Little-Endian
12001 | Unicode UCS-4 Big-Endian
20000 | CNS - Taiwan
20001 | TCA - Taiwan
20002 | Eten - Taiwan
20003 | IBM5550 - Taiwan
20004 | TeleText - Taiwan
20005 | Wang - Taiwan
20105 | IA5 IRV International Alphabet No. 5 (7-bit)
20106 | IA5 German (7-bit)
20107 | IA5 Swedish (7-bit)
20108 | IA5 Norwegian (7-bit)
20127 | US-ASCII (7-bit)
20261 | T.61
20269 | ISO 6937 Non-Spacing Accent
20273 | IBM EBCDIC - Germany
20277 | IBM EBCDIC - Denmark/Norway
20278 | IBM EBCDIC - Finland/Sweden
20280 | IBM EBCDIC - Italy
20284 | IBM EBCDIC - Latin America/Spain
20285 | IBM EBCDIC - United Kingdom
20290 | IBM EBCDIC - Japanese Katakana Extended
20297 | IBM EBCDIC - France
20420 | IBM EBCDIC - Arabic
20423 | IBM EBCDIC - Greek
20424 | IBM EBCDIC - Hebrew
20833 | IBM EBCDIC - Korean Extended
20838 | IBM EBCDIC - Thai
20866 | Russian - KOI8-R
20871 | IBM EBCDIC - Icelandic
20880 | IBM EBCDIC - Cyrillic (Russian)
20905 | IBM EBCDIC - Turkish
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932 | JIS X 0208-1990 & 0121-1990
20936 | Simplified Chinese (GB2312)
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027 | Extended Alpha Lowercase
21866 | Ukrainian (KOI8-U)
28591 | ISO 8859-1 Latin I
28592 | ISO 8859-2 Central Europe
28593 | ISO 8859-3 Latin 3
28594 | ISO 8859-4 Baltic
28595 | ISO 8859-5 Cyrillic
28596 | ISO 8859-6 Arabic
28597 | ISO 8859-7 Greek
28598 | ISO 8859-8 Hebrew
28599 | ISO 8859-9 Latin 5
28605 | ISO 8859-15 Latin 9
29001 | Europa 3
38598 | ISO 8859-8 Hebrew
50220 | ISO 2022 Japanese with no halfwidth Katakana
50221 | ISO 2022 Japanese with halfwidth Katakana
50222 | ISO 2022 Japanese JIS X 0201-1989
50225 | ISO 2022 Korean
50227 | ISO 2022 Simplified Chinese
50229 | ISO 2022 Traditional Chinese
50930 | Japanese (Katakana) Extended
50931 | US/Canada and Japanese
50933 | Korean Extended and Korean
50935 | Simplified Chinese Extended and Simplified Chinese
50936 | Simplified Chinese
50937 | US/Canada and Traditional Chinese
50939 | Japanese (Latin) Extended and Japanese
51932 | EUC - Japanese
51936 | EUC - Simplified Chinese
51949 | EUC - Korean
51950 | EUC - Traditional Chinese
52936 | HZ-GB2312 Simplified Chinese
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte)
57002 | ISCII Devanagari
57003 | ISCII Bengali
57004 | ISCII Tamil
57005 | ISCII Telugu
57006 | ISCII Assamese
57007 | ISCII Oriya
57008 | ISCII Kannada
57009 | ISCII Malayalam
57010 | ISCII Gujarati
57011 | ISCII Punjabi
65000 | Unicode UTF-7
65001 | Unicode UTF-8

The following is a list of valid code page identifiers for Mac OS only:

Identifier | Name
1 | ASCII
2 | NEXTSTEP
3 | JapaneseEUC
4 | UTF8
5 | ISOLatin1
6 | Symbol
7 | NonLossyASCII
8 | ShiftJIS
9 | ISOLatin2
10 | Unicode
11 | WindowsCP1251
12 | WindowsCP1252
13 | WindowsCP1253
14 | WindowsCP1254
15 | WindowsCP1250
21 | ISO2022JP
30 | MacOSRoman
10 | UTF16String
0x90000100 | UTF16BigEndian
0x94000100 | UTF16LittleEndian
0x8c000100 | UTF32String
0x98000100 | UTF32BigEndian
0x9c000100 | UTF32LittleEndian
65536 | Proprietary


BankStatement Errors

Trappable Errors (BankStatement Class)

OFX Errors

2000 Required field missing from server response.
2001 OFX server error. Description follows.
2002 Invalid OFX response.
2003 OFX response contains unknown element tags.

The class may also return one of the following error codes, which are inherited from other classes.

XMLp Errors

101 Invalid attribute index.
102 No attributes available.
103 Invalid namespace index.
104 No namespaces available.
105 Invalid element index.
106 No elements available.
107 Attribute does not exist.
201 Unbalanced element tag.
202 Unknown element prefix (can't find namespace).
203 Unknown attribute prefix (can't find namespace).
204 Invalid XML markup.
205 Invalid end state for parser.
206 Document contains unbalanced elements.
207 Invalid XPath.
208 No such child.
209 Top element does not match start of path.
210 DOM tree unavailable (set BuildDOM to true and reparse).
302 Can't open file.

HTTP Errors

118 Firewall Error. Error description contains detailed message.
143 Busy executing current method.
151 HTTP protocol error. The error message has the server response.
152 No server specified in URL
153 Specified URLScheme is invalid.
155 Range operation is not supported by server.
156 Invalid cookie index (out of range).
301 Interrupted.
302 Can't open AttachedFile.

The class may also return one of the following error codes, which are inherited from other classes.

IPPort Errors

100 You cannot change the RemotePort at this time. A connection is in progress.
101 You cannot change the RemoteHost (Server) at this time. A connection is in progress.
102 The RemoteHost address is invalid (0.0.0.0).
104 Already connected. If you want to reconnect, close the current connection first.
106 You cannot change the LocalPort at this time. A connection is in progress.
107 You cannot change the LocalHost at this time. A connection is in progress.
112 You cannot change MaxLineLength at this time. A connection is in progress.
116 RemotePort cannot be zero. Please specify a valid service port number.
117 Cannot change UseConnection option while the class is Active.
135 Operation would block.
201 Timeout.
211 Action impossible in control's present state.
212 Action impossible while connected.
213 Action impossible while listening.
303 Could not open file.
434 Unable to convert string to selected CodePage
1105 Already connecting. If you want to reconnect, close the current connection first.
1117 You need to connect first.
1119 You cannot change the LocalHost at this time. A connection is in progress.
1120 Connection dropped by remote host.

SSL Errors

270 Cannot load specified security library.
271 Cannot open certificate store.
272 Cannot find specified certificate.
273 Cannot acquire security credentials.
274 Cannot find certificate chain.
275 Cannot verify certificate chain.
276 Error during handshake.
280 Error verifying certificate.
281 Could not find client certificate.
282 Could not find server certificate.
283 Error encrypting data.
284 Error decrypting data.

TCP/IP Errors

10004 [10004] Interrupted system call.
10009 [10009] Bad file number.
10013 [10013] Access denied.
10014 [10014] Bad address.
10022 [10022] Invalid argument.
10024 [10024] Too many open files.
10035 [10035] Operation would block.
10036 [10036] Operation now in progress.
10037 [10037] Operation already in progress.
10038 [10038] Socket operation on non-socket.
10039 [10039] Destination address required.
10040 [10040] Message too long.
10041 [10041] Protocol wrong type for socket.
10042 [10042] Bad protocol option.
10043 [10043] Protocol not supported.
10044 [10044] Socket type not supported.
10045 [10045] Operation not supported on socket.
10046 [10046] Protocol family not supported.
10047 [10047] Address family not supported by protocol family.
10048 [10048] Address already in use.
10049 [10049] Can't assign requested address.
10050 [10050] Network is down.
10051 [10051] Network is unreachable.
10052 [10052] Net dropped connection or reset.
10053 [10053] Software caused connection abort.
10054 [10054] Connection reset by peer.
10055 [10055] No buffer space available.
10056 [10056] Socket is already connected.
10057 [10057] Socket is not connected.
10058 [10058] Can't send after socket shutdown.
10059 [10059] Too many references, can't splice.
10060 [10060] Connection timed out.
10061 [10061] Connection refused.
10062 [10062] Too many levels of symbolic links.
10063 [10063] File name too long.
10064 [10064] Host is down.
10065 [10065] No route to host.
10066 [10066] Directory not empty
10067 [10067] Too many processes.
10068 [10068] Too many users.
10069 [10069] Disc Quota Exceeded.
10070 [10070] Stale NFS file handle.
10071 [10071] Too many levels of remote in path.
10091 [10091] Network subsystem is unavailable.
10092 [10092] WINSOCK DLL Version out of range.
10093 [10093] Winsock not loaded yet.
11001 [11001] Host not found.
11002 [11002] Non-authoritative 'Host not found' (try again or check DNS setup).
11003 [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP.
11004 [11004] Valid name, no data record (check DNS setup).


BankTransfer Class

BankTransfer Class

Properties Methods Events Configuration Settings Errors

The BankTransfer component is a single component that supports the SignOn and Intrabank/Interbank Funds Transfer functions of Open Financial Exchange, as described by Specification 1.0.2.

Syntax

BankTransfer

Remarks

The BankTransfer class supports immediate or scheduled intrabank (between two accounts at the same financial institution) and interbank (between two accounts at different financial institutions).

The fund transfer request designates source and destination accounts and the amount of the transfer. The FI must be able to authenticate the source account. The user can schedule the transfers for a future date or request an immediate transfer. The user can modify or cancel scheduled transfers, but not immediate transfers.

Interbank funds transfers differ from intrabank funds transfers in the following respects:

  • the routing and transit number of the destination account differs from the source account;
  • at the discretion of the FI, the destination account can be subject to pre-notification;
  • source and destination accounts must be enabled for the Automated Clearing House (ACH);

To make transfer, the TransferFunds method should be called and the following information should be provided in the request.

First, identify the:

  • OFX user and application by setting the OFXUser, OFXPassword, OFXAppId and OFXAppVersion properties;
  • financial institution by setting the FIId, FIOrganization, and FIUrl, properties.
Next, specify the:
  • source account you wish to transfer the funds from, by setting TransferFromBankId, TransferFromAccountId, TransferFromAccountType, and for international banks also TransferFromBranchId and TransferFromAccountKey properties;
  • destination account where the funds will be deposited to, by setting TransferToBankId (if requesting interbank transfer), TransferToAccountId, TransferToAccountType, and for international banks also TransferToBranchId and TransferToAccountKey;
  • transfer amount by setting TransferAmount to the desired value;
  • transfer date by setting TransferDateDue (if requesting a scheduled transfer, not an immediate one);

When the response returns, the server cannot provide complete confirmation for the transfer. The server can confirm only that it received the transfer instruction, and possibly, whether it validated the accounts, amount, and date specified in the transfer. When the transfer status is not provided in the server response, then the server should confirm that it accepted the instructions by issuing a TransferId. In this case, it should also indicate the expected posting date of the transfer stored in TransferDatePosted.

The transfer confirmation can be retrieved at a later time through a synchronization request (by calling SynchronizeTransfers method).

If the request is for an immediate transfer and the server can perform the transfer in real time, the server should indicate whether the transfer succeeded and should return the date of the transfer in TransferDatePosted. In this case, synchronization is not required.

Property List

The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

FIId | Financial institution identifier.
FIOrganization | Financial institution organization name.
FirewallAutoDetect | This property tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallType | This property determines the type of firewall to connect through.
FirewallHost | This property contains the name or IP address of firewall (optional).
FirewallPassword | This property contains a password if authentication is to be used when connecting through the firewall.
FirewallPort | This property contains the TCP port for the firewall Host .
FirewallUser | This property contains a user name if authentication is to be used connecting through a firewall.
FIUrl | Financial institution URL.
LostSync | Whether the token in the synchronization request is older.
OFXAccessKey | Access key value received after a MFA authentication in a previous signon.
OFXAppId | OFX application identifier.
OFXAppVersion | OFX application version.
OFXPassword | User's password.
OFXRequest | The current OFX request aggregate.
OFXResponse | The current OFX response aggregate.
OFXUser | User's id.
OFXVersion | OFX API version.
SSLAcceptServerCertEncoded | The certificate (PEM/base64 encoded).
SSLCertEncoded | The certificate (PEM/base64 encoded).
SSLCertStore | The name of the certificate store for the client certificate.
SSLCertStorePassword | If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.
SSLCertStoreType | The type of certificate store for this certificate.
SSLCertSubject | The subject of the certificate used for client authentication.
SSLServerCertEncoded | The certificate (PEM/base64 encoded).
SyncTransferCount | The number of records in the SyncTransfer arrays.
SyncTransferAggregate | Wrapper for a bank transfer being initiated, modified or synchronized.
SyncTransferAmount | Amount of the bank transfer being initiated, modified or synchronized.
SyncTransferDateDue | Date the bank transfer (being initiated, modified or synchronized) is scheduled to be sent.
SyncTransferDatePosted | Posted date of the bank transfer being initiated, modified or synchronized.
SyncTransferDateProcessed | Transfer processing date.
SyncTransferDateProjected | Projected date of the transfer.
SyncTransferFromAccountId | Account number where the transfer (being initiated, modified or synchronized) is originating from.
SyncTransferId | Server-assigned id of the bank transfer being initiated, modified or synchronized.
SyncTransferStatus | Processing status code of the bank transfer being initiated, modified, canceled or synchronized.
SyncTransferToAccountId | Account number where the bank transfer ((being initiated, modified or synchronized) is made to.
SyncTransferTxType | Transaction type of the bank transfer being synchronized.
Timeout | A timeout for the component.
TransferAmount | Amount of the bank transfer being initiated, modified or synchronized.
TransferCurrencyCode | Default currency code for this transaction.
TransferDateDue | Date the bank transfer (being initiated, modified or synchronized) is scheduled to be sent.
TransferDatePosted | Posted date of the bank transfer being initiated, modified or synchronized.
TransferDateProcessed | Transfer processing date.
TransferFromAccountId | Account number where the transfer (being initiated, modified or synchronized) is originating from.
TransferFromAccountKey | Checksum for the bank where money has to be withdrawn (international banks only).
TransferFromAccountType | Type of account where the transfer is originating from.
TransferFromBankId | Number that identifies the bank where the transfer is originating from.
TransferFromBranchId | Identifier for the bank where the transfer is originating from (international banks only).
TransferId | Server-assigned id of the bank transfer being initiated, modified or synchronized.
TransferStatus | Processing status code of the bank transfer being initiated, modified, canceled or synchronized.
TransferToAccountId | Account number where the bank transfer ((being initiated, modified or synchronized) is made to.
TransferToAccountKey | Checksum for the bank where money has to be deposited to (international banks only).
TransferToAccountType | Type of account where money has to be deposited to.
TransferToBankId | Number that identifies the bank where money has to be deposited to.
TransferToBranchId | Identifier for the bank where money has to be deposited to (international banks only).

Method List

The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

CancelTransfer | Cancels a scheduled transfer.
Config | Sets or retrieves a configuration setting.
ModifyTransfer | Modifies a scheduled transfer.
Reset | Reset the internal state of the component and all properties to their default values.
SynchronizeTransfers | Synchronizes transfers on the client side with transfers on record on the server side.
TransferFunds | Transfers money from one account to another within the same or different Financial Institution(s).

Event List

The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ConnectionStatus | Fired to indicate changes in connection state.
Error | Information about errors during data delivery.
SSLServerAuthentication | Fired after the server presents its certificate to the client.
SSLStatus | Shows the progress of the secure connection.
SyncTransfers | Fired for each intrabank transfer transaction included in the synchronization response.

Configuration Settings

The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

BatchTransferType | Transfer request type when an intrabank or interbank transfer is part of a multiple request (batch).
TransferType | Transfer request type for a specified transaction.
CurrencyFormat | The format to be used for returning currency values.
OFXDateFormat | The date format as required by OFX FI server.
DateFormat | The format to be used for input and output dates.
GetResponseVar | Parses additional information out of the response.
NewPassword | New password for the current OFX user.
OFXLog | Log file for the OFX transaction.
ServerMessage | Server message if a warning or other information returned.
ClientUId | Unique ID identifying OFX Client.
UserCred1A | Additional user credential required by server.
UserCred2A | Additional user credential required by server.
AuthToken | Authentication token required for this signon session only.
CorrectFITID[i] | The FITID of a previously sent transaction corrected by the current one.
CorrectAction[i] | The action taken to a previously sent transaction corrected by the current one.
AcceptEncoding | Used to tell the server which types of content encodings the client supports.
AllowHTTPCompression | This property enables HTTP compression for receiving data.
Authorization | The Authorization string to be sent to the server.
BytesTransferred | Contains the number of bytes transferred in the response data.
EncodeURL | If set to true the URL will be encoded by the component.
FollowRedirects | Determines what happens when the server issues a redirect.
GetOn302Redirect | If set to true the component will perform a GET on the new location.
HTTPVersion | The version of HTTP used by the component.
IfModifiedSince | A date determining the maximum age of the desired document.
KeepAlive | Determines whether the HTTP connection is closed after completion of the request.
MaxRedirectAttempts | Limits the number of redirects that are followed in a request.
OtherHeaders | Other headers as determined by the user (optional).
ProxyAuthorization | The authorization string to be sent to the proxy server.
ProxyAuthScheme | The authorization scheme to be used for the proxy.
ProxyPassword | A password if authentication is to be used for the proxy.
ProxyPort | Port for the proxy server (default 80).
ProxyServer | Name or IP address of a proxy server (optional).
ProxyUser | A user name if authentication is to be used for the proxy.
TransferredDataLimit | The maximum number of incoming bytes to be stored by the component.
UseChunkedEncoding | Enables or Disables HTTP chunked encoding for transfers.
ChunkSize | Specifies the chunk size in bytes when using chunked encoding.
UsePlatformHTTPClient | Whether or not to use the platform HTTP client.
UserAgent | Information about the user agent (browser).
KerberosSPN | The Service Principal Name for the Kerberos Domain Controller.
FirewallAutoDetect | Tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallHost | Name or IP address of firewall (optional).
FirewallPassword | Password to be used if authentication is to be used when connecting through the firewall.
FirewallPort | The TCP port for the FirewallHost;.
FirewallType | Determines the type of firewall to connect through.
FirewallUser | A user name if authentication is to be used connecting through a firewall.
KeepAliveTime | The inactivity time in milliseconds before a TCP keep-alive packet is sent.
KeepAliveInterval | The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.
Linger | When set to True, connections are terminated gracefully.
LingerTime | Time in seconds to have the connection linger.
LocalHost | The name of the local host through which connections are initiated or accepted.
LocalPort | The TCP port in the local host where the component binds.
MaxLineLength | The maximum amount of data to accumulate when no EOL is found.
MaxTransferRate | The transfer rate limit in bytes per second.
TCPKeepAlive | Determines whether or not the keep alive socket option is enabled.
UseIPv6 | Whether or not to use IPv6.
TcpNoDelay | Whether or not to delay when sending packets.
ReuseSSLSession | Determines if the SSL session is reused.
SSLCipherStrength | The minimum cipher strength used for bulk encryption.
SSLEnabledProtocols | Used to enable/disable the supported security protocols.
SSLProvider | The name of the security provider to use.
SSLSecurityFlags | Flags that control certificate verification.
OpenSSLCADir | The path to a directory containing CA certificates.
OpenSSLCAFile | Name of the file containing the list of CA's trusted by your application.
OpenSSLCipherList | A string that controls the ciphers to be used by SSL.
OpenSSLPrngSeedData | The data to seed the pseudo random number generator (PRNG).
SSLAlgorithmList | A string that controls the cipher algorithms to be used by SSL.
AbsoluteTimeout | Determines whether timeouts are inactivity timeouts or absolute timeouts.
FirewallData | Used to send extra data to the firewall.
InBufferSize | The size in bytes of the incoming queue of the socket.
OutBufferSize | The size in bytes of the outgoing queue of the socket.
CodePage | The system code page used for Unicode to Multibyte translations.


FIId Property

FIId Property (BankTransfer Class)

Financial institution identifier.

Syntax

char* GetFIId();

int SetFIId(char* lpszFIId);

Default Value

""

Remarks

FIId holds the identifier of the OFX Financial Institution and is used during signon. This value is unique for each organization name.

Data Type

String


FIOrganization Property

FIOrganization Property (BankTransfer Class)

Financial institution organization name.

Syntax

char* GetFIOrganization();

int SetFIOrganization(char* lpszFIOrganization);

Default Value

""

Remarks

This is the name of the OFX Financial Institution and is used during signon. Each organization has a unique FIId that must also be used at signon.

Data Type

String


FirewallAutoDetect Property

FirewallAutoDetect Property (BankTransfer Class)

This property tells the component whether or not to automatically detect and use firewall system settings, if available.

Syntax

int GetFirewallAutoDetect();

int SetFirewallAutoDetect(int bFirewallAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use firewall system settings, if available.

Data Type

Boolean


FirewallType Property

FirewallType Property (BankTransfer Class)

This property determines the type of firewall to connect through.

Syntax

int GetFirewallType();

int SetFirewallType(int iFirewallType);

Possible Values

  FW_NONE(0),
  FW_TUNNEL(1),
  FW_SOCKS4(2),
  FW_SOCKS5(3)

Default Value

0

Remarks

This property determines the type of firewall to connect through. The applicable values are the following:

fwNone (0) | No firewall (default setting).
fwTunnel (1) | Connect through a tunneling proxy. FirewallPort is set to 80.
fwSOCKS4 (2) | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
fwSOCKS5 (3) | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

Data Type

Integer


FirewallHost Property

FirewallHost Property (BankTransfer Class)

This property contains the name or IP address of firewall (optional).

Syntax

char* GetFirewallHost();

int SetFirewallHost(char* lpszFirewallHost);

Default Value

""

Remarks

This property contains the name or IP address of firewall (optional). If a FirewallHost is given, the requested connections will be authenticated through the specified firewall when connecting.

If this property is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, this property is set to the corresponding address. If the search is not successful, the class fails with an error.

Data Type

String


FirewallPassword Property

FirewallPassword Property (BankTransfer Class)

This property contains a password if authentication is to be used when connecting through the firewall.

Syntax

char* GetFirewallPassword();

int SetFirewallPassword(char* lpszFirewallPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used when connecting through the firewall. If FirewallHost is specified, the FirewallUser and FirewallPassword properties are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

Data Type

String


FirewallPort Property

FirewallPort Property (BankTransfer Class)

This property contains the TCP port for the firewall Host .

Syntax

int GetFirewallPort();

int SetFirewallPort(int lFirewallPort);

Default Value

0

Remarks

This property contains the TCP port for the firewall FirewallHost. See the description of the FirewallHost property for details.

Note that this property is set automatically when FirewallType is set to a valid value. See the description of the FirewallType property for details.

Data Type

Long


FirewallUser Property

FirewallUser Property (BankTransfer Class)

This property contains a user name if authentication is to be used connecting through a firewall.

Syntax

char* GetFirewallUser();

int SetFirewallUser(char* lpszFirewallUser);

Default Value

""

Remarks

This property contains a user name if authentication is to be used connecting through a firewall. If the FirewallHost is specified, this property and FirewallPassword properties are used to connect and authenticate to the given Firewall. If the authentication fails, the class fails with an error.

Data Type

String


FIUrl Property

FIUrl Property (BankTransfer Class)

Financial institution URL.

Syntax

char* GetFIUrl();

int SetFIUrl(char* lpszFIUrl);

Default Value

""

Remarks

This is the URL of the OFX Financial Institution to which the class will signon and fetch data.

Data Type

String


LostSync Property

LostSync Property (BankTransfer Class)

Whether the token in the synchronization request is older.

Syntax

int GetLostSync();

Default Value

FALSE

Remarks

The LostSync will be returned in the server response after a synchronization request has been sent (when the Synchronize method was called). This indicates whether the Token in the synchronization request is older than the earliest entry in the server's history table. If True, some responses have been lost. Otherwise, the token in the synchronization request is newer than or matches a token in the server's history table.

This property is read-only and not available at design time.

Data Type

Boolean


OFXAccessKey Property

OFXAccessKey Property (BankTransfer Class)

Access key value received after a MFA authentication in a previous signon.

Syntax

char* GetOFXAccessKey();

int SetOFXAccessKey(char* lpszOFXAccessKey);

Default Value

""

Remarks

This might be returned in the server response after a MFA authentication (i.e. MFA challenge question/answer pairs were validated by the server when the SendChallengeAnswers method in FIProfile class was called).

To prevent servers from needing to authenticate the user in each OFX request, the server may respond to a correct set of challenge answers with a OFXAccessKey on the signon response (when the SendChallengeAnswers method in FIProfile class was called).

The server determines the contents of this optional element. On each subsequent signon request, the client will send the last value of the OFXAccessKey it has received, even after the end of the current session. The server has the option to respond to any subsequent request with a 3000 error code, requiring the client to send the MFA challenge questions request again (by calling the RequestChallengeQuestions method in FIProfile class). This allows the server to determine the lifetime of the OFXAccessKey.

Data Type

String


OFXAppId Property

OFXAppId Property (BankTransfer Class)

OFX application identifier.

Syntax

char* GetOFXAppId();

int SetOFXAppId(char* lpszOFXAppId);

Default Value

""

Remarks

This is the unique identifier of the user's OFX application.

Data Type

String


OFXAppVersion Property

OFXAppVersion Property (BankTransfer Class)

OFX application version.

Syntax

char* GetOFXAppVersion();

int SetOFXAppVersion(char* lpszOFXAppVersion);

Default Value

""

Remarks

This is the version of the user's OFX application.

Data Type

String


OFXPassword Property

OFXPassword Property (BankTransfer Class)

User's password.

Syntax

char* GetOFXPassword();

int SetOFXPassword(char* lpszOFXPassword);

Default Value

""

Remarks

This is the password used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXRequest Property

OFXRequest Property (BankTransfer Class)

The current OFX request aggregate.

Syntax

char* GetOFXRequest();

Default Value

""

Remarks

Polling OFXRequest will cause the class to generate and return an OFX request aggregate.

This property is read-only and not available at design time.

Data Type

String


OFXResponse Property

OFXResponse Property (BankTransfer Class)

The current OFX response aggregate.

Syntax

char* GetOFXResponse();

int SetOFXResponse(char* lpszOFXResponse);

Default Value

""

Remarks

This can be used especially for debugging purposes. This can also be used to parse an OFX Response. To do so, you can set the OFX Response data (in string format) to OFXResponse. Once set, the supplied OFX data will be parsed and will populate the same read-only properties that ReadOFXDataFile does.

This property is not available at design time.

Data Type

String


OFXUser Property

OFXUser Property (BankTransfer Class)

User's id.

Syntax

char* GetOFXUser();

int SetOFXUser(char* lpszOFXUser);

Default Value

""

Remarks

This is the UserID used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXVersion Property

OFXVersion Property (BankTransfer Class)

OFX API version.

Syntax

char* GetOFXVersion();

int SetOFXVersion(char* lpszOFXVersion);

Default Value

"102"

Remarks

This is the OFX API version used in all requests sent to your FI server (such as 1.0.2, 2.0.1, 2.1.1, etc.). Valid values: 102, 103, 200, 201, 203, 210, 211. Note that not all OFX Versions are supported by FIs.

Note: If the OFXVersion is set to 1x, the request and the response are going to be in SGML format. If set to 2x, the request will be in XML format (the response format depends on the FI's server capabilities). Note that if the OFX FI server does not support version 2x, the server will return an error (such as 'Bad Request').

Certain services are available only for a specific OFX version. For example, image download, is available only in OFX version 2.1.1.

Data Type

String


SSLAcceptServerCertEncoded Property

SSLAcceptServerCertEncoded Property (BankTransfer Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLAcceptServerCertEncoded(char *&lpSSLAcceptServerCertEncoded, int &lenSSLAcceptServerCertEncoded);

int SetSSLAcceptServerCertEncoded(char *lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLAcceptServerCertStore and SSLAcceptServerCertSubject properties may also be used to specify a certificate.

When SSLAcceptServerCertEncoded is set, a search is initiated in the current SSLAcceptServerCertStore for the private key of the certificate. If the key is found, SSLAcceptServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLAcceptServerCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertEncoded Property

SSLCertEncoded Property (BankTransfer Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLCertEncoded(char *&lpSSLCertEncoded, int &lenSSLCertEncoded);

int SetSSLCertEncoded(char *lpSSLCertEncoded, int lenSSLCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLCertStore and SSLCertSubject properties may also be used to specify a certificate.

When SSLCertEncoded is set, a search is initiated in the current SSLCertStore for the private key of the certificate. If the key is found, SSLCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertStore Property

SSLCertStore Property (BankTransfer Class)

The name of the certificate store for the client certificate.

Syntax

int GetSSLCertStore(char *&lpSSLCertStore, int &lenSSLCertStore);

int SetSSLCertStore(char *lpSSLCertStore, int lenSSLCertStore);

Default Value

"MY"

Remarks

The name of the certificate store for the client certificate.

The SSLCertStoreType property specifies the type of the certificate store specified by SSLCertStore. If the store is password protected, specify the password in SSLCertStorePassword.

SSLCertStore is used in conjunction with the SSLCertSubject property in order to specify client certificates. If SSLCertStore has a value, and SSLCertSubject or SSLCertEncoded is set, a search for a certificate is initiated. Please refer to the SSLCertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MY | A certificate store holding personal certificates with their associated private keys.
CA | Certifying authority certificates.
ROOT | Root certificates.
SPC | Software publisher certificates.

In Java, the certificate store normally is a file containing certificates and optional private keys.

When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).

If the provider is OpenSSL, the certificate store is a file containing a certificate and a private key. This property must be set to the name of the file.

Data Type

Binary String


SSLCertStorePassword Property

SSLCertStorePassword Property (BankTransfer Class)

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Syntax

char* GetSSLCertStorePassword();

int SetSSLCertStorePassword(char* lpszSSLCertStorePassword);

Default Value

""

Remarks

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Data Type

String


SSLCertStoreType Property

SSLCertStoreType Property (BankTransfer Class)

The type of certificate store for this certificate.

Syntax

int GetSSLCertStoreType();

int SetSSLCertStoreType(int iSSLCertStoreType);

Possible Values

  CST_USER(0),
  CST_MACHINE(1),
  CST_PFXFILE(2),
  CST_PFXBLOB(3),
  CST_JKSFILE(4),
  CST_JKSBLOB(5),
  CST_PEMKEY_FILE(6),
  CST_PEMKEY_BLOB(7),
  CST_PUBLIC_KEY_FILE(8),
  CST_PUBLIC_KEY_BLOB(9),
  CST_SSHPUBLIC_KEY_BLOB(10),
  CST_P7BFILE(11),
  CST_P7BBLOB(12),
  CST_SSHPUBLIC_KEY_FILE(13),
  CST_PPKFILE(14),
  CST_PPKBLOB(15),
  CST_XMLFILE(16),
  CST_XMLBLOB(17)

Default Value

0

Remarks

The type of certificate store for this certificate.

This property can take one of the following values:

0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java.
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java.
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates.
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format.
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java.
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java.
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate.
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate.
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate.
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate.
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key.
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates.
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format.
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key.
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key).
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key).
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format.
17 (cstXMLlob) | The certificate store is a string that contains a certificate in XML format.

Data Type

Integer


SSLCertSubject Property

SSLCertSubject Property (BankTransfer Class)

The subject of the certificate used for client authentication.

Syntax

char* GetSSLCertSubject();

int SetSSLCertSubject(char* lpszSSLCertSubject);

Default Value

""

Remarks

The subject of the certificate used for client authentication.

When this property is set, a search is performed in the current certificate store certificate with matching subject.

If a matching certificate is found, the property is set to the full subject of the matching certificate.

If an exact match is not found, the store is searched for subjects containing the value of the property.

If a match is still not found, the property is set to an empty string, and no certificate is selected.

The special value "*" picks a random certificate in the certificate store.

The certificate subject is a comma separated list of distinguished name properties and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common properties and their meanings are displayed below.

Field | Meaning
CN | Common Name. This is commonly a host name like www.server.com.
O | Organization
OU | Organizational Unit
L | Locality
S | State
C | Country
E | Email Address

If a property value contains a comma it must be quoted.

Data Type

String


SSLServerCertEncoded Property

SSLServerCertEncoded Property (BankTransfer Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLServerCertEncoded(char *&lpSSLServerCertEncoded, int &lenSSLServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLServerCertStore and SSLServerCertSubject properties may also be used to specify a certificate.

When SSLServerCertEncoded is set, a search is initiated in the current SSLServerCertStore for the private key of the certificate. If the key is found, SSLServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLServerCertSubject is set to empty string.

This property is read-only and not available at design time.

Data Type

Binary String


SyncTransferCount Property

SyncTransferCount Property (BankTransfer Class)

The number of records in the SyncTransfer arrays.

Syntax

int GetSyncTransferCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • SyncTransferAggregate
  • SyncTransferAmount
  • SyncTransferDateDue
  • SyncTransferDatePosted
  • SyncTransferDateProcessed
  • SyncTransferDateProjected
  • SyncTransferFromAccountId
  • SyncTransferId
  • SyncTransferStatus
  • SyncTransferToAccountId
  • SyncTransferTxType

The array indices start at 0 and end at SyncTransferCount-1.

This property is read-only and not available at design time.

Data Type

Integer


SyncTransferAggregate Property

SyncTransferAggregate Property (BankTransfer Class)

Wrapper for a bank transfer being initiated, modified or synchronized.

Syntax

char* GetSyncTransferAggregate(int iSyncTransferIndex);

Default Value

""

Remarks

Wrapper for a bank transfer being initiated, modified or synchronized.

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


SyncTransferAmount Property

SyncTransferAmount Property (BankTransfer Class)

Amount of the bank transfer being initiated, modified or synchronized.

Syntax

char* GetSyncTransferAmount(int iSyncTransferIndex);

Default Value

""

Remarks

Amount of the bank transfer being initiated, modified or synchronized.

This is required to be provided when initiating or modifying a transfer (i.e., when either TransferFunds or ModifyTransfer methods are called),

It is returned in the server response for each payment being synchronized (when the SynchronizeTransfers method is called).

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting.

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


SyncTransferDateDue Property

SyncTransferDateDue Property (BankTransfer Class)

Date the bank transfer (being initiated, modified or synchronized) is scheduled to be sent.

Syntax

char* GetSyncTransferDateDue(int iSyncTransferIndex);

Default Value

""

Remarks

Date the bank transfer (being initiated, modified or synchronized) is scheduled to be sent.

This can be provided when sending a bank transfer request (initiating or modifying a transfer when either TransferFunds or ModifyTransfer methods are called. In these cases, if the SyncTransferDateDue is not specified in the request, the transfer is considered immediate by the server and it occurs as soon as possible. However, this is required for scheduled transfers.

This is also returned in the server response when these methods are called. However, the value may have been adjusted by the server. For example, the server may adjust due date to comply with non-processing days. If a client sends a request to make a transfer on July 4 and July 4 happens to be a non-processing day, the due date in the response may be July 4 (because the server hasn't adjusted it yet), July 5 (because this server rolls dates forward), or some other date. For this reason, the SyncTransferDateDue should be inspected as well.

It may also be returned for each payment being synchronized (when the SynchronizeTransfers methods is called) only if it was specified in the original bank transfer request. These values should be inspected as well as might be different from their original values (for the same reason mentioned above).

Note: Immediate intrabank funds transfers cannot be canceled as they are already committed.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


SyncTransferDatePosted Property

SyncTransferDatePosted Property (BankTransfer Class)

Posted date of the bank transfer being initiated, modified or synchronized.

Syntax

char* GetSyncTransferDatePosted(int iSyncTransferIndex);

Default Value

""

Remarks

Posted date of the bank transfer being initiated, modified or synchronized.

This is the date the transfer actually happens (or happened). This is optional. Server response can contain either a SyncTransferDateProjected or a SyncTransferDatePosted but not both.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


SyncTransferDateProcessed Property

SyncTransferDateProcessed Property (BankTransfer Class)

Transfer processing date.

Syntax

char* GetSyncTransferDateProcessed(int iSyncTransferIndex);

Default Value

""

Remarks

Transfer processing date.

The interpretation of this value depends on SyncTransferStatus. This is date on which processing status last changed.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


SyncTransferDateProjected Property

SyncTransferDateProjected Property (BankTransfer Class)

Projected date of the transfer.

Syntax

char* GetSyncTransferDateProjected(int iSyncTransferIndex);

Default Value

""

Remarks

Projected date of the transfer.

This string gives the date the transfer is expected to take place. This is optional to be returned in the server response. Server response can contain either SyncTransferDateProjected or SyncTransferDatePosted, but not both.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


SyncTransferFromAccountId Property

SyncTransferFromAccountId Property (BankTransfer Class)

Account number where the transfer (being initiated, modified or synchronized) is originating from.

Syntax

char* GetSyncTransferFromAccountId(int iSyncTransferIndex);

Default Value

""

Remarks

Account number where the transfer (being initiated, modified or synchronized) is originating from.

This is required to be provided when initiating or modifying a transfer (i.e., when TransferFunds or ModifyTransfer methods are called).

It is returned in the server response for each transfer being synchronized (when the SynchronizeTransfers method is called).

If SyncTransferFromAccountType is set to CreditCard, the SyncTransferFromAccountId is a credit card account number.

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


SyncTransferId Property

SyncTransferId Property (BankTransfer Class)

Server-assigned id of the bank transfer being initiated, modified or synchronized.

Syntax

char* GetSyncTransferId(int iSyncTransferIndex);

Default Value

""

Remarks

Server-assigned id of the bank transfer being initiated, modified or synchronized.

The SyncTransferId uniquely identifies a transfer. This is assigned by the server when the transfer is initiated (when the TransferFunds method is called.

As a unique transfer identifier, the SyncTransferId is required to be provided (as parameter) when a transfer modification or cancellation requests are submitted (i.e., when ModifyTransfer or CancelTransfer methods are called) for a scheduled transfer.

This is also required to be provided when submitting the same request types via the OFXBatch class (for each transfer that is going to be part of the batch).

It is also returned for each payment being synchronized when the SynchronizeTransfers method is called.

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


SyncTransferStatus Property

SyncTransferStatus Property (BankTransfer Class)

Processing status code of the bank transfer being initiated, modified, canceled or synchronized.

Syntax

char* GetSyncTransferStatus(int iSyncTransferIndex);

Default Value

""

Remarks

Processing status code of the bank transfer being initiated, modified, canceled or synchronized.

This is returned in the server response when the TransferFunds, ModifyTransfer, CancelTransfer and SynchronizeTransfers methods are called.

If the server provides this information, the possible values are:

Value | Description
WILLPROCESSON | Transfer will be processed on SyncTransferDateProcessed
POSTEDON | Transfer was posted on SyncTransferDateProcessed
NOFUNDSON | There were insufficient funds to make transfer on SyncTransferDateProcessed
CANCELEDON | Transfer request was cancelled by the user
FAILEDON | Unable to make transfer for unspecified reasons on SyncTransferDateProcessed

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


SyncTransferToAccountId Property

SyncTransferToAccountId Property (BankTransfer Class)

Account number where the bank transfer ((being initiated, modified or synchronized) is made to.

Syntax

char* GetSyncTransferToAccountId(int iSyncTransferIndex);

Default Value

""

Remarks

Account number where the bank transfer ((being initiated, modified or synchronized) is made to.

This is required to be provided when initiating or modifying a transfer (i.e., when TransferFunds or ModifyTransfer methods are called).

It is returned in the server response for each transfer being synchronized (when the SynchronizeTransfers method is called).

If SyncTransferToAccountType is set to CreditCard, the SyncTransferToAccountId is a credit card account number.

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


SyncTransferTxType Property

SyncTransferTxType Property (BankTransfer Class)

Transaction type of the bank transfer being synchronized.

Syntax

char* GetSyncTransferTxType(int iSyncTransferIndex);

Default Value

""

Remarks

Transaction type of the bank transfer being synchronized.

Possible values and their meanings are as follows:

ADDED | If the bank transfer being synchronized was a new transaction.
MODIFIED | If the bank transfer being synchronized was a modify transaction.
CANCELED | If the bank transfer being synchronized was a cancel transaction.

The size of the array is controlled by the SyncTransferCount property.

This property is read-only and not available at design time.

Data Type

String


Timeout Property

Timeout Property (BankTransfer Class)

A timeout for the component.

Syntax

int GetTimeout();

int SetTimeout(int iTimeout);

Default Value

60

Remarks

If the Timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.

If Timeout is set to a positive value, the class will wait for the operation to complete before returning control.

The class will use DoEvents to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not "freeze" and remains responsive.

If Timeout expires, and the operation is not yet complete, the class fails with an error.

Please note that by default, all timeouts are inactivity timeouts, i.e. the timeout period is extended by Timeout seconds when any amount of data is successfully sent or received.

Optionally, the behavior of the class may be changed to absolute timeouts, i.e. the class will wait for a maximum of Timeout seconds since the beginning of the operation, without extending the timeout period during communications.

This behavior is controlled by the AbsoluteTimeout configuration setting.

The default value for the Timeout property is 60 (seconds).

Data Type

Integer


TransferAmount Property

TransferAmount Property (BankTransfer Class)

Amount of the bank transfer being initiated, modified or synchronized.

Syntax

char* GetTransferAmount();

int SetTransferAmount(char* lpszTransferAmount);

Default Value

""

Remarks

Amount of the bank transfer being initiated, modified or synchronized.

This is required to be provided when initiating or modifying a transfer (i.e., when either TransferFunds or ModifyTransfer methods are called),

It is returned in the server response for each payment being synchronized (when the SynchronizeTransfers method is called).

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting.

This property is not available at design time.

Data Type

String


TransferCurrencyCode Property

TransferCurrencyCode Property (BankTransfer Class)

Default currency code for this transaction.

Syntax

char* GetTransferCurrencyCode();

Default Value

""

Remarks

Default currency code for this transaction.

Indicates how to interpret the monetary transferred amount. Expressed as a special character, such as $.

This property is read-only and not available at design time.

Data Type

String


TransferDateDue Property

TransferDateDue Property (BankTransfer Class)

Date the bank transfer (being initiated, modified or synchronized) is scheduled to be sent.

Syntax

char* GetTransferDateDue();

int SetTransferDateDue(char* lpszTransferDateDue);

Default Value

""

Remarks

Date the bank transfer (being initiated, modified or synchronized) is scheduled to be sent.

This can be provided when sending a bank transfer request (initiating or modifying a transfer when either TransferFunds or ModifyTransfer methods are called. In these cases, if the TransferDateDue is not specified in the request, the transfer is considered immediate by the server and it occurs as soon as possible. However, this is required for scheduled transfers.

This is also returned in the server response when these methods are called. However, the value may have been adjusted by the server. For example, the server may adjust due date to comply with non-processing days. If a client sends a request to make a transfer on July 4 and July 4 happens to be a non-processing day, the due date in the response may be July 4 (because the server hasn't adjusted it yet), July 5 (because this server rolls dates forward), or some other date. For this reason, the TransferDateDue should be inspected as well.

It may also be returned for each payment being synchronized (when the SynchronizeTransfers methods is called) only if it was specified in the original bank transfer request. These values should be inspected as well as might be different from their original values (for the same reason mentioned above).

Note: Immediate intrabank funds transfers cannot be canceled as they are already committed.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is not available at design time.

Data Type

String


TransferDatePosted Property

TransferDatePosted Property (BankTransfer Class)

Posted date of the bank transfer being initiated, modified or synchronized.

Syntax

char* GetTransferDatePosted();

Default Value

""

Remarks

Posted date of the bank transfer being initiated, modified or synchronized.

This is the date the transfer actually happens (or happened). This is optional. Server response can contain either a TransferDateProjected or a TransferDatePosted but not both.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is read-only and not available at design time.

Data Type

String


TransferDateProcessed Property

TransferDateProcessed Property (BankTransfer Class)

Transfer processing date.

Syntax

char* GetTransferDateProcessed();

Default Value

""

Remarks

Transfer processing date.

The interpretation of this value depends on TransferStatus. This is date on which processing status last changed.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is read-only and not available at design time.

Data Type

String


TransferFromAccountId Property

TransferFromAccountId Property (BankTransfer Class)

Account number where the transfer (being initiated, modified or synchronized) is originating from.

Syntax

char* GetTransferFromAccountId();

int SetTransferFromAccountId(char* lpszTransferFromAccountId);

Default Value

""

Remarks

Account number where the transfer (being initiated, modified or synchronized) is originating from.

This is required to be provided when initiating or modifying a transfer (i.e., when TransferFunds or ModifyTransfer methods are called).

It is returned in the server response for each transfer being synchronized (when the SynchronizeTransfers method is called).

If TransferFromAccountType is set to CreditCard, the TransferFromAccountId is a credit card account number.

This property is not available at design time.

Data Type

String


TransferFromAccountKey Property

TransferFromAccountKey Property (BankTransfer Class)

Checksum for the bank where money has to be withdrawn (international banks only).

Syntax

char* GetTransferFromAccountKey();

int SetTransferFromAccountKey(char* lpszTransferFromAccountKey);

Default Value

""

Remarks

Checksum for the bank where money has to be withdrawn (international banks only).

This is optional to be provided when initiating or modifying a bank transfer (i.e., when TransferFunds or ModifyTransfer methods are called).

The TransferFromAccountKey is applicable for international banks only.

This property is not available at design time.

Data Type

String


TransferFromAccountType Property

TransferFromAccountType Property (BankTransfer Class)

Type of account where the transfer is originating from.

Syntax

int GetTransferFromAccountType();

int SetTransferFromAccountType(int iTransferFromAccountType);

Possible Values

  AT_CHECKING(0),
  AT_SAVINGS(1),
  AT_MONEY_MARKET(2),
  AT_LINE_OF_CREDIT(3),
  AT_CREDIT_CARD(4)

Default Value

0

Remarks

Type of account where the transfer is originating from.

This is required to be provided when initiating or modifying a transfer (i.e., when TransferFunds or ModifyTransfer methods are called). If TransferFromAccountType and TransferToAccountType are set to CreditCard, then the TransferFromBankId and TransferToBankId are not required to be provided in the request.

This property uses the following values:

  • atChecking (0)
  • atSavings (1)
  • atMoneyMarket (2)
  • atLineOfCredit (3)
  • atCreditCard (4)

This property is not available at design time.

Data Type

Integer


TransferFromBankId Property

TransferFromBankId Property (BankTransfer Class)

Number that identifies the bank where the transfer is originating from.

Syntax

char* GetTransferFromBankId();

int SetTransferFromBankId(char* lpszTransferFromBankId);

Default Value

""

Remarks

Number that identifies the bank where the transfer is originating from.

When initiating or modifying a transfer (i.e., when TransferFunds or ModifyTransfer methods are called), and TransferFromAccountType is set to a value different than CreditCard, the TransferFromBankId is required to be provided in the request. Otherwise, it should not be set.

In intrabank transfers requests (transferring funds between two accounts at the same financial institution), the TransferFromBankId represents the source and destination FI (in this case, this is the same as TransferToBankId and TransferToBankId should not be set).

This property is not available at design time.

Data Type

String


TransferFromBranchId Property

TransferFromBranchId Property (BankTransfer Class)

Identifier for the bank where the transfer is originating from (international banks only).

Syntax

char* GetTransferFromBranchId();

int SetTransferFromBranchId(char* lpszTransferFromBranchId);

Default Value

""

Remarks

Identifier for the bank where the transfer is originating from (international banks only).

This is optional to be provided when initiating or modifying a transfer (i.e., when TransferFunds or ModifyTransfer methods are called).

The TransferFromBranchId is applicable for international banks only, and if this applies, it can be provided in the request only if TransferFromAccountType is set to a value different than CreditCard. Otherwise, it should not be set.

This property is not available at design time.

Data Type

String


TransferId Property

TransferId Property (BankTransfer Class)

Server-assigned id of the bank transfer being initiated, modified or synchronized.

Syntax

char* GetTransferId();

int SetTransferId(char* lpszTransferId);

Default Value

""

Remarks

Server-assigned id of the bank transfer being initiated, modified or synchronized.

The TransferId uniquely identifies a transfer. This is assigned by the server when the transfer is initiated (when the TransferFunds method is called.

As a unique transfer identifier, the TransferId is required to be provided (as parameter) when a transfer modification or cancellation requests are submitted (i.e., when ModifyTransfer or CancelTransfer methods are called) for a scheduled transfer.

This is also required to be provided when submitting the same request types via the OFXBatch class (for each transfer that is going to be part of the batch).

It is also returned for each payment being synchronized when the SynchronizeTransfers method is called.

This property is not available at design time.

Data Type

String


TransferStatus Property

TransferStatus Property (BankTransfer Class)

Processing status code of the bank transfer being initiated, modified, canceled or synchronized.

Syntax

char* GetTransferStatus();

Default Value

""

Remarks

Processing status code of the bank transfer being initiated, modified, canceled or synchronized.

This is returned in the server response when the TransferFunds, ModifyTransfer, CancelTransfer and SynchronizeTransfers methods are called.

If the server provides this information, the possible values are:

Value | Description
WILLPROCESSON | Transfer will be processed on TransferDateProcessed
POSTEDON | Transfer was posted on TransferDateProcessed
NOFUNDSON | There were insufficient funds to make transfer on TransferDateProcessed
CANCELEDON | Transfer request was cancelled by the user
FAILEDON | Unable to make transfer for unspecified reasons on TransferDateProcessed

This property is read-only and not available at design time.

Data Type

String


TransferToAccountId Property

TransferToAccountId Property (BankTransfer Class)

Account number where the bank transfer ((being initiated, modified or synchronized) is made to.

Syntax

char* GetTransferToAccountId();

int SetTransferToAccountId(char* lpszTransferToAccountId);

Default Value

""

Remarks

Account number where the bank transfer ((being initiated, modified or synchronized) is made to.

This is required to be provided when initiating or modifying a transfer (i.e., when TransferFunds or ModifyTransfer methods are called).

It is returned in the server response for each transfer being synchronized (when the SynchronizeTransfers method is called).

If TransferToAccountType is set to CreditCard, the TransferToAccountId is a credit card account number.

This property is not available at design time.

Data Type

String


TransferToAccountKey Property

TransferToAccountKey Property (BankTransfer Class)

Checksum for the bank where money has to be deposited to (international banks only).

Syntax

char* GetTransferToAccountKey();

int SetTransferToAccountKey(char* lpszTransferToAccountKey);

Default Value

""

Remarks

Checksum for the bank where money has to be deposited to (international banks only).

This is optional to be provided when initiating or modifying a bank transfer (i.e., when TransferFunds or ModifyTransfer methods are called).

The TransferToAccountKey is applicable for international banks only.

This property is not available at design time.

Data Type

String


TransferToAccountType Property

TransferToAccountType Property (BankTransfer Class)

Type of account where money has to be deposited to.

Syntax

int GetTransferToAccountType();

int SetTransferToAccountType(int iTransferToAccountType);

Possible Values

  AT_CHECKING(0),
  AT_SAVINGS(1),
  AT_MONEY_MARKET(2),
  AT_LINE_OF_CREDIT(3),
  AT_CREDIT_CARD(4)

Default Value

0

Remarks

Type of account where money has to be deposited to.

This is required to be provided when initiating or modifying a bank transfer (i.e., when TransferFunds or ModifyTransfer methods are called). If TransferFromAccountType and TransferToAccountType are set to CreditCard, then the TransferFromBankId and TransferToBankId are not required to be provided in the request.

This property uses the following values:

  • atChecking (0)
  • atSavings (1)
  • atMoneyMarket (2)
  • atLineOfCredit (3)
  • atCreditCard (4)

This property is not available at design time.

Data Type

Integer


TransferToBankId Property

TransferToBankId Property (BankTransfer Class)

Number that identifies the bank where money has to be deposited to.

Syntax

char* GetTransferToBankId();

int SetTransferToBankId(char* lpszTransferToBankId);

Default Value

""

Remarks

Number that identifies the bank where money has to be deposited to.

This is the bank id where the destination account is located. When initiating or modifying an interbank transfer (i.e., transferring funds between two accounts at different FIs) and TransferToAccountType is set to a value different than CreditCard, the TransferToBankId is required to be provided in the request. Otherwise, it should not be set.

This property is not available at design time.

Data Type

String


TransferToBranchId Property

TransferToBranchId Property (BankTransfer Class)

Identifier for the bank where money has to be deposited to (international banks only).

Syntax

char* GetTransferToBranchId();

int SetTransferToBranchId(char* lpszTransferToBranchId);

Default Value

""

Remarks

Identifier for the bank where money has to be deposited to (international banks only).

This is optional to be provided when initiating or modifying a transfer (i.e., when TransferFunds or ModifyTransfer methods are called).

The TransferToBranchId is applicable for international banks only and if this applies, it can be provided in the request only if TransferToAccountType is set to a value different than CreditCard. Otherwise, it should not be set.

This property is not available at design time.

Data Type

String


CancelTransfer Method

CancelTransfer Method (BankTransfer Class)

Cancels a scheduled transfer.

Syntax

 int CancelTransfer(char* lpszTransferId);

Remarks

This function generates the Signon and Transfer Cancellation request page, submits it to the financial institution via secure HTTP Post, receives the response, and parses it.

The TransferId parameter identifies the transfer to be canceled. This is the id assigned and returned by the server at the time the transfer was scheduled (that was stored in TransferId).

The following properties should be set when this method is called:

FIUrl | (required)
FIId | (required)
FIOrganization | (required)
OFXAppId | (required)
OFXAppVersion | (required)
OFXVersion | (required if 2.x OFX version is the one supported by your FI)
OFXUser | (required)
OFXPassword | (required)

Upon successful response, the server will return the TransferId which echoes the TransferId.


Config Method

Config Method (BankTransfer Class)

Sets or retrieves a configuration setting.

Syntax

 char* Config(char* lpszConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.


ModifyTransfer Method

ModifyTransfer Method (BankTransfer Class)

Modifies a scheduled transfer.

Syntax

 int ModifyTransfer(char* lpszTransferId);

Remarks

This function generates the Signon and Transfer Modification request page, submits it to the financial institution via secure HTTP Post, receives the response, and parses it.

Only scheduled transfers can be modified, not the immediate ones.

The TransferId parameter identifies the transfer to be modified. This is the id assigned and returned by the server at the time the transfer was scheduled (that was stored in TransferId).

When modifying a scheduled transfer by calling the ModifyTransfer method, the user should provide all the fields for source and destination account that were specified when the transfer was initiated (when the TransferFunds method was called), and not just the fields that are to be modified).

The following properties should be set when this method is called:

FIUrl | (required)
FIId | (required)
FIOrganization | (required)
OFXAppId | (required)
OFXAppVersion | (required)
OFXVersion | (required if 2.x OFX version is the one supported by your FI)
OFXUser | (required)
OFXPassword | (required)
Transfer | (required)

The response normally just echoes the values passed in the request. However, if the status of a scheduled transfer changes in any way, the user should expect to receive modification responses when they synchronize with the server. For example, when a server completes a transfer, the status of the transfer goes from pending to posted. This status change will be included in the server response.

Please check your FI profile to see if they provide this service (transfer modification).


Reset Method

Reset Method (BankTransfer Class)

Reset the internal state of the component and all properties to their default values.

Syntax

 int Reset();

Remarks

The Reset method does not have any parameters and does not return any value.


SynchronizeTransfers Method

SynchronizeTransfers Method (BankTransfer Class)

Synchronizes transfers on the client side with transfers on record on the server side.

Syntax

 char* SynchronizeTransfers(char* lpszToken);

Remarks

The transfer synchronization request is applicable for bank accounts only and not for the credit card accounts.

This method can be called when a list of recent server responses is needed whether due to requests submitted by multiple clients or other status changes on the server.

Clients can also choose to perform an explicit synchronization before sending any transfer requests (when TransferFunds, ModifyTransfer or CancelTransfer methods are called). This practice allows clients to be up-to-date and possibly interact with the user before sending any new requests.

If this explicit synchronization request is submitted for the first time to the server, the Token parameter has to be 0. In this case, servers should send all available history, allowing a new client (for example) to know about work done by other clients. If a user's account has never been used with OFX, the server returns no history. The response includes responses more recent than the given token, along with a new token returned by this method.

Unless the synchronization is a refresh request (see below), in all subsequent requests, this has to be the previous value of Token this method returned (i.e., received for this type of synchronization request from the server). This will serve as the user's own endpoint. When the server supplies a response, it supplies a new endpoint (Token) as well. A token needs to be unique only within transfers for the specified account.

If a client connection fails, or a client receives a response, but crashes before updating its records, the client will not be able to save the new endpoint. On the next synchronization request, the server sends the same information (plus any further status changes). If a user switches to a backup file, again the client will use the older endpoint in the synchronization request. If multiple clients are in use, each will send requests based on its own endpoint, so that both clients will obtain complete information from the server.

A brand new client, or a client that lost synchronization, might want to learn about in-progress transfers by submitting a synchronization refresh of the transfer requests (i.e., wants a set of changes, rather than asking the server to send everything it knows). It would almost certainly want to do a synchronization refresh of the recurring transfer models, because these often live for months or years.

A client can request a refresh of current state by calling the SynchronizeTransfers where Token parameter is set to REFRESH (not case sensitive). The response will reflect the current state. For example, if you schedule a transfer and then modify it three times, even if this history would have been available for a regular synchronization, on a synchronization refresh request the servers should only send a single add that reflects the current state.

Please note that the servers will not have infinite history available. If the token in the synchronization request was older than the earliest available history, then the LostSync property value returned is True. This allows clients to alert users that some responses have been lost.

The following properties have to be set when this method is called:

FIUrl | (required)
FIId | (required)
FIOrganization | (required)
OFXAppId | (required)
OFXAppVersion | (required)
OFXUser | (required)
OFXPassword | (required)
TransferFromBankId | (required)
TransferFromAccountId | (required)
TransferFromAccountType | (optional)

Upon a successful reply, if the response contains a list of bank transfers, then the SyncTransfers will be populated and SyncTransfers event will be fired for each transfer transaction. A single transfer has a single TransferId, but it can undergo several state changes over its life and thus might have several entries in the token history.


TransferFunds Method

TransferFunds Method (BankTransfer Class)

Transfers money from one account to another within the same or different Financial Institution(s).

Syntax

 int TransferFunds();

Remarks

This function generates the Signon and Intrabank or Interbank Transfer request page, submits it to the financial institution via secure HTTP Post, receives the response, and parses it.

The following properties can be set when this method is called:

FIUrl | (required)
FIId | (required)
FIOrganization | (required)
OFXAppId | (required)
OFXAppVersion | (required)
OFXVersion | (required if 2.x OFX version is the one supported by your FI)
OFXUser | (required)
OFXPassword | (required)
Transfer | (required)

Upon a successful reply, the following read-only properties are populated as a result of parsing the server response:

TransferId |
TransferCurrencyCode |
TransferDatePosted or TransferDateProjected | (not both)
TransferStatus |
TransferDateProcessed |

If the request is for an immediate transfer and the server can perform the transfer in real time, the server should indicate whether the transfer succeeded and should return the date of the transfer in TransferDatePosted. In this case, synchronization is not required.

In all cases, a server cannot provide complete confirmation for the transfer. The server can only confirm that it received the transfer instruction; and possibly whether it validated the accounts, amount, and date specified in the transfer. For any transfer where the client does not know the status at the time of the response, a server should confirm that it accepted the instruction by assigning a TransferId and indicate the TransferDateProjected if the TransferDatePosted is not available. A client can pick up the confirmation at a later date through a synchronization request by calling the SynchronizeTransfers method.

The interbank funds transfers differ from intrabank funds transfers in the following respects:

  • The routing and transit number of the destination account differs from the source account. That means that the TransferFromBankId and TransferToBankId should both be set (if the account type is different than CreditCard).
  • At the discretion of an FI, the destination account (identified by TransferToAccountId) can be subject to pre-notification.
  • Source and destination accounts must be enabled for the Automated Clearing House (ACH).

The Interbank Funds Transfer is subject to the rules and regulations governing the ACH network. In all other respects, interbank funds transfers function like intrabank funds transfers.


ConnectionStatus Event

ConnectionStatus Event (BankTransfer Class)

Fired to indicate changes in connection state.

Syntax

 virtual int FireConnectionStatus(BankTransferConnectionStatusEventParams *e);

 typedef struct {

  char* ConnectionEvent;
  int StatusCode;
  char* Description;

  int reserved;

 } BankTransferConnectionStatusEventParams;

Remarks

The ConnectionStatus event is fired when the connection state changes: completion of a firewall or proxy connection, completion of a security handshake, etc.

The ConnectionEvent parameter indicates the type of connection event. Values may include:

Firewall connection complete.
SSL or S/Shell handshake complete (where applicable).
Remote host connection complete.
Remote host disconnected.
SSL or S/Shell connection broken.
Firewall host disconnected.

StatusCode has the error code returned by the TCP/IP stack. Description contains a description of this code. The value of StatusCode is equal to the value of the error.


Error Event

Error Event (BankTransfer Class)

Information about errors during data delivery.

Syntax

 virtual int FireError(BankTransferErrorEventParams *e);

 typedef struct {

  int ErrorCode;
  char* Description;

  int reserved;

 } BankTransferErrorEventParams;

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Messages section.


SSLServerAuthentication Event

SSLServerAuthentication Event (BankTransfer Class)

Fired after the server presents its certificate to the client.

Syntax

 virtual int FireSSLServerAuthentication(BankTransferSSLServerAuthenticationEventParams *e);

 typedef struct {

  char* CertEncoded;
  char* CertSubject;
  char* CertIssuer;
  char* Status;
  int Accept;

  int lenCertEncoded;
  int reserved;

 } BankTransferSSLServerAuthenticationEventParams;

Remarks

This event is where the client can decide whether to continue with the connection process or not. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether to continue or not.

When Accept is False, Status shows why the verification failed (otherwise, Status contains the string "OK"). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.


SSLStatus Event

SSLStatus Event (BankTransfer Class)

Shows the progress of the secure connection.

Syntax

 virtual int FireSSLStatus(BankTransferSSLStatusEventParams *e);

 typedef struct {

  char* Message;

  int reserved;

 } BankTransferSSLStatusEventParams;

Remarks

The event is fired for informational and logging purposes only. Used to track the progress of the connection.


SyncTransfers Event

SyncTransfers Event (BankTransfer Class)

Fired for each intrabank transfer transaction included in the synchronization response.

Syntax

 virtual int FireSyncTransfers(BankTransferSyncTransfersEventParams *e);

 typedef struct {

  char* TransferAggregate;
  char* TransferTxType;
  char* TransferId;
  char* TransferAmount;
  char* FromAccountId;
  char* ToAccountId;
  char* TransferStatus;
  char* TransferDatePosted;

  int reserved;

 } BankTransferSyncTransfersEventParams;

Remarks

When this event is fired for each intrabank transfer transaction included in the response (if any), the following are returned for each transfer transaction identified by TransferId:

  • TransferAggregate contains the aggregate for a transfer transaction.
  • TransferTx indicates the transfer transaction type, if this is a new, modified or canceled one (possible values: ADD, MOD, CAN).
  • TransferId contains the server id of a transaction in the list of transfers (if any) returned in the synchronization response.
  • TransferAmount contains the amount of a transfer transaction.
  • FromAccountId contains the account number a transfer has been sent from.
  • ToAccountId contains the account number a transfer has been sent to.
  • TransferStatus contains the status of a transfer transaction.
  • TransferDatePosted contains the actual date of a transfer transaction.

If what you need is not returned through this event, you can always parse each TransferAggregate using our OFXAggregate component.


BankTransfer Configuration

Configuration Settings (BankTransfer Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

BankTransfer Configuration Settings

BatchTransferType: Transfer request type when an intrabank or interbank transfer is part of a multiple request (batch).

This configuration is used and required only when intrabank or interbank transfers are part of a batch request (transactions will be submitted via the OFXBatch class through a single connection).

Possible values, their meanings and usage are as follows:

Value | Meaning
0 (default value) | None - a bank transfer request is not part of the batch;
1 | an intrabank or interbank transfer is part of the batch (equivalent to the TransferFunds method);
2 | an intrabank or interbank transfer modification is part of the batch (equivalent to the ModifyTransfer method);
3 | an intrabank or interbank transfer cancellation is part of the batch (equivalent to the CancelTransfer method);

When a bank transfer is present in a batch request, the same rules apply for all properties settings as when the equivalent method is called.

Note: Synchronization can not be part of a multiple request. The client has to submit such request as a single request (by calling the SynchronizeTransfers method in the BankTransfer class).

TransferType: Transfer request type for a specified transaction.

This setting is used to configure the transaction type (automatic, intrabank, or interbank) for a specific transaction.

The appropriate values are as follows:

Value | Meaning
0 (default value) | Automatic - selects the transfer type based on the TransferFromBankId and TransferToBankId.
1 | Intrabank - sends the transaction as an INTRATRNRQ.
2 | Interbank - sends the transaction as an INTERTRNRQ.

OFX Configuration Settings

CurrencyFormat: The format to be used for returning currency values.

If this is set to a non-empty string, the class will attempt to use the value as a pattern to format all currency strings returned from the server. You may use any of the system's default number formatting strings.

OFXDateFormat: The date format as required by OFX FI server.

Most of OFX FI servers, accept the default format, where the offset (G) and timezone (Z) are specified. However, there might still be some servers that do not accept that part. In such cases, you will have to set the OFXDateFormat to "YYYYMMddHHmmss.xxx" and GMT will be assumed as the default value.

Your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat (format that OFX FI server recognizes) right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

DateFormat: The format to be used for input and output dates.

This format is used for input and output dates. You may use any of the system's default date formatting strings.

When submitting the request: all your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

When parsing the response: if DateFormat is set to a non-empty string, the class will attempt to use the value as a pattern to format all date strings as they are returned. Otherwise, the system's default value will be used for formatting.

If the DateFormat is set to the special value "OFXDATE": During input:, any values you supply to date properties are passed to the server directly with no changes; During output: all dates will be returned in the OFX format as it was provided by the server without performing any modifications.

GetResponseVar: Parses additional information out of the response.

Any additional response information contained within the OFX response that is not available via the Response fields, may be retrieved with this GetResponseVar config.

To obtain a response value, pass the XPath to the value you wish to receive. For instance, if the OFX response contains:

    "<OFX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0<SEVERITY>INFO</STATUS><DTSERVER>20120104223836.575<LANGUAGE>ENG"

Then calling GetResponseVar("/OFX/SIGNONMSGSRVSV1/LANGUAGE") will return "ENG".

NewPassword: New password for the current OFX user.

Setting NewPassword to a non-empty value will cause the class to issue a password change request during sign-on along with the regular current OFX request. After the request is sent, this value will be cleared.

The correct current password is needed as well during signon request and must be supplied through the OFXPassword. Upon successful reply from the server, the NewPassword used becomes the new password.

OFXLog: Log file for the OFX transaction.

This setting records the OFX communication, but without including HTTP headers, to a file.

Please note that ReadOFXDataFile will not be able to parse this file because of the OFX request content present. If only the response of the server is required, please look at the WriteOFXDataFile method instead.

ServerMessage: Server message if a warning or other information returned.

When sending a transaction request to a FI, their server with return either a successful reply or an error. However, even when a transaction is successful, a warning or other server messages might still be returned and are to be treated as informational notes only.

ClientUId: Unique ID identifying OFX Client.

In the profile response, if SignOnClientUIdReq is True, then ClientUId should be set and included in all future requests.

UserCred1A: Additional user credential required by server.

In the profile response, if SignOnUserCred1Q is present, then UserCred1A should be set (as the answer to question identified by SignOnUserCred1Q) and it should be included in all future requests as part of the signon.

UserCred2A: Additional user credential required by server.

In the profile response, if SignOnUserCred2Q is present, then UserCred2A should be set (as the answer to question identified by SignOnUserCred2Q) and it should be included in all future requests as part of the signon.

AuthToken: Authentication token required for this signon session only.

This credential is provided to the user out of band.

In the profile response, if SignOnAuthTokenFirst is True, then AuthToken should be sent in the very first signon.

CorrectFITID[i]: The FITID of a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the FITID of a previously sent transaction that is corrected by this record. Based on the value of CorrectAction[i], this transaction replaces or deletes the transaction that it corrects. This is applicable to statement download components only.

CorrectAction[i]: The action taken to a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the action taken to a previously sent transaction that is corrected by this record. Possible values are: REPLACE or DELETE. REPLACE replaces the transaction that it corrects referenced by CorrectFITID[i]. DELETE deletes it. This is applicable to statement download components only.

HTTP Configuration Settings

AcceptEncoding: Used to tell the server which types of content encodings the client supports.

When AllowHTTPCompression is true, the class adds an "Accept-Encoding: " header to the request being sent to the server. By default, this header's value is "gzip, deflate". This config allows you to change the value of the "Accept-Encoding" header. NOTE: The class only supports gzip and deflate decompression algorithms.

AllowHTTPCompression: This property enables HTTP compression for receiving data.

This is the same as the AllowHTTPCompression property. This setting is exposed here for use by classs that inherit from HTTP.

Authorization: The Authorization string to be sent to the server.

If the Authorization property contains a non-empty string, an Authorization HTTP request header is added to the request. This header conveys Authorization information to the server.

This property is provided so that the HTTP class can be extended with other security schemes in addition to the authorization schemes already implemented by the class.

The AuthScheme property defines the authentication scheme used. In the case of HTTP Basic Authentication (default), every time User and Password are set, they are Base64 encoded, and the result is put in the Authorization property in the form "Basic [encoded-user-password]".

BytesTransferred: Contains the number of bytes transferred in the response data.

Returns the raw number of bytes from the HTTP response data, prior to the component processing the data, whether it is chunked and/or compressed. This returns the same value as the Transfer event, by BytesTransferred.

EncodeURL: If set to true the URL will be encoded by the class.

The default value is false. If set to true the URL passed to the class will be URL encoded.

FollowRedirects: Determines what happens when the server issues a redirect.

This option determines what happens when the server issues a redirect. Normally, the class returns an error if the server responds with an "Object Moved" message. If this property is set to 1 (always), the new URL for the object is retrieved automatically every time.

If this property is set to 2 (Same Scheme), the new URL is retrieved automatically only if the URL Scheme is the same, otherwise the class fails with an error.

Note that following the HTTP specification, unless this option is set to 1 (Always), automatic redirects will be performed only for 'GET' or 'HEAD' requests. Other methods could potentially change the conditions of the initial request and create security vulnerabilities.

Furthermore, if either the new URL server and port are different than the existing one, User and Password are also reset to empty, unless this property is set to 1 (Always), in which case the same credentials are used to connect to the new server.

A Redirect event is fired for every URL the product is redirected to. In the case of automatic redirections, the Redirect event is a good place to set properties related to the new connection (e.g. new authentication parameters).

The default value is 0 (Never). In this case, redirects are never followed, and the class fails with an error instead.

Valid options are:

  • 0 - Never
  • 1 - Always
  • 2 - Same Scheme

GetOn302Redirect: If set to true the class will perform a GET on the new location.

The default value is false. If set to true the class will perform a GET on the new location. Otherwise it will use the same HTTP method again.

HTTPVersion: The version of HTTP used by the class.

Possible values include "1.0", and "1.1". The default is "1.1".

IfModifiedSince: A date determining the maximum age of the desired document.

This is the same as the IfModifiedSince property. This setting is exposed here for use by classs that inherit from HTTP.

KeepAlive: Determines whether the HTTP connection is closed after completion of the request.

If true, the component will not send the 'Connection: Close' header. The absence of the Connection header indicates to the server that HTTP persistent connections should be used if supported. Note that not all server support persistent connections. You may also explicitly add the Keep-Alive header to the request headers by setting OtherHeaders to 'Connection: Keep-Alive'. If false, the connection will be closed immediately after the server response is received.

The default value for KeepAlive is false.

MaxRedirectAttempts: Limits the number of redirects that are followed in a request.

When FollowRedirects is set to any value besides frNever the class will follow redirects until this maximum number of redirect attempts are made. The default value is 20.

OtherHeaders: Other headers as determined by the user (optional).

This configuration option can be set to a string of headers to be appended to the HTTP request headers.

The headers must be of the format "header: value" as described in the HTTP specifications. Header lines should be separated by CRLF ("\r\ n") .

Use this configuration option with caution. If this configuration option contains invalid headers, HTTP requests may fail.

This configuration option is useful for extending the functionality of the class beyond what is provided.

ProxyAuthorization: The authorization string to be sent to the proxy server.

Similar to the Authorization config, but for proxy authorization. If this config contains a non-empty string, a Proxy-Authorization HTTP request header is added to the request. This header conveys proxy authorization information to the server. If ProxyUser and ProxyPassword are specified, this value is calculated using the algorithm specified by ProxyAuthScheme.

ProxyAuthScheme: The authorization scheme to be used for the proxy.

This is the same as ProxyAuthScheme. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPassword: A password if authentication is to be used for the proxy.

This is the same as ProxyPassword. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPort: Port for the proxy server (default 80).

This is the same as ProxyPort. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyServer: Name or IP address of a proxy server (optional).

This is the same as ProxyServer. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyUser: A user name if authentication is to be used for the proxy.

This is the same as ProxyUser. This setting is provided for use by classs that do not directly expose Proxy properties.

TransferredDataLimit: The maximum number of incoming bytes to be stored by the class.

If TransferredDataLimit is set to 0 (default), no limits are imposed. Otherwise this reflects the maximum number of incoming bytes that can be stored by the class. If TransferredDataLimit is set to 0, no limits are imposed.

UseChunkedEncoding: Enables or Disables HTTP chunked encoding for transfers.

If UseChunkedEncoding is set to true, the class will use HTTP chunked encoding when posting if possible. HTTP chunked encoding allows large files to be sent in chunks instead of all at once. If set to false, the class will not use HTTP chunked encoding. The default value is false.

Note: Some servers (such as the ASP.NET Development Server) may not support chunked encoding.

ChunkSize: Specifies the chunk size in bytes when using chunked encoding.

This is only applicable when UseChunkedEncoding is true. This setting specifies the chunk size in bytes to be used when posting data. The default value is 16384.

UsePlatformHTTPClient: Whether or not to use the platform HTTP client.

If True, the component will use the default HTTP client for the platform (URLConnection in Java or WebRequest in .NET) instead of the internal HTTP implementation. This is important for environments where direct access to sockets is limited or not allowed (as in the Google AppEngine for instance).

UserAgent: Information about the user agent (browser).

This is the value supplied in the HTTP User-Agent header. The default setting is "/n software IPWorks HTTP/S Component - www.nsoftware.com".

Override the default with the name and version of your software.

KerberosSPN: The Service Principal Name for the Kerberos Domain Controller.

If the Service Principal Name on the Kerberos Domain Controller is not the same as the URL that you are authenticating to, the Service Principal Name should be set here.

IPPort Configuration Settings

FirewallAutoDetect: Tells the class whether or not to automatically detect and use firewall system settings, if available.

This is the same as FirewallAutoDetect. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallHost: Name or IP address of firewall (optional).

If a FirewallHost is given, requested connections will be authenticated through the specified firewall when connecting.

If the FirewallHost setting is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, the FirewallHost setting is set to the corresponding address. If the search is not successful, an error is returned.

NOTE: This is the same as FirewallHost. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPassword: Password to be used if authentication is to be used when connecting through the firewall.

If FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallPassword. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPort: The TCP port for the FirewallHost;.

Note that the FirewallPort is set automatically when FirewallType is set to a valid value.

NOTE: This is the same as FirewallPort. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallType: Determines the type of firewall to connect through.

The appropriate values are as follows:

0 | No firewall (default setting).
1 | Connect through a tunneling proxy. FirewallPort is set to 80.
2 | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
3 | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

NOTE: This is the same as FirewallType. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallUser: A user name if authentication is to be used connecting through a firewall.

If the FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the Firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallUser. This setting is provided for use by classs that do not directly expose Firewall properties.

KeepAliveTime: The inactivity time in milliseconds before a TCP keep-alive packet is sent.

When set, TCPKeepAlive will automatically be set to true. By default the operating system will determine the time a connection is idle before a TCP keep-alive packet is sent. This system default if this value is not specified here is 2 hours. In many cases a shorter interval is more useful. Set this value to the desired interval in milliseconds.

Note: This value is not applicable in Java.

KeepAliveInterval: The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.

When set, TCPKeepAlive will automatically be set to true. A TCP keep-alive packet will be sent after a period of inactivity as defined by KeepAliveTime. If no acknowledgement is received from the remote host the keep-alive packet will be re-sent. This setting specifies the interval at which the successive keep-alive packets are sent in milliseconds. This system default if this value is not specified here is 1 second.

Note: This value is not applicable in Java or MAC.

Linger: When set to True, connections are terminated gracefully.

This property controls how a connection is closed. The default is True.

In the case that Linger is True (default), there are two scenarios for determining how long the connection will linger. The first, if LingerTime is 0 (default), the system will attempt to send pending data for a connection until the default IP protocol timeout expires.

In the second scenario, LingerTime is a positive value, the system will attempt to send pending data until the specified LingerTime is reached. If this attempt fails, then the system will reset the connection.

The default behavior (which is also the default mode for stream sockets) might result in a long delay in closing the connection. Although the class returns control immediately, the system could hold system resources until all pending data is sent (even after your application closes).

Setting this property to False forces an immediate disconnection. If you know that the other side has received all the data you sent (by a client acknowledgment, for example), setting this property to False might be the appropriate course of action.

LingerTime: Time in seconds to have the connection linger.

LingerTime is the time, in seconds, to leave the socket connection linger. This value is 0 by default, which means it will use the default IP protocol timeout.

LocalHost: The name of the local host through which connections are initiated or accepted.

The LocalHost setting contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.

In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the class initiate connections (or accept in the case of server classs) only through that interface.

If the class is connected, the LocalHost setting shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).

LocalPort: The TCP port in the local host where the class binds.

This must be set before a connection is attempted. It instructs the class to bind to a specific port (or communication endpoint) in the local machine.

Setting this to 0 (default) enables the system to choose a port at random. The chosen port will be shown by LocalPort after the connection is established.

LocalPort cannot be changed once a connection is made. Any attempt to set this when a connection is active will generate an error.

This; setting is useful when trying to connect to services that require a trusted port in the client side. An example is the remote shell (rsh) service in UNIX systems.

MaxLineLength: The maximum amount of data to accumulate when no EOL is found.

MaxLineLength is the size of an internal buffer, which holds received data while waiting for an EOL string.

If an EOL string is found in the input stream before MaxLineLength bytes are received, the DataIn event is fired with the EOL parameter set to True, and the buffer is reset.

If no EOL is found, and MaxLineLength bytes are accumulated in the buffer, the DataIn event is fired with the EOL parameter set to False, and the buffer is reset.

The minimum value for MaxLineLength is 256 bytes. The default value is 2048 bytes. The maximum value is 65536 bytes.

MaxTransferRate: The transfer rate limit in bytes per second.

This setting can be used to throttle outbound TCP traffic. Set this to the number of bytes to be sent per second. By default this is not set and there is no limit.

TCPKeepAlive: Determines whether or not the keep alive socket option is enabled.

If set to true, the socket's keep-alive option is enabled and keep-alive packets will be sent periodically to maintain the connection. Set KeepAliveTime and KeepAliveInterval to configure the timing of the keep-alive packets.

Note: This value is not applicable in Java.

UseIPv6: Whether or not to use IPv6.

By default, the component expects an IPv4 address for local and remote host properties, and will create an IPv4 socket. To use IPv6 instead, set this to True.

TcpNoDelay: Whether or not to delay when sending packets.

When true, the socket will send all data that is ready to send at once. When false, the socket will send smaller buffered packets of data at small intervals. This is known as the Nagle algorithm.

By default, this config is set to false.

SSL Configuration Settings

ReuseSSLSession: Determines if the SSL session is reused.

If set to true, the component will reuse the context if and only if the following criteria are met:

  • The target host name is the same.
  • The system cache entry has not expired (default timeout is 10 hours).
  • The application process that calls the function is the same.
  • The logon session is the same.
  • The instance of the component is the same.

SSLCipherStrength: The minimum cipher strength used for bulk encryption.

This minimum cipher strength largely dependent on the security modules installed on the system. If the cipher strength specified is not supported, an error will be returned when connections are initiated.

Please note that this setting contains the minimum cipher strength requested from the security library. The actual cipher strength used for the connection is shown by the SSLStatus event.

Use this setting with caution. Requesting a lower cipher strength than necessary could potentially cause serious security vulnerabilities in your application.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

SSLEnabledProtocols: Used to enable/disable the supported security protocols.

Used to enable/disable the supported security protocols.

Not all supported protocols are enabled by default (the value of this setting is 240). If you want more granular control over the enabled protocols, you can set this property to the binary 'OR' of one or more of the following values:

TLS1.2 | 3072 (Hex C00)
TLS1.1 | 768 (Hex 300)
TLS1 | 192 (Hex C0) (Default)
SSL3 | 48 (Hex 30) (Default)
SSL2 | 12 (Hex 0C)

Please note that although a number of sites still support SSL2, it is usually a good idea to disable it because of potential security vulnerabilities.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

TLS 1.1 and TLS1.2 support are only available starting with Windows 7.

SSLProvider: The name of the security provider to use.

Change this setting to use security providers other than the system default.

Use this setting with caution. Disabling SSL security or pointing to the wrong provider could potentially cause serious security vulnerabilities in your application.

The special value "*" (default) picks the default SSL provider defined in the system. On Windows, this is "Microsoft Unified Security Protocol Provider".

SSLSecurityFlags: Flags that control certificate verification.

The following flags are defined (specified in hexadecimal notation). They can be or-ed together to exclude multiple conditions:

0x00000001 | Ignore time validity status of certificate.
0x00000002 | Ignore time validity status of CTL.
0x00000004 | Ignore non-nested certificate times.
0x00000010 | Allow unknown Certificate Authority.
0x00000020 | Ignore wrong certificate usage.
0x00000100 | Ignore unknown certificate revocation status.
0x00000200 | Ignore unknown CTL signer revocation status.
0x00000400 | Ignore unknown Certificate Authority revocation status.
0x00000800 | Ignore unknown Root revocation status.
0x00008000 | Allow test Root certificate.
0x00004000 | Trust test Root certificate.
0x80000000 | Ignore non-matching CN (certificate CN not-matching server name).

This functionality is currently not available when the provider is OpenSSL.

OpenSSLCADir: The path to a directory containing CA certificates.

This functionality is available only when the provider is OpenSSL.

The path set by this property should point to a directory containing CA certificates in PEM format. The files each contain one CA certificate. The files are looked up by the CA subject name hash value, which must hence be available. If more than one CA certificate with the same name hash value exist, the extension must be different (e.g. 9d66eef0.0, 9d66eef0.1 etc). OpenSSL recommends to use the c_rehash utility to create the necessary links. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCAFile: Name of the file containing the list of CA's trusted by your application.

This functionality is available only when the provider is OpenSSL.

The file set by this property should contain a list of CA certificates in PEM format. The file can contain several CA certificates identified by

-----BEGIN CERTIFICATE-----

... (CA certificate in base64 encoding) ...

-----END CERTIFICATE-----

sequences. Before, between, and after the certificates text is allowed which can be used e.g. for descriptions of the certificates. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCipherList: A string that controls the ciphers to be used by SSL.

This functionality is available only when the provider is OpenSSL.

The format of this string is described in the OpenSSL man page ciphers(1) section "CIPHER LIST FORMAT". Please refer to it for details. The default string "DEFAULT" is determined at compile time and is normally equivalent to "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH".

OpenSSLPrngSeedData: The data to seed the pseudo random number generator (PRNG).

This functionality is available only when the provider is OpenSSL.

By default OpenSSL uses the device file "/dev/urandom" to seed the PRNG and setting OpenSSLPrngSeedData is not required. If set, the string specified is used to seed the PRNG.

SSLAlgorithmList: A string that controls the cipher algorithms to be used by SSL.

This configuration option takes a semicolon (;) delimited list of cipher algorithms to specify what algorithms may be used by SSL. This option can be used in conjunction with SSLEnabledProtocols to control which ciphers are used.

For example:

  obj.Config("SSLEnabledProtocols=3027"); // TLS1.2  (it supports SHA_256)
  obj.Config("SSLAlgorithmList=CALG_SHA_256;CALG_MD5");
Possible values include:
  • CALG_3DES
  • CALG_3DES_112
  • CALG_AES
  • CALG_AES_128
  • CALG_AES_192
  • CALG_AES_256
  • CALG_AGREEDKEY_ANY
  • CALG_CYLINK_MEK
  • CALG_DES
  • CALG_DESX
  • CALG_DH_EPHEM
  • CALG_DH_SF
  • CALG_DSS_SIGN
  • CALG_ECDH
  • CALG_ECDSA
  • CALG_ECMQV
  • CALG_HASH_REPLACE_OWF
  • CALG_HUGHES_MD5
  • CALG_HMAC
  • CALG_KEA_KEYX
  • CALG_MAC
  • CALG_MD2
  • CALG_MD4
  • CALG_MD5
  • CALG_NO_SIGN
  • CALG_OID_INFO_CNG_ONLY
  • CALG_OID_INFO_PARAMETERS
  • CALG_PCT1_MASTER
  • CALG_RC2
  • CALG_RC4
  • CALG_RC5
  • CALG_RSA_KEYX
  • CALG_RSA_SIGN
  • CALG_SCHANNEL_ENC_KEY
  • CALG_SCHANNEL_MAC_KEY
  • CALG_SCHANNEL_MASTER_HASH
  • CALG_SEAL
  • CALG_SHA
  • CALG_SHA1
  • CALG_SHA_256
  • CALG_SHA_384
  • CALG_SHA_512
  • CALG_SKIPJACK
  • CALG_SSL2_MASTER
  • CALG_SSL3_MASTER
  • CALG_SSL3_SHAMD5
  • CALG_TEK
  • CALG_TLS1_MASTER
  • CALG_TLS1PRF

This option is only valid in Windows.

Socket Configuration Settings

AbsoluteTimeout: Determines whether timeouts are inactivity timeouts or absolute timeouts.

If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.

Note: This option is not valid for UDP ports.

FirewallData: Used to send extra data to the firewall.

When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).

InBufferSize: The size in bytes of the incoming queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be receiving. Increasing the value of the InBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

OutBufferSize: The size in bytes of the outgoing queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be sending. Increasing the value of the OutBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

Base Configuration Settings

SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

Base Configuration Settings

CodePage: The system code page used for Unicode to Multibyte translations.

The default code page is the Active Code Page (0).

The following is a list of valid code page identifiers:

Identifier | Name
037 | IBM EBCDIC - U.S./Canada
437 | OEM - United States
500 | IBM EBCDIC - International
708 | Arabic - ASMO 708
709 | Arabic - ASMO 449+, BCON V4
710 | Arabic - Transparent Arabic
720 | Arabic - Transparent ASMO
737 | OEM - Greek (formerly 437G)
775 | OEM - Baltic
850 | OEM - Multilingual Latin I
852 | OEM - Latin II
855 | OEM - Cyrillic (primarily Russian)
857 | OEM - Turkish
858 | OEM - Multlingual Latin I + Euro symbol
860 | OEM - Portuguese
861 | OEM - Icelandic
862 | OEM - Hebrew
863 | OEM - Canadian-French
864 | OEM - Arabic
865 | OEM - Nordic
866 | OEM - Russian
869 | OEM - Modern Greek
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2)
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875 | IBM EBCDIC - Modern Greek
932 | ANSI/OEM - Japanese, Shift-JIS
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore)
949 | ANSI/OEM - Korean (Unified Hangeul Code)
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026 | IBM EBCDIC - Turkish (Latin-5)
1047 | IBM EBCDIC - Latin 1/Open System
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141 | IBM EBCDIC - Germany (20273 + Euro symbol)
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144 | IBM EBCDIC - Italy (20280 + Euro symbol)
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147 | IBM EBCDIC - France (20297 + Euro symbol)
1148 | IBM EBCDIC - International (500 + Euro symbol)
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 | Unicode UCS-2 Big-Endian
1250 | ANSI - Central European
1251 | ANSI - Cyrillic
1252 | ANSI - Latin I
1253 | ANSI - Greek
1254 | ANSI - Turkish
1255 | ANSI - Hebrew
1256 | ANSI - Arabic
1257 | ANSI - Baltic
1258 | ANSI/OEM - Vietnamese
1361 | Korean (Johab)
10000 | MAC - Roman
10001 | MAC - Japanese
10002 | MAC - Traditional Chinese (Big5)
10003 | MAC - Korean
10004 | MAC - Arabic
10005 | MAC - Hebrew
10006 | MAC - Greek I
10007 | MAC - Cyrillic
10008 | MAC - Simplified Chinese (GB 2312)
10010 | MAC - Romania
10017 | MAC - Ukraine
10021 | MAC - Thai
10029 | MAC - Latin II
10079 | MAC - Icelandic
10081 | MAC - Turkish
10082 | MAC - Croatia
12000 | Unicode UCS-4 Little-Endian
12001 | Unicode UCS-4 Big-Endian
20000 | CNS - Taiwan
20001 | TCA - Taiwan
20002 | Eten - Taiwan
20003 | IBM5550 - Taiwan
20004 | TeleText - Taiwan
20005 | Wang - Taiwan
20105 | IA5 IRV International Alphabet No. 5 (7-bit)
20106 | IA5 German (7-bit)
20107 | IA5 Swedish (7-bit)
20108 | IA5 Norwegian (7-bit)
20127 | US-ASCII (7-bit)
20261 | T.61
20269 | ISO 6937 Non-Spacing Accent
20273 | IBM EBCDIC - Germany
20277 | IBM EBCDIC - Denmark/Norway
20278 | IBM EBCDIC - Finland/Sweden
20280 | IBM EBCDIC - Italy
20284 | IBM EBCDIC - Latin America/Spain
20285 | IBM EBCDIC - United Kingdom
20290 | IBM EBCDIC - Japanese Katakana Extended
20297 | IBM EBCDIC - France
20420 | IBM EBCDIC - Arabic
20423 | IBM EBCDIC - Greek
20424 | IBM EBCDIC - Hebrew
20833 | IBM EBCDIC - Korean Extended
20838 | IBM EBCDIC - Thai
20866 | Russian - KOI8-R
20871 | IBM EBCDIC - Icelandic
20880 | IBM EBCDIC - Cyrillic (Russian)
20905 | IBM EBCDIC - Turkish
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932 | JIS X 0208-1990 & 0121-1990
20936 | Simplified Chinese (GB2312)
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027 | Extended Alpha Lowercase
21866 | Ukrainian (KOI8-U)
28591 | ISO 8859-1 Latin I
28592 | ISO 8859-2 Central Europe
28593 | ISO 8859-3 Latin 3
28594 | ISO 8859-4 Baltic
28595 | ISO 8859-5 Cyrillic
28596 | ISO 8859-6 Arabic
28597 | ISO 8859-7 Greek
28598 | ISO 8859-8 Hebrew
28599 | ISO 8859-9 Latin 5
28605 | ISO 8859-15 Latin 9
29001 | Europa 3
38598 | ISO 8859-8 Hebrew
50220 | ISO 2022 Japanese with no halfwidth Katakana
50221 | ISO 2022 Japanese with halfwidth Katakana
50222 | ISO 2022 Japanese JIS X 0201-1989
50225 | ISO 2022 Korean
50227 | ISO 2022 Simplified Chinese
50229 | ISO 2022 Traditional Chinese
50930 | Japanese (Katakana) Extended
50931 | US/Canada and Japanese
50933 | Korean Extended and Korean
50935 | Simplified Chinese Extended and Simplified Chinese
50936 | Simplified Chinese
50937 | US/Canada and Traditional Chinese
50939 | Japanese (Latin) Extended and Japanese
51932 | EUC - Japanese
51936 | EUC - Simplified Chinese
51949 | EUC - Korean
51950 | EUC - Traditional Chinese
52936 | HZ-GB2312 Simplified Chinese
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte)
57002 | ISCII Devanagari
57003 | ISCII Bengali
57004 | ISCII Tamil
57005 | ISCII Telugu
57006 | ISCII Assamese
57007 | ISCII Oriya
57008 | ISCII Kannada
57009 | ISCII Malayalam
57010 | ISCII Gujarati
57011 | ISCII Punjabi
65000 | Unicode UTF-7
65001 | Unicode UTF-8

The following is a list of valid code page identifiers for Mac OS only:

Identifier | Name
1 | ASCII
2 | NEXTSTEP
3 | JapaneseEUC
4 | UTF8
5 | ISOLatin1
6 | Symbol
7 | NonLossyASCII
8 | ShiftJIS
9 | ISOLatin2
10 | Unicode
11 | WindowsCP1251
12 | WindowsCP1252
13 | WindowsCP1253
14 | WindowsCP1254
15 | WindowsCP1250
21 | ISO2022JP
30 | MacOSRoman
10 | UTF16String
0x90000100 | UTF16BigEndian
0x94000100 | UTF16LittleEndian
0x8c000100 | UTF32String
0x98000100 | UTF32BigEndian
0x9c000100 | UTF32LittleEndian
65536 | Proprietary


BankTransfer Errors

Trappable Errors (BankTransfer Class)

OFX Errors

2000 Required field missing from server response.
2001 OFX server error. Description follows.
2002 Invalid OFX response.
2003 OFX response contains unknown element tags.

The class may also return one of the following error codes, which are inherited from other classes.

XMLp Errors

101 Invalid attribute index.
102 No attributes available.
103 Invalid namespace index.
104 No namespaces available.
105 Invalid element index.
106 No elements available.
107 Attribute does not exist.
201 Unbalanced element tag.
202 Unknown element prefix (can't find namespace).
203 Unknown attribute prefix (can't find namespace).
204 Invalid XML markup.
205 Invalid end state for parser.
206 Document contains unbalanced elements.
207 Invalid XPath.
208 No such child.
209 Top element does not match start of path.
210 DOM tree unavailable (set BuildDOM to true and reparse).
302 Can't open file.

HTTP Errors

118 Firewall Error. Error description contains detailed message.
143 Busy executing current method.
151 HTTP protocol error. The error message has the server response.
152 No server specified in URL
153 Specified URLScheme is invalid.
155 Range operation is not supported by server.
156 Invalid cookie index (out of range).
301 Interrupted.
302 Can't open AttachedFile.

The class may also return one of the following error codes, which are inherited from other classes.

IPPort Errors

100 You cannot change the RemotePort at this time. A connection is in progress.
101 You cannot change the RemoteHost (Server) at this time. A connection is in progress.
102 The RemoteHost address is invalid (0.0.0.0).
104 Already connected. If you want to reconnect, close the current connection first.
106 You cannot change the LocalPort at this time. A connection is in progress.
107 You cannot change the LocalHost at this time. A connection is in progress.
112 You cannot change MaxLineLength at this time. A connection is in progress.
116 RemotePort cannot be zero. Please specify a valid service port number.
117 Cannot change UseConnection option while the class is Active.
135 Operation would block.
201 Timeout.
211 Action impossible in control's present state.
212 Action impossible while connected.
213 Action impossible while listening.
303 Could not open file.
434 Unable to convert string to selected CodePage
1105 Already connecting. If you want to reconnect, close the current connection first.
1117 You need to connect first.
1119 You cannot change the LocalHost at this time. A connection is in progress.
1120 Connection dropped by remote host.

SSL Errors

270 Cannot load specified security library.
271 Cannot open certificate store.
272 Cannot find specified certificate.
273 Cannot acquire security credentials.
274 Cannot find certificate chain.
275 Cannot verify certificate chain.
276 Error during handshake.
280 Error verifying certificate.
281 Could not find client certificate.
282 Could not find server certificate.
283 Error encrypting data.
284 Error decrypting data.

TCP/IP Errors

10004 [10004] Interrupted system call.
10009 [10009] Bad file number.
10013 [10013] Access denied.
10014 [10014] Bad address.
10022 [10022] Invalid argument.
10024 [10024] Too many open files.
10035 [10035] Operation would block.
10036 [10036] Operation now in progress.
10037 [10037] Operation already in progress.
10038 [10038] Socket operation on non-socket.
10039 [10039] Destination address required.
10040 [10040] Message too long.
10041 [10041] Protocol wrong type for socket.
10042 [10042] Bad protocol option.
10043 [10043] Protocol not supported.
10044 [10044] Socket type not supported.
10045 [10045] Operation not supported on socket.
10046 [10046] Protocol family not supported.
10047 [10047] Address family not supported by protocol family.
10048 [10048] Address already in use.
10049 [10049] Can't assign requested address.
10050 [10050] Network is down.
10051 [10051] Network is unreachable.
10052 [10052] Net dropped connection or reset.
10053 [10053] Software caused connection abort.
10054 [10054] Connection reset by peer.
10055 [10055] No buffer space available.
10056 [10056] Socket is already connected.
10057 [10057] Socket is not connected.
10058 [10058] Can't send after socket shutdown.
10059 [10059] Too many references, can't splice.
10060 [10060] Connection timed out.
10061 [10061] Connection refused.
10062 [10062] Too many levels of symbolic links.
10063 [10063] File name too long.
10064 [10064] Host is down.
10065 [10065] No route to host.
10066 [10066] Directory not empty
10067 [10067] Too many processes.
10068 [10068] Too many users.
10069 [10069] Disc Quota Exceeded.
10070 [10070] Stale NFS file handle.
10071 [10071] Too many levels of remote in path.
10091 [10091] Network subsystem is unavailable.
10092 [10092] WINSOCK DLL Version out of range.
10093 [10093] Winsock not loaded yet.
11001 [11001] Host not found.
11002 [11002] Non-authoritative 'Host not found' (try again or check DNS setup).
11003 [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP.
11004 [11004] Valid name, no data record (check DNS setup).


BillPayment Class

BillPayment Class

Properties Methods Events Configuration Settings Errors

The BillPayment control is a single component that supports the SignOn and Payment functions of Open Financial Exchange, as described by OFX Specification 1.x and 2.x.

Syntax

BillPayment

Remarks

Payment requests can be used to schedule individual payments and to modify or delete payments if necessary.

To use the BillPayment class, first provide OFXAppId, and OFXAppVersion properties, your FI information (by setting the FIOrganization, FIId and FIUrl properties), your login information (OFXUser, OFXPassword).

Next:

  • set Payment (PaymentFromBankId, PaymentFromAccountId, and PaymentFromAccountType properties to the values corresponding to the account from which you wish to pay the bill, PaymentAmount to the desired amount, PaymentDateDue to the date payment has to be processed);
  • set Payee (by providing either PayeeId or: payee full information (via PayeeAggregate or by setting each payee property such as PayeeName, PayeeAddr1, PayeePhone, PayeeListId (if assigned by the server) and PayeeAccount to your account id with that biller;

Finally, call the PayBill method. If the biller does not exist in the payee list, the payment request will also set up that payee adding it to your payee list.

Upon successful response, the PaymentId, PaymentStatus and PaymentDateProcessed properties will be populated indicating the status of your payment. If the payee didn't exist in your payee list, and if your FI supports assigning id to payees, the PayeeId and PayeeListId assigned to that payer might also be returned in the server response.

Between the time a payment is scheduled and the time the server processes the payment, the user can request changes to the parameters of that payment. For example, the PaymentAmount or PaymentDateDue of the payment can be modified. To modify a scheduled payment identified by PaymentId, the ModifyPayment method can be called where the PaymentId identifies the targeted payment. When this method is called, the full contents of the payment request must be specified, including both modified and unmodified data. All data can be modified except PayeeName and PayeeId. Depending on the server, the response might include the date on which server actually processed this payment, or if it failed due to insufficient funds.

To cancel a scheduled payment identified by PaymentId, the CancelPayment method must be called.

Obtaining the status for a payment identified by PaymentId can be done by calling the GetStatus method.

Bill payments are subject to synchronization which can be done by calling the SynchronizePayments method.

Property List

The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

FIId | Financial institution identifier.
FIOrganization | Financial institution organization name.
FirewallAutoDetect | This property tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallType | This property determines the type of firewall to connect through.
FirewallHost | This property contains the name or IP address of firewall (optional).
FirewallPassword | This property contains a password if authentication is to be used when connecting through the firewall.
FirewallPort | This property contains the TCP port for the firewall Host .
FirewallUser | This property contains a user name if authentication is to be used connecting through a firewall.
FIUrl | Financial institution URL.
LostSync | Whether the token in the synchronization request is older.
OFXAccessKey | Access key value received after a MFA authentication in a previous signon.
OFXAppId | OFX application identifier.
OFXAppVersion | OFX application version.
OFXPassword | User's password.
OFXRequest | The current OFX request aggregate.
OFXResponse | The current OFX response aggregate.
OFXUser | User's id.
OFXVersion | OFX API version.
PayeeAccount | User's account number with the payee.
PayeeAddr1 | Payee's address line 1.
PayeeAddr2 | Payee's address line 2.
PayeeAddr3 | Payee's address line 3.
PayeeAggregate | Wrapper for payee details.
PayeeCity | Payee's city.
PayeeCountry | Payee's country.
PayeeDaysToPay | Minimum number of business days required to complete the payment transaction to this payee.
PayeeId | Server-assigned payee identifier.
PayeeIdScope | Scope of the payee Id .
PayeeListId | Server-assigned payee list record ID for this payee.
PayeeName | Name of the payee to whom the given Id or ListId corresponds.
PayeePhone | Payee's phone.
PayeePostalCode | Payee's postal code.
PayeeState | Payee's state This is required to be provided in : a payment request if payee detailed information is used to identify the payee (i.
PaymentAggregate | Wrapper for a payment details.
PaymentAmount | Payment amount.
PaymentBillRef | Biller-supplied reference information when paying a bill, if available.
PaymentCheckNumber | Check number assigned by the server to this payment.
PaymentCurrencyCode | Default currency code for this transaction.
PaymentDateDue | Processing date requested by user for the payment to be sent.
PaymentDateProcessed | Payment processing date.
PaymentFromAccountId | Account number from which the money for this payment is drawn.
PaymentFromAccountType | Indicates the type of account from which the money for this payment is drawn.
PaymentFromBankId | Number that identifies the bank where the money is to be withdrawn.
PaymentId | Transaction Id assigned by the server to the payment.
PaymentMemo | Memo attached to this payment from the customer to payee.
PaymentPayeeAccount | User's account number with the payee this payment was sent to.
PaymentPayeeAggregate | Wrapper for the payee details this payment was sent to.
PaymentPayeeId | Server-assigned identifier to the payee this payment was sent to.
PaymentPayeeListId | Server-assigned payee list record ID for the payee this payment was sent to.
PaymentStatus | Payment processing status.
PaymentToAccountId | Account number to which the money for this payment is sent.
PaymentToAccountType | Indicates the type of account to which this payment is sent.
PaymentToBankId | Number that identifies the bank where the money is to be deposited.
PaymentTxType | Transaction type performed on the payment being synchronized.
SSLAcceptServerCertEncoded | The certificate (PEM/base64 encoded).
SSLCertEncoded | The certificate (PEM/base64 encoded).
SSLCertStore | The name of the certificate store for the client certificate.
SSLCertStorePassword | If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.
SSLCertStoreType | The type of certificate store for this certificate.
SSLCertSubject | The subject of the certificate used for client authentication.
SSLServerCertEncoded | The certificate (PEM/base64 encoded).
SyncPayeeCount | The number of records in the SyncPayee arrays.
SyncPayeeAccount | User's account number with the payee.
SyncPayeeAddr1 | Payee's address line 1.
SyncPayeeAddr2 | Payee's address line 2.
SyncPayeeAddr3 | Payee's address line 3.
SyncPayeeAggregate | Wrapper for payee details.
SyncPayeeCity | Payee's city.
SyncPayeeCountry | Payee's country.
SyncPayeeDaysToPay | Minimum number of business days required to complete the payment transaction to this payee.
SyncPayeeId | Server-assigned payee identifier.
SyncPayeeIdScope | Scope of the payee Id .
SyncPayeeListId | Server-assigned payee list record ID for this payee.
SyncPayeeName | Name of the payee to whom the given Id or ListId corresponds.
SyncPayeePhone | Payee's phone.
SyncPayeePostalCode | Payee's postal code.
SyncPayeeState | Payee's state This is required to be provided in : a payment request if payee detailed information is used to identify the payee (i.
SyncPayeeTxType | Transaction type performed on the payee being synchronized.
SyncPaymentCount | The number of records in the SyncPayment arrays.
SyncPaymentAggregate | Wrapper for a payment details.
SyncPaymentAmount | Payment amount.
SyncPaymentBillRef | Biller-supplied reference information when paying a bill, if available.
SyncPaymentCheckNumber | Check number assigned by the server to this payment.
SyncPaymentCurrencyCode | Default currency code for this transaction.
SyncPaymentDateDue | Processing date requested by user for the payment to be sent.
SyncPaymentDateProcessed | Payment processing date.
SyncPaymentId | Transaction Id assigned by the server to the payment.
SyncPaymentMemo | Memo attached to this payment from the customer to payee.
SyncPaymentPayeeAccount | User's account number with the payee this payment was sent to.
SyncPaymentPayeeAggregate | Wrapper for the payee details this payment was sent to.
SyncPaymentPayeeId | Server-assigned identifier to the payee this payment was sent to.
SyncPaymentPayeeListId | Server-assigned payee list record ID for the payee this payment was sent to.
SyncPaymentStatus | Payment processing status.
SyncPaymentTxType | Transaction type performed on the payment being synchronized.
Timeout | A timeout for the component.

Method List

The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

AddPayee | Add a payee to server's payee list.
CancelPayment | Cancels a scheduled bill payment.
Config | Sets or retrieves a configuration setting.
DeletePayee | Deletes a payee identified by ListId from the server payee list.
GetStatus | Obtains the current processing status of a payment.
ModifyPayee | Modifies a payee identified by ListId that already exists in the payee list.
ModifyPayment | Modifies a scheduled payment.
PayBill | Pays a bill to a given payee.
Reset | Reset the internal state of the component and all properties to their default values.
SynchronizePayees | Synchronizes payees on the client side with payees on record on the server side.
SynchronizePayments | Synchronizes bills paid on the client side with paid bills on record on the server side.

Event List

The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ConnectionStatus | Fired to indicate changes in connection state.
Error | Information about errors during data delivery.
SSLServerAuthentication | Fired after the server presents its certificate to the client.
SSLStatus | Shows the progress of the secure connection.
SyncPayees | Fired for each payee included in the synchronization response.
SyncPayments | Fired for each payment transaction included in the synchronization response.

Configuration Settings

The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

CurrencyFormat | The format to be used for returning currency values.
OFXDateFormat | The date format as required by OFX FI server.
DateFormat | The format to be used for input and output dates.
GetResponseVar | Parses additional information out of the response.
NewPassword | New password for the current OFX user.
OFXLog | Log file for the OFX transaction.
ServerMessage | Server message if a warning or other information returned.
ClientUId | Unique ID identifying OFX Client.
UserCred1A | Additional user credential required by server.
UserCred2A | Additional user credential required by server.
AuthToken | Authentication token required for this signon session only.
CorrectFITID[i] | The FITID of a previously sent transaction corrected by the current one.
CorrectAction[i] | The action taken to a previously sent transaction corrected by the current one.
AcceptEncoding | Used to tell the server which types of content encodings the client supports.
AllowHTTPCompression | This property enables HTTP compression for receiving data.
Authorization | The Authorization string to be sent to the server.
BytesTransferred | Contains the number of bytes transferred in the response data.
EncodeURL | If set to true the URL will be encoded by the component.
FollowRedirects | Determines what happens when the server issues a redirect.
GetOn302Redirect | If set to true the component will perform a GET on the new location.
HTTPVersion | The version of HTTP used by the component.
IfModifiedSince | A date determining the maximum age of the desired document.
KeepAlive | Determines whether the HTTP connection is closed after completion of the request.
MaxRedirectAttempts | Limits the number of redirects that are followed in a request.
OtherHeaders | Other headers as determined by the user (optional).
ProxyAuthorization | The authorization string to be sent to the proxy server.
ProxyAuthScheme | The authorization scheme to be used for the proxy.
ProxyPassword | A password if authentication is to be used for the proxy.
ProxyPort | Port for the proxy server (default 80).
ProxyServer | Name or IP address of a proxy server (optional).
ProxyUser | A user name if authentication is to be used for the proxy.
TransferredDataLimit | The maximum number of incoming bytes to be stored by the component.
UseChunkedEncoding | Enables or Disables HTTP chunked encoding for transfers.
ChunkSize | Specifies the chunk size in bytes when using chunked encoding.
UsePlatformHTTPClient | Whether or not to use the platform HTTP client.
UserAgent | Information about the user agent (browser).
KerberosSPN | The Service Principal Name for the Kerberos Domain Controller.
FirewallAutoDetect | Tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallHost | Name or IP address of firewall (optional).
FirewallPassword | Password to be used if authentication is to be used when connecting through the firewall.
FirewallPort | The TCP port for the FirewallHost;.
FirewallType | Determines the type of firewall to connect through.
FirewallUser | A user name if authentication is to be used connecting through a firewall.
KeepAliveTime | The inactivity time in milliseconds before a TCP keep-alive packet is sent.
KeepAliveInterval | The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.
Linger | When set to True, connections are terminated gracefully.
LingerTime | Time in seconds to have the connection linger.
LocalHost | The name of the local host through which connections are initiated or accepted.
LocalPort | The TCP port in the local host where the component binds.
MaxLineLength | The maximum amount of data to accumulate when no EOL is found.
MaxTransferRate | The transfer rate limit in bytes per second.
TCPKeepAlive | Determines whether or not the keep alive socket option is enabled.
UseIPv6 | Whether or not to use IPv6.
TcpNoDelay | Whether or not to delay when sending packets.
ReuseSSLSession | Determines if the SSL session is reused.
SSLCipherStrength | The minimum cipher strength used for bulk encryption.
SSLEnabledProtocols | Used to enable/disable the supported security protocols.
SSLProvider | The name of the security provider to use.
SSLSecurityFlags | Flags that control certificate verification.
OpenSSLCADir | The path to a directory containing CA certificates.
OpenSSLCAFile | Name of the file containing the list of CA's trusted by your application.
OpenSSLCipherList | A string that controls the ciphers to be used by SSL.
OpenSSLPrngSeedData | The data to seed the pseudo random number generator (PRNG).
SSLAlgorithmList | A string that controls the cipher algorithms to be used by SSL.
AbsoluteTimeout | Determines whether timeouts are inactivity timeouts or absolute timeouts.
FirewallData | Used to send extra data to the firewall.
InBufferSize | The size in bytes of the incoming queue of the socket.
OutBufferSize | The size in bytes of the outgoing queue of the socket.
CodePage | The system code page used for Unicode to Multibyte translations.


FIId Property

FIId Property (BillPayment Class)

Financial institution identifier.

Syntax

char* GetFIId();

int SetFIId(char* lpszFIId);

Default Value

""

Remarks

FIId holds the identifier of the OFX Financial Institution and is used during signon. This value is unique for each organization name.

Data Type

String


FIOrganization Property

FIOrganization Property (BillPayment Class)

Financial institution organization name.

Syntax

char* GetFIOrganization();

int SetFIOrganization(char* lpszFIOrganization);

Default Value

""

Remarks

This is the name of the OFX Financial Institution and is used during signon. Each organization has a unique FIId that must also be used at signon.

Data Type

String


FirewallAutoDetect Property

FirewallAutoDetect Property (BillPayment Class)

This property tells the component whether or not to automatically detect and use firewall system settings, if available.

Syntax

int GetFirewallAutoDetect();

int SetFirewallAutoDetect(int bFirewallAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use firewall system settings, if available.

Data Type

Boolean


FirewallType Property

FirewallType Property (BillPayment Class)

This property determines the type of firewall to connect through.

Syntax

int GetFirewallType();

int SetFirewallType(int iFirewallType);

Possible Values

  FW_NONE(0),
  FW_TUNNEL(1),
  FW_SOCKS4(2),
  FW_SOCKS5(3)

Default Value

0

Remarks

This property determines the type of firewall to connect through. The applicable values are the following:

fwNone (0) | No firewall (default setting).
fwTunnel (1) | Connect through a tunneling proxy. FirewallPort is set to 80.
fwSOCKS4 (2) | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
fwSOCKS5 (3) | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

Data Type

Integer


FirewallHost Property

FirewallHost Property (BillPayment Class)

This property contains the name or IP address of firewall (optional).

Syntax

char* GetFirewallHost();

int SetFirewallHost(char* lpszFirewallHost);

Default Value

""

Remarks

This property contains the name or IP address of firewall (optional). If a FirewallHost is given, the requested connections will be authenticated through the specified firewall when connecting.

If this property is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, this property is set to the corresponding address. If the search is not successful, the class fails with an error.

Data Type

String


FirewallPassword Property

FirewallPassword Property (BillPayment Class)

This property contains a password if authentication is to be used when connecting through the firewall.

Syntax

char* GetFirewallPassword();

int SetFirewallPassword(char* lpszFirewallPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used when connecting through the firewall. If FirewallHost is specified, the FirewallUser and FirewallPassword properties are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

Data Type

String


FirewallPort Property

FirewallPort Property (BillPayment Class)

This property contains the TCP port for the firewall Host .

Syntax

int GetFirewallPort();

int SetFirewallPort(int lFirewallPort);

Default Value

0

Remarks

This property contains the TCP port for the firewall FirewallHost. See the description of the FirewallHost property for details.

Note that this property is set automatically when FirewallType is set to a valid value. See the description of the FirewallType property for details.

Data Type

Long


FirewallUser Property

FirewallUser Property (BillPayment Class)

This property contains a user name if authentication is to be used connecting through a firewall.

Syntax

char* GetFirewallUser();

int SetFirewallUser(char* lpszFirewallUser);

Default Value

""

Remarks

This property contains a user name if authentication is to be used connecting through a firewall. If the FirewallHost is specified, this property and FirewallPassword properties are used to connect and authenticate to the given Firewall. If the authentication fails, the class fails with an error.

Data Type

String


FIUrl Property

FIUrl Property (BillPayment Class)

Financial institution URL.

Syntax

char* GetFIUrl();

int SetFIUrl(char* lpszFIUrl);

Default Value

""

Remarks

This is the URL of the OFX Financial Institution to which the class will signon and fetch data.

Data Type

String


LostSync Property

LostSync Property (BillPayment Class)

Whether the token in the synchronization request is older.

Syntax

int GetLostSync();

Default Value

FALSE

Remarks

The LostSync will be returned in the server response after a synchronization request has been sent (when the Synchronize method was called). This indicates whether the Token in the synchronization request is older than the earliest entry in the server's history table. If True, some responses have been lost. Otherwise, the token in the synchronization request is newer than or matches a token in the server's history table.

This property is read-only and not available at design time.

Data Type

Boolean


OFXAccessKey Property

OFXAccessKey Property (BillPayment Class)

Access key value received after a MFA authentication in a previous signon.

Syntax

char* GetOFXAccessKey();

int SetOFXAccessKey(char* lpszOFXAccessKey);

Default Value

""

Remarks

This might be returned in the server response after a MFA authentication (i.e. MFA challenge question/answer pairs were validated by the server when the SendChallengeAnswers method in FIProfile class was called).

To prevent servers from needing to authenticate the user in each OFX request, the server may respond to a correct set of challenge answers with a OFXAccessKey on the signon response (when the SendChallengeAnswers method in FIProfile class was called).

The server determines the contents of this optional element. On each subsequent signon request, the client will send the last value of the OFXAccessKey it has received, even after the end of the current session. The server has the option to respond to any subsequent request with a 3000 error code, requiring the client to send the MFA challenge questions request again (by calling the RequestChallengeQuestions method in FIProfile class). This allows the server to determine the lifetime of the OFXAccessKey.

Data Type

String


OFXAppId Property

OFXAppId Property (BillPayment Class)

OFX application identifier.

Syntax

char* GetOFXAppId();

int SetOFXAppId(char* lpszOFXAppId);

Default Value

""

Remarks

This is the unique identifier of the user's OFX application.

Data Type

String


OFXAppVersion Property

OFXAppVersion Property (BillPayment Class)

OFX application version.

Syntax

char* GetOFXAppVersion();

int SetOFXAppVersion(char* lpszOFXAppVersion);

Default Value

""

Remarks

This is the version of the user's OFX application.

Data Type

String


OFXPassword Property

OFXPassword Property (BillPayment Class)

User's password.

Syntax

char* GetOFXPassword();

int SetOFXPassword(char* lpszOFXPassword);

Default Value

""

Remarks

This is the password used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXRequest Property

OFXRequest Property (BillPayment Class)

The current OFX request aggregate.

Syntax

char* GetOFXRequest();

Default Value

""

Remarks

Polling OFXRequest will cause the class to generate and return an OFX request aggregate.

This property is read-only and not available at design time.

Data Type

String


OFXResponse Property

OFXResponse Property (BillPayment Class)

The current OFX response aggregate.

Syntax

char* GetOFXResponse();

int SetOFXResponse(char* lpszOFXResponse);

Default Value

""

Remarks

This can be used especially for debugging purposes. This can also be used to parse an OFX Response. To do so, you can set the OFX Response data (in string format) to OFXResponse. Once set, the supplied OFX data will be parsed and will populate the same read-only properties that ReadOFXDataFile does.

This property is not available at design time.

Data Type

String


OFXUser Property

OFXUser Property (BillPayment Class)

User's id.

Syntax

char* GetOFXUser();

int SetOFXUser(char* lpszOFXUser);

Default Value

""

Remarks

This is the UserID used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXVersion Property

OFXVersion Property (BillPayment Class)

OFX API version.

Syntax

char* GetOFXVersion();

int SetOFXVersion(char* lpszOFXVersion);

Default Value

"102"

Remarks

This is the OFX API version used in all requests sent to your FI server (such as 1.0.2, 2.0.1, 2.1.1, etc.). Valid values: 102, 103, 200, 201, 203, 210, 211. Note that not all OFX Versions are supported by FIs.

Note: If the OFXVersion is set to 1x, the request and the response are going to be in SGML format. If set to 2x, the request will be in XML format (the response format depends on the FI's server capabilities). Note that if the OFX FI server does not support version 2x, the server will return an error (such as 'Bad Request').

Certain services are available only for a specific OFX version. For example, image download, is available only in OFX version 2.1.1.

Data Type

String


PayeeAccount Property

PayeeAccount Property (BillPayment Class)

User's account number with the payee.

Syntax

char* GetPayeeAccount();

int SetPayeeAccount(char* lpszPayeeAccount);

Default Value

""

Remarks

User's account number with the payee. This string uniquely identifies the customer in the payee (biller) system.

This is optional and applicable only when the PayeeId is not provided in the request. In this case, the payee detailed information is used to identify the payee in a payment request, or when adding or modifying a payee.

Data Type

String


PayeeAddr1 Property

PayeeAddr1 Property (BillPayment Class)

Payee's address line 1.

Syntax

char* GetPayeeAddr1();

int SetPayeeAddr1(char* lpszPayeeAddr1);

Default Value

""

Remarks

Payee's address line 1.

This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

Data Type

String


PayeeAddr2 Property

PayeeAddr2 Property (BillPayment Class)

Payee's address line 2.

Syntax

char* GetPayeeAddr2();

int SetPayeeAddr2(char* lpszPayeeAddr2);

Default Value

""

Remarks

Payee's address line 2.

This is optional and applicable only when the PayeeId is not provided in the request. In this case, the payee detailed information is used to identify the payee in a payment request, or when adding or modifying a payee.

Data Type

String


PayeeAddr3 Property

PayeeAddr3 Property (BillPayment Class)

Payee's address line 3.

Syntax

char* GetPayeeAddr3();

int SetPayeeAddr3(char* lpszPayeeAddr3);

Default Value

""

Remarks

Payee's address line 3.

This is optional and applicable only when the PayeeId is not provided in the request. In this case, the payee detailed information is used to identify the payee in a payment request, or when adding or modifying a payee.

Data Type

String


PayeeAggregate Property

PayeeAggregate Property (BillPayment Class)

Wrapper for payee details.

Syntax

char* GetPayeeAggregate();

int SetPayeeAggregate(char* lpszPayeeAggregate);

Default Value

""

Remarks

Wrapper for payee details.

This string consists of all the payee's properties PayeeId, PayeeName, PayeeAddr1, PayeeAddr2, PayeeAddr3, PayeeCity, PayeeState, PayeePostalCode, PayeeCountry, PayeePhone, PayeeIdScope, PayeeDaysToPay, PayeeListId, PayeeAccount of the payee.

When the SynchronizePayees is called, the SyncPayees event is fired for each payee in the payee list. Among other payee data returned through this event's parameters, there is also a PayeeAggregate parameter.

When sending a payment request (by calling PayBill) to an existing payee in the list returned via the payee synchronization request, and when the PayeeId is unknown or not assigned, instead of setting all payee's properties, the user can set the PayeeAggregate to the value of PayeeAggregate returned for that payee from the SyncPayees event. When the PayeeAggregate is set to this value, all payee's properties are populated with the corresponding values in the aggregate.

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

Data Type

String


PayeeCity Property

PayeeCity Property (BillPayment Class)

Payee's city.

Syntax

char* GetPayeeCity();

int SetPayeeCity(char* lpszPayeeCity);

Default Value

""

Remarks

Payee's city.

This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

Data Type

String


PayeeCountry Property

PayeeCountry Property (BillPayment Class)

Payee's country.

Syntax

char* GetPayeeCountry();

int SetPayeeCountry(char* lpszPayeeCountry);

Default Value

"USA"

Remarks

Payee's country. This is a 3 letter country code as representation of a country name (ISO/DIS-3166 3-letter country code standard).

This is optional and applicable only when the PayeeId is not provided in the request. In this case, the payee detailed information is used to identify the payee in a payment request, or when adding or modifying a payee.

Data Type

String


PayeeDaysToPay Property

PayeeDaysToPay Property (BillPayment Class)

Minimum number of business days required to complete the payment transaction to this payee.

Syntax

char* GetPayeeDaysToPay();

Default Value

""

Remarks

Minimum number of business days required to complete the payment transaction to this payee.

This property is read-only.

Data Type

String


PayeeId Property

PayeeId Property (BillPayment Class)

Server-assigned payee identifier.

Syntax

char* GetPayeeId();

int SetPayeeId(char* lpszPayeeId);

Default Value

""

Remarks

Server-assigned payee identifier.

The PayeeId is assigned by the payment system to a payee. There is no requirement though that all or any payees are assigned an identifier. This string uniquely identifies the payee in the list of payees.

Either PayeeId or payee full information should be provided in a payment request, but not both.

Payee full information can be provided in the request by setting either the PayeeAggregate or payee details represented by required properties: PayeeName, PayeeAddr1, PayeeCity, PayeeState, PayeePostalCode, PayeePhone, and optional properties: PayeeAddr2, PayeeAddr3, PayeeCountry, PayeeAccount.

The PayeeId might be populated when: either a payment request (PayBill method is called) or an add payee request (AddPayee method is called) has been sent to the payment server, or when the PayeeAggregate has been set.

Data Type

String


PayeeIdScope Property

PayeeIdScope Property (BillPayment Class)

Scope of the payee Id .

Syntax

char* GetPayeeIdScope();

Default Value

""

Remarks

Scope of the payee PayeeId.

Possible values are:

Value | Meaning
GLOBAL | Payee Id is valid across the entire payee system
USER | Payee Id is valid across all FI accounts for this user

This property is read-only.

Data Type

String


PayeeListId Property

PayeeListId Property (BillPayment Class)

Server-assigned payee list record ID for this payee.

Syntax

char* GetPayeeListId();

int SetPayeeListId(char* lpszPayeeListId);

Default Value

""

Remarks

Server-assigned payee list record ID for this payee.

This is uniquely assigned by the server to each entry in a payee list. In systems that do not assign a PayeeId, the PayeeListId is another identifier that can be used to reference every payee making sure that the user can correctly link payments to their payees. This identifier is valid as long as the user's payee list includes the payee it identifies, even if the server assigns a PayeeId to this payee.

It is assigned by the server to that payee when an add payee request (via AddPayee method) or bill payment request (via PayBill method) has been sent.

The value of PayeeListId is used as parameter when the ModifyPayee or DeletePayee methods are called (when modifying or deleting a payee). In all other payment requests is optional.

Data Type

String


PayeeName Property

PayeeName Property (BillPayment Class)

Name of the payee to whom the given Id or ListId corresponds.

Syntax

char* GetPayeeName();

int SetPayeeName(char* lpszPayeeName);

Default Value

""

Remarks

Name of the payee to whom the given PayeeId or PayeeListId corresponds. This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

After sending payment or add/modify payee requests, if the returned PayeeIdScope is GLOBAL, the PayeeName will contain the standard payee name returned by the server.

Data Type

String


PayeePhone Property

PayeePhone Property (BillPayment Class)

Payee's phone.

Syntax

char* GetPayeePhone();

int SetPayeePhone(char* lpszPayeePhone);

Default Value

""

Remarks

Payee's phone.

This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

Data Type

String


PayeePostalCode Property

PayeePostalCode Property (BillPayment Class)

Payee's postal code.

Syntax

char* GetPayeePostalCode();

int SetPayeePostalCode(char* lpszPayeePostalCode);

Default Value

""

Remarks

Payee's postal code.

This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

Data Type

String


PayeeState Property

PayeeState Property (BillPayment Class)

Payee's state This is required to be provided in : a payment request if payee detailed information is used to identify the payee (i.

Syntax

char* GetPayeeState();

int SetPayeeState(char* lpszPayeeState);

Default Value

""

Remarks

Payee's state

This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

Data Type

String


PaymentAggregate Property

PaymentAggregate Property (BillPayment Class)

Wrapper for a payment details.

Syntax

char* GetPaymentAggregate();

Default Value

""

Remarks

Wrapper for a payment details.

This string consists of all the payment's properties PaymentId, PaymentStatus, PaymentAmount, PaymentFromBankId, PaymentFromAccountId, PaymentFromAccountType, PaymentMemo, PaymentCheckNumber, etc..

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

This property is read-only and not available at design time.

Data Type

String


PaymentAmount Property

PaymentAmount Property (BillPayment Class)

Payment amount.

Syntax

char* GetPaymentAmount();

int SetPaymentAmount(char* lpszPaymentAmount);

Default Value

""

Remarks

Payment amount. This is to be provided when sending a bill payment request.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting.

This property is not available at design time.

Data Type

String


PaymentBillRef Property

PaymentBillRef Property (BillPayment Class)

Biller-supplied reference information when paying a bill, if available.

Syntax

char* GetPaymentBillRef();

int SetPaymentBillRef(char* lpszPaymentBillRef);

Default Value

""

Remarks

Biller-supplied reference information when paying a bill, if available.

This is optional when submitting a payment request.

This property is not available at design time.

Data Type

String


PaymentCheckNumber Property

PaymentCheckNumber Property (BillPayment Class)

Check number assigned by the server to this payment.

Syntax

char* GetPaymentCheckNumber();

Default Value

""

Remarks

Check number assigned by the server to this payment.

This will be returned in the server response (if available) when the request succeeds.

This property is read-only and not available at design time.

Data Type

String


PaymentCurrencyCode Property

PaymentCurrencyCode Property (BillPayment Class)

Default currency code for this transaction.

Syntax

char* GetPaymentCurrencyCode();

Default Value

""

Remarks

Default currency code for this transaction.

This indicates the currency in which the payment will be carried out.

This property is read-only and not available at design time.

Data Type

String


PaymentDateDue Property

PaymentDateDue Property (BillPayment Class)

Processing date requested by user for the payment to be sent.

Syntax

char* GetPaymentDateDue();

int SetPaymentDateDue(char* lpszPaymentDateDue);

Default Value

""

Remarks

Processing date requested by user for the payment to be sent.

This is required to be provided in any bill payment or payment modification requests.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is not available at design time.

Data Type

String


PaymentDateProcessed Property

PaymentDateProcessed Property (BillPayment Class)

Payment processing date.

Syntax

char* GetPaymentDateProcessed();

Default Value

""

Remarks

Payment processing date.

This indicates the date when the event described by PaymentStatus occurs.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is read-only and not available at design time.

Data Type

String


PaymentFromAccountId Property

PaymentFromAccountId Property (BillPayment Class)

Account number from which the money for this payment is drawn.

Syntax

char* GetPaymentFromAccountId();

int SetPaymentFromAccountId(char* lpszPaymentFromAccountId);

Default Value

""

Remarks

Account number from which the money for this payment is drawn.

This is an account number for a typical bank, such as one that might appear on a check, a bank card, or a credit card with that bank.

It is required to be provided when a bill payment or payment modification request is sent to the server (i.e., when PayBill or ModifyPayment methods are called).

If PaymentFromAccountType is set to CreditCard, the PaymentFromAccountId should be a credit card account number.

This property is not available at design time.

Data Type

String


PaymentFromAccountType Property

PaymentFromAccountType Property (BillPayment Class)

Indicates the type of account from which the money for this payment is drawn.

Syntax

int GetPaymentFromAccountType();

int SetPaymentFromAccountType(int iPaymentFromAccountType);

Possible Values

  AT_CHECKING(0),
  AT_SAVINGS(1),
  AT_MONEY_MARKET(2),
  AT_LINE_OF_CREDIT(3)

Default Value

0

Remarks

Indicates the type of account from which the money for this payment is drawn.

This is required to be provided when a bill payment or payment modification request is sent to the server (i.e., when PayBill or ModifyPayment methods are called).

This property uses the following four values:

  • atChecking (0)
  • atSavings (1)
  • atMoneyMarket (2)
  • atLineOfCredit (3)

This property is not available at design time.

Data Type

Integer


PaymentFromBankId Property

PaymentFromBankId Property (BillPayment Class)

Number that identifies the bank where the money is to be withdrawn.

Syntax

char* GetPaymentFromBankId();

int SetPaymentFromBankId(char* lpszPaymentFromBankId);

Default Value

""

Remarks

Number that identifies the bank where the money is to be withdrawn.

This is required to be provided when a bill payment request has been made.

This property is not available at design time.

Data Type

String


PaymentId Property

PaymentId Property (BillPayment Class)

Transaction Id assigned by the server to the payment.

Syntax

char* GetPaymentId();

int SetPaymentId(char* lpszPaymentId);

Default Value

""

Remarks

Transaction Id assigned by the server to the payment.

The PaymentId is returned after a bill payment request (when calling the PayBill method, which can be either a single payment or a recurring payment model).

This identifier value can be used as reference to this payment or model in any modification or cancellation request (as parameter when the ModifyPayment or CancelPayment methods are called).

This property is not available at design time.

Data Type

String


PaymentMemo Property

PaymentMemo Property (BillPayment Class)

Memo attached to this payment from the customer to payee.

Syntax

char* GetPaymentMemo();

int SetPaymentMemo(char* lpszPaymentMemo);

Default Value

""

Remarks

Memo attached to this payment from the customer to payee.

This is optional when submitting a payment request.

This property is not available at design time.

Data Type

String


PaymentPayeeAccount Property

PaymentPayeeAccount Property (BillPayment Class)

User's account number with the payee this payment was sent to.

Syntax

char* GetPaymentPayeeAccount();

Default Value

""

Remarks

User's account number with the payee this payment was sent to.

This string uniquely identifies the customer in the payee (biller) system.

This property is read-only and not available at design time.

Data Type

String


PaymentPayeeAggregate Property

PaymentPayeeAggregate Property (BillPayment Class)

Wrapper for the payee details this payment was sent to.

Syntax

char* GetPaymentPayeeAggregate();

Default Value

""

Remarks

Wrapper for the payee details this payment was sent to.

This string consists of these payee's data: name, address, city, state, country, postal code, country and phone.

When the SynchronizePayments is called, the SyncPayments event is fired for each payment in the payment list. Among other payment data returned through this event's parameters, there is also a PayeeAggregate parameter.

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

This property is read-only and not available at design time.

Data Type

String


PaymentPayeeId Property

PaymentPayeeId Property (BillPayment Class)

Server-assigned identifier to the payee this payment was sent to.

Syntax

char* GetPaymentPayeeId();

Default Value

""

Remarks

Server-assigned identifier to the payee this payment was sent to.

The PaymentPayeeId is assigned by the payment system to a payee. There is no requirement though that all or any payees are assigned an identifier. This string uniquely identifies the payee in the list of payees.

Either PaymentPayeeAggregate or PaymentPayeeId can be returned in the response, but not both.

This property is read-only and not available at design time.

Data Type

String


PaymentPayeeListId Property

PaymentPayeeListId Property (BillPayment Class)

Server-assigned payee list record ID for the payee this payment was sent to.

Syntax

char* GetPaymentPayeeListId();

Default Value

""

Remarks

Server-assigned payee list record ID for the payee this payment was sent to.

This is uniquely assigned by the server to each entry in a payee list. In systems that do not assign a PaymentPayeeId, the PaymentPayeeListId is another identifier that can be used to reference every payee making sure that the user can correctly link payments to their payees. This identifier is valid as long as the user's payee list includes the payee it identifies, even if the server assigns a PaymentPayeeId to this payee.

This is assigned by the server to that payee when an add payee request (via AddPayee method) or bill payment request (via PayBill method) has been sent.

This property is read-only and not available at design time.

Data Type

String


PaymentStatus Property

PaymentStatus Property (BillPayment Class)

Payment processing status.

Syntax

char* GetPaymentStatus();

Default Value

""

Remarks

Payment processing status.

The possible values of this property are as follows:

Value | Meaning
WILLPROCESSON | Will be processed on PaymentDate
PROCESSEDON | Was processed on PaymentDate
NOFUNDSON | There were insufficient funds to pay this bill as of PaymentDate
FAILEDON | The attempt to make a payment failed on PaymentDate for unspecified reasons
CANCELEDON | the request to make a payment was canceled by the user on PaymentDate

This property is read-only and not available at design time.

Data Type

String


PaymentToAccountId Property

PaymentToAccountId Property (BillPayment Class)

Account number to which the money for this payment is sent.

Syntax

char* GetPaymentToAccountId();

int SetPaymentToAccountId(char* lpszPaymentToAccountId);

Default Value

""

Remarks

Account number to which the money for this payment is sent.

This is an account number for a typical bank, such as one that might appear on a check, a bank card, or a credit card with this bank.

It is optional to be provided when a bill payment or payment modification request is sent to the server (i.e., when PayBill or ModifyPayment methods are called).

If PaymentToAccountType is set to CreditCard, the PaymentToAccountId should be a credit card account number.

This is optional, but if it is provided in the request, Payee detailed information is required to be provided as well (by providing payee details, such as name, address, phone, etc.) and not via PayeeId.

This property is not available at design time.

Data Type

String


PaymentToAccountType Property

PaymentToAccountType Property (BillPayment Class)

Indicates the type of account to which this payment is sent.

Syntax

int GetPaymentToAccountType();

int SetPaymentToAccountType(int iPaymentToAccountType);

Possible Values

  AT_CHECKING(0),
  AT_SAVINGS(1),
  AT_MONEY_MARKET(2),
  AT_LINE_OF_CREDIT(3)

Default Value

0

Remarks

Indicates the type of account to which this payment is sent.

This is required to be provided when a bill payment or payment modification request is sent to the server (i.e., when PayBill or ModifyPayment methods are called).

This property uses the following four values:

  • atChecking (0)
  • atSavings (1)
  • atMoneyMarket (2)
  • atLineOfCredit (3)

This is optional, but if it is provided in the request, Payee detailed information is required to be provided as well (by providing payee details, such as name, address, phone, etc.) and not via PayeeId.

This property is not available at design time.

Data Type

Integer


PaymentToBankId Property

PaymentToBankId Property (BillPayment Class)

Number that identifies the bank where the money is to be deposited.

Syntax

char* GetPaymentToBankId();

int SetPaymentToBankId(char* lpszPaymentToBankId);

Default Value

""

Remarks

Number that identifies the bank where the money is to be deposited.

This is optional, but if it is provided in the request, Payee detailed information is required to be provided as well (by providing payee details, such as name, address, phone, etc.) and not via PayeeId.

This property is not available at design time.

Data Type

String


PaymentTxType Property

PaymentTxType Property (BillPayment Class)

Transaction type performed on the payment being synchronized.

Syntax

char* GetPaymentTxType();

Default Value

""

Remarks

Transaction type performed on the payment being synchronized.

This is applicable to payment synchronization requests only. Possible values and their meanings are as follows:

ADDED | If the payment being synchronized was new bill payment.
MODIFIED | If the payment being synchronized was modified.
CANCELLED | If the payment being synchronized was cancelled.

This property is read-only and not available at design time.

Data Type

String


SSLAcceptServerCertEncoded Property

SSLAcceptServerCertEncoded Property (BillPayment Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLAcceptServerCertEncoded(char *&lpSSLAcceptServerCertEncoded, int &lenSSLAcceptServerCertEncoded);

int SetSSLAcceptServerCertEncoded(char *lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLAcceptServerCertStore and SSLAcceptServerCertSubject properties may also be used to specify a certificate.

When SSLAcceptServerCertEncoded is set, a search is initiated in the current SSLAcceptServerCertStore for the private key of the certificate. If the key is found, SSLAcceptServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLAcceptServerCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertEncoded Property

SSLCertEncoded Property (BillPayment Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLCertEncoded(char *&lpSSLCertEncoded, int &lenSSLCertEncoded);

int SetSSLCertEncoded(char *lpSSLCertEncoded, int lenSSLCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLCertStore and SSLCertSubject properties may also be used to specify a certificate.

When SSLCertEncoded is set, a search is initiated in the current SSLCertStore for the private key of the certificate. If the key is found, SSLCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertStore Property

SSLCertStore Property (BillPayment Class)

The name of the certificate store for the client certificate.

Syntax

int GetSSLCertStore(char *&lpSSLCertStore, int &lenSSLCertStore);

int SetSSLCertStore(char *lpSSLCertStore, int lenSSLCertStore);

Default Value

"MY"

Remarks

The name of the certificate store for the client certificate.

The SSLCertStoreType property specifies the type of the certificate store specified by SSLCertStore. If the store is password protected, specify the password in SSLCertStorePassword.

SSLCertStore is used in conjunction with the SSLCertSubject property in order to specify client certificates. If SSLCertStore has a value, and SSLCertSubject or SSLCertEncoded is set, a search for a certificate is initiated. Please refer to the SSLCertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MY | A certificate store holding personal certificates with their associated private keys.
CA | Certifying authority certificates.
ROOT | Root certificates.
SPC | Software publisher certificates.

In Java, the certificate store normally is a file containing certificates and optional private keys.

When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).

If the provider is OpenSSL, the certificate store is a file containing a certificate and a private key. This property must be set to the name of the file.

Data Type

Binary String


SSLCertStorePassword Property

SSLCertStorePassword Property (BillPayment Class)

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Syntax

char* GetSSLCertStorePassword();

int SetSSLCertStorePassword(char* lpszSSLCertStorePassword);

Default Value

""

Remarks

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Data Type

String


SSLCertStoreType Property

SSLCertStoreType Property (BillPayment Class)

The type of certificate store for this certificate.

Syntax

int GetSSLCertStoreType();

int SetSSLCertStoreType(int iSSLCertStoreType);

Possible Values

  CST_USER(0),
  CST_MACHINE(1),
  CST_PFXFILE(2),
  CST_PFXBLOB(3),
  CST_JKSFILE(4),
  CST_JKSBLOB(5),
  CST_PEMKEY_FILE(6),
  CST_PEMKEY_BLOB(7),
  CST_PUBLIC_KEY_FILE(8),
  CST_PUBLIC_KEY_BLOB(9),
  CST_SSHPUBLIC_KEY_BLOB(10),
  CST_P7BFILE(11),
  CST_P7BBLOB(12),
  CST_SSHPUBLIC_KEY_FILE(13),
  CST_PPKFILE(14),
  CST_PPKBLOB(15),
  CST_XMLFILE(16),
  CST_XMLBLOB(17)

Default Value

0

Remarks

The type of certificate store for this certificate.

This property can take one of the following values:

0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java.
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java.
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates.
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format.
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java.
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java.
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate.
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate.
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate.
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate.
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key.
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates.
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format.
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key.
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key).
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key).
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format.
17 (cstXMLlob) | The certificate store is a string that contains a certificate in XML format.

Data Type

Integer


SSLCertSubject Property

SSLCertSubject Property (BillPayment Class)

The subject of the certificate used for client authentication.

Syntax

char* GetSSLCertSubject();

int SetSSLCertSubject(char* lpszSSLCertSubject);

Default Value

""

Remarks

The subject of the certificate used for client authentication.

When this property is set, a search is performed in the current certificate store certificate with matching subject.

If a matching certificate is found, the property is set to the full subject of the matching certificate.

If an exact match is not found, the store is searched for subjects containing the value of the property.

If a match is still not found, the property is set to an empty string, and no certificate is selected.

The special value "*" picks a random certificate in the certificate store.

The certificate subject is a comma separated list of distinguished name properties and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common properties and their meanings are displayed below.

Field | Meaning
CN | Common Name. This is commonly a host name like www.server.com.
O | Organization
OU | Organizational Unit
L | Locality
S | State
C | Country
E | Email Address

If a property value contains a comma it must be quoted.

Data Type

String


SSLServerCertEncoded Property

SSLServerCertEncoded Property (BillPayment Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLServerCertEncoded(char *&lpSSLServerCertEncoded, int &lenSSLServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLServerCertStore and SSLServerCertSubject properties may also be used to specify a certificate.

When SSLServerCertEncoded is set, a search is initiated in the current SSLServerCertStore for the private key of the certificate. If the key is found, SSLServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLServerCertSubject is set to empty string.

This property is read-only and not available at design time.

Data Type

Binary String


SyncPayeeCount Property

SyncPayeeCount Property (BillPayment Class)

The number of records in the SyncPayee arrays.

Syntax

int GetSyncPayeeCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • SyncPayeeAccount
  • SyncPayeeAddr1
  • SyncPayeeAddr2
  • SyncPayeeAddr3
  • SyncPayeeAggregate
  • SyncPayeeCity
  • SyncPayeeCountry
  • SyncPayeeDaysToPay
  • SyncPayeeId
  • SyncPayeeIdScope
  • SyncPayeeListId
  • SyncPayeeName
  • SyncPayeePhone
  • SyncPayeePostalCode
  • SyncPayeeState
  • SyncPayeeTxType

The array indices start at 0 and end at SyncPayeeCount-1.

This property is read-only and not available at design time.

Data Type

Integer


SyncPayeeAccount Property

SyncPayeeAccount Property (BillPayment Class)

User's account number with the payee.

Syntax

char* GetSyncPayeeAccount(int iSyncPayeeIndex);

Default Value

""

Remarks

User's account number with the payee. This string uniquely identifies the customer in the payee (biller) system.

This is optional and applicable only when the PayeeId is not provided in the request. In this case, the payee detailed information is used to identify the payee in a payment request, or when adding or modifying a payee.

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeAddr1 Property

SyncPayeeAddr1 Property (BillPayment Class)

Payee's address line 1.

Syntax

char* GetSyncPayeeAddr1(int iSyncPayeeIndex);

Default Value

""

Remarks

Payee's address line 1.

This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeAddr2 Property

SyncPayeeAddr2 Property (BillPayment Class)

Payee's address line 2.

Syntax

char* GetSyncPayeeAddr2(int iSyncPayeeIndex);

Default Value

""

Remarks

Payee's address line 2.

This is optional and applicable only when the PayeeId is not provided in the request. In this case, the payee detailed information is used to identify the payee in a payment request, or when adding or modifying a payee.

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeAddr3 Property

SyncPayeeAddr3 Property (BillPayment Class)

Payee's address line 3.

Syntax

char* GetSyncPayeeAddr3(int iSyncPayeeIndex);

Default Value

""

Remarks

Payee's address line 3.

This is optional and applicable only when the PayeeId is not provided in the request. In this case, the payee detailed information is used to identify the payee in a payment request, or when adding or modifying a payee.

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeAggregate Property

SyncPayeeAggregate Property (BillPayment Class)

Wrapper for payee details.

Syntax

char* GetSyncPayeeAggregate(int iSyncPayeeIndex);

Default Value

""

Remarks

Wrapper for payee details.

This string consists of all the payee's properties SyncPayeeId, SyncPayeeName, SyncPayeeAddr1, SyncPayeeAddr2, SyncPayeeAddr3, SyncPayeeCity, SyncPayeeState, SyncPayeePostalCode, SyncPayeeCountry, SyncPayeePhone, SyncPayeeIdScope, SyncPayeeDaysToPay, SyncPayeeListId, SyncPayeeAccount of the payee.

When the SynchronizePayees is called, the SyncPayees event is fired for each payee in the payee list. Among other payee data returned through this event's parameters, there is also a PayeeAggregate parameter.

When sending a payment request (by calling PayBill) to an existing payee in the list returned via the payee synchronization request, and when the SyncPayeeId is unknown or not assigned, instead of setting all payee's properties, the user can set the SyncPayeeAggregate to the value of PayeeAggregate returned for that payee from the SyncPayees event. When the SyncPayeeAggregate is set to this value, all payee's properties are populated with the corresponding values in the aggregate.

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeCity Property

SyncPayeeCity Property (BillPayment Class)

Payee's city.

Syntax

char* GetSyncPayeeCity(int iSyncPayeeIndex);

Default Value

""

Remarks

Payee's city.

This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeCountry Property

SyncPayeeCountry Property (BillPayment Class)

Payee's country.

Syntax

char* GetSyncPayeeCountry(int iSyncPayeeIndex);

Default Value

"USA"

Remarks

Payee's country. This is a 3 letter country code as representation of a country name (ISO/DIS-3166 3-letter country code standard).

This is optional and applicable only when the PayeeId is not provided in the request. In this case, the payee detailed information is used to identify the payee in a payment request, or when adding or modifying a payee.

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeDaysToPay Property

SyncPayeeDaysToPay Property (BillPayment Class)

Minimum number of business days required to complete the payment transaction to this payee.

Syntax

char* GetSyncPayeeDaysToPay(int iSyncPayeeIndex);

Default Value

""

Remarks

Minimum number of business days required to complete the payment transaction to this payee.

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeId Property

SyncPayeeId Property (BillPayment Class)

Server-assigned payee identifier.

Syntax

char* GetSyncPayeeId(int iSyncPayeeIndex);

Default Value

""

Remarks

Server-assigned payee identifier.

The SyncPayeeId is assigned by the payment system to a payee. There is no requirement though that all or any payees are assigned an identifier. This string uniquely identifies the payee in the list of payees.

Either SyncPayeeId or payee full information should be provided in a payment request, but not both.

Payee full information can be provided in the request by setting either the SyncPayeeAggregate or payee details represented by required properties: SyncPayeeName, SyncPayeeAddr1, SyncPayeeCity, SyncPayeeState, SyncPayeePostalCode, SyncPayeePhone, and optional properties: SyncPayeeAddr2, SyncPayeeAddr3, SyncPayeeCountry, SyncPayeeAccount.

The SyncPayeeId might be populated when: either a payment request (PayBill method is called) or an add payee request (AddPayee method is called) has been sent to the payment server, or when the SyncPayeeAggregate has been set.

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeIdScope Property

SyncPayeeIdScope Property (BillPayment Class)

Scope of the payee Id .

Syntax

char* GetSyncPayeeIdScope(int iSyncPayeeIndex);

Default Value

""

Remarks

Scope of the payee SyncPayeeId.

Possible values are:

Value | Meaning
GLOBAL | Payee Id is valid across the entire payee system
USER | Payee Id is valid across all FI accounts for this user

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeListId Property

SyncPayeeListId Property (BillPayment Class)

Server-assigned payee list record ID for this payee.

Syntax

char* GetSyncPayeeListId(int iSyncPayeeIndex);

Default Value

""

Remarks

Server-assigned payee list record ID for this payee.

This is uniquely assigned by the server to each entry in a payee list. In systems that do not assign a SyncPayeeId, the SyncPayeeListId is another identifier that can be used to reference every payee making sure that the user can correctly link payments to their payees. This identifier is valid as long as the user's payee list includes the payee it identifies, even if the server assigns a SyncPayeeId to this payee.

It is assigned by the server to that payee when an add payee request (via AddPayee method) or bill payment request (via PayBill method) has been sent.

The value of SyncPayeeListId is used as parameter when the ModifyPayee or DeletePayee methods are called (when modifying or deleting a payee). In all other payment requests is optional.

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeName Property

SyncPayeeName Property (BillPayment Class)

Name of the payee to whom the given Id or ListId corresponds.

Syntax

char* GetSyncPayeeName(int iSyncPayeeIndex);

Default Value

""

Remarks

Name of the payee to whom the given SyncPayeeId or SyncPayeeListId corresponds. This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

After sending payment or add/modify payee requests, if the returned SyncPayeeIdScope is GLOBAL, the SyncPayeeName will contain the standard payee name returned by the server.

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeePhone Property

SyncPayeePhone Property (BillPayment Class)

Payee's phone.

Syntax

char* GetSyncPayeePhone(int iSyncPayeeIndex);

Default Value

""

Remarks

Payee's phone.

This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeePostalCode Property

SyncPayeePostalCode Property (BillPayment Class)

Payee's postal code.

Syntax

char* GetSyncPayeePostalCode(int iSyncPayeeIndex);

Default Value

""

Remarks

Payee's postal code.

This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeState Property

SyncPayeeState Property (BillPayment Class)

Payee's state This is required to be provided in : a payment request if payee detailed information is used to identify the payee (i.

Syntax

char* GetSyncPayeeState(int iSyncPayeeIndex);

Default Value

""

Remarks

Payee's state

This is required to be provided in :

  • a payment request if payee detailed information is used to identify the payee (i.e., when PayeeId is not provided in the request when either PayBill or ModifyPayment methods are called);
  • adding or modifying a payee (when the AddPayee or ModifyPayee methods are called).

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPayeeTxType Property

SyncPayeeTxType Property (BillPayment Class)

Transaction type performed on the payee being synchronized.

Syntax

char* GetSyncPayeeTxType(int iSyncPayeeIndex);

Default Value

""

Remarks

Transaction type performed on the payee being synchronized.

This is applicable to payee synchronization requests only. Possible values and their meanings are as follows:

ADDED | If the payee being synchronized was added in the payee list.
MODIFIED | If the payee being synchronized was modified.
DELETED | If the payee being synchronized was deleted from the payee list.

The size of the array is controlled by the SyncPayeeCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentCount Property

SyncPaymentCount Property (BillPayment Class)

The number of records in the SyncPayment arrays.

Syntax

int GetSyncPaymentCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • SyncPaymentAggregate
  • SyncPaymentAmount
  • SyncPaymentBillRef
  • SyncPaymentCheckNumber
  • SyncPaymentCurrencyCode
  • SyncPaymentDateDue
  • SyncPaymentDateProcessed
  • SyncPaymentId
  • SyncPaymentMemo
  • SyncPaymentPayeeAccount
  • SyncPaymentPayeeAggregate
  • SyncPaymentPayeeId
  • SyncPaymentPayeeListId
  • SyncPaymentStatus
  • SyncPaymentTxType

The array indices start at 0 and end at SyncPaymentCount-1.

This property is read-only and not available at design time.

Data Type

Integer


SyncPaymentAggregate Property

SyncPaymentAggregate Property (BillPayment Class)

Wrapper for a payment details.

Syntax

char* GetSyncPaymentAggregate(int iSyncPaymentIndex);

Default Value

""

Remarks

Wrapper for a payment details.

This string consists of all the payment's properties SyncPaymentId, SyncPaymentStatus, SyncPaymentAmount, SyncPaymentFromBankId, SyncPaymentFromAccountId, SyncPaymentFromAccountType, SyncPaymentMemo, SyncPaymentCheckNumber, etc..

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentAmount Property

SyncPaymentAmount Property (BillPayment Class)

Payment amount.

Syntax

char* GetSyncPaymentAmount(int iSyncPaymentIndex);

Default Value

""

Remarks

Payment amount. This is to be provided when sending a bill payment request.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentBillRef Property

SyncPaymentBillRef Property (BillPayment Class)

Biller-supplied reference information when paying a bill, if available.

Syntax

char* GetSyncPaymentBillRef(int iSyncPaymentIndex);

Default Value

""

Remarks

Biller-supplied reference information when paying a bill, if available.

This is optional when submitting a payment request.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentCheckNumber Property

SyncPaymentCheckNumber Property (BillPayment Class)

Check number assigned by the server to this payment.

Syntax

char* GetSyncPaymentCheckNumber(int iSyncPaymentIndex);

Default Value

""

Remarks

Check number assigned by the server to this payment.

This will be returned in the server response (if available) when the request succeeds.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentCurrencyCode Property

SyncPaymentCurrencyCode Property (BillPayment Class)

Default currency code for this transaction.

Syntax

char* GetSyncPaymentCurrencyCode(int iSyncPaymentIndex);

Default Value

""

Remarks

Default currency code for this transaction.

This indicates the currency in which the payment will be carried out.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentDateDue Property

SyncPaymentDateDue Property (BillPayment Class)

Processing date requested by user for the payment to be sent.

Syntax

char* GetSyncPaymentDateDue(int iSyncPaymentIndex);

Default Value

""

Remarks

Processing date requested by user for the payment to be sent.

This is required to be provided in any bill payment or payment modification requests.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentDateProcessed Property

SyncPaymentDateProcessed Property (BillPayment Class)

Payment processing date.

Syntax

char* GetSyncPaymentDateProcessed(int iSyncPaymentIndex);

Default Value

""

Remarks

Payment processing date.

This indicates the date when the event described by SyncPaymentStatus occurs.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentId Property

SyncPaymentId Property (BillPayment Class)

Transaction Id assigned by the server to the payment.

Syntax

char* GetSyncPaymentId(int iSyncPaymentIndex);

Default Value

""

Remarks

Transaction Id assigned by the server to the payment.

The SyncPaymentId is returned after a bill payment request (when calling the PayBill method, which can be either a single payment or a recurring payment model).

This identifier value can be used as reference to this payment or model in any modification or cancellation request (as parameter when the ModifyPayment or CancelPayment methods are called).

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentMemo Property

SyncPaymentMemo Property (BillPayment Class)

Memo attached to this payment from the customer to payee.

Syntax

char* GetSyncPaymentMemo(int iSyncPaymentIndex);

Default Value

""

Remarks

Memo attached to this payment from the customer to payee.

This is optional when submitting a payment request.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentPayeeAccount Property

SyncPaymentPayeeAccount Property (BillPayment Class)

User's account number with the payee this payment was sent to.

Syntax

char* GetSyncPaymentPayeeAccount(int iSyncPaymentIndex);

Default Value

""

Remarks

User's account number with the payee this payment was sent to.

This string uniquely identifies the customer in the payee (biller) system.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentPayeeAggregate Property

SyncPaymentPayeeAggregate Property (BillPayment Class)

Wrapper for the payee details this payment was sent to.

Syntax

char* GetSyncPaymentPayeeAggregate(int iSyncPaymentIndex);

Default Value

""

Remarks

Wrapper for the payee details this payment was sent to.

This string consists of these payee's data: name, address, city, state, country, postal code, country and phone.

When the SynchronizePayments is called, the SyncPayments event is fired for each payment in the payment list. Among other payment data returned through this event's parameters, there is also a PayeeAggregate parameter.

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentPayeeId Property

SyncPaymentPayeeId Property (BillPayment Class)

Server-assigned identifier to the payee this payment was sent to.

Syntax

char* GetSyncPaymentPayeeId(int iSyncPaymentIndex);

Default Value

""

Remarks

Server-assigned identifier to the payee this payment was sent to.

The SyncPaymentPayeeId is assigned by the payment system to a payee. There is no requirement though that all or any payees are assigned an identifier. This string uniquely identifies the payee in the list of payees.

Either SyncPaymentPayeeAggregate or SyncPaymentPayeeId can be returned in the response, but not both.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentPayeeListId Property

SyncPaymentPayeeListId Property (BillPayment Class)

Server-assigned payee list record ID for the payee this payment was sent to.

Syntax

char* GetSyncPaymentPayeeListId(int iSyncPaymentIndex);

Default Value

""

Remarks

Server-assigned payee list record ID for the payee this payment was sent to.

This is uniquely assigned by the server to each entry in a payee list. In systems that do not assign a SyncPaymentPayeeId, the SyncPaymentPayeeListId is another identifier that can be used to reference every payee making sure that the user can correctly link payments to their payees. This identifier is valid as long as the user's payee list includes the payee it identifies, even if the server assigns a SyncPaymentPayeeId to this payee.

This is assigned by the server to that payee when an add payee request (via AddPayee method) or bill payment request (via PayBill method) has been sent.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentStatus Property

SyncPaymentStatus Property (BillPayment Class)

Payment processing status.

Syntax

char* GetSyncPaymentStatus(int iSyncPaymentIndex);

Default Value

""

Remarks

Payment processing status.

The possible values of this property are as follows:

Value | Meaning
WILLPROCESSON | Will be processed on SyncPaymentDate
PROCESSEDON | Was processed on SyncPaymentDate
NOFUNDSON | There were insufficient funds to pay this bill as of SyncPaymentDate
FAILEDON | The attempt to make a payment failed on SyncPaymentDate for unspecified reasons
CANCELEDON | the request to make a payment was canceled by the user on SyncPaymentDate

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


SyncPaymentTxType Property

SyncPaymentTxType Property (BillPayment Class)

Transaction type performed on the payment being synchronized.

Syntax

char* GetSyncPaymentTxType(int iSyncPaymentIndex);

Default Value

""

Remarks

Transaction type performed on the payment being synchronized.

This is applicable to payment synchronization requests only. Possible values and their meanings are as follows:

ADDED | If the payment being synchronized was new bill payment.
MODIFIED | If the payment being synchronized was modified.
CANCELLED | If the payment being synchronized was cancelled.

The size of the array is controlled by the SyncPaymentCount property.

This property is read-only and not available at design time.

Data Type

String


Timeout Property

Timeout Property (BillPayment Class)

A timeout for the component.

Syntax

int GetTimeout();

int SetTimeout(int iTimeout);

Default Value

60

Remarks

If the Timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.

If Timeout is set to a positive value, the class will wait for the operation to complete before returning control.

The class will use DoEvents to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not "freeze" and remains responsive.

If Timeout expires, and the operation is not yet complete, the class fails with an error.

Please note that by default, all timeouts are inactivity timeouts, i.e. the timeout period is extended by Timeout seconds when any amount of data is successfully sent or received.

Optionally, the behavior of the class may be changed to absolute timeouts, i.e. the class will wait for a maximum of Timeout seconds since the beginning of the operation, without extending the timeout period during communications.

This behavior is controlled by the AbsoluteTimeout configuration setting.

The default value for the Timeout property is 60 (seconds).

Data Type

Integer


AddPayee Method

AddPayee Method (BillPayment Class)

Add a payee to server's payee list.

Syntax

 int AddPayee();

Remarks

This function generates the Signon and Add Payee request, submits it to the financial institution via HTTP, receives the response, and parses it.

The following properties can be set when this method is called:

FIUrl | (required)
FIId | (required)
FIOrganization | (required)
OFXAppId | (required)
OFXAppVersion | (required)
OFXUser | (required)
OFXPassword | (required)
Payee | (required)
PaymentToBankId | (optional)
PaymentToAccountId | (optional)
PaymentToAccountType | (optional)

Upon a successful reply, the following read-only properties are populated as a result of parsing the server response:

PayeeId | (optional)
PayeeListId | (always returned)
PayeeDaysToPay | (always returned)
PayeeIdScope | (optional)
all input values for payee (name, address, phone, account) and destination bank account are echoed in the response |


CancelPayment Method

CancelPayment Method (BillPayment Class)

Cancels a scheduled bill payment.

Syntax

 int CancelPayment(char* lpszPaymentId);

Remarks

This function generates the Signon and Payment Cancellation request page, submits it to the financial institution via secure HTTP Post, receives the response, and parses it.

The PaymentId parameter identifies the payment to be canceled. This is the id assigned and returned by the server at the time the payment was scheduled (that was stored in PaymentId).

The following properties should be set when this method is called:

FIUrl | (required)
FIId | (required)
FIOrganization | (required)
OFXAppId | (required)
OFXAppVersion | (required)
OFXUser | (required)
OFXPassword | (required)

Upon successful response, the server will return the PaymentId which echoes the PaymentId.


Config Method

Config Method (BillPayment Class)

Sets or retrieves a configuration setting.

Syntax

 char* Config(char* lpszConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.


DeletePayee Method

DeletePayee Method (BillPayment Class)

Deletes a payee identified by ListId from the server payee list.

Syntax

 int DeletePayee(char* lpszListId);

Remarks

This function generates the Signon and Delete Payee request page, submits it to the financial institution via secure HTTP Post, receives the response, and parses it.

The ListId parameter identifies the payee to be deleted. This is the id returned by the server at the time the payee was added to the payee list (that was stored in PayeeListId).

The following properties should be set when this method is called:

FIUrl | (required)
FIId | (required)
FIOrganization | (required)
OFXAppId | (required)
OFXAppVersion | (required)
OFXUser | (required)
OFXPassword | (required)

Upon successful response, the server will return the PayeeListId that echoes the ListId input parameter.


GetStatus Method

GetStatus Method (BillPayment Class)

Obtains the current processing status of a payment.

Syntax

 int GetStatus(char* lpszPaymentId);

Remarks

The PaymentId parameter identifies the payment you want to obtain the status for. This is the id returned by the server at the time the payment was scheduled (that was stored in PaymentId).

The following properties should be set when this method is called:

FIUrl | (required)
FIId | (required)
FIOrganization | (required)
OFXAppId | (required)
OFXAppVersion | (required)
OFXUser | (required)
OFXPassword | (required)

Upon successful response, the server will return the following:

PaymentStatus |
PaymentDateProcessed |
PaymentCheckNumber | (optional)


ModifyPayee Method

ModifyPayee Method (BillPayment Class)

Modifies a payee identified by ListId that already exists in the payee list.

Syntax

 int ModifyPayee(char* lpszPayeeListId);

Remarks

This function generates the Signon and Payee Modification request, submits it to the financial institution via secure HTTP Post, receives the response, and parses it.

When modifying a payee by calling the ModifyPayee method, the user must specify the changed and unchanged payee information (i.e., all the properties that were specified when the payee was first added to the server list).

The ListId parameter identifies the payee to be modified. This is the id returned by the server at the time the payee was added to the payee list.

The response normally just echoes the values passed in the request. However, when a change had already occurred in the server to the payee information (for example a change in the payee's lead time, indicated by PayeeDaysToPay), the response will include this information as well.

If the response indicates either that a payee now has a payee ID (a non-empty PayeeId is returned in the response) or no longer has one (an empty PayeeId is returned), then the user now becomes aware that this ID cannot be used as an appropriate form of designating the payee in any future payment requests to that payee.


ModifyPayment Method

ModifyPayment Method (BillPayment Class)

Modifies a scheduled payment.

Syntax

 int ModifyPayment(char* lpszPaymentId);

Remarks

This function generates the Signon and Payment Modification request page, submits it to the financial institution via secure HTTP Post, receives the response, and parses it.

The PaymentId parameter identifies the targeted payment to be modified. This is the id assigned and returned by the server at the time the payment was scheduled (that was stored in PaymentId).

Between the time the client schedules a payment and the time the server processes the payment, the client may request changes (if the server allows it) to certain parameters of that payment. For example, the PaymentAmount or PaymentDateDue of the payment can be modified. This can be done by calling the ModifyPayment method. The request must specify the full contents of the payment request, including both modified and unmodified data.

The user should provide all the fields that were specified when the payment to be modified was created (when the PayBill method was called) and the PayeeListId if this was assigned. All data can be modified except the PayeeName and PayeeId.

The response normally just echoes the values passed in the request. However, if the status of a scheduled payment changes in any way, the user should expect to receive modification responses when synchronizing with the server by calling Synchronize method. For example, when a server completes a payment, the status of the payment goes from pending to posted. This status change will be included in the server response.

Please check your FI profile to see if they provide this service (bill payment modification).


PayBill Method

PayBill Method (BillPayment Class)

Pays a bill to a given payee.

Syntax

 int PayBill();

Remarks

This function generates the Signon and Bill Payment request page, submits it to the financial institution via HTTP, receives the response, and parses it.

The following properties can be set when this method is called:

FIUrl | (required)
FIId | (required)
FIOrganization | (required)
OFXAppId | (required)
OFXAppVersion | (required)
OFXUser | (required)
OFXPassword | (required)
Payment | (required)
Payee | (required)

Payee information can be provided in the request by either setting each Payee property, or by setting the PayeeAggregate property, the value of which can be retrieved after submitting a payee synchronization request (by calling the SynchronizePayees method).

Even when PayeeAggregate property has been set, the user can still set any payee field to values different from the ones that are populated via PayeeAggregate. When this happens, the server will consider this payment request as payee modification request as well. As result, that payee will be modified in the payment system accordingly.

Upon a successful reply, the following read-only properties are populated as a result of parsing the server response:

PaymentCurrencyCode
PaymentId
PaymentStatus
PaymentDateProcessed
PaymentCheckNumber
PayeeDaysToPay
PayeeIdScope
all input values for amount, bank account information, and payee information are echoed in the response


Reset Method

Reset Method (BillPayment Class)

Reset the internal state of the component and all properties to their default values.

Syntax

 int Reset();

Remarks

The Reset method does not have any parameters and does not return any value.


SynchronizePayees Method

SynchronizePayees Method (BillPayment Class)

Synchronizes payees on the client side with payees on record on the server side.

Syntax

 char* SynchronizePayees(char* lpszToken);

Remarks

Users of OFX Payments need to be able to obtain the current list of payees stored on the server that is configured for use in payments. In a "pay some" system, users are sometimes required to explicitly configure the payees to whom the system will make payments. This can be done by means of a telephone call to the payments provider or through other methods such as AddPayee or PayBill. It is only necessary to enter each payee once. In other systems, the payments provider can elect to store a list of all payees that the user has paid. This is a convenience to the client. It allows payees set up on one client to be accessible from a user's other clients. In this case, payee list synchronization provides a way for the payee to become accessible to the client software when the FI completes the setup.

The list can contain payees with or without payee IDs. An important function of the payee list is to communicate payee changes from the server to the client. This includes changes in processing date parameters and conversion of a payee to a standard payee.

Once added to the list, the payment system makes payments by the payee list ID. This makes it clear to a client when the user is adding to a payee list, and when he or she modifies an existing payee on the list. Although the messages make it clear whether a client is trying to add a new payee, a careful server will check for exact matches on payee adds and not create new payee list entries unnecessarily.

"Pay-any" systems can perform background processing that matches billing addresses with standard payees. When this occurs the server can update the relevant payee lists, and update the clients when they synchronize with the modified list data. Each payee entry in the list can also include a list of the user's accounts with that payee. This further reduces the data entry required by a user to make a payment, and facilitates the implementation of lightweight clients.

In order to accomplish these tasks, the user has to submit a synchronization request by calling SynchronizePayees method to insure that it has an accurate copy of the server data that is relevant to the client application. The intent of this request is to address the following scenarios in which the client might lose synchronization with the server:

  • Payees relevant to the client's application state have been added, deleted, or modified by a second client. For example, a user might enter or change payees from more than one PC or application.
  • A communications session between the client and server was interrupted or completed abnormally. As a result, the client does not have responses from the server indicating that all the payees were received and processed.

If this request is submitted for the first time to the server, the Token parameter has to be 0. In this case, servers should send all available history, allowing a new client (for example) to know about work done by other clients. If a user's account has never been used with OFX, the server returns no history.

Unless the synchronization is a refresh request (see below), in all subsequent requests, this has to be the previous value of Token this method returned (i.e., received for this type of synchronization request from the server). This will serve as the user's own endpoint. When the server supplies a response, it supplies a new endpoint (Token) as well. A token needs to be unique only within payments for the specified account.

A brand new client, or a client that lost synchronization, might want to learn about mot recent payee list by submitting a payee synchronization refresh (i.e., wants a set of changes, rather than asking the server to send everything it knows).

A client can request a refresh of current state by calling the SynchronizePayees method, where Token parameter is set to REFRESH (not case sensitive). The response will reflect the current state. For example, if you create a payee and then modify it three times, even if this history would have been available for a regular synchronization, on a synchronization refresh request the servers should only send a single add that reflects the current state.

If the response contains a list of payees, then the SyncPayees property will be populated and SyncPayees event will be fired for each payee. A single payee has a single PayeeId and/or PayeeListId, but it can undergo several state changes over its life and thus might have several entries in the token history.


SynchronizePayments Method

SynchronizePayments Method (BillPayment Class)

Synchronizes bills paid on the client side with paid bills on record on the server side.

Syntax

 char* SynchronizePayments(char* lpszToken);

Remarks

The bill payment synchronization request (as all other bill payment requests: add, modify, cancel) is applicable for bank accounts only and not for the credit card accounts.

Users of OFX Payments need to be able to obtain the current status of transactions previously sent to the server for processing. For example, once the user schedules a payment and the payment date has passed, the user might want to verify that the server made the payment as directed. Additionally, OFX allows for interactions with the server through multiple clients. This means, for example, that the user can perform some transactions from a home PC and others from an office computer with each session incorporating the activities performed on the other. In order to accomplish these tasks, the user has to submit a synchronization request by calling SynchronizePayments method to insure that it has an accurate copy of the server data that is relevant to the client application. The intent of this request is to address three scenarios in which the client might lose synchronization with the server:

  • A transaction has changed its state based on processing actions on the server. For example, a scheduled payment has passed its due date and has been paid or rejected.
  • Transactions relevant to the client's application state have been added, deleted, or modified by a second client. For example, a user might enter or change transactions from more than one PC or application.
  • A communications session between the client and server was interrupted or completed abnormally. As a result the client does not have responses from the server indicating that all the transactions were received and processed.

If this request is submitted for the first time to the server, the Token parameter has to be 0. In this case, servers should send all available history, allowing a new client (for example) to know about work done by other clients. If a user's account has never been used with OFX, the server returns no history.

Unless the synchronization is a refresh request (see below), in all subsequent requests, this has to be the previous value of Token this method returned (i.e., received for this type of synchronization request from the server). This will serve as the user's own endpoint. When the server supplies a response, it supplies a new endpoint (Token) as well. A token needs to be unique only within payments for the specified account.

A brand new client, or a client that lost synchronization, might want to learn about in-progress payments by submitting a synchronization refresh of the payment requests (i.e., wants a set of changes, rather than asking the server to send everything it knows). It would almost certainly want to do a synchronization refresh of the recurring payment models, because these often live for months or years.

A client can request a refresh of current state by calling the SynchronizePayments where Token parameter is set to REFRESH (not case sensitive). The response will reflect the current state. For example, if you create a payment and then modify it three times, even if this history would have been available for a regular synchronization, on a synchronization refresh request the servers should only send a single add that reflects the current state.

The following properties have to be set when this method is called:

FIUrl | (required)
FIId | (required)
FIOrganization | (required)
OFXAppId | (required)
OFXAppVersion | (required)
OFXUser | (required)
OFXPassword | (required)
PaymentFromBankId | (required)
PaymentFromAccountId | (required)
PaymentFromAccountType | (optional)

Upon a successful reply, if the response contains payment aggregates, then the SyncPayments property will be populated and SyncPayments event will be fired for each payment transaction. A single payment has a single PaymentId, but it can undergo several state changes over its life and thus might have several entries in the token history.


ConnectionStatus Event

ConnectionStatus Event (BillPayment Class)

Fired to indicate changes in connection state.

Syntax

 virtual int FireConnectionStatus(BillPaymentConnectionStatusEventParams *e);

 typedef struct {

  char* ConnectionEvent;
  int StatusCode;
  char* Description;

  int reserved;

 } BillPaymentConnectionStatusEventParams;

Remarks

The ConnectionStatus event is fired when the connection state changes: completion of a firewall or proxy connection, completion of a security handshake, etc.

The ConnectionEvent parameter indicates the type of connection event. Values may include:

Firewall connection complete.
SSL or S/Shell handshake complete (where applicable).
Remote host connection complete.
Remote host disconnected.
SSL or S/Shell connection broken.
Firewall host disconnected.

StatusCode has the error code returned by the TCP/IP stack. Description contains a description of this code. The value of StatusCode is equal to the value of the error.


Error Event

Error Event (BillPayment Class)

Information about errors during data delivery.

Syntax

 virtual int FireError(BillPaymentErrorEventParams *e);

 typedef struct {

  int ErrorCode;
  char* Description;

  int reserved;

 } BillPaymentErrorEventParams;

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Messages section.


SSLServerAuthentication Event

SSLServerAuthentication Event (BillPayment Class)

Fired after the server presents its certificate to the client.

Syntax

 virtual int FireSSLServerAuthentication(BillPaymentSSLServerAuthenticationEventParams *e);

 typedef struct {

  char* CertEncoded;
  char* CertSubject;
  char* CertIssuer;
  char* Status;
  int Accept;

  int lenCertEncoded;
  int reserved;

 } BillPaymentSSLServerAuthenticationEventParams;

Remarks

This event is where the client can decide whether to continue with the connection process or not. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether to continue or not.

When Accept is False, Status shows why the verification failed (otherwise, Status contains the string "OK"). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.


SSLStatus Event

SSLStatus Event (BillPayment Class)

Shows the progress of the secure connection.

Syntax

 virtual int FireSSLStatus(BillPaymentSSLStatusEventParams *e);

 typedef struct {

  char* Message;

  int reserved;

 } BillPaymentSSLStatusEventParams;

Remarks

The event is fired for informational and logging purposes only. Used to track the progress of the connection.


SyncPayees Event

SyncPayees Event (BillPayment Class)

Fired for each payee included in the synchronization response.

Syntax

 virtual int FireSyncPayees(BillPaymentSyncPayeesEventParams *e);

 typedef struct {

  char* PayeeAggregate;
  char* PayeeTxType;
  char* PayeeId;
  char* PayeeIdScope;
  char* PayeeListId;
  char* PayeeAccount;
  char* PayeeName;
  char* PayeeAddr1;
  char* PayeeAddr2;
  char* PayeeAddr3;
  char* PayeeCity;
  char* PayeeState;
  char* PayeePostalCode;
  char* PayeeCountry;
  char* PayeePhone;

  int reserved;

 } BillPaymentSyncPayeesEventParams;

Remarks

When this event is fired for each payee included in the response (if any), the following are returned for each payee identified by PayeeListId:

  • PayeeAggregate contains the complete aggregate for a payee.
  • PayeeTxType indicates the payee transaction type, if this is added, modified or deleted (possible values: ADDED, MODIFIED, DELETED).
  • PayeeId contains the server-assigned id of a payee.
  • PayeeIdScope contains Scope of a payee ID in the payee list (GLOBAL, USER), where GLOBAL = payee ID valid across the entire payment system USER = payee ID valid with all FI accounts set up for the user's payments account.
  • PayeeListId contains the list record id of a payee in the payee list.
  • PayeeAccount contains the account the user has with a payee in the payee list.
  • PayeeName contains the name of a payee in the payee list.
  • PayeeAddr1 contains the street address (line 1) of a payee in the payee list.
  • PayeeAddr2 contains the address line 2 of a payee in the payee list.
  • PayeeAddr3 contains the address line 3 of a payee in the payee list.
  • PayeeCity contains the city name of a payee in the payee list.
  • PayeeState contains the state name of a payee in the payee list.
  • PayeePostalCode contains the postal code of a payee in the payee list.
  • PayeeCountry contains the country name of a payee in the payee list.
  • PayeePhone contains the phone number of a payee in the payee list.

If what you need is not returned through this event parameters, you can always parse each PayeeAggregate using our OFXAggregate component.


SyncPayments Event

SyncPayments Event (BillPayment Class)

Fired for each payment transaction included in the synchronization response.

Syntax

 virtual int FireSyncPayments(BillPaymentSyncPaymentsEventParams *e);

 typedef struct {

  char* PaymentAggregate;
  char* PaymentTxType;
  char* PaymentId;
  char* PayeeId;
  char* PayeeListId;
  char* PayeeAccount;
  char* PayeeAggregate;
  char* PaymentAmount;
  char* FromAccountId;
  char* PaymentStatus;
  char* PaymentDate;

  int reserved;

 } BillPaymentSyncPaymentsEventParams;

Remarks

When this event is fired for each payment transaction included in the response (if any), the following are returned for each payment transaction identified by PaymentId:

  • PaymentAggregate contains the aggregate for a payment transaction.
  • PaymentTxType indicates the payment transaction type, if this is added, modified or canceled (possible values: ADDED, MODIFIED, CANCELLED).
  • PaymentId contains the server id of a transaction in the list of payment transactions (if any) returned in the synchronization response.
  • PayeeId contains the id of the payee the payment has been sent to.
  • PayeeListId contains the list id of the payee the payment has been sent to.
  • PayeeAccount contains the account the user has with the payee the payment has been sent to.
  • PayeeAggregate contains the info aggregate (name and address details) of the payee the payment has been sent to.
  • PaymentAmount contains the amount of a payment transaction.
  • FromAccountId contains the account number a payment has been sent from.
  • PaymentStatus contains the status of a payment transaction.
  • PaymentDate contains the date of a payment transaction.

If what you need is not returned through this event, you can always parse each PaymentAggregate using our OFXAggregate component.


BillPayment Configuration

Configuration Settings (BillPayment Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

OFX Configuration Settings

CurrencyFormat: The format to be used for returning currency values.

If this is set to a non-empty string, the class will attempt to use the value as a pattern to format all currency strings returned from the server. You may use any of the system's default number formatting strings.

OFXDateFormat: The date format as required by OFX FI server.

Most of OFX FI servers, accept the default format, where the offset (G) and timezone (Z) are specified. However, there might still be some servers that do not accept that part. In such cases, you will have to set the OFXDateFormat to "YYYYMMddHHmmss.xxx" and GMT will be assumed as the default value.

Your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat (format that OFX FI server recognizes) right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

DateFormat: The format to be used for input and output dates.

This format is used for input and output dates. You may use any of the system's default date formatting strings.

When submitting the request: all your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

When parsing the response: if DateFormat is set to a non-empty string, the class will attempt to use the value as a pattern to format all date strings as they are returned. Otherwise, the system's default value will be used for formatting.

If the DateFormat is set to the special value "OFXDATE": During input:, any values you supply to date properties are passed to the server directly with no changes; During output: all dates will be returned in the OFX format as it was provided by the server without performing any modifications.

GetResponseVar: Parses additional information out of the response.

Any additional response information contained within the OFX response that is not available via the Response fields, may be retrieved with this GetResponseVar config.

To obtain a response value, pass the XPath to the value you wish to receive. For instance, if the OFX response contains:

    "<OFX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0<SEVERITY>INFO</STATUS><DTSERVER>20120104223836.575<LANGUAGE>ENG"

Then calling GetResponseVar("/OFX/SIGNONMSGSRVSV1/LANGUAGE") will return "ENG".

NewPassword: New password for the current OFX user.

Setting NewPassword to a non-empty value will cause the class to issue a password change request during sign-on along with the regular current OFX request. After the request is sent, this value will be cleared.

The correct current password is needed as well during signon request and must be supplied through the OFXPassword. Upon successful reply from the server, the NewPassword used becomes the new password.

OFXLog: Log file for the OFX transaction.

This setting records the OFX communication, but without including HTTP headers, to a file.

Please note that ReadOFXDataFile will not be able to parse this file because of the OFX request content present. If only the response of the server is required, please look at the WriteOFXDataFile method instead.

ServerMessage: Server message if a warning or other information returned.

When sending a transaction request to a FI, their server with return either a successful reply or an error. However, even when a transaction is successful, a warning or other server messages might still be returned and are to be treated as informational notes only.

ClientUId: Unique ID identifying OFX Client.

In the profile response, if SignOnClientUIdReq is True, then ClientUId should be set and included in all future requests.

UserCred1A: Additional user credential required by server.

In the profile response, if SignOnUserCred1Q is present, then UserCred1A should be set (as the answer to question identified by SignOnUserCred1Q) and it should be included in all future requests as part of the signon.

UserCred2A: Additional user credential required by server.

In the profile response, if SignOnUserCred2Q is present, then UserCred2A should be set (as the answer to question identified by SignOnUserCred2Q) and it should be included in all future requests as part of the signon.

AuthToken: Authentication token required for this signon session only.

This credential is provided to the user out of band.

In the profile response, if SignOnAuthTokenFirst is True, then AuthToken should be sent in the very first signon.

CorrectFITID[i]: The FITID of a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the FITID of a previously sent transaction that is corrected by this record. Based on the value of CorrectAction[i], this transaction replaces or deletes the transaction that it corrects. This is applicable to statement download components only.

CorrectAction[i]: The action taken to a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the action taken to a previously sent transaction that is corrected by this record. Possible values are: REPLACE or DELETE. REPLACE replaces the transaction that it corrects referenced by CorrectFITID[i]. DELETE deletes it. This is applicable to statement download components only.

HTTP Configuration Settings

AcceptEncoding: Used to tell the server which types of content encodings the client supports.

When AllowHTTPCompression is true, the class adds an "Accept-Encoding: " header to the request being sent to the server. By default, this header's value is "gzip, deflate". This config allows you to change the value of the "Accept-Encoding" header. NOTE: The class only supports gzip and deflate decompression algorithms.

AllowHTTPCompression: This property enables HTTP compression for receiving data.

This is the same as the AllowHTTPCompression property. This setting is exposed here for use by classs that inherit from HTTP.

Authorization: The Authorization string to be sent to the server.

If the Authorization property contains a non-empty string, an Authorization HTTP request header is added to the request. This header conveys Authorization information to the server.

This property is provided so that the HTTP class can be extended with other security schemes in addition to the authorization schemes already implemented by the class.

The AuthScheme property defines the authentication scheme used. In the case of HTTP Basic Authentication (default), every time User and Password are set, they are Base64 encoded, and the result is put in the Authorization property in the form "Basic [encoded-user-password]".

BytesTransferred: Contains the number of bytes transferred in the response data.

Returns the raw number of bytes from the HTTP response data, prior to the component processing the data, whether it is chunked and/or compressed. This returns the same value as the Transfer event, by BytesTransferred.

EncodeURL: If set to true the URL will be encoded by the class.

The default value is false. If set to true the URL passed to the class will be URL encoded.

FollowRedirects: Determines what happens when the server issues a redirect.

This option determines what happens when the server issues a redirect. Normally, the class returns an error if the server responds with an "Object Moved" message. If this property is set to 1 (always), the new URL for the object is retrieved automatically every time.

If this property is set to 2 (Same Scheme), the new URL is retrieved automatically only if the URL Scheme is the same, otherwise the class fails with an error.

Note that following the HTTP specification, unless this option is set to 1 (Always), automatic redirects will be performed only for 'GET' or 'HEAD' requests. Other methods could potentially change the conditions of the initial request and create security vulnerabilities.

Furthermore, if either the new URL server and port are different than the existing one, User and Password are also reset to empty, unless this property is set to 1 (Always), in which case the same credentials are used to connect to the new server.

A Redirect event is fired for every URL the product is redirected to. In the case of automatic redirections, the Redirect event is a good place to set properties related to the new connection (e.g. new authentication parameters).

The default value is 0 (Never). In this case, redirects are never followed, and the class fails with an error instead.

Valid options are:

  • 0 - Never
  • 1 - Always
  • 2 - Same Scheme

GetOn302Redirect: If set to true the class will perform a GET on the new location.

The default value is false. If set to true the class will perform a GET on the new location. Otherwise it will use the same HTTP method again.

HTTPVersion: The version of HTTP used by the class.

Possible values include "1.0", and "1.1". The default is "1.1".

IfModifiedSince: A date determining the maximum age of the desired document.

This is the same as the IfModifiedSince property. This setting is exposed here for use by classs that inherit from HTTP.

KeepAlive: Determines whether the HTTP connection is closed after completion of the request.

If true, the component will not send the 'Connection: Close' header. The absence of the Connection header indicates to the server that HTTP persistent connections should be used if supported. Note that not all server support persistent connections. You may also explicitly add the Keep-Alive header to the request headers by setting OtherHeaders to 'Connection: Keep-Alive'. If false, the connection will be closed immediately after the server response is received.

The default value for KeepAlive is false.

MaxRedirectAttempts: Limits the number of redirects that are followed in a request.

When FollowRedirects is set to any value besides frNever the class will follow redirects until this maximum number of redirect attempts are made. The default value is 20.

OtherHeaders: Other headers as determined by the user (optional).

This configuration option can be set to a string of headers to be appended to the HTTP request headers.

The headers must be of the format "header: value" as described in the HTTP specifications. Header lines should be separated by CRLF ("\r\ n") .

Use this configuration option with caution. If this configuration option contains invalid headers, HTTP requests may fail.

This configuration option is useful for extending the functionality of the class beyond what is provided.

ProxyAuthorization: The authorization string to be sent to the proxy server.

Similar to the Authorization config, but for proxy authorization. If this config contains a non-empty string, a Proxy-Authorization HTTP request header is added to the request. This header conveys proxy authorization information to the server. If ProxyUser and ProxyPassword are specified, this value is calculated using the algorithm specified by ProxyAuthScheme.

ProxyAuthScheme: The authorization scheme to be used for the proxy.

This is the same as ProxyAuthScheme. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPassword: A password if authentication is to be used for the proxy.

This is the same as ProxyPassword. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPort: Port for the proxy server (default 80).

This is the same as ProxyPort. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyServer: Name or IP address of a proxy server (optional).

This is the same as ProxyServer. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyUser: A user name if authentication is to be used for the proxy.

This is the same as ProxyUser. This setting is provided for use by classs that do not directly expose Proxy properties.

TransferredDataLimit: The maximum number of incoming bytes to be stored by the class.

If TransferredDataLimit is set to 0 (default), no limits are imposed. Otherwise this reflects the maximum number of incoming bytes that can be stored by the class. If TransferredDataLimit is set to 0, no limits are imposed.

UseChunkedEncoding: Enables or Disables HTTP chunked encoding for transfers.

If UseChunkedEncoding is set to true, the class will use HTTP chunked encoding when posting if possible. HTTP chunked encoding allows large files to be sent in chunks instead of all at once. If set to false, the class will not use HTTP chunked encoding. The default value is false.

Note: Some servers (such as the ASP.NET Development Server) may not support chunked encoding.

ChunkSize: Specifies the chunk size in bytes when using chunked encoding.

This is only applicable when UseChunkedEncoding is true. This setting specifies the chunk size in bytes to be used when posting data. The default value is 16384.

UsePlatformHTTPClient: Whether or not to use the platform HTTP client.

If True, the component will use the default HTTP client for the platform (URLConnection in Java or WebRequest in .NET) instead of the internal HTTP implementation. This is important for environments where direct access to sockets is limited or not allowed (as in the Google AppEngine for instance).

UserAgent: Information about the user agent (browser).

This is the value supplied in the HTTP User-Agent header. The default setting is "/n software IPWorks HTTP/S Component - www.nsoftware.com".

Override the default with the name and version of your software.

KerberosSPN: The Service Principal Name for the Kerberos Domain Controller.

If the Service Principal Name on the Kerberos Domain Controller is not the same as the URL that you are authenticating to, the Service Principal Name should be set here.

IPPort Configuration Settings

FirewallAutoDetect: Tells the class whether or not to automatically detect and use firewall system settings, if available.

This is the same as FirewallAutoDetect. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallHost: Name or IP address of firewall (optional).

If a FirewallHost is given, requested connections will be authenticated through the specified firewall when connecting.

If the FirewallHost setting is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, the FirewallHost setting is set to the corresponding address. If the search is not successful, an error is returned.

NOTE: This is the same as FirewallHost. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPassword: Password to be used if authentication is to be used when connecting through the firewall.

If FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallPassword. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPort: The TCP port for the FirewallHost;.

Note that the FirewallPort is set automatically when FirewallType is set to a valid value.

NOTE: This is the same as FirewallPort. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallType: Determines the type of firewall to connect through.

The appropriate values are as follows:

0 | No firewall (default setting).
1 | Connect through a tunneling proxy. FirewallPort is set to 80.
2 | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
3 | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

NOTE: This is the same as FirewallType. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallUser: A user name if authentication is to be used connecting through a firewall.

If the FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the Firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallUser. This setting is provided for use by classs that do not directly expose Firewall properties.

KeepAliveTime: The inactivity time in milliseconds before a TCP keep-alive packet is sent.

When set, TCPKeepAlive will automatically be set to true. By default the operating system will determine the time a connection is idle before a TCP keep-alive packet is sent. This system default if this value is not specified here is 2 hours. In many cases a shorter interval is more useful. Set this value to the desired interval in milliseconds.

Note: This value is not applicable in Java.

KeepAliveInterval: The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.

When set, TCPKeepAlive will automatically be set to true. A TCP keep-alive packet will be sent after a period of inactivity as defined by KeepAliveTime. If no acknowledgement is received from the remote host the keep-alive packet will be re-sent. This setting specifies the interval at which the successive keep-alive packets are sent in milliseconds. This system default if this value is not specified here is 1 second.

Note: This value is not applicable in Java or MAC.

Linger: When set to True, connections are terminated gracefully.

This property controls how a connection is closed. The default is True.

In the case that Linger is True (default), there are two scenarios for determining how long the connection will linger. The first, if LingerTime is 0 (default), the system will attempt to send pending data for a connection until the default IP protocol timeout expires.

In the second scenario, LingerTime is a positive value, the system will attempt to send pending data until the specified LingerTime is reached. If this attempt fails, then the system will reset the connection.

The default behavior (which is also the default mode for stream sockets) might result in a long delay in closing the connection. Although the class returns control immediately, the system could hold system resources until all pending data is sent (even after your application closes).

Setting this property to False forces an immediate disconnection. If you know that the other side has received all the data you sent (by a client acknowledgment, for example), setting this property to False might be the appropriate course of action.

LingerTime: Time in seconds to have the connection linger.

LingerTime is the time, in seconds, to leave the socket connection linger. This value is 0 by default, which means it will use the default IP protocol timeout.

LocalHost: The name of the local host through which connections are initiated or accepted.

The LocalHost setting contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.

In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the class initiate connections (or accept in the case of server classs) only through that interface.

If the class is connected, the LocalHost setting shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).

LocalPort: The TCP port in the local host where the class binds.

This must be set before a connection is attempted. It instructs the class to bind to a specific port (or communication endpoint) in the local machine.

Setting this to 0 (default) enables the system to choose a port at random. The chosen port will be shown by LocalPort after the connection is established.

LocalPort cannot be changed once a connection is made. Any attempt to set this when a connection is active will generate an error.

This; setting is useful when trying to connect to services that require a trusted port in the client side. An example is the remote shell (rsh) service in UNIX systems.

MaxLineLength: The maximum amount of data to accumulate when no EOL is found.

MaxLineLength is the size of an internal buffer, which holds received data while waiting for an EOL string.

If an EOL string is found in the input stream before MaxLineLength bytes are received, the DataIn event is fired with the EOL parameter set to True, and the buffer is reset.

If no EOL is found, and MaxLineLength bytes are accumulated in the buffer, the DataIn event is fired with the EOL parameter set to False, and the buffer is reset.

The minimum value for MaxLineLength is 256 bytes. The default value is 2048 bytes. The maximum value is 65536 bytes.

MaxTransferRate: The transfer rate limit in bytes per second.

This setting can be used to throttle outbound TCP traffic. Set this to the number of bytes to be sent per second. By default this is not set and there is no limit.

TCPKeepAlive: Determines whether or not the keep alive socket option is enabled.

If set to true, the socket's keep-alive option is enabled and keep-alive packets will be sent periodically to maintain the connection. Set KeepAliveTime and KeepAliveInterval to configure the timing of the keep-alive packets.

Note: This value is not applicable in Java.

UseIPv6: Whether or not to use IPv6.

By default, the component expects an IPv4 address for local and remote host properties, and will create an IPv4 socket. To use IPv6 instead, set this to True.

TcpNoDelay: Whether or not to delay when sending packets.

When true, the socket will send all data that is ready to send at once. When false, the socket will send smaller buffered packets of data at small intervals. This is known as the Nagle algorithm.

By default, this config is set to false.

SSL Configuration Settings

ReuseSSLSession: Determines if the SSL session is reused.

If set to true, the component will reuse the context if and only if the following criteria are met:

  • The target host name is the same.
  • The system cache entry has not expired (default timeout is 10 hours).
  • The application process that calls the function is the same.
  • The logon session is the same.
  • The instance of the component is the same.

SSLCipherStrength: The minimum cipher strength used for bulk encryption.

This minimum cipher strength largely dependent on the security modules installed on the system. If the cipher strength specified is not supported, an error will be returned when connections are initiated.

Please note that this setting contains the minimum cipher strength requested from the security library. The actual cipher strength used for the connection is shown by the SSLStatus event.

Use this setting with caution. Requesting a lower cipher strength than necessary could potentially cause serious security vulnerabilities in your application.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

SSLEnabledProtocols: Used to enable/disable the supported security protocols.

Used to enable/disable the supported security protocols.

Not all supported protocols are enabled by default (the value of this setting is 240). If you want more granular control over the enabled protocols, you can set this property to the binary 'OR' of one or more of the following values:

TLS1.2 | 3072 (Hex C00)
TLS1.1 | 768 (Hex 300)
TLS1 | 192 (Hex C0) (Default)
SSL3 | 48 (Hex 30) (Default)
SSL2 | 12 (Hex 0C)

Please note that although a number of sites still support SSL2, it is usually a good idea to disable it because of potential security vulnerabilities.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

TLS 1.1 and TLS1.2 support are only available starting with Windows 7.

SSLProvider: The name of the security provider to use.

Change this setting to use security providers other than the system default.

Use this setting with caution. Disabling SSL security or pointing to the wrong provider could potentially cause serious security vulnerabilities in your application.

The special value "*" (default) picks the default SSL provider defined in the system. On Windows, this is "Microsoft Unified Security Protocol Provider".

SSLSecurityFlags: Flags that control certificate verification.

The following flags are defined (specified in hexadecimal notation). They can be or-ed together to exclude multiple conditions:

0x00000001 | Ignore time validity status of certificate.
0x00000002 | Ignore time validity status of CTL.
0x00000004 | Ignore non-nested certificate times.
0x00000010 | Allow unknown Certificate Authority.
0x00000020 | Ignore wrong certificate usage.
0x00000100 | Ignore unknown certificate revocation status.
0x00000200 | Ignore unknown CTL signer revocation status.
0x00000400 | Ignore unknown Certificate Authority revocation status.
0x00000800 | Ignore unknown Root revocation status.
0x00008000 | Allow test Root certificate.
0x00004000 | Trust test Root certificate.
0x80000000 | Ignore non-matching CN (certificate CN not-matching server name).

This functionality is currently not available when the provider is OpenSSL.

OpenSSLCADir: The path to a directory containing CA certificates.

This functionality is available only when the provider is OpenSSL.

The path set by this property should point to a directory containing CA certificates in PEM format. The files each contain one CA certificate. The files are looked up by the CA subject name hash value, which must hence be available. If more than one CA certificate with the same name hash value exist, the extension must be different (e.g. 9d66eef0.0, 9d66eef0.1 etc). OpenSSL recommends to use the c_rehash utility to create the necessary links. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCAFile: Name of the file containing the list of CA's trusted by your application.

This functionality is available only when the provider is OpenSSL.

The file set by this property should contain a list of CA certificates in PEM format. The file can contain several CA certificates identified by

-----BEGIN CERTIFICATE-----

... (CA certificate in base64 encoding) ...

-----END CERTIFICATE-----

sequences. Before, between, and after the certificates text is allowed which can be used e.g. for descriptions of the certificates. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCipherList: A string that controls the ciphers to be used by SSL.

This functionality is available only when the provider is OpenSSL.

The format of this string is described in the OpenSSL man page ciphers(1) section "CIPHER LIST FORMAT". Please refer to it for details. The default string "DEFAULT" is determined at compile time and is normally equivalent to "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH".

OpenSSLPrngSeedData: The data to seed the pseudo random number generator (PRNG).

This functionality is available only when the provider is OpenSSL.

By default OpenSSL uses the device file "/dev/urandom" to seed the PRNG and setting OpenSSLPrngSeedData is not required. If set, the string specified is used to seed the PRNG.

SSLAlgorithmList: A string that controls the cipher algorithms to be used by SSL.

This configuration option takes a semicolon (;) delimited list of cipher algorithms to specify what algorithms may be used by SSL. This option can be used in conjunction with SSLEnabledProtocols to control which ciphers are used.

For example:

  obj.Config("SSLEnabledProtocols=3027"); // TLS1.2  (it supports SHA_256)
  obj.Config("SSLAlgorithmList=CALG_SHA_256;CALG_MD5");
Possible values include:
  • CALG_3DES
  • CALG_3DES_112
  • CALG_AES
  • CALG_AES_128
  • CALG_AES_192
  • CALG_AES_256
  • CALG_AGREEDKEY_ANY
  • CALG_CYLINK_MEK
  • CALG_DES
  • CALG_DESX
  • CALG_DH_EPHEM
  • CALG_DH_SF
  • CALG_DSS_SIGN
  • CALG_ECDH
  • CALG_ECDSA
  • CALG_ECMQV
  • CALG_HASH_REPLACE_OWF
  • CALG_HUGHES_MD5
  • CALG_HMAC
  • CALG_KEA_KEYX
  • CALG_MAC
  • CALG_MD2
  • CALG_MD4
  • CALG_MD5
  • CALG_NO_SIGN
  • CALG_OID_INFO_CNG_ONLY
  • CALG_OID_INFO_PARAMETERS
  • CALG_PCT1_MASTER
  • CALG_RC2
  • CALG_RC4
  • CALG_RC5
  • CALG_RSA_KEYX
  • CALG_RSA_SIGN
  • CALG_SCHANNEL_ENC_KEY
  • CALG_SCHANNEL_MAC_KEY
  • CALG_SCHANNEL_MASTER_HASH
  • CALG_SEAL
  • CALG_SHA
  • CALG_SHA1
  • CALG_SHA_256
  • CALG_SHA_384
  • CALG_SHA_512
  • CALG_SKIPJACK
  • CALG_SSL2_MASTER
  • CALG_SSL3_MASTER
  • CALG_SSL3_SHAMD5
  • CALG_TEK
  • CALG_TLS1_MASTER
  • CALG_TLS1PRF

This option is only valid in Windows.

Socket Configuration Settings

AbsoluteTimeout: Determines whether timeouts are inactivity timeouts or absolute timeouts.

If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.

Note: This option is not valid for UDP ports.

FirewallData: Used to send extra data to the firewall.

When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).

InBufferSize: The size in bytes of the incoming queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be receiving. Increasing the value of the InBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

OutBufferSize: The size in bytes of the outgoing queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be sending. Increasing the value of the OutBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

Base Configuration Settings

SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

Base Configuration Settings

CodePage: The system code page used for Unicode to Multibyte translations.

The default code page is the Active Code Page (0).

The following is a list of valid code page identifiers:

Identifier | Name
037 | IBM EBCDIC - U.S./Canada
437 | OEM - United States
500 | IBM EBCDIC - International
708 | Arabic - ASMO 708
709 | Arabic - ASMO 449+, BCON V4
710 | Arabic - Transparent Arabic
720 | Arabic - Transparent ASMO
737 | OEM - Greek (formerly 437G)
775 | OEM - Baltic
850 | OEM - Multilingual Latin I
852 | OEM - Latin II
855 | OEM - Cyrillic (primarily Russian)
857 | OEM - Turkish
858 | OEM - Multlingual Latin I + Euro symbol
860 | OEM - Portuguese
861 | OEM - Icelandic
862 | OEM - Hebrew
863 | OEM - Canadian-French
864 | OEM - Arabic
865 | OEM - Nordic
866 | OEM - Russian
869 | OEM - Modern Greek
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2)
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875 | IBM EBCDIC - Modern Greek
932 | ANSI/OEM - Japanese, Shift-JIS
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore)
949 | ANSI/OEM - Korean (Unified Hangeul Code)
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026 | IBM EBCDIC - Turkish (Latin-5)
1047 | IBM EBCDIC - Latin 1/Open System
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141 | IBM EBCDIC - Germany (20273 + Euro symbol)
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144 | IBM EBCDIC - Italy (20280 + Euro symbol)
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147 | IBM EBCDIC - France (20297 + Euro symbol)
1148 | IBM EBCDIC - International (500 + Euro symbol)
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 | Unicode UCS-2 Big-Endian
1250 | ANSI - Central European
1251 | ANSI - Cyrillic
1252 | ANSI - Latin I
1253 | ANSI - Greek
1254 | ANSI - Turkish
1255 | ANSI - Hebrew
1256 | ANSI - Arabic
1257 | ANSI - Baltic
1258 | ANSI/OEM - Vietnamese
1361 | Korean (Johab)
10000 | MAC - Roman
10001 | MAC - Japanese
10002 | MAC - Traditional Chinese (Big5)
10003 | MAC - Korean
10004 | MAC - Arabic
10005 | MAC - Hebrew
10006 | MAC - Greek I
10007 | MAC - Cyrillic
10008 | MAC - Simplified Chinese (GB 2312)
10010 | MAC - Romania
10017 | MAC - Ukraine
10021 | MAC - Thai
10029 | MAC - Latin II
10079 | MAC - Icelandic
10081 | MAC - Turkish
10082 | MAC - Croatia
12000 | Unicode UCS-4 Little-Endian
12001 | Unicode UCS-4 Big-Endian
20000 | CNS - Taiwan
20001 | TCA - Taiwan
20002 | Eten - Taiwan
20003 | IBM5550 - Taiwan
20004 | TeleText - Taiwan
20005 | Wang - Taiwan
20105 | IA5 IRV International Alphabet No. 5 (7-bit)
20106 | IA5 German (7-bit)
20107 | IA5 Swedish (7-bit)
20108 | IA5 Norwegian (7-bit)
20127 | US-ASCII (7-bit)
20261 | T.61
20269 | ISO 6937 Non-Spacing Accent
20273 | IBM EBCDIC - Germany
20277 | IBM EBCDIC - Denmark/Norway
20278 | IBM EBCDIC - Finland/Sweden
20280 | IBM EBCDIC - Italy
20284 | IBM EBCDIC - Latin America/Spain
20285 | IBM EBCDIC - United Kingdom
20290 | IBM EBCDIC - Japanese Katakana Extended
20297 | IBM EBCDIC - France
20420 | IBM EBCDIC - Arabic
20423 | IBM EBCDIC - Greek
20424 | IBM EBCDIC - Hebrew
20833 | IBM EBCDIC - Korean Extended
20838 | IBM EBCDIC - Thai
20866 | Russian - KOI8-R
20871 | IBM EBCDIC - Icelandic
20880 | IBM EBCDIC - Cyrillic (Russian)
20905 | IBM EBCDIC - Turkish
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932 | JIS X 0208-1990 & 0121-1990
20936 | Simplified Chinese (GB2312)
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027 | Extended Alpha Lowercase
21866 | Ukrainian (KOI8-U)
28591 | ISO 8859-1 Latin I
28592 | ISO 8859-2 Central Europe
28593 | ISO 8859-3 Latin 3
28594 | ISO 8859-4 Baltic
28595 | ISO 8859-5 Cyrillic
28596 | ISO 8859-6 Arabic
28597 | ISO 8859-7 Greek
28598 | ISO 8859-8 Hebrew
28599 | ISO 8859-9 Latin 5
28605 | ISO 8859-15 Latin 9
29001 | Europa 3
38598 | ISO 8859-8 Hebrew
50220 | ISO 2022 Japanese with no halfwidth Katakana
50221 | ISO 2022 Japanese with halfwidth Katakana
50222 | ISO 2022 Japanese JIS X 0201-1989
50225 | ISO 2022 Korean
50227 | ISO 2022 Simplified Chinese
50229 | ISO 2022 Traditional Chinese
50930 | Japanese (Katakana) Extended
50931 | US/Canada and Japanese
50933 | Korean Extended and Korean
50935 | Simplified Chinese Extended and Simplified Chinese
50936 | Simplified Chinese
50937 | US/Canada and Traditional Chinese
50939 | Japanese (Latin) Extended and Japanese
51932 | EUC - Japanese
51936 | EUC - Simplified Chinese
51949 | EUC - Korean
51950 | EUC - Traditional Chinese
52936 | HZ-GB2312 Simplified Chinese
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte)
57002 | ISCII Devanagari
57003 | ISCII Bengali
57004 | ISCII Tamil
57005 | ISCII Telugu
57006 | ISCII Assamese
57007 | ISCII Oriya
57008 | ISCII Kannada
57009 | ISCII Malayalam
57010 | ISCII Gujarati
57011 | ISCII Punjabi
65000 | Unicode UTF-7
65001 | Unicode UTF-8

The following is a list of valid code page identifiers for Mac OS only:

Identifier | Name
1 | ASCII
2 | NEXTSTEP
3 | JapaneseEUC
4 | UTF8
5 | ISOLatin1
6 | Symbol
7 | NonLossyASCII
8 | ShiftJIS
9 | ISOLatin2
10 | Unicode
11 | WindowsCP1251
12 | WindowsCP1252
13 | WindowsCP1253
14 | WindowsCP1254
15 | WindowsCP1250
21 | ISO2022JP
30 | MacOSRoman
10 | UTF16String
0x90000100 | UTF16BigEndian
0x94000100 | UTF16LittleEndian
0x8c000100 | UTF32String
0x98000100 | UTF32BigEndian
0x9c000100 | UTF32LittleEndian
65536 | Proprietary


BillPayment Errors

Trappable Errors (BillPayment Class)

OFX Errors

2000 Required field missing from server response.
2001 OFX server error. Description follows.
2002 Invalid OFX response.
2003 OFX response contains unknown element tags.

The class may also return one of the following error codes, which are inherited from other classes.

XMLp Errors

101 Invalid attribute index.
102 No attributes available.
103 Invalid namespace index.
104 No namespaces available.
105 Invalid element index.
106 No elements available.
107 Attribute does not exist.
201 Unbalanced element tag.
202 Unknown element prefix (can't find namespace).
203 Unknown attribute prefix (can't find namespace).
204 Invalid XML markup.
205 Invalid end state for parser.
206 Document contains unbalanced elements.
207 Invalid XPath.
208 No such child.
209 Top element does not match start of path.
210 DOM tree unavailable (set BuildDOM to true and reparse).
302 Can't open file.

HTTP Errors

118 Firewall Error. Error description contains detailed message.
143 Busy executing current method.
151 HTTP protocol error. The error message has the server response.
152 No server specified in URL
153 Specified URLScheme is invalid.
155 Range operation is not supported by server.
156 Invalid cookie index (out of range).
301 Interrupted.
302 Can't open AttachedFile.

The class may also return one of the following error codes, which are inherited from other classes.

IPPort Errors

100 You cannot change the RemotePort at this time. A connection is in progress.
101 You cannot change the RemoteHost (Server) at this time. A connection is in progress.
102 The RemoteHost address is invalid (0.0.0.0).
104 Already connected. If you want to reconnect, close the current connection first.
106 You cannot change the LocalPort at this time. A connection is in progress.
107 You cannot change the LocalHost at this time. A connection is in progress.
112 You cannot change MaxLineLength at this time. A connection is in progress.
116 RemotePort cannot be zero. Please specify a valid service port number.
117 Cannot change UseConnection option while the class is Active.
135 Operation would block.
201 Timeout.
211 Action impossible in control's present state.
212 Action impossible while connected.
213 Action impossible while listening.
303 Could not open file.
434 Unable to convert string to selected CodePage
1105 Already connecting. If you want to reconnect, close the current connection first.
1117 You need to connect first.
1119 You cannot change the LocalHost at this time. A connection is in progress.
1120 Connection dropped by remote host.

SSL Errors

270 Cannot load specified security library.
271 Cannot open certificate store.
272 Cannot find specified certificate.
273 Cannot acquire security credentials.
274 Cannot find certificate chain.
275 Cannot verify certificate chain.
276 Error during handshake.
280 Error verifying certificate.
281 Could not find client certificate.
282 Could not find server certificate.
283 Error encrypting data.
284 Error decrypting data.

TCP/IP Errors

10004 [10004] Interrupted system call.
10009 [10009] Bad file number.
10013 [10013] Access denied.
10014 [10014] Bad address.
10022 [10022] Invalid argument.
10024 [10024] Too many open files.
10035 [10035] Operation would block.
10036 [10036] Operation now in progress.
10037 [10037] Operation already in progress.
10038 [10038] Socket operation on non-socket.
10039 [10039] Destination address required.
10040 [10040] Message too long.
10041 [10041] Protocol wrong type for socket.
10042 [10042] Bad protocol option.
10043 [10043] Protocol not supported.
10044 [10044] Socket type not supported.
10045 [10045] Operation not supported on socket.
10046 [10046] Protocol family not supported.
10047 [10047] Address family not supported by protocol family.
10048 [10048] Address already in use.
10049 [10049] Can't assign requested address.
10050 [10050] Network is down.
10051 [10051] Network is unreachable.
10052 [10052] Net dropped connection or reset.
10053 [10053] Software caused connection abort.
10054 [10054] Connection reset by peer.
10055 [10055] No buffer space available.
10056 [10056] Socket is already connected.
10057 [10057] Socket is not connected.
10058 [10058] Can't send after socket shutdown.
10059 [10059] Too many references, can't splice.
10060 [10060] Connection timed out.
10061 [10061] Connection refused.
10062 [10062] Too many levels of symbolic links.
10063 [10063] File name too long.
10064 [10064] Host is down.
10065 [10065] No route to host.
10066 [10066] Directory not empty
10067 [10067] Too many processes.
10068 [10068] Too many users.
10069 [10069] Disc Quota Exceeded.
10070 [10070] Stale NFS file handle.
10071 [10071] Too many levels of remote in path.
10091 [10091] Network subsystem is unavailable.
10092 [10092] WINSOCK DLL Version out of range.
10093 [10093] Winsock not loaded yet.
11001 [11001] Host not found.
11002 [11002] Non-authoritative 'Host not found' (try again or check DNS setup).
11003 [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP.
11004 [11004] Valid name, no data record (check DNS setup).


CCStatement Class

CCStatement Class

Properties Methods Events Configuration Settings Errors

The CCStatement component is a single component that supports the SignOn and Credit Card Statement Download functions of Open Financial eXchange, as described by OFX Specification version 1.0.2.

Syntax

CCStatement

Remarks

The CCStatement class adds credit card statement download functionality to your desktop application, or allows your web application to fetch a user's credit card statement without having to redirect to another website. All downloads are done using a secure HTTPS Post to send account sign-on information to a financial institution. The class receives the secure response and parses the response into its properties.

To use the CCStatement class first identify the financial institution by setting the FIId, FIOrganization and FIUrl, properties. Next identify the OFX user and application by setting the OFXUser, OFXPassword, OFXAppId and OFXAppVersion properties. To identify the account, set the CardNumber property to the credit card for which you wish to download a statement. You may also set StartDate and EndDate properties to constrain the transaction list.

Once you have finished setting the properties that describe the statement you wish to download, use the GetStatement method to build and transmit the request automatically. When the response returns, the transaction properties will be populated automatically, as well as StartDate, EndDate, AvailableBalance, LedgerBalance and any other data the bank statement includes.

The transaction properties (TxAmount, TxDatePosted, TxFITID, TxMemo, TxPayeeName, and TxType) may be imagined as arrays, so that the getter function for each property takes as its argument the index of a transaction in the list. For example, TxAmount(0) gives the amount of the first transaction for the last statement downloaded.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting.

Property List

The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

AvailableBalance | Amount of the available balance.
AvailableBalanceDate | Date of the available balance.
CardNumber | Credit card number.
ClosingDetailCount | The number of records in the ClosingDetail arrays.
ClosingDetailAggregate | Aggregates are pieces of XML taken from the financial institution's original response.
ClosingDetailBalanceClosing | Closing statement balance.
ClosingDetailBalanceOpening | Opening statement balance.
ClosingDetailCreditLimit | Current credit limit.
ClosingDetailDateClose | Closing statement date.
ClosingDetailDateDue | Next payment due date.
ClosingDetailDateEnd | End date of transaction data for this statement.
ClosingDetailDateOpen | Opening statement date.
ClosingDetailDateStart | Start date of transaction data for this statement.
ClosingDetailFITID | Unique identifier assigned by financial institution to identify this particular statement closing information.
ClosingDetailImageRef | Server specified unique identifier for the statement closing image.
ClosingDetailImageRefType | Type of retrieval method for actual statement closing image.
ClosingDetailMinimumPayment | Next minimum amount due.
ClosingDetailTotalCredit | Total credit posted on the account for this statement (period indicated by DateStart and DateEnd ).
ClosingDetailTotalDebit | Total of debit posted on the account for this statement (period indicated by DateStart and DateEnd ).
ClosingDetailTotalFees | Total fees.
CurrencyCode | Default currency code for this statement.
EndDate | End date of statement requested.
FIId | Financial institution identifier.
FIOrganization | Financial institution organization name.
FirewallAutoDetect | This property tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallType | This property determines the type of firewall to connect through.
FirewallHost | This property contains the name or IP address of firewall (optional).
FirewallPassword | This property contains a password if authentication is to be used when connecting through the firewall.
FirewallPort | This property contains the TCP port for the firewall Host .
FirewallUser | This property contains a user name if authentication is to be used connecting through a firewall.
FIUrl | Financial institution URL.
ImageFileName | Filename and location to save the image content of a closing statement.
IncludeImages | Whether the server has to return data for closing statements images.
LedgerBalance | Amount of the ledger balance.
LedgerBalanceDate | Date of the ledger balance.
OFXAccessKey | Access key value received after a MFA authentication in a previous signon.
OFXAppId | OFX application identifier.
OFXAppVersion | OFX application version.
OFXPassword | User's password.
OFXRequest | The current OFX request aggregate.
OFXResponse | The current OFX response aggregate.
OFXUser | User's id.
OFXVersion | OFX API version.
SSLAcceptServerCertEncoded | The certificate (PEM/base64 encoded).
SSLCertEncoded | The certificate (PEM/base64 encoded).
SSLCertStore | The name of the certificate store for the client certificate.
SSLCertStorePassword | If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.
SSLCertStoreType | The type of certificate store for this certificate.
SSLCertSubject | The subject of the certificate used for client authentication.
SSLServerCertEncoded | The certificate (PEM/base64 encoded).
StartDate | Start date of requested transaction list.
Timeout | A timeout for the component.
TxCount | The number of records in the Tx arrays.
TxAggregate | Wrapper for a bank transaction.
TxAmount | This is the amount of money exchanged during a given transaction.
TxDate | This is the date the transaction was made by the account holder as recorded by the financial institution, stored as a string.
TxDatePosted | This is the date the transaction was posted to the financial institution, stored as a string.
TxFITID | Transaction Id assigned by the financial institution.
TxMemo | The memo property stores a notice from the payee to the customer as a string.
TxPayeeName | If this property has a value, the NAME element replaces the entire PAYEE aggregate in the request XML.
TxType | This is the type of transaction that was made on the account.
TxTypeDescription | A description of the transaction type.

Method List

The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

Config | Sets or retrieves a configuration setting.
GetClosingInfo | Download a credit card statement closing information.
GetImage | Request and retrieve a statement closing information image (if available).
GetStatement | Downloads statement for a credit card account.
ReadOFXDataFile | Reads an OFX response from a file.
Reset | Reset the internal state of the component and all properties to their default values.
WriteOFXDataFile | Writes the OFX response sent by the server to a file.

Event List

The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ConnectionStatus | Fired to indicate changes in connection state.
Error | Information about errors during data delivery.
SSLServerAuthentication | Fired after the server presents its certificate to the client.
SSLStatus | Shows the progress of the secure connection.

Configuration Settings

The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

Overwrite | Determines whether image files will be overwritten.
StatementIndex | The statement index in a multi-statement OFX response.
CurrencyFormat | The format to be used for returning currency values.
OFXDateFormat | The date format as required by OFX FI server.
DateFormat | The format to be used for input and output dates.
GetResponseVar | Parses additional information out of the response.
NewPassword | New password for the current OFX user.
OFXLog | Log file for the OFX transaction.
ServerMessage | Server message if a warning or other information returned.
ClientUId | Unique ID identifying OFX Client.
UserCred1A | Additional user credential required by server.
UserCred2A | Additional user credential required by server.
AuthToken | Authentication token required for this signon session only.
CorrectFITID[i] | The FITID of a previously sent transaction corrected by the current one.
CorrectAction[i] | The action taken to a previously sent transaction corrected by the current one.
AcceptEncoding | Used to tell the server which types of content encodings the client supports.
AllowHTTPCompression | This property enables HTTP compression for receiving data.
Authorization | The Authorization string to be sent to the server.
BytesTransferred | Contains the number of bytes transferred in the response data.
EncodeURL | If set to true the URL will be encoded by the component.
FollowRedirects | Determines what happens when the server issues a redirect.
GetOn302Redirect | If set to true the component will perform a GET on the new location.
HTTPVersion | The version of HTTP used by the component.
IfModifiedSince | A date determining the maximum age of the desired document.
KeepAlive | Determines whether the HTTP connection is closed after completion of the request.
MaxRedirectAttempts | Limits the number of redirects that are followed in a request.
OtherHeaders | Other headers as determined by the user (optional).
ProxyAuthorization | The authorization string to be sent to the proxy server.
ProxyAuthScheme | The authorization scheme to be used for the proxy.
ProxyPassword | A password if authentication is to be used for the proxy.
ProxyPort | Port for the proxy server (default 80).
ProxyServer | Name or IP address of a proxy server (optional).
ProxyUser | A user name if authentication is to be used for the proxy.
TransferredDataLimit | The maximum number of incoming bytes to be stored by the component.
UseChunkedEncoding | Enables or Disables HTTP chunked encoding for transfers.
ChunkSize | Specifies the chunk size in bytes when using chunked encoding.
UsePlatformHTTPClient | Whether or not to use the platform HTTP client.
UserAgent | Information about the user agent (browser).
KerberosSPN | The Service Principal Name for the Kerberos Domain Controller.
FirewallAutoDetect | Tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallHost | Name or IP address of firewall (optional).
FirewallPassword | Password to be used if authentication is to be used when connecting through the firewall.
FirewallPort | The TCP port for the FirewallHost;.
FirewallType | Determines the type of firewall to connect through.
FirewallUser | A user name if authentication is to be used connecting through a firewall.
KeepAliveTime | The inactivity time in milliseconds before a TCP keep-alive packet is sent.
KeepAliveInterval | The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.
Linger | When set to True, connections are terminated gracefully.
LingerTime | Time in seconds to have the connection linger.
LocalHost | The name of the local host through which connections are initiated or accepted.
LocalPort | The TCP port in the local host where the component binds.
MaxLineLength | The maximum amount of data to accumulate when no EOL is found.
MaxTransferRate | The transfer rate limit in bytes per second.
TCPKeepAlive | Determines whether or not the keep alive socket option is enabled.
UseIPv6 | Whether or not to use IPv6.
TcpNoDelay | Whether or not to delay when sending packets.
ReuseSSLSession | Determines if the SSL session is reused.
SSLCipherStrength | The minimum cipher strength used for bulk encryption.
SSLEnabledProtocols | Used to enable/disable the supported security protocols.
SSLProvider | The name of the security provider to use.
SSLSecurityFlags | Flags that control certificate verification.
OpenSSLCADir | The path to a directory containing CA certificates.
OpenSSLCAFile | Name of the file containing the list of CA's trusted by your application.
OpenSSLCipherList | A string that controls the ciphers to be used by SSL.
OpenSSLPrngSeedData | The data to seed the pseudo random number generator (PRNG).
SSLAlgorithmList | A string that controls the cipher algorithms to be used by SSL.
AbsoluteTimeout | Determines whether timeouts are inactivity timeouts or absolute timeouts.
FirewallData | Used to send extra data to the firewall.
InBufferSize | The size in bytes of the incoming queue of the socket.
OutBufferSize | The size in bytes of the outgoing queue of the socket.
CodePage | The system code page used for Unicode to Multibyte translations.


AvailableBalance Property

AvailableBalance Property (CCStatement Class)

Amount of the available balance.

Syntax

char* GetAvailableBalance();

Default Value

""

Remarks

This is the amount of money available from a given account.

Credit card balances differ from bank account balances in that they are always negative. Since credit is money-on-loan and must be paid back, it is best thought of as a negative. The LedgerBalance reflects how much money the user has already spent under that account and must pay back to the financial institution. AvailableBalance indicates how much more money is available to the user to borrow until they must pay the ledger balance.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

This property is read-only.

Data Type

String


AvailableBalanceDate Property

AvailableBalanceDate Property (CCStatement Class)

Date of the available balance.

Syntax

char* GetAvailableBalanceDate();

Default Value

""

Remarks

This is the date as of which the account balance is valid.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is read-only.

Data Type

String


CardNumber Property

CardNumber Property (CCStatement Class)

Credit card number.

Syntax

char* GetCardNumber();

int SetCardNumber(char* lpszCardNumber);

Default Value

""

Remarks

This string contains the full credit card number, without dashes or spaces.

Data Type

String


ClosingDetailCount Property

ClosingDetailCount Property (CCStatement Class)

The number of records in the ClosingDetail arrays.

Syntax

int GetClosingDetailCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • ClosingDetailAggregate
  • ClosingDetailBalanceClosing
  • ClosingDetailBalanceOpening
  • ClosingDetailCreditLimit
  • ClosingDetailDateClose
  • ClosingDetailDateDue
  • ClosingDetailDateEnd
  • ClosingDetailDateOpen
  • ClosingDetailDateStart
  • ClosingDetailFITID
  • ClosingDetailImageRef
  • ClosingDetailImageRefType
  • ClosingDetailMinimumPayment
  • ClosingDetailTotalCredit
  • ClosingDetailTotalDebit
  • ClosingDetailTotalFees

The array indices start at 0 and end at ClosingDetailCount-1.

This property is read-only and not available at design time.

Data Type

Integer


ClosingDetailAggregate Property

ClosingDetailAggregate Property (CCStatement Class)

Aggregates are pieces of XML taken from the financial institution's original response.

Syntax

char* GetClosingDetailAggregate(int iClosingDetailIndex);

Default Value

""

Remarks

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

This aggregate describes a statement closing information. It contains data (elements and values) associated with the following properties:

  • ClosingDetailFITID
  • ClosingDetailDateStart
  • ClosingDetailDateEnd
  • ClosingDetailDateOpen
  • ClosingDetailDateClose
  • ClosingDetailDateDue (applicable to credit card accounts only)
  • ClosingDetailBalanceOpening
  • ClosingDetailBalanceClosing
  • ClosingDetailTotalInterest (not applicable to credit card accounts)
  • ClosingDetailTotalFees
  • ClosingDetailTotalCredit
  • ClosingDetailTotalDebit
  • ClosingDetailCreditLimit (applicable to credit card accounts only)
  • ClosingDetailImageRef
  • ClosingDetailImageRefType

For each aggregate returned, clients can retrieve corresponding transactions by using ClosingDetailDateStart and ClosingDetailDateEnd in a statement download request (when calling GetStatement method).

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailBalanceClosing Property

ClosingDetailBalanceClosing Property (CCStatement Class)

Closing statement balance.

Syntax

char* GetClosingDetailBalanceClosing(int iClosingDetailIndex);

Default Value

""

Remarks

Closing statement balance.

This is not applicable for loan accounts.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailBalanceOpening Property

ClosingDetailBalanceOpening Property (CCStatement Class)

Opening statement balance.

Syntax

char* GetClosingDetailBalanceOpening(int iClosingDetailIndex);

Default Value

""

Remarks

Opening statement balance.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailCreditLimit Property

ClosingDetailCreditLimit Property (CCStatement Class)

Current credit limit.

Syntax

char* GetClosingDetailCreditLimit(int iClosingDetailIndex);

Default Value

""

Remarks

Current credit limit.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

This is applicable for credit card accounts only.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateClose Property

ClosingDetailDateClose Property (CCStatement Class)

Closing statement date.

Syntax

char* GetClosingDetailDateClose(int iClosingDetailIndex);

Default Value

""

Remarks

Closing statement date.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateDue Property

ClosingDetailDateDue Property (CCStatement Class)

Next payment due date.

Syntax

char* GetClosingDetailDateDue(int iClosingDetailIndex);

Default Value

""

Remarks

Next payment due date. This is applicable to credit card and loan accounts only.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateEnd Property

ClosingDetailDateEnd Property (CCStatement Class)

End date of transaction data for this statement.

Syntax

char* GetClosingDetailDateEnd(int iClosingDetailIndex);

Default Value

""

Remarks

End date of transaction data for this statement. A client should be able to use this date when requesting individual transactions that match this statement.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateOpen Property

ClosingDetailDateOpen Property (CCStatement Class)

Opening statement date.

Syntax

char* GetClosingDetailDateOpen(int iClosingDetailIndex);

Default Value

""

Remarks

Opening statement date.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateStart Property

ClosingDetailDateStart Property (CCStatement Class)

Start date of transaction data for this statement.

Syntax

char* GetClosingDetailDateStart(int iClosingDetailIndex);

Default Value

""

Remarks

Start date of transaction data for this statement. A client should be able to use this date when requesting individual transactions that match this statement.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailFITID Property

ClosingDetailFITID Property (CCStatement Class)

Unique identifier assigned by financial institution to identify this particular statement closing information.

Syntax

char* GetClosingDetailFITID(int iClosingDetailIndex);

Default Value

""

Remarks

Unique identifier assigned by financial institution to identify this particular statement closing information. This id provides a way for the client to distinguish one closing statement from another.

This is always returned in the server response for each statement.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailImageRef Property

ClosingDetailImageRef Property (CCStatement Class)

Server specified unique identifier for the statement closing image.

Syntax

char* GetClosingDetailImageRef(int iClosingDetailIndex);

Default Value

""

Remarks

Server specified unique identifier for the statement closing image.

This can be either image identifier (to be used during the request to retrieve the actual image when the GetImage method is called) or URL, depending on the value of ClosingDetailImageRefType.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailImageRefType Property

ClosingDetailImageRefType Property (CCStatement Class)

Type of retrieval method for actual statement closing image.

Syntax

char* GetClosingDetailImageRefType(int iClosingDetailIndex);

Default Value

""

Remarks

Type of retrieval method for actual statement closing image.

If ClosingDetailImageRef is returned in the response, this can be either image identifier (to be used during the request for the image when the GetImage method is called) or a URL.

Possible values for ClosingDetailImageRefType are:

Value | Meaning
OPAQUE | Requires the client to send a separate OFX request to access the image. The image can be retrieved by calling the GetImage method where ClosingDetailImageRef will be the parameter value for this method.
URL | The image is accessed directly via the URL provided. The client will not provide authentication and will simply follow the URL provided.
FORMURL | The image is accessed directly via an encoded URL. The client will send authentication to the server.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailMinimumPayment Property

ClosingDetailMinimumPayment Property (CCStatement Class)

Next minimum amount due.

Syntax

char* GetClosingDetailMinimumPayment(int iClosingDetailIndex);

Default Value

""

Remarks

Next minimum amount due. This is applicable to credit card and loan accounts only.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailTotalCredit Property

ClosingDetailTotalCredit Property (CCStatement Class)

Total credit posted on the account for this statement (period indicated by DateStart and DateEnd ).

Syntax

char* GetClosingDetailTotalCredit(int iClosingDetailIndex);

Default Value

""

Remarks

Total credit posted on the account for this statement (period indicated by ClosingDetailDateStart and ClosingDetailDateEnd).

In a bank statement (checking, savings or money market account), this represents total of deposits and credits, including interest. In a credit card statement, this represents total of payments and credits.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailTotalDebit Property

ClosingDetailTotalDebit Property (CCStatement Class)

Total of debit posted on the account for this statement (period indicated by DateStart and DateEnd ).

Syntax

char* GetClosingDetailTotalDebit(int iClosingDetailIndex);

Default Value

""

Remarks

Total of debit posted on the account for this statement (period indicated by ClosingDetailDateStart and ClosingDetailDateEnd).

In a bank statement (checking, savings or money market account), this represents total of checks and debits, including fees. In a credit card statement, this represents total of payments and credits.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailTotalFees Property

ClosingDetailTotalFees Property (CCStatement Class)

Total fees.

Syntax

char* GetClosingDetailTotalFees(int iClosingDetailIndex);

Default Value

""

Remarks

Total fees.

In a bank statement (checking, savings or money market account), this represents total of all fees. While in a credit card statement, this represents finance charge.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


CurrencyCode Property

CurrencyCode Property (CCStatement Class)

Default currency code for this statement.

Syntax

char* GetCurrencyCode();

Default Value

""

Remarks

Indicates how to interpret the monetary amounts in the current statement. This is a 3-character ISO-4217 currency code, such as USD and EUR.

This property is read-only.

Data Type

String


EndDate Property

EndDate Property (CCStatement Class)

End date of statement requested.

Syntax

char* GetEndDate();

int SetEndDate(char* lpszEndDate);

Default Value

""

Remarks

This is a string representing the date at which to stop listing transactions on the statement. Use this property and StartDate to constrain the list of transactions retrieved when calling GetStatement.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Data Type

String


FIId Property

FIId Property (CCStatement Class)

Financial institution identifier.

Syntax

char* GetFIId();

int SetFIId(char* lpszFIId);

Default Value

""

Remarks

FIId holds the identifier of the OFX Financial Institution and is used during signon. This value is unique for each organization name.

Data Type

String


FIOrganization Property

FIOrganization Property (CCStatement Class)

Financial institution organization name.

Syntax

char* GetFIOrganization();

int SetFIOrganization(char* lpszFIOrganization);

Default Value

""

Remarks

This is the name of the OFX Financial Institution and is used during signon. Each organization has a unique FIId that must also be used at signon.

Data Type

String


FirewallAutoDetect Property

FirewallAutoDetect Property (CCStatement Class)

This property tells the component whether or not to automatically detect and use firewall system settings, if available.

Syntax

int GetFirewallAutoDetect();

int SetFirewallAutoDetect(int bFirewallAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use firewall system settings, if available.

Data Type

Boolean


FirewallType Property

FirewallType Property (CCStatement Class)

This property determines the type of firewall to connect through.

Syntax

int GetFirewallType();

int SetFirewallType(int iFirewallType);

Possible Values

  FW_NONE(0),
  FW_TUNNEL(1),
  FW_SOCKS4(2),
  FW_SOCKS5(3)

Default Value

0

Remarks

This property determines the type of firewall to connect through. The applicable values are the following:

fwNone (0) | No firewall (default setting).
fwTunnel (1) | Connect through a tunneling proxy. FirewallPort is set to 80.
fwSOCKS4 (2) | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
fwSOCKS5 (3) | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

Data Type

Integer


FirewallHost Property

FirewallHost Property (CCStatement Class)

This property contains the name or IP address of firewall (optional).

Syntax

char* GetFirewallHost();

int SetFirewallHost(char* lpszFirewallHost);

Default Value

""

Remarks

This property contains the name or IP address of firewall (optional). If a FirewallHost is given, the requested connections will be authenticated through the specified firewall when connecting.

If this property is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, this property is set to the corresponding address. If the search is not successful, the class fails with an error.

Data Type

String


FirewallPassword Property

FirewallPassword Property (CCStatement Class)

This property contains a password if authentication is to be used when connecting through the firewall.

Syntax

char* GetFirewallPassword();

int SetFirewallPassword(char* lpszFirewallPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used when connecting through the firewall. If FirewallHost is specified, the FirewallUser and FirewallPassword properties are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

Data Type

String


FirewallPort Property

FirewallPort Property (CCStatement Class)

This property contains the TCP port for the firewall Host .

Syntax

int GetFirewallPort();

int SetFirewallPort(int lFirewallPort);

Default Value

0

Remarks

This property contains the TCP port for the firewall FirewallHost. See the description of the FirewallHost property for details.

Note that this property is set automatically when FirewallType is set to a valid value. See the description of the FirewallType property for details.

Data Type

Long


FirewallUser Property

FirewallUser Property (CCStatement Class)

This property contains a user name if authentication is to be used connecting through a firewall.

Syntax

char* GetFirewallUser();

int SetFirewallUser(char* lpszFirewallUser);

Default Value

""

Remarks

This property contains a user name if authentication is to be used connecting through a firewall. If the FirewallHost is specified, this property and FirewallPassword properties are used to connect and authenticate to the given Firewall. If the authentication fails, the class fails with an error.

Data Type

String


FIUrl Property

FIUrl Property (CCStatement Class)

Financial institution URL.

Syntax

char* GetFIUrl();

int SetFIUrl(char* lpszFIUrl);

Default Value

""

Remarks

This is the URL of the OFX Financial Institution to which the class will signon and fetch data.

Data Type

String


ImageFileName Property

ImageFileName Property (CCStatement Class)

Filename and location to save the image content of a closing statement.

Syntax

char* GetImageFileName();

int SetImageFileName(char* lpszImageFileName);

Default Value

""

Remarks

When calling the GetImage method, the image content is returned by that method. If you want the image content to be written to disk, you can set the ImageFileName to a desired file name without specifying the type. The file type will be set automatically depending on the image type supported by the server. Possible image types are: jpeg, tiff, png, pdf.

If the filename exists, you can choose to overwrite it or not by setting the Overwrite config setting (which defaults to True).

Note: Image download is available only for OFX version 2.1.1. When this method is called, the OFXVersion is automatically set to '211'.

Data Type

String


IncludeImages Property

IncludeImages Property (CCStatement Class)

Whether the server has to return data for closing statements images.

Syntax

int GetIncludeImages();

int SetIncludeImages(int bIncludeImages);

Default Value

FALSE

Remarks

If False (default value), the server will not return any image references in the response.

Otherwise, if the FI supports image download service, when the GetClosingInfo method is called, the server will return a reference to each statement closing information image. These references can then be used as parameters when the GetImage method is called.

The image references for credit card transactions are not available via OFX.

This is optional and supported in OFX 2.1.1 version only (i.e., if this is requested, the OFXVersion should be set to '211').

Note: Clients may request images in statement download and/or closing requests in various message sets. But not all FIs support image download. Prior to requesting these images, clients must verify that support exists on the server for image download. This is indicated by the presence of the IMAGEMSGSET aggregate in the profile response, as well as the IMAGEPROF aggregate in the profile response for the specific message set in question.

For instance, if a client wishes to request transaction images in the banking statement download request, the client must verify the presence of IMAGEMSGSET in the profile as well as transaction image support in the IMAGEPROF aggregate in the BANKMSGSET in the profile. Image download requests are allowed only in OFX 2.1.1 in the Banking, Credit Card, Loan and Investments message sets.

To verify whether your FI supports this service, you should check its profile (by calling the GetProfile method in FIProfile class) and check the values of FIMessageSetTxImage and FIMessageSetClosingInfoImage for each message set (bank, credit card, loan and investment).

Data Type

Boolean


LedgerBalance Property

LedgerBalance Property (CCStatement Class)

Amount of the ledger balance.

Syntax

char* GetLedgerBalance();

Default Value

""

Remarks

This value reflects the account balance as posted in the financial institution's records.

Credit card balances differ from bank account balances in that they are always negative. Since credit is money-on-loan and must be paid back, it is best thought of as a negative. The LedgerBalance reflects how much money the user has already spent under that account and must pay back to the financial institution. AvailableBalance indicates how much more money is available to the user to borrow until they must pay the ledger balance.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

This property is read-only.

Data Type

String


LedgerBalanceDate Property

LedgerBalanceDate Property (CCStatement Class)

Date of the ledger balance.

Syntax

char* GetLedgerBalanceDate();

Default Value

""

Remarks

This is the date, as of which, the ledger balance is valid.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is read-only.

Data Type

String


OFXAccessKey Property

OFXAccessKey Property (CCStatement Class)

Access key value received after a MFA authentication in a previous signon.

Syntax

char* GetOFXAccessKey();

int SetOFXAccessKey(char* lpszOFXAccessKey);

Default Value

""

Remarks

This might be returned in the server response after a MFA authentication (i.e. MFA challenge question/answer pairs were validated by the server when the SendChallengeAnswers method in FIProfile class was called).

To prevent servers from needing to authenticate the user in each OFX request, the server may respond to a correct set of challenge answers with a OFXAccessKey on the signon response (when the SendChallengeAnswers method in FIProfile class was called).

The server determines the contents of this optional element. On each subsequent signon request, the client will send the last value of the OFXAccessKey it has received, even after the end of the current session. The server has the option to respond to any subsequent request with a 3000 error code, requiring the client to send the MFA challenge questions request again (by calling the RequestChallengeQuestions method in FIProfile class). This allows the server to determine the lifetime of the OFXAccessKey.

Data Type

String


OFXAppId Property

OFXAppId Property (CCStatement Class)

OFX application identifier.

Syntax

char* GetOFXAppId();

int SetOFXAppId(char* lpszOFXAppId);

Default Value

""

Remarks

This is the unique identifier of the user's OFX application.

Data Type

String


OFXAppVersion Property

OFXAppVersion Property (CCStatement Class)

OFX application version.

Syntax

char* GetOFXAppVersion();

int SetOFXAppVersion(char* lpszOFXAppVersion);

Default Value

""

Remarks

This is the version of the user's OFX application.

Data Type

String


OFXPassword Property

OFXPassword Property (CCStatement Class)

User's password.

Syntax

char* GetOFXPassword();

int SetOFXPassword(char* lpszOFXPassword);

Default Value

""

Remarks

This is the password used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXRequest Property

OFXRequest Property (CCStatement Class)

The current OFX request aggregate.

Syntax

char* GetOFXRequest();

Default Value

""

Remarks

Polling OFXRequest will cause the class to generate and return an OFX request aggregate.

This property is read-only and not available at design time.

Data Type

String


OFXResponse Property

OFXResponse Property (CCStatement Class)

The current OFX response aggregate.

Syntax

char* GetOFXResponse();

int SetOFXResponse(char* lpszOFXResponse);

Default Value

""

Remarks

This can be used especially for debugging purposes. This can also be used to parse an OFX Response. To do so, you can set the OFX Response data (in string format) to OFXResponse. Once set, the supplied OFX data will be parsed and will populate the same read-only properties that ReadOFXDataFile does.

This property is not available at design time.

Data Type

String


OFXUser Property

OFXUser Property (CCStatement Class)

User's id.

Syntax

char* GetOFXUser();

int SetOFXUser(char* lpszOFXUser);

Default Value

""

Remarks

This is the UserID used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXVersion Property

OFXVersion Property (CCStatement Class)

OFX API version.

Syntax

char* GetOFXVersion();

int SetOFXVersion(char* lpszOFXVersion);

Default Value

"102"

Remarks

This is the OFX API version used in all requests sent to your FI server (such as 1.0.2, 2.0.1, 2.1.1, etc.). Valid values: 102, 103, 200, 201, 203, 210, 211. Note that not all OFX Versions are supported by FIs.

Note: If the OFXVersion is set to 1x, the request and the response are going to be in SGML format. If set to 2x, the request will be in XML format (the response format depends on the FI's server capabilities). Note that if the OFX FI server does not support version 2x, the server will return an error (such as 'Bad Request').

Certain services are available only for a specific OFX version. For example, image download, is available only in OFX version 2.1.1.

Data Type

String


SSLAcceptServerCertEncoded Property

SSLAcceptServerCertEncoded Property (CCStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLAcceptServerCertEncoded(char *&lpSSLAcceptServerCertEncoded, int &lenSSLAcceptServerCertEncoded);

int SetSSLAcceptServerCertEncoded(char *lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLAcceptServerCertStore and SSLAcceptServerCertSubject properties may also be used to specify a certificate.

When SSLAcceptServerCertEncoded is set, a search is initiated in the current SSLAcceptServerCertStore for the private key of the certificate. If the key is found, SSLAcceptServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLAcceptServerCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertEncoded Property

SSLCertEncoded Property (CCStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLCertEncoded(char *&lpSSLCertEncoded, int &lenSSLCertEncoded);

int SetSSLCertEncoded(char *lpSSLCertEncoded, int lenSSLCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLCertStore and SSLCertSubject properties may also be used to specify a certificate.

When SSLCertEncoded is set, a search is initiated in the current SSLCertStore for the private key of the certificate. If the key is found, SSLCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertStore Property

SSLCertStore Property (CCStatement Class)

The name of the certificate store for the client certificate.

Syntax

int GetSSLCertStore(char *&lpSSLCertStore, int &lenSSLCertStore);

int SetSSLCertStore(char *lpSSLCertStore, int lenSSLCertStore);

Default Value

"MY"

Remarks

The name of the certificate store for the client certificate.

The SSLCertStoreType property specifies the type of the certificate store specified by SSLCertStore. If the store is password protected, specify the password in SSLCertStorePassword.

SSLCertStore is used in conjunction with the SSLCertSubject property in order to specify client certificates. If SSLCertStore has a value, and SSLCertSubject or SSLCertEncoded is set, a search for a certificate is initiated. Please refer to the SSLCertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MY | A certificate store holding personal certificates with their associated private keys.
CA | Certifying authority certificates.
ROOT | Root certificates.
SPC | Software publisher certificates.

In Java, the certificate store normally is a file containing certificates and optional private keys.

When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).

If the provider is OpenSSL, the certificate store is a file containing a certificate and a private key. This property must be set to the name of the file.

Data Type

Binary String


SSLCertStorePassword Property

SSLCertStorePassword Property (CCStatement Class)

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Syntax

char* GetSSLCertStorePassword();

int SetSSLCertStorePassword(char* lpszSSLCertStorePassword);

Default Value

""

Remarks

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Data Type

String


SSLCertStoreType Property

SSLCertStoreType Property (CCStatement Class)

The type of certificate store for this certificate.

Syntax

int GetSSLCertStoreType();

int SetSSLCertStoreType(int iSSLCertStoreType);

Possible Values

  CST_USER(0),
  CST_MACHINE(1),
  CST_PFXFILE(2),
  CST_PFXBLOB(3),
  CST_JKSFILE(4),
  CST_JKSBLOB(5),
  CST_PEMKEY_FILE(6),
  CST_PEMKEY_BLOB(7),
  CST_PUBLIC_KEY_FILE(8),
  CST_PUBLIC_KEY_BLOB(9),
  CST_SSHPUBLIC_KEY_BLOB(10),
  CST_P7BFILE(11),
  CST_P7BBLOB(12),
  CST_SSHPUBLIC_KEY_FILE(13),
  CST_PPKFILE(14),
  CST_PPKBLOB(15),
  CST_XMLFILE(16),
  CST_XMLBLOB(17)

Default Value

0

Remarks

The type of certificate store for this certificate.

This property can take one of the following values:

0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java.
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java.
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates.
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format.
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java.
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java.
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate.
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate.
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate.
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate.
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key.
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates.
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format.
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key.
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key).
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key).
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format.
17 (cstXMLlob) | The certificate store is a string that contains a certificate in XML format.

Data Type

Integer


SSLCertSubject Property

SSLCertSubject Property (CCStatement Class)

The subject of the certificate used for client authentication.

Syntax

char* GetSSLCertSubject();

int SetSSLCertSubject(char* lpszSSLCertSubject);

Default Value

""

Remarks

The subject of the certificate used for client authentication.

When this property is set, a search is performed in the current certificate store certificate with matching subject.

If a matching certificate is found, the property is set to the full subject of the matching certificate.

If an exact match is not found, the store is searched for subjects containing the value of the property.

If a match is still not found, the property is set to an empty string, and no certificate is selected.

The special value "*" picks a random certificate in the certificate store.

The certificate subject is a comma separated list of distinguished name properties and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common properties and their meanings are displayed below.

Field | Meaning
CN | Common Name. This is commonly a host name like www.server.com.
O | Organization
OU | Organizational Unit
L | Locality
S | State
C | Country
E | Email Address

If a property value contains a comma it must be quoted.

Data Type

String


SSLServerCertEncoded Property

SSLServerCertEncoded Property (CCStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLServerCertEncoded(char *&lpSSLServerCertEncoded, int &lenSSLServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLServerCertStore and SSLServerCertSubject properties may also be used to specify a certificate.

When SSLServerCertEncoded is set, a search is initiated in the current SSLServerCertStore for the private key of the certificate. If the key is found, SSLServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLServerCertSubject is set to empty string.

This property is read-only and not available at design time.

Data Type

Binary String


StartDate Property

StartDate Property (CCStatement Class)

Start date of requested transaction list.

Syntax

char* GetStartDate();

int SetStartDate(char* lpszStartDate);

Default Value

""

Remarks

This is a string representing the date at which to start listing transactions on the statement. Use this property and EndDate to constrain the list of transactions retrieved when calling GetStatement. When provided in the request, StartDate value will be echoed in the server's response.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Data Type

String


Timeout Property

Timeout Property (CCStatement Class)

A timeout for the component.

Syntax

int GetTimeout();

int SetTimeout(int iTimeout);

Default Value

60

Remarks

If the Timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.

If Timeout is set to a positive value, the class will wait for the operation to complete before returning control.

The class will use DoEvents to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not "freeze" and remains responsive.

If Timeout expires, and the operation is not yet complete, the class fails with an error.

Please note that by default, all timeouts are inactivity timeouts, i.e. the timeout period is extended by Timeout seconds when any amount of data is successfully sent or received.

Optionally, the behavior of the class may be changed to absolute timeouts, i.e. the class will wait for a maximum of Timeout seconds since the beginning of the operation, without extending the timeout period during communications.

This behavior is controlled by the AbsoluteTimeout configuration setting.

The default value for the Timeout property is 60 (seconds).

Data Type

Integer


TxCount Property

TxCount Property (CCStatement Class)

The number of records in the Tx arrays.

Syntax

int GetTxCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • TxAggregate
  • TxAmount
  • TxDate
  • TxDatePosted
  • TxFITID
  • TxMemo
  • TxPayeeName
  • TxType
  • TxTypeDescription

The array indices start at 0 and end at TxCount-1.

This property is read-only and not available at design time.

Data Type

Integer


TxAggregate Property

TxAggregate Property (CCStatement Class)

Wrapper for a bank transaction.

Syntax

char* GetTxAggregate(int iTxIndex);

Default Value

""

Remarks

Wrapper for a bank transaction.

Each bank transaction aggregate contains data (elements and values) associated with the following properties:

  • TxAmount
  • TxCheckNumber
  • TxDatePosted
  • TxFITID
  • TxMemo
  • TxPayeeName
  • TxType
  • TxImageRef
  • TxImageRefType

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxAmount Property

TxAmount Property (CCStatement Class)

This is the amount of money exchanged during a given transaction.

Syntax

char* GetTxAmount(int iTxIndex);

Default Value

""

Remarks

This is the amount of money exchanged during a given transaction.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxDate Property

TxDate Property (CCStatement Class)

This is the date the transaction was made by the account holder as recorded by the financial institution, stored as a string.

Syntax

char* GetTxDate(int iTxIndex);

Default Value

""

Remarks

This is the date the transaction was made by the account holder as recorded by the financial institution, stored as a string.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Note: this property is optional. This is not applicable to loan accounts. If the server's response does not contain this information, querying this property will return an empty string.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxDatePosted Property

TxDatePosted Property (CCStatement Class)

This is the date the transaction was posted to the financial institution, stored as a string.

Syntax

char* GetTxDatePosted(int iTxIndex);

Default Value

""

Remarks

This is the date the transaction was posted to the financial institution, stored as a string.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxFITID Property

TxFITID Property (CCStatement Class)

Transaction Id assigned by the financial institution.

Syntax

char* GetTxFITID(int iTxIndex);

Default Value

""

Remarks

Transaction Id assigned by the financial institution.

This is a unique id number that the financial institution uses to identify a particular transaction. Its primary purpose is to allow a client to detect duplicate responses, whether the server previously downloaded the transaction.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxMemo Property

TxMemo Property (CCStatement Class)

The memo property stores a notice from the payee to the customer as a string.

Syntax

char* GetTxMemo(int iTxIndex);

Default Value

""

Remarks

The memo property stores a notice from the payee to the customer as a string.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxPayeeName Property

TxPayeeName Property (CCStatement Class)

If this property has a value, the NAME element replaces the entire PAYEE aggregate in the request XML.

Syntax

char* GetTxPayeeName(int iTxIndex);

Default Value

""

Remarks

If this property has a value, the NAME element replaces the entire PAYEE aggregate in the request XML.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxType Property

TxType Property (CCStatement Class)

This is the type of transaction that was made on the account.

Syntax

int GetTxType(int iTxIndex);

Possible Values

  TT_CREDIT(0),
  TT_DEBIT(1),
  TT_INTEREST(2),
  TT_DIVIDEND(3),
  TT_FIFEE(4),
  TT_SERVICE_CHARGE(5),
  TT_DEPOSIT(6),
  TT_ATM(7),
  TT_POINT_OF_SALE(8),
  TT_TRANSFER(9),
  TT_CHECK(10),
  TT_PAYMENT(11),
  TT_CASH(12),
  TT_DIRECT_DEPOSIT(13),
  TT_DIRECT_DEBIT(14),
  TT_REPEAT_PAYMENT(15),
  TT_LATE_FEE(16),
  TT_ADVANCE(17),
  TT_BALLOON(18),
  TT_OTHER(255)

Default Value

0

Remarks

This is the type of transaction that was made on the account. The effect on the account balance depends upon the sign of the amount, not upon the value of this transaction.

For example, if the amount is negative and the type is a credit, a negative credit is applied to the account. If the amount is negative and the type is debit, the amount is still debited from the account. A positive amount indicates the addition of money to the account, regardless of the type.

The types and their meanings are as follows:

ttCredit (0) | Generic credit
ttDebit (1) | Generic debit
ttInterest (2) | Interest earned or paid (note: depends on signage of amount)
ttDividend (3) | Dividend
ttFIFee (4) | FI fee
ttServiceCharge (5) | Service charge
ttDeposit (6) | Deposit
ttATM (7) | ATM debit or credit (note: depends on signage of amount)
ttPointOfSale (8) | Point of sale debit or credit (note: depends on signage of amount)
ttTransfer (9) | Transfer
ttCheck (10) | Check
ttPayment (11) | Payment
ttCash (12) | Cash withdrawal
ttDirectDeposit (13) | Direct deposit
ttDirectDebit (14) | Merchant initiated debit
ttRepeatPayment (15) | Repeating payment/standing order
ttLateFee (16) | Late Fee (note: applicable to loan accounts only)
ttAdvance (17) | Cash Advance which adds to Principal Balance (note: applicable to loan accounts only)
ttBalloon (18) | Payment of Balloon Amount (note: applicable to loan accounts only)
ttOther (255) | Other (note: see TxMemo for a possible transaction description)

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

Integer


TxTypeDescription Property

TxTypeDescription Property (CCStatement Class)

A description of the transaction type.

Syntax

char* GetTxTypeDescription(int iTxIndex);

Default Value

"Credit"

Remarks

A description of the transaction type. This is a string representation of the value returned by the TxType property.

The values translate as follows:

The types and their meanings are as follows:

ttCredit (0) | Credit
ttDebit (1) | Debit
ttInterest (2) | Interest
ttDivident (3) | Dividend
ttFIFee (4) | FI Fee
ttServiceCharge (5) | Service Charge
ttDeposit (6) | Deposit
ttATM (7) | ATM
ttPointOfSale (8) | Point of Sale
ttTransfer (9) | Transfer
ttCheck (10) | Check
ttPayment (11) | Payment
ttCash (12) | Cash Withdrawal
ttDirectDeposit (13) | Direct Deposit
ttDirectDebit (14) | Direct Debit
ttRepeatPayment (15) | Repeat Payment
ttLateFee (16) | Late Fee (note: applicable to loan accounts only)
ttAdvance (17) | Cash Advance which adds to Principal Balance (note: applicable to loan accounts only)
ttBalloon (18) | Payment of Balloon Amount (note: applicable to loan accounts only)
ttOther (255) | Other

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


Config Method

Config Method (CCStatement Class)

Sets or retrieves a configuration setting.

Syntax

 char* Config(char* lpszConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.


GetClosingInfo Method

GetClosingInfo Method (CCStatement Class)

Download a credit card statement closing information.

Syntax

 int GetClosingInfo();

Remarks

This function generates the Signon and CC Statement Closing Information request page, submits it to the financial institution via secure HTTPS Post, receives and parses the closing statement information (that typically appears as part of a paper statement).

This information includes opening and closing dates and balances for a statement period, as well as a detailed breakdown of debits, credits, fees, and interest that are usually part of a paper statement. In addition to this information, you will also receive a date range for transactions that correspond to the closing statement. You can use this date range to retrieve transactions through statement download request (by calling the GetStatement method).

The following properties should be set when this method is called:

  • FIId (required)
  • FIOrganization (required)
  • FIUrl (required)
  • OFXAppId (required)
  • OFXAppVersion (required)
  • OFXVersion (required if 2.x OFX version is the one supported by your FI)
  • OFXUser (required)
  • OFXPassword (required)
  • CardNumber (required)

The client can also specify a date range (by setting the StartDate and EndDate properties) to limit the number of closing information aggregates that the server returns. If the client does not specify a date range, the server returns as many closing information aggregates as it can (which will be stored in ClosingDetails).

If you want the server to return an image reference for each statement closing information, and if the server supports this service, you will have to set the IncludeImages to True.

The following read-only properties are populated as a result of parsing the statement response:

  • CurrencyCode
  • ClosingDetails


GetImage Method

GetImage Method (CCStatement Class)

Request and retrieve a statement closing information image (if available).

Syntax

 char* GetImage(char* lpszImageRef, char* lpszImageRefType, int *lpSize = NULL);

Remarks

This function generates the Signon and Download Image request page, submits it to the financial institution via secure HTTPS Post.

The requested image of a statement closing information is identified by ImageRef parameter. The type of this image reference should be specified by ImageRefType parameter.

Possible values and their meanings for the ImageRefType parameter are:

OPAQUE (default value) | The class will send an OFX request to access this image. This request will be in the form of a normal OFX request (complete with Signon) and the login credentials are required to authenticate the client. However, whereas the request file contains typical OFX syntax, the successful response returned is in the form of raw bytes. If a failure condition occurs, the class will return an error with a specific message.
URL | The URL identifies a service on an FI server that can accept an image request and produce a response. The class issues an HTTP request (over SSL) to the URL specified by the ImageRef parameter. The client will then authenticate. Once this authentication takes place, the image can be displayed
FORMURL | The class issues an HTTP request (over SSL), with encoded data specified in the URL retrieved from the ImageRef parameter. The image can then be displayed.

If you want the server to return image references for each statement closing information, and if the server supports image download service via OFX, you will have to set the IncludeImages to True when the GetClosingInfo method is called.

If available, then you can access that particular image by calling the GetImage method, where ImageRef parameter value is set to the image reference stored in the ClosingDetailImageRef and the ImageRefType parameter is set to the respective ClosingDetailImageRefType (corresponding to the requested statement).

Upon successful response, the image content will be returned by this method. If you want the image to be saved to a file, you can set the ImageFileName to a desired name without specifying the type. The file type will be set automatically depending on the image type supported by the server. Possible image types are: jpeg, tiff, png, pdf.

Otherwise, the class will throw an error.

Image download is available only for OFX version 2.1.1. When this method is called, the OFXVersion is automatically set to '211'.

Note: Clients may request images in statement download and/or closing requests in various message sets. But not all FIs support image download. Prior to requesting these images, clients must verify that support exists on the server for image download. This is indicated by the presence of the IMAGEMSGSET aggregate in the profile response, as well as the IMAGEPROF aggregate in the profile response for the specific message set in question.

For instance, if a client wishes to request transaction images in the banking statement download request, the client must verify the presence of IMAGEMSGSET in the profile as well as transaction image support in the IMAGEPROF aggregate in the BANKMSGSET in the profile. Image download requests are allowed only in OFX 2.1.1 in the Banking, Credit Card, Loan and Investments message sets.

To verify whether your FI supports this service, you should check its profile (by calling the GetProfile method in FIProfile class) and check the values of FIMessageSetTxImage and FIMessageSetClosingInfoImage for each message set (bank, credit card, loan and investment).


GetStatement Method

GetStatement Method (CCStatement Class)

Downloads statement for a credit card account.

Syntax

 int GetStatement();

Remarks

This method generates the Signon and Credit Card Statement request page, submits it to the financial institution via secure HTTPS Post, and receives and parses the bank statement.

The following properties should be set when this method is called:

  • FIId (required)
  • FIOrganization (required)
  • FIUrl (required)
  • OFXAppId (required)
  • OFXAppVersion (required)
  • OFXVersion (required if 2.x OFX version is the one supported by your FI)
  • OFXUser (required)
  • OFXPassword (required)
  • CardNumber (required)

Individual transactions are downloaded with the statement. You may constrain this transaction list by setting the StartDate and EndDate properties. The server will use default values if no dates are supplied.

The following read-only properties are populated as a result of parsing the statement response:

  • AvailableBalance
  • AvailableBalanceDate
  • LedgerBalance
  • LedgerBalanceDate
  • CurrencyCode
  • Transactions


ReadOFXDataFile Method

ReadOFXDataFile Method (CCStatement Class)

Reads an OFX response from a file.

Syntax

 int ReadOFXDataFile(char* lpszFileName);

Remarks

This method reads a previously recorded OFX response from a file, including HTTP and OFX headers.

The following read-only properties are populated as a result of parsing the data file:

  • AvailableBalance
  • AvailableBalanceDate
  • LedgerBalance
  • LedgerBalanceDate
  • CurrencyCode
  • Transactions
  • ClosingDetails


Reset Method

Reset Method (CCStatement Class)

Reset the internal state of the component and all properties to their default values.

Syntax

 int Reset();

Remarks

The Reset method does not have any parameters and does not return any value.


WriteOFXDataFile Method

WriteOFXDataFile Method (CCStatement Class)

Writes the OFX response sent by the server to a file.

Syntax

 int WriteOFXDataFile(char* lpszFileName);

Remarks

This method records the entire OFX response, including HTTP and OFX headers to a file. This file can later be read and parsed by the ReadOFXDataFile method as though it were a live response.


ConnectionStatus Event

ConnectionStatus Event (CCStatement Class)

Fired to indicate changes in connection state.

Syntax

 virtual int FireConnectionStatus(CCStatementConnectionStatusEventParams *e);

 typedef struct {

  char* ConnectionEvent;
  int StatusCode;
  char* Description;

  int reserved;

 } CCStatementConnectionStatusEventParams;

Remarks

The ConnectionStatus event is fired when the connection state changes: completion of a firewall or proxy connection, completion of a security handshake, etc.

The ConnectionEvent parameter indicates the type of connection event. Values may include:

Firewall connection complete.
SSL or S/Shell handshake complete (where applicable).
Remote host connection complete.
Remote host disconnected.
SSL or S/Shell connection broken.
Firewall host disconnected.

StatusCode has the error code returned by the TCP/IP stack. Description contains a description of this code. The value of StatusCode is equal to the value of the error.


Error Event

Error Event (CCStatement Class)

Information about errors during data delivery.

Syntax

 virtual int FireError(CCStatementErrorEventParams *e);

 typedef struct {

  int ErrorCode;
  char* Description;

  int reserved;

 } CCStatementErrorEventParams;

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Messages section.


SSLServerAuthentication Event

SSLServerAuthentication Event (CCStatement Class)

Fired after the server presents its certificate to the client.

Syntax

 virtual int FireSSLServerAuthentication(CCStatementSSLServerAuthenticationEventParams *e);

 typedef struct {

  char* CertEncoded;
  char* CertSubject;
  char* CertIssuer;
  char* Status;
  int Accept;

  int lenCertEncoded;
  int reserved;

 } CCStatementSSLServerAuthenticationEventParams;

Remarks

This event is where the client can decide whether to continue with the connection process or not. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether to continue or not.

When Accept is False, Status shows why the verification failed (otherwise, Status contains the string "OK"). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.


SSLStatus Event

SSLStatus Event (CCStatement Class)

Shows the progress of the secure connection.

Syntax

 virtual int FireSSLStatus(CCStatementSSLStatusEventParams *e);

 typedef struct {

  char* Message;

  int reserved;

 } CCStatementSSLStatusEventParams;

Remarks

The event is fired for informational and logging purposes only. Used to track the progress of the connection.


CCStatement Configuration

Configuration Settings (CCStatement Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

CCStatement Configuration Settings

Overwrite: Determines whether image files will be overwritten.

If True (default value) the check or statement image files are overwritten. Otherwise, an error is returned if the file exist.

StatementIndex: The statement index in a multi-statement OFX response.

This is applicable only when multiple statements are returned from the FI server within the same OFX response.

OFX Configuration Settings

CurrencyFormat: The format to be used for returning currency values.

If this is set to a non-empty string, the class will attempt to use the value as a pattern to format all currency strings returned from the server. You may use any of the system's default number formatting strings.

OFXDateFormat: The date format as required by OFX FI server.

Most of OFX FI servers, accept the default format, where the offset (G) and timezone (Z) are specified. However, there might still be some servers that do not accept that part. In such cases, you will have to set the OFXDateFormat to "YYYYMMddHHmmss.xxx" and GMT will be assumed as the default value.

Your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat (format that OFX FI server recognizes) right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

DateFormat: The format to be used for input and output dates.

This format is used for input and output dates. You may use any of the system's default date formatting strings.

When submitting the request: all your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

When parsing the response: if DateFormat is set to a non-empty string, the class will attempt to use the value as a pattern to format all date strings as they are returned. Otherwise, the system's default value will be used for formatting.

If the DateFormat is set to the special value "OFXDATE": During input:, any values you supply to date properties are passed to the server directly with no changes; During output: all dates will be returned in the OFX format as it was provided by the server without performing any modifications.

GetResponseVar: Parses additional information out of the response.

Any additional response information contained within the OFX response that is not available via the Response fields, may be retrieved with this GetResponseVar config.

To obtain a response value, pass the XPath to the value you wish to receive. For instance, if the OFX response contains:

    "<OFX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0<SEVERITY>INFO</STATUS><DTSERVER>20120104223836.575<LANGUAGE>ENG"

Then calling GetResponseVar("/OFX/SIGNONMSGSRVSV1/LANGUAGE") will return "ENG".

NewPassword: New password for the current OFX user.

Setting NewPassword to a non-empty value will cause the class to issue a password change request during sign-on along with the regular current OFX request. After the request is sent, this value will be cleared.

The correct current password is needed as well during signon request and must be supplied through the OFXPassword. Upon successful reply from the server, the NewPassword used becomes the new password.

OFXLog: Log file for the OFX transaction.

This setting records the OFX communication, but without including HTTP headers, to a file.

Please note that ReadOFXDataFile will not be able to parse this file because of the OFX request content present. If only the response of the server is required, please look at the WriteOFXDataFile method instead.

ServerMessage: Server message if a warning or other information returned.

When sending a transaction request to a FI, their server with return either a successful reply or an error. However, even when a transaction is successful, a warning or other server messages might still be returned and are to be treated as informational notes only.

ClientUId: Unique ID identifying OFX Client.

In the profile response, if SignOnClientUIdReq is True, then ClientUId should be set and included in all future requests.

UserCred1A: Additional user credential required by server.

In the profile response, if SignOnUserCred1Q is present, then UserCred1A should be set (as the answer to question identified by SignOnUserCred1Q) and it should be included in all future requests as part of the signon.

UserCred2A: Additional user credential required by server.

In the profile response, if SignOnUserCred2Q is present, then UserCred2A should be set (as the answer to question identified by SignOnUserCred2Q) and it should be included in all future requests as part of the signon.

AuthToken: Authentication token required for this signon session only.

This credential is provided to the user out of band.

In the profile response, if SignOnAuthTokenFirst is True, then AuthToken should be sent in the very first signon.

CorrectFITID[i]: The FITID of a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the FITID of a previously sent transaction that is corrected by this record. Based on the value of CorrectAction[i], this transaction replaces or deletes the transaction that it corrects. This is applicable to statement download components only.

CorrectAction[i]: The action taken to a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the action taken to a previously sent transaction that is corrected by this record. Possible values are: REPLACE or DELETE. REPLACE replaces the transaction that it corrects referenced by CorrectFITID[i]. DELETE deletes it. This is applicable to statement download components only.

HTTP Configuration Settings

AcceptEncoding: Used to tell the server which types of content encodings the client supports.

When AllowHTTPCompression is true, the class adds an "Accept-Encoding: " header to the request being sent to the server. By default, this header's value is "gzip, deflate". This config allows you to change the value of the "Accept-Encoding" header. NOTE: The class only supports gzip and deflate decompression algorithms.

AllowHTTPCompression: This property enables HTTP compression for receiving data.

This is the same as the AllowHTTPCompression property. This setting is exposed here for use by classs that inherit from HTTP.

Authorization: The Authorization string to be sent to the server.

If the Authorization property contains a non-empty string, an Authorization HTTP request header is added to the request. This header conveys Authorization information to the server.

This property is provided so that the HTTP class can be extended with other security schemes in addition to the authorization schemes already implemented by the class.

The AuthScheme property defines the authentication scheme used. In the case of HTTP Basic Authentication (default), every time User and Password are set, they are Base64 encoded, and the result is put in the Authorization property in the form "Basic [encoded-user-password]".

BytesTransferred: Contains the number of bytes transferred in the response data.

Returns the raw number of bytes from the HTTP response data, prior to the component processing the data, whether it is chunked and/or compressed. This returns the same value as the Transfer event, by BytesTransferred.

EncodeURL: If set to true the URL will be encoded by the class.

The default value is false. If set to true the URL passed to the class will be URL encoded.

FollowRedirects: Determines what happens when the server issues a redirect.

This option determines what happens when the server issues a redirect. Normally, the class returns an error if the server responds with an "Object Moved" message. If this property is set to 1 (always), the new URL for the object is retrieved automatically every time.

If this property is set to 2 (Same Scheme), the new URL is retrieved automatically only if the URL Scheme is the same, otherwise the class fails with an error.

Note that following the HTTP specification, unless this option is set to 1 (Always), automatic redirects will be performed only for 'GET' or 'HEAD' requests. Other methods could potentially change the conditions of the initial request and create security vulnerabilities.

Furthermore, if either the new URL server and port are different than the existing one, User and Password are also reset to empty, unless this property is set to 1 (Always), in which case the same credentials are used to connect to the new server.

A Redirect event is fired for every URL the product is redirected to. In the case of automatic redirections, the Redirect event is a good place to set properties related to the new connection (e.g. new authentication parameters).

The default value is 0 (Never). In this case, redirects are never followed, and the class fails with an error instead.

Valid options are:

  • 0 - Never
  • 1 - Always
  • 2 - Same Scheme

GetOn302Redirect: If set to true the class will perform a GET on the new location.

The default value is false. If set to true the class will perform a GET on the new location. Otherwise it will use the same HTTP method again.

HTTPVersion: The version of HTTP used by the class.

Possible values include "1.0", and "1.1". The default is "1.1".

IfModifiedSince: A date determining the maximum age of the desired document.

This is the same as the IfModifiedSince property. This setting is exposed here for use by classs that inherit from HTTP.

KeepAlive: Determines whether the HTTP connection is closed after completion of the request.

If true, the component will not send the 'Connection: Close' header. The absence of the Connection header indicates to the server that HTTP persistent connections should be used if supported. Note that not all server support persistent connections. You may also explicitly add the Keep-Alive header to the request headers by setting OtherHeaders to 'Connection: Keep-Alive'. If false, the connection will be closed immediately after the server response is received.

The default value for KeepAlive is false.

MaxRedirectAttempts: Limits the number of redirects that are followed in a request.

When FollowRedirects is set to any value besides frNever the class will follow redirects until this maximum number of redirect attempts are made. The default value is 20.

OtherHeaders: Other headers as determined by the user (optional).

This configuration option can be set to a string of headers to be appended to the HTTP request headers.

The headers must be of the format "header: value" as described in the HTTP specifications. Header lines should be separated by CRLF ("\r\ n") .

Use this configuration option with caution. If this configuration option contains invalid headers, HTTP requests may fail.

This configuration option is useful for extending the functionality of the class beyond what is provided.

ProxyAuthorization: The authorization string to be sent to the proxy server.

Similar to the Authorization config, but for proxy authorization. If this config contains a non-empty string, a Proxy-Authorization HTTP request header is added to the request. This header conveys proxy authorization information to the server. If ProxyUser and ProxyPassword are specified, this value is calculated using the algorithm specified by ProxyAuthScheme.

ProxyAuthScheme: The authorization scheme to be used for the proxy.

This is the same as ProxyAuthScheme. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPassword: A password if authentication is to be used for the proxy.

This is the same as ProxyPassword. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPort: Port for the proxy server (default 80).

This is the same as ProxyPort. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyServer: Name or IP address of a proxy server (optional).

This is the same as ProxyServer. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyUser: A user name if authentication is to be used for the proxy.

This is the same as ProxyUser. This setting is provided for use by classs that do not directly expose Proxy properties.

TransferredDataLimit: The maximum number of incoming bytes to be stored by the class.

If TransferredDataLimit is set to 0 (default), no limits are imposed. Otherwise this reflects the maximum number of incoming bytes that can be stored by the class. If TransferredDataLimit is set to 0, no limits are imposed.

UseChunkedEncoding: Enables or Disables HTTP chunked encoding for transfers.

If UseChunkedEncoding is set to true, the class will use HTTP chunked encoding when posting if possible. HTTP chunked encoding allows large files to be sent in chunks instead of all at once. If set to false, the class will not use HTTP chunked encoding. The default value is false.

Note: Some servers (such as the ASP.NET Development Server) may not support chunked encoding.

ChunkSize: Specifies the chunk size in bytes when using chunked encoding.

This is only applicable when UseChunkedEncoding is true. This setting specifies the chunk size in bytes to be used when posting data. The default value is 16384.

UsePlatformHTTPClient: Whether or not to use the platform HTTP client.

If True, the component will use the default HTTP client for the platform (URLConnection in Java or WebRequest in .NET) instead of the internal HTTP implementation. This is important for environments where direct access to sockets is limited or not allowed (as in the Google AppEngine for instance).

UserAgent: Information about the user agent (browser).

This is the value supplied in the HTTP User-Agent header. The default setting is "/n software IPWorks HTTP/S Component - www.nsoftware.com".

Override the default with the name and version of your software.

KerberosSPN: The Service Principal Name for the Kerberos Domain Controller.

If the Service Principal Name on the Kerberos Domain Controller is not the same as the URL that you are authenticating to, the Service Principal Name should be set here.

IPPort Configuration Settings

FirewallAutoDetect: Tells the class whether or not to automatically detect and use firewall system settings, if available.

This is the same as FirewallAutoDetect. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallHost: Name or IP address of firewall (optional).

If a FirewallHost is given, requested connections will be authenticated through the specified firewall when connecting.

If the FirewallHost setting is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, the FirewallHost setting is set to the corresponding address. If the search is not successful, an error is returned.

NOTE: This is the same as FirewallHost. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPassword: Password to be used if authentication is to be used when connecting through the firewall.

If FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallPassword. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPort: The TCP port for the FirewallHost;.

Note that the FirewallPort is set automatically when FirewallType is set to a valid value.

NOTE: This is the same as FirewallPort. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallType: Determines the type of firewall to connect through.

The appropriate values are as follows:

0 | No firewall (default setting).
1 | Connect through a tunneling proxy. FirewallPort is set to 80.
2 | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
3 | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

NOTE: This is the same as FirewallType. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallUser: A user name if authentication is to be used connecting through a firewall.

If the FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the Firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallUser. This setting is provided for use by classs that do not directly expose Firewall properties.

KeepAliveTime: The inactivity time in milliseconds before a TCP keep-alive packet is sent.

When set, TCPKeepAlive will automatically be set to true. By default the operating system will determine the time a connection is idle before a TCP keep-alive packet is sent. This system default if this value is not specified here is 2 hours. In many cases a shorter interval is more useful. Set this value to the desired interval in milliseconds.

Note: This value is not applicable in Java.

KeepAliveInterval: The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.

When set, TCPKeepAlive will automatically be set to true. A TCP keep-alive packet will be sent after a period of inactivity as defined by KeepAliveTime. If no acknowledgement is received from the remote host the keep-alive packet will be re-sent. This setting specifies the interval at which the successive keep-alive packets are sent in milliseconds. This system default if this value is not specified here is 1 second.

Note: This value is not applicable in Java or MAC.

Linger: When set to True, connections are terminated gracefully.

This property controls how a connection is closed. The default is True.

In the case that Linger is True (default), there are two scenarios for determining how long the connection will linger. The first, if LingerTime is 0 (default), the system will attempt to send pending data for a connection until the default IP protocol timeout expires.

In the second scenario, LingerTime is a positive value, the system will attempt to send pending data until the specified LingerTime is reached. If this attempt fails, then the system will reset the connection.

The default behavior (which is also the default mode for stream sockets) might result in a long delay in closing the connection. Although the class returns control immediately, the system could hold system resources until all pending data is sent (even after your application closes).

Setting this property to False forces an immediate disconnection. If you know that the other side has received all the data you sent (by a client acknowledgment, for example), setting this property to False might be the appropriate course of action.

LingerTime: Time in seconds to have the connection linger.

LingerTime is the time, in seconds, to leave the socket connection linger. This value is 0 by default, which means it will use the default IP protocol timeout.

LocalHost: The name of the local host through which connections are initiated or accepted.

The LocalHost setting contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.

In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the class initiate connections (or accept in the case of server classs) only through that interface.

If the class is connected, the LocalHost setting shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).

LocalPort: The TCP port in the local host where the class binds.

This must be set before a connection is attempted. It instructs the class to bind to a specific port (or communication endpoint) in the local machine.

Setting this to 0 (default) enables the system to choose a port at random. The chosen port will be shown by LocalPort after the connection is established.

LocalPort cannot be changed once a connection is made. Any attempt to set this when a connection is active will generate an error.

This; setting is useful when trying to connect to services that require a trusted port in the client side. An example is the remote shell (rsh) service in UNIX systems.

MaxLineLength: The maximum amount of data to accumulate when no EOL is found.

MaxLineLength is the size of an internal buffer, which holds received data while waiting for an EOL string.

If an EOL string is found in the input stream before MaxLineLength bytes are received, the DataIn event is fired with the EOL parameter set to True, and the buffer is reset.

If no EOL is found, and MaxLineLength bytes are accumulated in the buffer, the DataIn event is fired with the EOL parameter set to False, and the buffer is reset.

The minimum value for MaxLineLength is 256 bytes. The default value is 2048 bytes. The maximum value is 65536 bytes.

MaxTransferRate: The transfer rate limit in bytes per second.

This setting can be used to throttle outbound TCP traffic. Set this to the number of bytes to be sent per second. By default this is not set and there is no limit.

TCPKeepAlive: Determines whether or not the keep alive socket option is enabled.

If set to true, the socket's keep-alive option is enabled and keep-alive packets will be sent periodically to maintain the connection. Set KeepAliveTime and KeepAliveInterval to configure the timing of the keep-alive packets.

Note: This value is not applicable in Java.

UseIPv6: Whether or not to use IPv6.

By default, the component expects an IPv4 address for local and remote host properties, and will create an IPv4 socket. To use IPv6 instead, set this to True.

TcpNoDelay: Whether or not to delay when sending packets.

When true, the socket will send all data that is ready to send at once. When false, the socket will send smaller buffered packets of data at small intervals. This is known as the Nagle algorithm.

By default, this config is set to false.

SSL Configuration Settings

ReuseSSLSession: Determines if the SSL session is reused.

If set to true, the component will reuse the context if and only if the following criteria are met:

  • The target host name is the same.
  • The system cache entry has not expired (default timeout is 10 hours).
  • The application process that calls the function is the same.
  • The logon session is the same.
  • The instance of the component is the same.

SSLCipherStrength: The minimum cipher strength used for bulk encryption.

This minimum cipher strength largely dependent on the security modules installed on the system. If the cipher strength specified is not supported, an error will be returned when connections are initiated.

Please note that this setting contains the minimum cipher strength requested from the security library. The actual cipher strength used for the connection is shown by the SSLStatus event.

Use this setting with caution. Requesting a lower cipher strength than necessary could potentially cause serious security vulnerabilities in your application.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

SSLEnabledProtocols: Used to enable/disable the supported security protocols.

Used to enable/disable the supported security protocols.

Not all supported protocols are enabled by default (the value of this setting is 240). If you want more granular control over the enabled protocols, you can set this property to the binary 'OR' of one or more of the following values:

TLS1.2 | 3072 (Hex C00)
TLS1.1 | 768 (Hex 300)
TLS1 | 192 (Hex C0) (Default)
SSL3 | 48 (Hex 30) (Default)
SSL2 | 12 (Hex 0C)

Please note that although a number of sites still support SSL2, it is usually a good idea to disable it because of potential security vulnerabilities.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

TLS 1.1 and TLS1.2 support are only available starting with Windows 7.

SSLProvider: The name of the security provider to use.

Change this setting to use security providers other than the system default.

Use this setting with caution. Disabling SSL security or pointing to the wrong provider could potentially cause serious security vulnerabilities in your application.

The special value "*" (default) picks the default SSL provider defined in the system. On Windows, this is "Microsoft Unified Security Protocol Provider".

SSLSecurityFlags: Flags that control certificate verification.

The following flags are defined (specified in hexadecimal notation). They can be or-ed together to exclude multiple conditions:

0x00000001 | Ignore time validity status of certificate.
0x00000002 | Ignore time validity status of CTL.
0x00000004 | Ignore non-nested certificate times.
0x00000010 | Allow unknown Certificate Authority.
0x00000020 | Ignore wrong certificate usage.
0x00000100 | Ignore unknown certificate revocation status.
0x00000200 | Ignore unknown CTL signer revocation status.
0x00000400 | Ignore unknown Certificate Authority revocation status.
0x00000800 | Ignore unknown Root revocation status.
0x00008000 | Allow test Root certificate.
0x00004000 | Trust test Root certificate.
0x80000000 | Ignore non-matching CN (certificate CN not-matching server name).

This functionality is currently not available when the provider is OpenSSL.

OpenSSLCADir: The path to a directory containing CA certificates.

This functionality is available only when the provider is OpenSSL.

The path set by this property should point to a directory containing CA certificates in PEM format. The files each contain one CA certificate. The files are looked up by the CA subject name hash value, which must hence be available. If more than one CA certificate with the same name hash value exist, the extension must be different (e.g. 9d66eef0.0, 9d66eef0.1 etc). OpenSSL recommends to use the c_rehash utility to create the necessary links. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCAFile: Name of the file containing the list of CA's trusted by your application.

This functionality is available only when the provider is OpenSSL.

The file set by this property should contain a list of CA certificates in PEM format. The file can contain several CA certificates identified by

-----BEGIN CERTIFICATE-----

... (CA certificate in base64 encoding) ...

-----END CERTIFICATE-----

sequences. Before, between, and after the certificates text is allowed which can be used e.g. for descriptions of the certificates. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCipherList: A string that controls the ciphers to be used by SSL.

This functionality is available only when the provider is OpenSSL.

The format of this string is described in the OpenSSL man page ciphers(1) section "CIPHER LIST FORMAT". Please refer to it for details. The default string "DEFAULT" is determined at compile time and is normally equivalent to "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH".

OpenSSLPrngSeedData: The data to seed the pseudo random number generator (PRNG).

This functionality is available only when the provider is OpenSSL.

By default OpenSSL uses the device file "/dev/urandom" to seed the PRNG and setting OpenSSLPrngSeedData is not required. If set, the string specified is used to seed the PRNG.

SSLAlgorithmList: A string that controls the cipher algorithms to be used by SSL.

This configuration option takes a semicolon (;) delimited list of cipher algorithms to specify what algorithms may be used by SSL. This option can be used in conjunction with SSLEnabledProtocols to control which ciphers are used.

For example:

  obj.Config("SSLEnabledProtocols=3027"); // TLS1.2  (it supports SHA_256)
  obj.Config("SSLAlgorithmList=CALG_SHA_256;CALG_MD5");
Possible values include:
  • CALG_3DES
  • CALG_3DES_112
  • CALG_AES
  • CALG_AES_128
  • CALG_AES_192
  • CALG_AES_256
  • CALG_AGREEDKEY_ANY
  • CALG_CYLINK_MEK
  • CALG_DES
  • CALG_DESX
  • CALG_DH_EPHEM
  • CALG_DH_SF
  • CALG_DSS_SIGN
  • CALG_ECDH
  • CALG_ECDSA
  • CALG_ECMQV
  • CALG_HASH_REPLACE_OWF
  • CALG_HUGHES_MD5
  • CALG_HMAC
  • CALG_KEA_KEYX
  • CALG_MAC
  • CALG_MD2
  • CALG_MD4
  • CALG_MD5
  • CALG_NO_SIGN
  • CALG_OID_INFO_CNG_ONLY
  • CALG_OID_INFO_PARAMETERS
  • CALG_PCT1_MASTER
  • CALG_RC2
  • CALG_RC4
  • CALG_RC5
  • CALG_RSA_KEYX
  • CALG_RSA_SIGN
  • CALG_SCHANNEL_ENC_KEY
  • CALG_SCHANNEL_MAC_KEY
  • CALG_SCHANNEL_MASTER_HASH
  • CALG_SEAL
  • CALG_SHA
  • CALG_SHA1
  • CALG_SHA_256
  • CALG_SHA_384
  • CALG_SHA_512
  • CALG_SKIPJACK
  • CALG_SSL2_MASTER
  • CALG_SSL3_MASTER
  • CALG_SSL3_SHAMD5
  • CALG_TEK
  • CALG_TLS1_MASTER
  • CALG_TLS1PRF

This option is only valid in Windows.

Socket Configuration Settings

AbsoluteTimeout: Determines whether timeouts are inactivity timeouts or absolute timeouts.

If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.

Note: This option is not valid for UDP ports.

FirewallData: Used to send extra data to the firewall.

When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).

InBufferSize: The size in bytes of the incoming queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be receiving. Increasing the value of the InBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

OutBufferSize: The size in bytes of the outgoing queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be sending. Increasing the value of the OutBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

Base Configuration Settings

SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

Base Configuration Settings

CodePage: The system code page used for Unicode to Multibyte translations.

The default code page is the Active Code Page (0).

The following is a list of valid code page identifiers:

Identifier | Name
037 | IBM EBCDIC - U.S./Canada
437 | OEM - United States
500 | IBM EBCDIC - International
708 | Arabic - ASMO 708
709 | Arabic - ASMO 449+, BCON V4
710 | Arabic - Transparent Arabic
720 | Arabic - Transparent ASMO
737 | OEM - Greek (formerly 437G)
775 | OEM - Baltic
850 | OEM - Multilingual Latin I
852 | OEM - Latin II
855 | OEM - Cyrillic (primarily Russian)
857 | OEM - Turkish
858 | OEM - Multlingual Latin I + Euro symbol
860 | OEM - Portuguese
861 | OEM - Icelandic
862 | OEM - Hebrew
863 | OEM - Canadian-French
864 | OEM - Arabic
865 | OEM - Nordic
866 | OEM - Russian
869 | OEM - Modern Greek
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2)
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875 | IBM EBCDIC - Modern Greek
932 | ANSI/OEM - Japanese, Shift-JIS
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore)
949 | ANSI/OEM - Korean (Unified Hangeul Code)
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026 | IBM EBCDIC - Turkish (Latin-5)
1047 | IBM EBCDIC - Latin 1/Open System
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141 | IBM EBCDIC - Germany (20273 + Euro symbol)
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144 | IBM EBCDIC - Italy (20280 + Euro symbol)
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147 | IBM EBCDIC - France (20297 + Euro symbol)
1148 | IBM EBCDIC - International (500 + Euro symbol)
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 | Unicode UCS-2 Big-Endian
1250 | ANSI - Central European
1251 | ANSI - Cyrillic
1252 | ANSI - Latin I
1253 | ANSI - Greek
1254 | ANSI - Turkish
1255 | ANSI - Hebrew
1256 | ANSI - Arabic
1257 | ANSI - Baltic
1258 | ANSI/OEM - Vietnamese
1361 | Korean (Johab)
10000 | MAC - Roman
10001 | MAC - Japanese
10002 | MAC - Traditional Chinese (Big5)
10003 | MAC - Korean
10004 | MAC - Arabic
10005 | MAC - Hebrew
10006 | MAC - Greek I
10007 | MAC - Cyrillic
10008 | MAC - Simplified Chinese (GB 2312)
10010 | MAC - Romania
10017 | MAC - Ukraine
10021 | MAC - Thai
10029 | MAC - Latin II
10079 | MAC - Icelandic
10081 | MAC - Turkish
10082 | MAC - Croatia
12000 | Unicode UCS-4 Little-Endian
12001 | Unicode UCS-4 Big-Endian
20000 | CNS - Taiwan
20001 | TCA - Taiwan
20002 | Eten - Taiwan
20003 | IBM5550 - Taiwan
20004 | TeleText - Taiwan
20005 | Wang - Taiwan
20105 | IA5 IRV International Alphabet No. 5 (7-bit)
20106 | IA5 German (7-bit)
20107 | IA5 Swedish (7-bit)
20108 | IA5 Norwegian (7-bit)
20127 | US-ASCII (7-bit)
20261 | T.61
20269 | ISO 6937 Non-Spacing Accent
20273 | IBM EBCDIC - Germany
20277 | IBM EBCDIC - Denmark/Norway
20278 | IBM EBCDIC - Finland/Sweden
20280 | IBM EBCDIC - Italy
20284 | IBM EBCDIC - Latin America/Spain
20285 | IBM EBCDIC - United Kingdom
20290 | IBM EBCDIC - Japanese Katakana Extended
20297 | IBM EBCDIC - France
20420 | IBM EBCDIC - Arabic
20423 | IBM EBCDIC - Greek
20424 | IBM EBCDIC - Hebrew
20833 | IBM EBCDIC - Korean Extended
20838 | IBM EBCDIC - Thai
20866 | Russian - KOI8-R
20871 | IBM EBCDIC - Icelandic
20880 | IBM EBCDIC - Cyrillic (Russian)
20905 | IBM EBCDIC - Turkish
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932 | JIS X 0208-1990 & 0121-1990
20936 | Simplified Chinese (GB2312)
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027 | Extended Alpha Lowercase
21866 | Ukrainian (KOI8-U)
28591 | ISO 8859-1 Latin I
28592 | ISO 8859-2 Central Europe
28593 | ISO 8859-3 Latin 3
28594 | ISO 8859-4 Baltic
28595 | ISO 8859-5 Cyrillic
28596 | ISO 8859-6 Arabic
28597 | ISO 8859-7 Greek
28598 | ISO 8859-8 Hebrew
28599 | ISO 8859-9 Latin 5
28605 | ISO 8859-15 Latin 9
29001 | Europa 3
38598 | ISO 8859-8 Hebrew
50220 | ISO 2022 Japanese with no halfwidth Katakana
50221 | ISO 2022 Japanese with halfwidth Katakana
50222 | ISO 2022 Japanese JIS X 0201-1989
50225 | ISO 2022 Korean
50227 | ISO 2022 Simplified Chinese
50229 | ISO 2022 Traditional Chinese
50930 | Japanese (Katakana) Extended
50931 | US/Canada and Japanese
50933 | Korean Extended and Korean
50935 | Simplified Chinese Extended and Simplified Chinese
50936 | Simplified Chinese
50937 | US/Canada and Traditional Chinese
50939 | Japanese (Latin) Extended and Japanese
51932 | EUC - Japanese
51936 | EUC - Simplified Chinese
51949 | EUC - Korean
51950 | EUC - Traditional Chinese
52936 | HZ-GB2312 Simplified Chinese
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte)
57002 | ISCII Devanagari
57003 | ISCII Bengali
57004 | ISCII Tamil
57005 | ISCII Telugu
57006 | ISCII Assamese
57007 | ISCII Oriya
57008 | ISCII Kannada
57009 | ISCII Malayalam
57010 | ISCII Gujarati
57011 | ISCII Punjabi
65000 | Unicode UTF-7
65001 | Unicode UTF-8

The following is a list of valid code page identifiers for Mac OS only:

Identifier | Name
1 | ASCII
2 | NEXTSTEP
3 | JapaneseEUC
4 | UTF8
5 | ISOLatin1
6 | Symbol
7 | NonLossyASCII
8 | ShiftJIS
9 | ISOLatin2
10 | Unicode
11 | WindowsCP1251
12 | WindowsCP1252
13 | WindowsCP1253
14 | WindowsCP1254
15 | WindowsCP1250
21 | ISO2022JP
30 | MacOSRoman
10 | UTF16String
0x90000100 | UTF16BigEndian
0x94000100 | UTF16LittleEndian
0x8c000100 | UTF32String
0x98000100 | UTF32BigEndian
0x9c000100 | UTF32LittleEndian
65536 | Proprietary


CCStatement Errors

Trappable Errors (CCStatement Class)

OFX Errors

2000 Required field missing from server response.
2001 OFX server error. Description follows.
2002 Invalid OFX response.
2003 OFX response contains unknown element tags.

The class may also return one of the following error codes, which are inherited from other classes.

XMLp Errors

101 Invalid attribute index.
102 No attributes available.
103 Invalid namespace index.
104 No namespaces available.
105 Invalid element index.
106 No elements available.
107 Attribute does not exist.
201 Unbalanced element tag.
202 Unknown element prefix (can't find namespace).
203 Unknown attribute prefix (can't find namespace).
204 Invalid XML markup.
205 Invalid end state for parser.
206 Document contains unbalanced elements.
207 Invalid XPath.
208 No such child.
209 Top element does not match start of path.
210 DOM tree unavailable (set BuildDOM to true and reparse).
302 Can't open file.

HTTP Errors

118 Firewall Error. Error description contains detailed message.
143 Busy executing current method.
151 HTTP protocol error. The error message has the server response.
152 No server specified in URL
153 Specified URLScheme is invalid.
155 Range operation is not supported by server.
156 Invalid cookie index (out of range).
301 Interrupted.
302 Can't open AttachedFile.

The class may also return one of the following error codes, which are inherited from other classes.

IPPort Errors

100 You cannot change the RemotePort at this time. A connection is in progress.
101 You cannot change the RemoteHost (Server) at this time. A connection is in progress.
102 The RemoteHost address is invalid (0.0.0.0).
104 Already connected. If you want to reconnect, close the current connection first.
106 You cannot change the LocalPort at this time. A connection is in progress.
107 You cannot change the LocalHost at this time. A connection is in progress.
112 You cannot change MaxLineLength at this time. A connection is in progress.
116 RemotePort cannot be zero. Please specify a valid service port number.
117 Cannot change UseConnection option while the class is Active.
135 Operation would block.
201 Timeout.
211 Action impossible in control's present state.
212 Action impossible while connected.
213 Action impossible while listening.
303 Could not open file.
434 Unable to convert string to selected CodePage
1105 Already connecting. If you want to reconnect, close the current connection first.
1117 You need to connect first.
1119 You cannot change the LocalHost at this time. A connection is in progress.
1120 Connection dropped by remote host.

SSL Errors

270 Cannot load specified security library.
271 Cannot open certificate store.
272 Cannot find specified certificate.
273 Cannot acquire security credentials.
274 Cannot find certificate chain.
275 Cannot verify certificate chain.
276 Error during handshake.
280 Error verifying certificate.
281 Could not find client certificate.
282 Could not find server certificate.
283 Error encrypting data.
284 Error decrypting data.

TCP/IP Errors

10004 [10004] Interrupted system call.
10009 [10009] Bad file number.
10013 [10013] Access denied.
10014 [10014] Bad address.
10022 [10022] Invalid argument.
10024 [10024] Too many open files.
10035 [10035] Operation would block.
10036 [10036] Operation now in progress.
10037 [10037] Operation already in progress.
10038 [10038] Socket operation on non-socket.
10039 [10039] Destination address required.
10040 [10040] Message too long.
10041 [10041] Protocol wrong type for socket.
10042 [10042] Bad protocol option.
10043 [10043] Protocol not supported.
10044 [10044] Socket type not supported.
10045 [10045] Operation not supported on socket.
10046 [10046] Protocol family not supported.
10047 [10047] Address family not supported by protocol family.
10048 [10048] Address already in use.
10049 [10049] Can't assign requested address.
10050 [10050] Network is down.
10051 [10051] Network is unreachable.
10052 [10052] Net dropped connection or reset.
10053 [10053] Software caused connection abort.
10054 [10054] Connection reset by peer.
10055 [10055] No buffer space available.
10056 [10056] Socket is already connected.
10057 [10057] Socket is not connected.
10058 [10058] Can't send after socket shutdown.
10059 [10059] Too many references, can't splice.
10060 [10060] Connection timed out.
10061 [10061] Connection refused.
10062 [10062] Too many levels of symbolic links.
10063 [10063] File name too long.
10064 [10064] Host is down.
10065 [10065] No route to host.
10066 [10066] Directory not empty
10067 [10067] Too many processes.
10068 [10068] Too many users.
10069 [10069] Disc Quota Exceeded.
10070 [10070] Stale NFS file handle.
10071 [10071] Too many levels of remote in path.
10091 [10091] Network subsystem is unavailable.
10092 [10092] WINSOCK DLL Version out of range.
10093 [10093] Winsock not loaded yet.
11001 [11001] Host not found.
11002 [11002] Non-authoritative 'Host not found' (try again or check DNS setup).
11003 [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP.
11004 [11004] Valid name, no data record (check DNS setup).


FIProfile Class

FIProfile Class

Properties Methods Events Configuration Settings Errors

The FIProfile control is a single component that supports the SignOn and FI Profile functions of Open Financial eXchange, as described by the OFX Specification version 1.0.2.

Syntax

FIProfile

Remarks

The FIProfile class provides the ability to download an OFX Financial Institution Profile. These profiles contain information about how to communicate with the financial institution, such as what message sets are supported and what URLs to post to for them as well as the type of data that is supported for sign on.

To use the FIProfile class, first identify the financial institution by setting the FIId, FIOrganization and FIUrl, properties. Next identify the OFX user and application by setting the OFXUser, OFXPassword, OFXAppId and OFXAppVersion properties. Use the ClientRouting property to notify the server as to the client's routing capabilities. Finally, set the LastUpdate property to the date of the most recent profile request. Then just call the GetProfile method to retrieve the financial institution's profile.

To determine whether the client has the latest version of the FI profile, the server checks the date and time passed by the client in LastUpdate. If the client has the latest version of the FI profile, the server does not return a profile specific response. In this case, the ServerMessage will contain the message returned by the server (such as: 'Up to date', etc.).

Property List

The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

ChallengeQuestionCount | The number of records in the Challenge arrays.
ChallengeAggregate | Wrapper for a MFA challenge question.
ChallengeAnswer | User's answer to the challenge question identified by QuestionId .
ChallengeQuestion | The textual challenge question.
ChallengeQuestionId | Identifier for the challenge question.
ClientRouting | Client routing capabilities of the Financial Institution.
FIAddress1 | Street address.
FIAddress2 | Street address.
FIAddress3 | Street address.
FICity | City.
FICountry | Country.
FICustomerServicePhone | Phone number for Customer Service.
FIEmailAddress | Email address for contacting the Financial Institution.
FIHomePage | Home web page for general information about the Financial Institution.
FIId | Financial institution identifier.
FIName | Name.
FIOrganization | Financial institution organization name.
FIPostalCode | Postal Code.
FIProfileDate | The date the current profile was posted.
FirewallAutoDetect | This property tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallType | This property determines the type of firewall to connect through.
FirewallHost | This property contains the name or IP address of firewall (optional).
FirewallPassword | This property contains a password if authentication is to be used when connecting through the firewall.
FirewallPort | This property contains the TCP port for the firewall Host .
FirewallUser | This property contains a user name if authentication is to be used connecting through a firewall.
FIState | State.
FITechSupportPhone | Phone number for Technical Support.
FIUrl | Financial institution URL.
LastUpdate | Date and time of the last profile update.
MessageSetCount | The number of records in the MessageSet arrays.
MessageSetAggregate | Wrapper for a message set.
MessageSetClosingInfoAvailability | This is an indicator of the Financial Institution's statement closing information capabilities.
MessageSetClosingInfoImage | This is an indicator of the Financial Institution's statement closing image capabilities.
MessageSetLanguage | Languages the server supports.
MessageSetName | Name of a message set supported by the given FI.
MessageSetRecovery | This is an indicator of the Financial Institution's error-recovery capabilities.
MessageSetRefresh | If true, the server can support Synchronized Refresh.
MessageSetSecurityLevel | Security level of the Message Set.
MessageSetServiceProvider | If the OFX server has been outsourced to a service provider other than the Financial Institution, then the name of that provider should appear here.
MessageSetSignOnRealm | This is the name of the SignOn realm used by this message set.
MessageSetSyncMode | Level of synchronization offered by the server for this message set.
MessageSetTransportSecurity | It indicates whether any security measures are taken at the Transport Layer for this message set.
MessageSetTxImage | It indicates whether FI supports transaction image download for this message set.
MessageSetURL | This is the address of the server to which OFX (HTTP) connections are made for this particular message set.
MessageSetVersion | This version number corresponds to the version of the OFX Specification which the server uses for the message set.
OFXAccessKey | Access key value received after a MFA authentication in a previous signon.
OFXAppId | OFX application identifier.
OFXAppVersion | OFX application version.
OFXPassword | User's password.
OFXRequest | The current OFX request aggregate.
OFXResponse | The current OFX response aggregate.
OFXUser | User's id.
OFXVersion | OFX API version.
SignOnInfoCount | The number of records in the SignOn arrays.
SignOnAggregate | Wrapper for signon information.
SignOnAuthToken | Text label for the Authentication Token.
SignOnAuthTokenFirst | Indicates whether server requires clients to send the Authentication Token as part of first signon.
SignOnAuthTokenUrl | URL where Authentication Token information is provided by the institution operating the OFX server.
SignOnCaseSensitive | Indicates whether the password is case-sensitive or not.
SignOnCharType | Type of characters the password can contain.
SignOnClientUIdReq | Indicates whether the Client Unique Identifier is required to be included in the signon.
SignOnMaxPwdLength | Maximum number of characters a SignOn password on this server can have.
SignOnMFAChallengeFirst | Indicates whether the Multi-Factor Authentication (MFA) challenge is required to be included in the first signon to this server.
SignOnMFAChallengeReq | Indicates whether the Multi-Factor Authentication (MFA) challenge is required by this FI server.
SignOnMinPwdLength | Minimum number of characters a SignOn password on this server can have.
SignOnPINChange | It indicates whether the server accepts any PIN Change Requests at all.
SignOnPINChangeFirst | Indicates whether server requires clients to change password as part of first signon.
SignOnRealm | SignOn realm used by this message set.
SignOnSpaces | It indicates whether the password can contain whitespaces.
SignOnSpecial | It indicates whether the password can contain special characters.
SignOnUserCred1Q | Text prompt for user credential.
SignOnUserCred2Q | Text prompt for user credential.
SSLAcceptServerCertEncoded | The certificate (PEM/base64 encoded).
SSLCertEncoded | The certificate (PEM/base64 encoded).
SSLCertStore | The name of the certificate store for the client certificate.
SSLCertStorePassword | If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.
SSLCertStoreType | The type of certificate store for this certificate.
SSLCertSubject | The subject of the certificate used for client authentication.
SSLServerCertEncoded | The certificate (PEM/base64 encoded).
Timeout | A timeout for the component.

Method List

The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

Config | Sets or retrieves a configuration setting.
GetProfile | Download the message set profile for a given Financial Institution.
ReadOFXDataFile | Reads an OFX response from a file.
RequestChallengeQuestions | Download the challenge questions when Multi-Factor Authentication (MFA) is required.
Reset | Reset the internal state of the component and all properties to their default values.
SendChallengeAnswers | Send the answers to challenge questions for a Multi-Factor Authentication (MFA).
WriteOFXDataFile | Writes the OFX response sent by the server to a file.

Event List

The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ConnectionStatus | Fired to indicate changes in connection state.
Error | Information about errors during data delivery.
SSLServerAuthentication | Fired after the server presents its certificate to the client.
SSLStatus | Shows the progress of the secure connection.

Configuration Settings

The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

CurrencyFormat | The format to be used for returning currency values.
OFXDateFormat | The date format as required by OFX FI server.
DateFormat | The format to be used for input and output dates.
GetResponseVar | Parses additional information out of the response.
NewPassword | New password for the current OFX user.
OFXLog | Log file for the OFX transaction.
ServerMessage | Server message if a warning or other information returned.
ClientUId | Unique ID identifying OFX Client.
UserCred1A | Additional user credential required by server.
UserCred2A | Additional user credential required by server.
AuthToken | Authentication token required for this signon session only.
CorrectFITID[i] | The FITID of a previously sent transaction corrected by the current one.
CorrectAction[i] | The action taken to a previously sent transaction corrected by the current one.
AcceptEncoding | Used to tell the server which types of content encodings the client supports.
AllowHTTPCompression | This property enables HTTP compression for receiving data.
Authorization | The Authorization string to be sent to the server.
BytesTransferred | Contains the number of bytes transferred in the response data.
EncodeURL | If set to true the URL will be encoded by the component.
FollowRedirects | Determines what happens when the server issues a redirect.
GetOn302Redirect | If set to true the component will perform a GET on the new location.
HTTPVersion | The version of HTTP used by the component.
IfModifiedSince | A date determining the maximum age of the desired document.
KeepAlive | Determines whether the HTTP connection is closed after completion of the request.
MaxRedirectAttempts | Limits the number of redirects that are followed in a request.
OtherHeaders | Other headers as determined by the user (optional).
ProxyAuthorization | The authorization string to be sent to the proxy server.
ProxyAuthScheme | The authorization scheme to be used for the proxy.
ProxyPassword | A password if authentication is to be used for the proxy.
ProxyPort | Port for the proxy server (default 80).
ProxyServer | Name or IP address of a proxy server (optional).
ProxyUser | A user name if authentication is to be used for the proxy.
TransferredDataLimit | The maximum number of incoming bytes to be stored by the component.
UseChunkedEncoding | Enables or Disables HTTP chunked encoding for transfers.
ChunkSize | Specifies the chunk size in bytes when using chunked encoding.
UsePlatformHTTPClient | Whether or not to use the platform HTTP client.
UserAgent | Information about the user agent (browser).
KerberosSPN | The Service Principal Name for the Kerberos Domain Controller.
FirewallAutoDetect | Tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallHost | Name or IP address of firewall (optional).
FirewallPassword | Password to be used if authentication is to be used when connecting through the firewall.
FirewallPort | The TCP port for the FirewallHost;.
FirewallType | Determines the type of firewall to connect through.
FirewallUser | A user name if authentication is to be used connecting through a firewall.
KeepAliveTime | The inactivity time in milliseconds before a TCP keep-alive packet is sent.
KeepAliveInterval | The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.
Linger | When set to True, connections are terminated gracefully.
LingerTime | Time in seconds to have the connection linger.
LocalHost | The name of the local host through which connections are initiated or accepted.
LocalPort | The TCP port in the local host where the component binds.
MaxLineLength | The maximum amount of data to accumulate when no EOL is found.
MaxTransferRate | The transfer rate limit in bytes per second.
TCPKeepAlive | Determines whether or not the keep alive socket option is enabled.
UseIPv6 | Whether or not to use IPv6.
TcpNoDelay | Whether or not to delay when sending packets.
ReuseSSLSession | Determines if the SSL session is reused.
SSLCipherStrength | The minimum cipher strength used for bulk encryption.
SSLEnabledProtocols | Used to enable/disable the supported security protocols.
SSLProvider | The name of the security provider to use.
SSLSecurityFlags | Flags that control certificate verification.
OpenSSLCADir | The path to a directory containing CA certificates.
OpenSSLCAFile | Name of the file containing the list of CA's trusted by your application.
OpenSSLCipherList | A string that controls the ciphers to be used by SSL.
OpenSSLPrngSeedData | The data to seed the pseudo random number generator (PRNG).
SSLAlgorithmList | A string that controls the cipher algorithms to be used by SSL.
AbsoluteTimeout | Determines whether timeouts are inactivity timeouts or absolute timeouts.
FirewallData | Used to send extra data to the firewall.
InBufferSize | The size in bytes of the incoming queue of the socket.
OutBufferSize | The size in bytes of the outgoing queue of the socket.
CodePage | The system code page used for Unicode to Multibyte translations.


ChallengeQuestionCount Property

ChallengeQuestionCount Property (FIProfile Class)

The number of records in the Challenge arrays.

Syntax

int GetChallengeQuestionCount();

int SetChallengeQuestionCount(int iChallengeQuestionCount);

Default Value

0

Remarks

This property controls the size of the following arrays:
  • ChallengeAggregate
  • ChallengeAnswer
  • ChallengeQuestion
  • ChallengeQuestionId

The array indices start at 0 and end at ChallengeQuestionCount-1.

This property is not available at design time.

Data Type

Integer


ChallengeAggregate Property

ChallengeAggregate Property (FIProfile Class)

Wrapper for a MFA challenge question.

Syntax

char* GetChallengeAggregate(int iChallengeQuestionIndex);

Default Value

""

Remarks

Wrapper for a MFA challenge question.

Each challenge question aggregate contains elements and values associated with the following properties:

  • ChallengeQuestionId
  • ChallengeQuestion

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the ChallengeQuestionCount property.

This property is read-only and not available at design time.

Data Type

String


ChallengeAnswer Property

ChallengeAnswer Property (FIProfile Class)

User's answer to the challenge question identified by QuestionId .

Syntax

char* GetChallengeAnswer(int iChallengeQuestionIndex);

int SetChallengeAnswer(int iChallengeQuestionIndex, char* lpszChallengeAnswer);

Default Value

""

Remarks

User's answer to the challenge question identified by ChallengeQuestionId.

Depending on the value of ChallengeQuestionId, this answer can be collected by user or client. Values above MFA100 are reserved for questions that the server expects the client to answer. These do not require customer responses. All other IDs as well as server specific IDs expect customer responses. Clients may need to identify out of band which of the IDs above MFA100 they support.

The size of the array is controlled by the ChallengeQuestionCount property.

This property is not available at design time.

Data Type

String


ChallengeQuestion Property

ChallengeQuestion Property (FIProfile Class)

The textual challenge question.

Syntax

char* GetChallengeQuestion(int iChallengeQuestionIndex);

Default Value

""

Remarks

The textual challenge question.

The following table details the list of possible reserved values for ChallengeQuestionId and corresponding textual description of the challenge question:

ChallengeQuestionId | ChallengeQuestion
MFA1 | City of birth
MFA2 | Date of birth, formatted MM/DD/YYYY
MFA3 | Debit card number
MFA4 | Father's middle name
MFA5 | Favorite color
MFA6 | First pet's name
MFA7 | Five digit ZIP code
MFA8 | Grandmother's maiden name on your father's side
MFA9 | Grandmother's maiden name on your mother's side
MFA10 | Last four digits of your cell phone number
MFA11 | Last four digits of your daytime phone number
MFA12 | Last four digits of your home phone number
MFA13 | Last four digits of your social security number
MFA14 | Last four digits of your tax ID
MFA15 | Month of birth of youngest sibling, do not abbreviate
MFA16 | Mother's maiden name
MFA17 | Mother's middle name
MFA18 | Name of the company where you had your first job
MFA19 | Name of the manufacturer of your first car
MFA20 | Name of the street you grew up on
MFA21 | Name of your high school football team, do not include high school name, e.g. "Beavers" rather than "Central High Beavers"
MFA22 | Recent deposit or recent withdrawal amount
MFA23 | Year of birth, formatted YYYY
MFA101 | Datetime, formatted YYYYMMDDHHMMSS
MFA102 | Host name
MFA103 | IP Address
MFA104 | MAC Address
MFA105 | Operating System version
MFA106 | Processor architecture, e.g. I386
MFA107 | UserAgent

Note:Values above MFA100 are reserved for questions that the server expects the client to answer. These do not require customer responses. All other IDs as well as server specific IDs expect customer responses. Clients may need to identify out of band which of the IDs above MFA100 they support.

The size of the array is controlled by the ChallengeQuestionCount property.

This property is read-only and not available at design time.

Data Type

String


ChallengeQuestionId Property

ChallengeQuestionId Property (FIProfile Class)

Identifier for the challenge question.

Syntax

char* GetChallengeQuestionId(int iChallengeQuestionIndex);

Default Value

""

Remarks

Identifier for the challenge question.

This is unique for this challenge question, but not unique for the user, session, etc.

The following table details the list of possible reserved values for ChallengeQuestionId and corresponding textual description of the challenge question:

ChallengeQuestionId | ChallengeQuestion
MFA1 | City of birth
MFA2 | Date of birth, formatted MM/DD/YYYY
MFA3 | Debit card number
MFA4 | Father's middle name
MFA5 | Favorite color
MFA6 | First pet's name
MFA7 | Five digit ZIP code
MFA8 | Grandmother's maiden name on your father's side
MFA9 | Grandmother's maiden name on your mother's side
MFA10 | Last four digits of your cell phone number
MFA11 | Last four digits of your daytime phone number
MFA12 | Last four digits of your home phone number
MFA13 | Last four digits of your social security number
MFA14 | Last four digits of your tax ID
MFA15 | Month of birth of youngest sibling, do not abbreviate
MFA16 | Mother's maiden name
MFA17 | Mother's middle name
MFA18 | Name of the company where you had your first job
MFA19 | Name of the manufacturer of your first car
MFA20 | Name of the street you grew up on
MFA21 | Name of your high school football team, do not include high school name, e.g. "Beavers" rather than "Central High Beavers"
MFA22 | Recent deposit or recent withdrawal amount
MFA23 | Year of birth, formatted YYYY
MFA101 | Datetime, formatted YYYYMMDDHHMMSS
MFA102 | Host name
MFA103 | IP Address
MFA104 | MAC Address
MFA105 | Operating System version
MFA106 | Processor architecture, e.g. I386
MFA107 | UserAgent

Note:Values above MFA100 are reserved for questions that the server expects the client to answer. These do not require customer responses. All other IDs as well as server specific IDs expect customer responses. Clients may need to identify out of band which of the IDs above MFA100 they support.

The size of the array is controlled by the ChallengeQuestionCount property.

This property is read-only and not available at design time.

Data Type

String


ClientRouting Property

ClientRouting Property (FIProfile Class)

Client routing capabilities of the Financial Institution.

Syntax

int GetClientRouting();

int SetClientRouting(int iClientRouting);

Possible Values

  CR_NONE(0),
  CR_SERVICE(1),
  CR_MESSAGE_SET(2)

Default Value

0

Remarks

crNone (0) | Client cannot perform any routing, URLs must all be the same, and all message sets share one signon realm.
crService (1) | Client can perform limited routing.
crMessageSet (2) | Client can route at the message-set level. Each message set can have a different URL and/or signon realm.

Data Type

Integer


FIAddress1 Property

FIAddress1 Property (FIProfile Class)

Street address.

Syntax

char* GetFIAddress1();

Default Value

""

Remarks

The first line of the street address of the individual or business is stored in this property as a string.

This property is read-only.

Data Type

String


FIAddress2 Property

FIAddress2 Property (FIProfile Class)

Street address.

Syntax

char* GetFIAddress2();

Default Value

""

Remarks

The second line of the street address of the individual or business is stored in this property as a string.

This property is read-only.

Data Type

String


FIAddress3 Property

FIAddress3 Property (FIProfile Class)

Street address.

Syntax

char* GetFIAddress3();

Default Value

""

Remarks

The third line of the street address of the individual or business is stored in this property as a string.

This property is read-only.

Data Type

String


FICity Property

FICity Property (FIProfile Class)

City.

Syntax

char* GetFICity();

Default Value

""

Remarks

The city where the individual or business is located is stored in this property as a string.

This property is read-only.

Data Type

String


FICountry Property

FICountry Property (FIProfile Class)

Country.

Syntax

char* GetFICountry();

Default Value

""

Remarks

The country where the individual or business is located is stored in this property as a string.

This property is read-only.

Data Type

String


FICustomerServicePhone Property

FICustomerServicePhone Property (FIProfile Class)

Phone number for Customer Service.

Syntax

char* GetFICustomerServicePhone();

Default Value

""

Remarks

This is the Financial Institution's Customer Service phone number.

This property is read-only.

Data Type

String


FIEmailAddress Property

FIEmailAddress Property (FIProfile Class)

Email address for contacting the Financial Institution.

Syntax

char* GetFIEmailAddress();

Default Value

""

Remarks

The FI email address.

This property is read-only.

Data Type

String


FIHomePage Property

FIHomePage Property (FIProfile Class)

Home web page for general information about the Financial Institution.

Syntax

char* GetFIHomePage();

Default Value

""

Remarks

The Financial Institution's home page URL.

This property is read-only.

Data Type

String


FIId Property

FIId Property (FIProfile Class)

Financial institution identifier.

Syntax

char* GetFIId();

int SetFIId(char* lpszFIId);

Default Value

""

Remarks

FIId holds the identifier of the OFX Financial Institution and is used during signon. This value is unique for each organization name.

Data Type

String


FIName Property

FIName Property (FIProfile Class)

Name.

Syntax

char* GetFIName();

Default Value

""

Remarks

The name of the individual or business is stored in this property as a string.

This property is read-only.

Data Type

String


FIOrganization Property

FIOrganization Property (FIProfile Class)

Financial institution organization name.

Syntax

char* GetFIOrganization();

int SetFIOrganization(char* lpszFIOrganization);

Default Value

""

Remarks

This is the name of the OFX Financial Institution and is used during signon. Each organization has a unique FIId that must also be used at signon.

Data Type

String


FIPostalCode Property

FIPostalCode Property (FIProfile Class)

Postal Code.

Syntax

char* GetFIPostalCode();

Default Value

""

Remarks

The postal code where the individual or business is located is stored in this property as a string.

This property is read-only.

Data Type

String


FIProfileDate Property

FIProfileDate Property (FIProfile Class)

The date the current profile was posted.

Syntax

char* GetFIProfileDate();

Default Value

""

Remarks

The date the OFX Financial Institution posted the current profile.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Note: you may use this date on subsequent profile requests to ensure that you receive the latest profile. Simply set the LastUpdate property to the value in this property on any subsequent profile requests.

This property is read-only.

Data Type

String


FirewallAutoDetect Property

FirewallAutoDetect Property (FIProfile Class)

This property tells the component whether or not to automatically detect and use firewall system settings, if available.

Syntax

int GetFirewallAutoDetect();

int SetFirewallAutoDetect(int bFirewallAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use firewall system settings, if available.

Data Type

Boolean


FirewallType Property

FirewallType Property (FIProfile Class)

This property determines the type of firewall to connect through.

Syntax

int GetFirewallType();

int SetFirewallType(int iFirewallType);

Possible Values

  FW_NONE(0),
  FW_TUNNEL(1),
  FW_SOCKS4(2),
  FW_SOCKS5(3)

Default Value

0

Remarks

This property determines the type of firewall to connect through. The applicable values are the following:

fwNone (0) | No firewall (default setting).
fwTunnel (1) | Connect through a tunneling proxy. FirewallPort is set to 80.
fwSOCKS4 (2) | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
fwSOCKS5 (3) | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

Data Type

Integer


FirewallHost Property

FirewallHost Property (FIProfile Class)

This property contains the name or IP address of firewall (optional).

Syntax

char* GetFirewallHost();

int SetFirewallHost(char* lpszFirewallHost);

Default Value

""

Remarks

This property contains the name or IP address of firewall (optional). If a FirewallHost is given, the requested connections will be authenticated through the specified firewall when connecting.

If this property is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, this property is set to the corresponding address. If the search is not successful, the class fails with an error.

Data Type

String


FirewallPassword Property

FirewallPassword Property (FIProfile Class)

This property contains a password if authentication is to be used when connecting through the firewall.

Syntax

char* GetFirewallPassword();

int SetFirewallPassword(char* lpszFirewallPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used when connecting through the firewall. If FirewallHost is specified, the FirewallUser and FirewallPassword properties are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

Data Type

String


FirewallPort Property

FirewallPort Property (FIProfile Class)

This property contains the TCP port for the firewall Host .

Syntax

int GetFirewallPort();

int SetFirewallPort(int lFirewallPort);

Default Value

0

Remarks

This property contains the TCP port for the firewall FirewallHost. See the description of the FirewallHost property for details.

Note that this property is set automatically when FirewallType is set to a valid value. See the description of the FirewallType property for details.

Data Type

Long


FirewallUser Property

FirewallUser Property (FIProfile Class)

This property contains a user name if authentication is to be used connecting through a firewall.

Syntax

char* GetFirewallUser();

int SetFirewallUser(char* lpszFirewallUser);

Default Value

""

Remarks

This property contains a user name if authentication is to be used connecting through a firewall. If the FirewallHost is specified, this property and FirewallPassword properties are used to connect and authenticate to the given Firewall. If the authentication fails, the class fails with an error.

Data Type

String


FIState Property

FIState Property (FIProfile Class)

State.

Syntax

char* GetFIState();

Default Value

""

Remarks

The state or province where the individual or business is located is stored in this property as a string.

This property is read-only.

Data Type

String


FITechSupportPhone Property

FITechSupportPhone Property (FIProfile Class)

Phone number for Technical Support.

Syntax

char* GetFITechSupportPhone();

Default Value

""

Remarks

The Financial Institution's Tech Support department phone number.

This property is read-only.

Data Type

String


FIUrl Property

FIUrl Property (FIProfile Class)

Financial institution URL.

Syntax

char* GetFIUrl();

int SetFIUrl(char* lpszFIUrl);

Default Value

""

Remarks

This is the URL of the OFX Financial Institution to which the class will signon and fetch data.

Data Type

String


LastUpdate Property

LastUpdate Property (FIProfile Class)

Date and time of the last profile update.

Syntax

char* GetLastUpdate();

int SetLastUpdate(char* lpszLastUpdate);

Default Value

"20000101120000.000[+0:GMT]"

Remarks

This is the date (last time) the FI updated the profile on their end. If this is the first time the FIProfile class is being used, use the default value to ensure that the latest update is received. This property must be set to a value that was returned in the FIProfileDate property after a previous profile request.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is not available at design time.

Data Type

String


MessageSetCount Property

MessageSetCount Property (FIProfile Class)

The number of records in the MessageSet arrays.

Syntax

int GetMessageSetCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • MessageSetAggregate
  • MessageSetClosingInfoAvailability
  • MessageSetClosingInfoImage
  • MessageSetLanguage
  • MessageSetName
  • MessageSetRecovery
  • MessageSetRefresh
  • MessageSetSecurityLevel
  • MessageSetServiceProvider
  • MessageSetSignOnRealm
  • MessageSetSyncMode
  • MessageSetTransportSecurity
  • MessageSetTxImage
  • MessageSetURL
  • MessageSetVersion

The array indices start at 0 and end at MessageSetCount-1.

This property is read-only and not available at design time.

Data Type

Integer


MessageSetAggregate Property

MessageSetAggregate Property (FIProfile Class)

Wrapper for a message set.

Syntax

char* GetMessageSetAggregate(int iMessageSetIndex);

Default Value

""

Remarks

Wrapper for a message set.

A list of all of a given Financial Institution's supported services are stored in a series of aggregates called 'Message Sets'.

Each message set aggregate contains data (elements and values) associated with the following properties:

  • MessageSetName
  • MessageSetLanguage
  • MessageSetRecovery
  • MessageSetRefresh
  • MessageSetSecurityLevel
  • MessageSetServiceProvider
  • MessageSetSignOnRealm
  • MessageSetSyncMode
  • MessageSetTransportSecurity
  • MessageSetURL
  • MessageSetVersion

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

String


MessageSetClosingInfoAvailability Property

MessageSetClosingInfoAvailability Property (FIProfile Class)

This is an indicator of the Financial Institution's statement closing information capabilities.

Syntax

int GetMessageSetClosingInfoAvailability(int iMessageSetIndex);

Default Value

FALSE

Remarks

This is an indicator of the Financial Institution's statement closing information capabilities. If true, the server can support statement closing information download for this message set.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

Boolean


MessageSetClosingInfoImage Property

MessageSetClosingInfoImage Property (FIProfile Class)

This is an indicator of the Financial Institution's statement closing image capabilities.

Syntax

int GetMessageSetClosingInfoImage(int iMessageSetIndex);

Default Value

FALSE

Remarks

This is an indicator of the Financial Institution's statement closing image capabilities. If true, the server can support image of the statement closing information for this message set.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

Boolean


MessageSetLanguage Property

MessageSetLanguage Property (FIProfile Class)

Languages the server supports.

Syntax

char* GetMessageSetLanguage(int iMessageSetIndex);

Default Value

""

Remarks

Languages the server supports. More than one may appear in given response.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

String


MessageSetName Property

MessageSetName Property (FIProfile Class)

Name of a message set supported by the given FI.

Syntax

char* GetMessageSetName(int iMessageSetIndex);

Default Value

""

Remarks

Name of a message set supported by the given FI.

Each MessageSetAggregate corresponds to a different OFX command. For example, SIGNONMSGSET corresponds to SignOn Request Message. The MessageSetName is used to retrieve the name of the command associated with this Message Set.

The following table lists each message set, along with its aggregate name and the OFX Versions that support it.

Message Set | Message Set Aggregate | OFX Version support
Signon | SIGNONMSGSETV1 | 1.0.2, 1.0.3, 1.5.1, 1.6, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 2.1.1
Signup | SIGNUPMSGSETV1 | 1.0.2, 1.0.3, 1.5.1, 1.6, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 2.1.1
Banking | BANKMSGSETV1 | 1.0.2, 1.0.3, 1.5.1, 1.6, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 2.1.1
Credit Card Statements | CREDITCARDMSGSETV1 | 1.0.2, 1.0.3, 1.5.1, 1.6, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 2.1.1
Loan Statements | LOANMSGSETV1 | 2.1, 2.1.1
Investment Statements | INVSTMTMSGSETV1 | 1.0.2, 1.0.3, 1.5.1, 1.6, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 2.1.1
Interbank Funds Transfers | INTERXFERMSGSETV1 | 1.0.2, 1.0.3, 1.5.1, 1.6, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 2.1.1
Payments | BILLPAYMSGSETV1 | 1.0.2, 1.0.3, 1.5.1, 1.6, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 2.1.1
Investment security list | SECLISTMSGSETV1 | 1.0.2, 1.0.3, 1.5.1, 1.6, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 2.1.1
FI Profile | PROFMSGSETV1 | 1.0.2, 1.0.3, 1.5.1, 1.6, 2.0, 2.0.1, 2.0.2, 2.0.3, 2.1, 2.1.1
Image download | IMAGEMSGSETV1 | 2.1, 2.1.1

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

String


MessageSetRecovery Property

MessageSetRecovery Property (FIProfile Class)

This is an indicator of the Financial Institution's error-recovery capabilities.

Syntax

int GetMessageSetRecovery(int iMessageSetIndex);

Default Value

FALSE

Remarks

This is an indicator of the Financial Institution's error-recovery capabilities. If true, the server can support file-based error recovery.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

Boolean


MessageSetRefresh Property

MessageSetRefresh Property (FIProfile Class)

If true, the server can support Synchronized Refresh.

Syntax

int GetMessageSetRefresh(int iMessageSetIndex);

Default Value

FALSE

Remarks

If true, the server can support Synchronized Refresh. Even if this property is set to false, the Financial Institution's server may still be able to support Lite Synchronization.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

Boolean


MessageSetSecurityLevel Property

MessageSetSecurityLevel Property (FIProfile Class)

Security level of the Message Set.

Syntax

char* GetMessageSetSecurityLevel(int iMessageSetIndex);

Default Value

""

Remarks

Security level of the Message Set.

Legal values are defined as follows: "NONE" and "TYPE 1". If the MessageSetSecurityLevel of a Message Set is 'TYPE 1', then the requests for that Message Set submitted to that FI will require a challenge request to be present during the signon.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

String


MessageSetServiceProvider Property

MessageSetServiceProvider Property (FIProfile Class)

If the OFX server has been outsourced to a service provider other than the Financial Institution, then the name of that provider should appear here.

Syntax

char* GetMessageSetServiceProvider(int iMessageSetIndex);

Default Value

""

Remarks

If the OFX server has been outsourced to a service provider other than the Financial Institution, then the name of that provider should appear here.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

String


MessageSetSignOnRealm Property

MessageSetSignOnRealm Property (FIProfile Class)

This is the name of the SignOn realm used by this message set.

Syntax

char* GetMessageSetSignOnRealm(int iMessageSetIndex);

Default Value

""

Remarks

This is the name of the SignOn realm used by this message set.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

String


MessageSetSyncMode Property

MessageSetSyncMode Property (FIProfile Class)

Level of synchronization offered by the server for this message set.

Syntax

char* GetMessageSetSyncMode(int iMessageSetIndex);

Default Value

""

Remarks

Level of synchronization offered by the server for this message set. The valid values are:

FULL
LITE

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

String


MessageSetTransportSecurity Property

MessageSetTransportSecurity Property (FIProfile Class)

It indicates whether any security measures are taken at the Transport Layer for this message set.

Syntax

int GetMessageSetTransportSecurity(int iMessageSetIndex);

Default Value

FALSE

Remarks

It indicates whether any security measures are taken at the Transport Layer for this message set.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

Boolean


MessageSetTxImage Property

MessageSetTxImage Property (FIProfile Class)

It indicates whether FI supports transaction image download for this message set.

Syntax

int GetMessageSetTxImage(int iMessageSetIndex);

Default Value

FALSE

Remarks

It indicates whether FI supports transaction image download for this message set. If True, the server supports transaction image (e.g., check image) for this message set.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

Boolean


MessageSetURL Property

MessageSetURL Property (FIProfile Class)

This is the address of the server to which OFX (HTTP) connections are made for this particular message set.

Syntax

char* GetMessageSetURL(int iMessageSetIndex);

Default Value

""

Remarks

This is the address of the server to which OFX (HTTP) connections are made for this particular message set.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

String


MessageSetVersion Property

MessageSetVersion Property (FIProfile Class)

This version number corresponds to the version of the OFX Specification which the server uses for the message set.

Syntax

char* GetMessageSetVersion(int iMessageSetIndex);

Default Value

""

Remarks

This version number corresponds to the version of the OFX Specification which the server uses for the message set. Usually this will be the same version supplied by the client, but sometimes versions may differ across message sets. Servers are required to provide this value in the VER element of the message set aggregate.

The size of the array is controlled by the MessageSetCount property.

This property is read-only and not available at design time.

Data Type

String


OFXAccessKey Property

OFXAccessKey Property (FIProfile Class)

Access key value received after a MFA authentication in a previous signon.

Syntax

char* GetOFXAccessKey();

int SetOFXAccessKey(char* lpszOFXAccessKey);

Default Value

""

Remarks

This might be returned in the server response after a MFA authentication (i.e. MFA challenge question/answer pairs were validated by the server when the SendChallengeAnswers method in FIProfile class was called).

To prevent servers from needing to authenticate the user in each OFX request, the server may respond to a correct set of challenge answers with a OFXAccessKey on the signon response (when the SendChallengeAnswers method in FIProfile class was called).

The server determines the contents of this optional element. On each subsequent signon request, the client will send the last value of the OFXAccessKey it has received, even after the end of the current session. The server has the option to respond to any subsequent request with a 3000 error code, requiring the client to send the MFA challenge questions request again (by calling the RequestChallengeQuestions method in FIProfile class). This allows the server to determine the lifetime of the OFXAccessKey.

Data Type

String


OFXAppId Property

OFXAppId Property (FIProfile Class)

OFX application identifier.

Syntax

char* GetOFXAppId();

int SetOFXAppId(char* lpszOFXAppId);

Default Value

""

Remarks

This is the unique identifier of the user's OFX application.

Data Type

String


OFXAppVersion Property

OFXAppVersion Property (FIProfile Class)

OFX application version.

Syntax

char* GetOFXAppVersion();

int SetOFXAppVersion(char* lpszOFXAppVersion);

Default Value

""

Remarks

This is the version of the user's OFX application.

Data Type

String


OFXPassword Property

OFXPassword Property (FIProfile Class)

User's password.

Syntax

char* GetOFXPassword();

int SetOFXPassword(char* lpszOFXPassword);

Default Value

""

Remarks

This is the password used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXRequest Property

OFXRequest Property (FIProfile Class)

The current OFX request aggregate.

Syntax

char* GetOFXRequest();

Default Value

""

Remarks

Polling OFXRequest will cause the class to generate and return an OFX request aggregate.

This property is read-only and not available at design time.

Data Type

String


OFXResponse Property

OFXResponse Property (FIProfile Class)

The current OFX response aggregate.

Syntax

char* GetOFXResponse();

int SetOFXResponse(char* lpszOFXResponse);

Default Value

""

Remarks

This can be used especially for debugging purposes. This can also be used to parse an OFX Response. To do so, you can set the OFX Response data (in string format) to OFXResponse. Once set, the supplied OFX data will be parsed and will populate the same read-only properties that ReadOFXDataFile does.

This property is not available at design time.

Data Type

String


OFXUser Property

OFXUser Property (FIProfile Class)

User's id.

Syntax

char* GetOFXUser();

int SetOFXUser(char* lpszOFXUser);

Default Value

""

Remarks

This is the UserID used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXVersion Property

OFXVersion Property (FIProfile Class)

OFX API version.

Syntax

char* GetOFXVersion();

int SetOFXVersion(char* lpszOFXVersion);

Default Value

"102"

Remarks

This is the OFX API version used in all requests sent to your FI server (such as 1.0.2, 2.0.1, 2.1.1, etc.). Valid values: 102, 103, 200, 201, 203, 210, 211. Note that not all OFX Versions are supported by FIs.

Note: If the OFXVersion is set to 1x, the request and the response are going to be in SGML format. If set to 2x, the request will be in XML format (the response format depends on the FI's server capabilities). Note that if the OFX FI server does not support version 2x, the server will return an error (such as 'Bad Request').

Certain services are available only for a specific OFX version. For example, image download, is available only in OFX version 2.1.1.

Data Type

String


SignOnInfoCount Property

SignOnInfoCount Property (FIProfile Class)

The number of records in the SignOn arrays.

Syntax

int GetSignOnInfoCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • SignOnAggregate
  • SignOnAuthToken
  • SignOnAuthTokenFirst
  • SignOnAuthTokenUrl
  • SignOnCaseSensitive
  • SignOnCharType
  • SignOnClientUIdReq
  • SignOnMaxPwdLength
  • SignOnMFAChallengeFirst
  • SignOnMFAChallengeReq
  • SignOnMinPwdLength
  • SignOnPINChange
  • SignOnPINChangeFirst
  • SignOnRealm
  • SignOnSpaces
  • SignOnSpecial
  • SignOnUserCred1Q
  • SignOnUserCred2Q

The array indices start at 0 and end at SignOnInfoCount-1.

This property is read-only and not available at design time.

Data Type

Integer


SignOnAggregate Property

SignOnAggregate Property (FIProfile Class)

Wrapper for signon information.

Syntax

char* GetSignOnAggregate(int iSignOnIndex);

Default Value

""

Remarks

Wrapper for signon information.

Each signon information aggregate contains data (elements and values) associated with the following properties:

  • SignOnMaxPwdLength
  • SignOnMinPwdLength
  • SignOnCaseSensitive
  • SignOnCharType
  • SignOnSpaces
  • SignOnSpecial
  • SignOnPINChangeFirst
  • SignOnPINChange
  • SignOnAuthTokenFirst
  • SignOnAuthToken
  • SignOnAuthTokenUrl
  • SignOnClientUIdReq
  • SignOnMFAChallengeReq
  • SignOnMFAChallengeFirst
  • SignOnUserCred1Q
  • SignOnUserCred2Q
  • SignOnRealm

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

String


SignOnAuthToken Property

SignOnAuthToken Property (FIProfile Class)

Text label for the Authentication Token.

Syntax

char* GetSignOnAuthToken(int iSignOnIndex);

Default Value

""

Remarks

Text label for the Authentication Token.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

String


SignOnAuthTokenFirst Property

SignOnAuthTokenFirst Property (FIProfile Class)

Indicates whether server requires clients to send the Authentication Token as part of first signon.

Syntax

int GetSignOnAuthTokenFirst(int iSignOnIndex);

Default Value

FALSE

Remarks

Indicates whether server requires clients to send the Authentication Token as part of first signon.

If True, then server requires clients to send the AuthToken as part of first signon.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Boolean


SignOnAuthTokenUrl Property

SignOnAuthTokenUrl Property (FIProfile Class)

URL where Authentication Token information is provided by the institution operating the OFX server.

Syntax

char* GetSignOnAuthTokenUrl(int iSignOnIndex);

Default Value

""

Remarks

URL where Authentication Token information is provided by the institution operating the OFX server.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

String


SignOnCaseSensitive Property

SignOnCaseSensitive Property (FIProfile Class)

Indicates whether the password is case-sensitive or not.

Syntax

int GetSignOnCaseSensitive(int iSignOnIndex);

Default Value

FALSE

Remarks

Indicates whether the password is case-sensitive or not.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Boolean


SignOnCharType Property

SignOnCharType Property (FIProfile Class)

Type of characters the password can contain.

Syntax

int GetSignOnCharType(int iSignOnIndex);

Possible Values

  SCT_ALPHA_ONLY(0),
  SCT_NUMERIC_ONLY(1),
  SCT_ALPHA_OR_NUMERIC(2),
  SCT_ALPHA_AND_NUMERIC(3),
  SCT_UNKNOWN(4)

Default Value

1

Remarks

Type of characters the password can contain. The valid values of this string are:

sctAlphaOnly (0) | Password may not contain numeric characters. The server would allow "abbc", but not "1223" or "a122".
sctNumericOnly (1) | Password may not contain alphabetic characters. The server would allow "1223", but no "abbc" or "a122".
sctAlphaOrNumeric (2) | Password may contain alphabetic or numeric characters (or both). The server would allow "abbc", "1223", or "a122".
sctAlphaAndNumeric (3) | Password must contain both alphabetic and numeric characters. The server would allow "a122", but not "abbc" or "1223".
sctUnknown (4) | The server has sent an unrecognized character type. Please refer to the SignOnAggregate to obtain the original response.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Integer


SignOnClientUIdReq Property

SignOnClientUIdReq Property (FIProfile Class)

Indicates whether the Client Unique Identifier is required to be included in the signon.

Syntax

int GetSignOnClientUIdReq(int iSignOnIndex);

Default Value

FALSE

Remarks

Indicates whether the Client Unique Identifier is required to be included in the signon.

If this is True, then the ClientUId is required to be set and included in the request.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Boolean


SignOnMaxPwdLength Property

SignOnMaxPwdLength Property (FIProfile Class)

Maximum number of characters a SignOn password on this server can have.

Syntax

int GetSignOnMaxPwdLength(int iSignOnIndex);

Default Value

0

Remarks

Maximum number of characters a SignOn password on this server can have.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Long


SignOnMFAChallengeFirst Property

SignOnMFAChallengeFirst Property (FIProfile Class)

Indicates whether the Multi-Factor Authentication (MFA) challenge is required to be included in the first signon to this server.

Syntax

int GetSignOnMFAChallengeFirst(int iSignOnIndex);

Default Value

FALSE

Remarks

Indicates whether the Multi-Factor Authentication (MFA) challenge is required to be included in the first signon to this server.

If True, then server requires clients to request MFA challenge questions (required for MFA) in the first signon request. See RequestChallengeQuestions in FIProfile for more information.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Boolean


SignOnMFAChallengeReq Property

SignOnMFAChallengeReq Property (FIProfile Class)

Indicates whether the Multi-Factor Authentication (MFA) challenge is required by this FI server.

Syntax

int GetSignOnMFAChallengeReq(int iSignOnIndex);

Default Value

FALSE

Remarks

Indicates whether the Multi-Factor Authentication (MFA) challenge is required by this FI server.

If True, then server requires multi-factor authentication during each signon. See RequestChallengeQuestions in FIProfile for more information.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Boolean


SignOnMinPwdLength Property

SignOnMinPwdLength Property (FIProfile Class)

Minimum number of characters a SignOn password on this server can have.

Syntax

int GetSignOnMinPwdLength(int iSignOnIndex);

Default Value

0

Remarks

Minimum number of characters a SignOn password on this server can have.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Long


SignOnPINChange Property

SignOnPINChange Property (FIProfile Class)

It indicates whether the server accepts any PIN Change Requests at all.

Syntax

int GetSignOnPINChange(int iSignOnIndex);

Default Value

FALSE

Remarks

It indicates whether the server accepts any PIN Change Requests at all.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Boolean


SignOnPINChangeFirst Property

SignOnPINChangeFirst Property (FIProfile Class)

Indicates whether server requires clients to change password as part of first signon.

Syntax

int GetSignOnPINChangeFirst(int iSignOnIndex);

Default Value

FALSE

Remarks

Indicates whether server requires clients to change password as part of first signon.

If True, then server requires clients to change OFXPassword as part of first signon. However, if SignOnMFAChallengeFirst is also True, this pin change request should be sent immediately after the session containing multi-factor authentication.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Boolean


SignOnRealm Property

SignOnRealm Property (FIProfile Class)

SignOn realm used by this message set.

Syntax

char* GetSignOnRealm(int iSignOnIndex);

Default Value

""

Remarks

SignOn realm used by this message set. The name of the SignOn realm in this message set.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

String


SignOnSpaces Property

SignOnSpaces Property (FIProfile Class)

It indicates whether the password can contain whitespaces.

Syntax

int GetSignOnSpaces(int iSignOnIndex);

Default Value

FALSE

Remarks

It indicates whether the password can contain whitespaces.

This does not refer to any special characters. To determine whether special characters are allowed, check the value of SignOnSpecial.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Boolean


SignOnSpecial Property

SignOnSpecial Property (FIProfile Class)

It indicates whether the password can contain special characters.

Syntax

int GetSignOnSpecial(int iSignOnIndex);

Default Value

FALSE

Remarks

It indicates whether the password can contain special characters. Special characters do not include spaces.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

Boolean


SignOnUserCred1Q Property

SignOnUserCred1Q Property (FIProfile Class)

Text prompt for user credential.

Syntax

char* GetSignOnUserCred1Q(int iSignOnIndex);

Default Value

""

Remarks

Text prompt for user credential.

If this is present in the server response, a third credential is required to authenticate the user in all future requests. This is in addition to OFXUser and OFXPassword. This new credential is represented by UserCred1A) which is the corresponding answer of SignOnUserCred1Q. This should be then included in each request.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

String


SignOnUserCred2Q Property

SignOnUserCred2Q Property (FIProfile Class)

Text prompt for user credential.

Syntax

char* GetSignOnUserCred2Q(int iSignOnIndex);

Default Value

""

Remarks

Text prompt for user credential.

If this is present in the server response, a fourth credential is required to authenticate the user in all future requests. This is in addition to OFXUser, OFXPassword and SignOnUserCred2Q. This new credential is represented by UserCred2A) which is the corresponding answer of SignOnUserCred2Q. This should be then included in each request. In this case, the UserCred1A should also be present in the request.

The size of the array is controlled by the SignOnInfoCount property.

This property is read-only and not available at design time.

Data Type

String


SSLAcceptServerCertEncoded Property

SSLAcceptServerCertEncoded Property (FIProfile Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLAcceptServerCertEncoded(char *&lpSSLAcceptServerCertEncoded, int &lenSSLAcceptServerCertEncoded);

int SetSSLAcceptServerCertEncoded(char *lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLAcceptServerCertStore and SSLAcceptServerCertSubject properties may also be used to specify a certificate.

When SSLAcceptServerCertEncoded is set, a search is initiated in the current SSLAcceptServerCertStore for the private key of the certificate. If the key is found, SSLAcceptServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLAcceptServerCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertEncoded Property

SSLCertEncoded Property (FIProfile Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLCertEncoded(char *&lpSSLCertEncoded, int &lenSSLCertEncoded);

int SetSSLCertEncoded(char *lpSSLCertEncoded, int lenSSLCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLCertStore and SSLCertSubject properties may also be used to specify a certificate.

When SSLCertEncoded is set, a search is initiated in the current SSLCertStore for the private key of the certificate. If the key is found, SSLCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertStore Property

SSLCertStore Property (FIProfile Class)

The name of the certificate store for the client certificate.

Syntax

int GetSSLCertStore(char *&lpSSLCertStore, int &lenSSLCertStore);

int SetSSLCertStore(char *lpSSLCertStore, int lenSSLCertStore);

Default Value

"MY"

Remarks

The name of the certificate store for the client certificate.

The SSLCertStoreType property specifies the type of the certificate store specified by SSLCertStore. If the store is password protected, specify the password in SSLCertStorePassword.

SSLCertStore is used in conjunction with the SSLCertSubject property in order to specify client certificates. If SSLCertStore has a value, and SSLCertSubject or SSLCertEncoded is set, a search for a certificate is initiated. Please refer to the SSLCertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MY | A certificate store holding personal certificates with their associated private keys.
CA | Certifying authority certificates.
ROOT | Root certificates.
SPC | Software publisher certificates.

In Java, the certificate store normally is a file containing certificates and optional private keys.

When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).

If the provider is OpenSSL, the certificate store is a file containing a certificate and a private key. This property must be set to the name of the file.

Data Type

Binary String


SSLCertStorePassword Property

SSLCertStorePassword Property (FIProfile Class)

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Syntax

char* GetSSLCertStorePassword();

int SetSSLCertStorePassword(char* lpszSSLCertStorePassword);

Default Value

""

Remarks

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Data Type

String


SSLCertStoreType Property

SSLCertStoreType Property (FIProfile Class)

The type of certificate store for this certificate.

Syntax

int GetSSLCertStoreType();

int SetSSLCertStoreType(int iSSLCertStoreType);

Possible Values

  CST_USER(0),
  CST_MACHINE(1),
  CST_PFXFILE(2),
  CST_PFXBLOB(3),
  CST_JKSFILE(4),
  CST_JKSBLOB(5),
  CST_PEMKEY_FILE(6),
  CST_PEMKEY_BLOB(7),
  CST_PUBLIC_KEY_FILE(8),
  CST_PUBLIC_KEY_BLOB(9),
  CST_SSHPUBLIC_KEY_BLOB(10),
  CST_P7BFILE(11),
  CST_P7BBLOB(12),
  CST_SSHPUBLIC_KEY_FILE(13),
  CST_PPKFILE(14),
  CST_PPKBLOB(15),
  CST_XMLFILE(16),
  CST_XMLBLOB(17)

Default Value

0

Remarks

The type of certificate store for this certificate.

This property can take one of the following values:

0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java.
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java.
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates.
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format.
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java.
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java.
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate.
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate.
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate.
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate.
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key.
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates.
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format.
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key.
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key).
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key).
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format.
17 (cstXMLlob) | The certificate store is a string that contains a certificate in XML format.

Data Type

Integer


SSLCertSubject Property

SSLCertSubject Property (FIProfile Class)

The subject of the certificate used for client authentication.

Syntax

char* GetSSLCertSubject();

int SetSSLCertSubject(char* lpszSSLCertSubject);

Default Value

""

Remarks

The subject of the certificate used for client authentication.

When this property is set, a search is performed in the current certificate store certificate with matching subject.

If a matching certificate is found, the property is set to the full subject of the matching certificate.

If an exact match is not found, the store is searched for subjects containing the value of the property.

If a match is still not found, the property is set to an empty string, and no certificate is selected.

The special value "*" picks a random certificate in the certificate store.

The certificate subject is a comma separated list of distinguished name properties and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common properties and their meanings are displayed below.

Field | Meaning
CN | Common Name. This is commonly a host name like www.server.com.
O | Organization
OU | Organizational Unit
L | Locality
S | State
C | Country
E | Email Address

If a property value contains a comma it must be quoted.

Data Type

String


SSLServerCertEncoded Property

SSLServerCertEncoded Property (FIProfile Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLServerCertEncoded(char *&lpSSLServerCertEncoded, int &lenSSLServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLServerCertStore and SSLServerCertSubject properties may also be used to specify a certificate.

When SSLServerCertEncoded is set, a search is initiated in the current SSLServerCertStore for the private key of the certificate. If the key is found, SSLServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLServerCertSubject is set to empty string.

This property is read-only and not available at design time.

Data Type

Binary String


Timeout Property

Timeout Property (FIProfile Class)

A timeout for the component.

Syntax

int GetTimeout();

int SetTimeout(int iTimeout);

Default Value

60

Remarks

If the Timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.

If Timeout is set to a positive value, the class will wait for the operation to complete before returning control.

The class will use DoEvents to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not "freeze" and remains responsive.

If Timeout expires, and the operation is not yet complete, the class fails with an error.

Please note that by default, all timeouts are inactivity timeouts, i.e. the timeout period is extended by Timeout seconds when any amount of data is successfully sent or received.

Optionally, the behavior of the class may be changed to absolute timeouts, i.e. the class will wait for a maximum of Timeout seconds since the beginning of the operation, without extending the timeout period during communications.

This behavior is controlled by the AbsoluteTimeout configuration setting.

The default value for the Timeout property is 60 (seconds).

Data Type

Integer


Config Method

Config Method (FIProfile Class)

Sets or retrieves a configuration setting.

Syntax

 char* Config(char* lpszConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.


GetProfile Method

GetProfile Method (FIProfile Class)

Download the message set profile for a given Financial Institution.

Syntax

 int GetProfile();

Remarks

This function generates the Signon and FIProfile request page, submits it to the financial institution via HTTP, receives the response, and parses it. Individual transactions are downloaded with the statement.

Read-only properties that are populated as a result of response parsing include:

  • FIAddress1
  • FIAddress2
  • FIAddress3
  • FICity
  • FICountry
  • FICustomerServicePhone
  • FIEmailAddress
  • FIHomePage
  • FIName
  • FIPostalCode
  • FIProfileDate
  • FIState
  • FITechSupportPhone
  • MessageSets
  • SignOnDetails


ReadOFXDataFile Method

ReadOFXDataFile Method (FIProfile Class)

Reads an OFX response from a file.

Syntax

 int ReadOFXDataFile(char* lpszFileName);

Remarks

This method reads a previously recorded OFX response from a file, including HTTP and OFX headers.

The following read-only properties are populated as a result of parsing the data file:

  • FIAddress1
  • FIAddress2
  • FIAddress3
  • FICity
  • FICountry
  • FICustomerServicePhone
  • FIEmailAddress
  • FIHomePage
  • FIName
  • FIPostalCode
  • FIProfileDate
  • FIState
  • FITechSupportPhone
  • MessageSets
  • SignOnDetails


RequestChallengeQuestions Method

RequestChallengeQuestions Method (FIProfile Class)

Download the challenge questions when Multi-Factor Authentication (MFA) is required.

Syntax

 int RequestChallengeQuestions();

Remarks

This function generates the Signon and Multi-Factor Authentication challenge questions request page, submits it to the financial institution via HTTP, receives the response, and parses it.

When sending requests to a FI, if the information in the signon request is correct, but it is not sufficient to authenticate the user, the server can reply with a signon error code of 3000, which indicates that the client must perform multi-factor challenge authentication before proceeding with future OFX requests.

When this error is returned, the user should call this RequestChallengeQuestions method, which request the server to send a list of challenge questions that must be correctly answered before the OFX client may proceed with further OFX requests.

Upon successful response, the server will return a list of challenge questions, stored to ChallengeQuestions, where each question is specified by ChallengeQuestionId and ChallengeQuestion. If the server does not return such list, the class will throw an HTTP 400 error.

The user should inspect the ChallengeQuestions. When this list of challenge questions is returned, then the user has to answer each question by setting the ChallengeAnswer for each ChallengeQuestion, and then call the SendChallengeAnswers method to send the answers back to the server. The class will include these answers within the signon request included as part of the next request message. If these answers are correct, the server will process the request file. If they are incorrect, the server will return an error code of 3001.

When MFA is required, to prevent servers from needing to authenticate the user with each OFX request, the server may respond to a correct set of challenge answers with a OFXAccessKey on the signon response. However, the server determines the contents of this optional element. On each subsequent signon request, the client will send the last value of the OFXAccessKey it has received, even after the end of the current session. The server has the option to respond to any subsequent request with a 3000 error code, requiring the client to send the MFA challenge questions request. This allows the server to determine the lifetime of the OFXAccessKey.

Note: If in the profile response SignOnMFAChallengeFirst is True, the client must send this MFA challenge request in the first connection with the server, before sending any other requests.

The following properties are populated as a result of parsing a successful response:

  • ChallengeQuestions

Note: The Multi-Factor Authentication (MFA) is applicable only in OFXVersions: 1.0.3, 2.0.3, 2.1.0, and 2.1.1.


Reset Method

Reset Method (FIProfile Class)

Reset the internal state of the component and all properties to their default values.

Syntax

 int Reset();

Remarks

The Reset method does not have any parameters and does not return any value.


SendChallengeAnswers Method

SendChallengeAnswers Method (FIProfile Class)

Send the answers to challenge questions for a Multi-Factor Authentication (MFA).

Syntax

 int SendChallengeAnswers();

Remarks

This function generates the Signon and Multi-Factor Authentication challenge questions request page, submits it to the financial institution via HTTP, receives the response, and parses it.

When sending requests to a FI, if the information in the signon request is correct, but it is not sufficient to authenticate the user, the server can reply with a signon error code of 3000, which indicates that the client must perform multi-factor challenge authentication before proceeding with future OFX requests.

When this error is returned, the user should call this RequestChallengeQuestions method, which request the server to send a list of challenge questions that must be correctly answered before the OFX client may proceed with further OFX requests.

Upon successful response, the server will return a list of challenge questions, stored to ChallengeQuestions, where each question is specified by ChallengeQuestionId and ChallengeQuestion. If the server does not return such list, the class will throw an HTTP 400 error.

The user should inspect the ChallengeQuestions. When this list of challenge questions is returned, then the user has to answer each question by setting the ChallengeAnswer for each ChallengeQuestion, and then call the SendChallengeAnswers method to send the answers back to the server. The class will include these answers within the signon request included as part of the next request message. If these answers are correct, the server will process the request file. If they are incorrect, the server will return an error code of 3001.

When MFA is required, to prevent servers from needing to authenticate the user with each OFX request, the server may respond to a correct set of challenge answers with a OFXAccessKey on the signon response. However, the server determines the contents of this optional element. On each subsequent signon request, the client will send the last value of the OFXAccessKey it has received, even after the end of the current session. The server has the option to respond to any subsequent request with a 3000 error code, requiring the client to send the MFA challenge questions request. This allows the server to determine the lifetime of the OFXAccessKey.

Note: If in the profile response SignOnMFAChallengeFirst is True, the client must send this MFA challenge request in the first connection with the server, before sending any other requests.

The following properties are populated as a result of parsing a successful response:

  • ChallengeQuestions

Note: The Multi-Factor Authentication (MFA) is applicable only in OFXVersions: 1.0.3, 2.0.3, 2.1.0, and 2.1.1.


WriteOFXDataFile Method

WriteOFXDataFile Method (FIProfile Class)

Writes the OFX response sent by the server to a file.

Syntax

 int WriteOFXDataFile(char* lpszFileName);

Remarks

This method records the entire OFX response, including HTTP and OFX headers to a file. This file can later be read and parsed by the ReadOFXDataFile method as though it were a live response.


ConnectionStatus Event

ConnectionStatus Event (FIProfile Class)

Fired to indicate changes in connection state.

Syntax

 virtual int FireConnectionStatus(FIProfileConnectionStatusEventParams *e);

 typedef struct {

  char* ConnectionEvent;
  int StatusCode;
  char* Description;

  int reserved;

 } FIProfileConnectionStatusEventParams;

Remarks

The ConnectionStatus event is fired when the connection state changes: completion of a firewall or proxy connection, completion of a security handshake, etc.

The ConnectionEvent parameter indicates the type of connection event. Values may include:

Firewall connection complete.
SSL or S/Shell handshake complete (where applicable).
Remote host connection complete.
Remote host disconnected.
SSL or S/Shell connection broken.
Firewall host disconnected.

StatusCode has the error code returned by the TCP/IP stack. Description contains a description of this code. The value of StatusCode is equal to the value of the error.


Error Event

Error Event (FIProfile Class)

Information about errors during data delivery.

Syntax

 virtual int FireError(FIProfileErrorEventParams *e);

 typedef struct {

  int ErrorCode;
  char* Description;

  int reserved;

 } FIProfileErrorEventParams;

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Messages section.


SSLServerAuthentication Event

SSLServerAuthentication Event (FIProfile Class)

Fired after the server presents its certificate to the client.

Syntax

 virtual int FireSSLServerAuthentication(FIProfileSSLServerAuthenticationEventParams *e);

 typedef struct {

  char* CertEncoded;
  char* CertSubject;
  char* CertIssuer;
  char* Status;
  int Accept;

  int lenCertEncoded;
  int reserved;

 } FIProfileSSLServerAuthenticationEventParams;

Remarks

This event is where the client can decide whether to continue with the connection process or not. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether to continue or not.

When Accept is False, Status shows why the verification failed (otherwise, Status contains the string "OK"). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.


SSLStatus Event

SSLStatus Event (FIProfile Class)

Shows the progress of the secure connection.

Syntax

 virtual int FireSSLStatus(FIProfileSSLStatusEventParams *e);

 typedef struct {

  char* Message;

  int reserved;

 } FIProfileSSLStatusEventParams;

Remarks

The event is fired for informational and logging purposes only. Used to track the progress of the connection.


FIProfile Configuration

Configuration Settings (FIProfile Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

OFX Configuration Settings

CurrencyFormat: The format to be used for returning currency values.

If this is set to a non-empty string, the class will attempt to use the value as a pattern to format all currency strings returned from the server. You may use any of the system's default number formatting strings.

OFXDateFormat: The date format as required by OFX FI server.

Most of OFX FI servers, accept the default format, where the offset (G) and timezone (Z) are specified. However, there might still be some servers that do not accept that part. In such cases, you will have to set the OFXDateFormat to "YYYYMMddHHmmss.xxx" and GMT will be assumed as the default value.

Your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat (format that OFX FI server recognizes) right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

DateFormat: The format to be used for input and output dates.

This format is used for input and output dates. You may use any of the system's default date formatting strings.

When submitting the request: all your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

When parsing the response: if DateFormat is set to a non-empty string, the class will attempt to use the value as a pattern to format all date strings as they are returned. Otherwise, the system's default value will be used for formatting.

If the DateFormat is set to the special value "OFXDATE": During input:, any values you supply to date properties are passed to the server directly with no changes; During output: all dates will be returned in the OFX format as it was provided by the server without performing any modifications.

GetResponseVar: Parses additional information out of the response.

Any additional response information contained within the OFX response that is not available via the Response fields, may be retrieved with this GetResponseVar config.

To obtain a response value, pass the XPath to the value you wish to receive. For instance, if the OFX response contains:

    "<OFX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0<SEVERITY>INFO</STATUS><DTSERVER>20120104223836.575<LANGUAGE>ENG"

Then calling GetResponseVar("/OFX/SIGNONMSGSRVSV1/LANGUAGE") will return "ENG".

NewPassword: New password for the current OFX user.

Setting NewPassword to a non-empty value will cause the class to issue a password change request during sign-on along with the regular current OFX request. After the request is sent, this value will be cleared.

The correct current password is needed as well during signon request and must be supplied through the OFXPassword. Upon successful reply from the server, the NewPassword used becomes the new password.

OFXLog: Log file for the OFX transaction.

This setting records the OFX communication, but without including HTTP headers, to a file.

Please note that ReadOFXDataFile will not be able to parse this file because of the OFX request content present. If only the response of the server is required, please look at the WriteOFXDataFile method instead.

ServerMessage: Server message if a warning or other information returned.

When sending a transaction request to a FI, their server with return either a successful reply or an error. However, even when a transaction is successful, a warning or other server messages might still be returned and are to be treated as informational notes only.

ClientUId: Unique ID identifying OFX Client.

In the profile response, if SignOnClientUIdReq is True, then ClientUId should be set and included in all future requests.

UserCred1A: Additional user credential required by server.

In the profile response, if SignOnUserCred1Q is present, then UserCred1A should be set (as the answer to question identified by SignOnUserCred1Q) and it should be included in all future requests as part of the signon.

UserCred2A: Additional user credential required by server.

In the profile response, if SignOnUserCred2Q is present, then UserCred2A should be set (as the answer to question identified by SignOnUserCred2Q) and it should be included in all future requests as part of the signon.

AuthToken: Authentication token required for this signon session only.

This credential is provided to the user out of band.

In the profile response, if SignOnAuthTokenFirst is True, then AuthToken should be sent in the very first signon.

CorrectFITID[i]: The FITID of a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the FITID of a previously sent transaction that is corrected by this record. Based on the value of CorrectAction[i], this transaction replaces or deletes the transaction that it corrects. This is applicable to statement download components only.

CorrectAction[i]: The action taken to a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the action taken to a previously sent transaction that is corrected by this record. Possible values are: REPLACE or DELETE. REPLACE replaces the transaction that it corrects referenced by CorrectFITID[i]. DELETE deletes it. This is applicable to statement download components only.

HTTP Configuration Settings

AcceptEncoding: Used to tell the server which types of content encodings the client supports.

When AllowHTTPCompression is true, the class adds an "Accept-Encoding: " header to the request being sent to the server. By default, this header's value is "gzip, deflate". This config allows you to change the value of the "Accept-Encoding" header. NOTE: The class only supports gzip and deflate decompression algorithms.

AllowHTTPCompression: This property enables HTTP compression for receiving data.

This is the same as the AllowHTTPCompression property. This setting is exposed here for use by classs that inherit from HTTP.

Authorization: The Authorization string to be sent to the server.

If the Authorization property contains a non-empty string, an Authorization HTTP request header is added to the request. This header conveys Authorization information to the server.

This property is provided so that the HTTP class can be extended with other security schemes in addition to the authorization schemes already implemented by the class.

The AuthScheme property defines the authentication scheme used. In the case of HTTP Basic Authentication (default), every time User and Password are set, they are Base64 encoded, and the result is put in the Authorization property in the form "Basic [encoded-user-password]".

BytesTransferred: Contains the number of bytes transferred in the response data.

Returns the raw number of bytes from the HTTP response data, prior to the component processing the data, whether it is chunked and/or compressed. This returns the same value as the Transfer event, by BytesTransferred.

EncodeURL: If set to true the URL will be encoded by the class.

The default value is false. If set to true the URL passed to the class will be URL encoded.

FollowRedirects: Determines what happens when the server issues a redirect.

This option determines what happens when the server issues a redirect. Normally, the class returns an error if the server responds with an "Object Moved" message. If this property is set to 1 (always), the new URL for the object is retrieved automatically every time.

If this property is set to 2 (Same Scheme), the new URL is retrieved automatically only if the URL Scheme is the same, otherwise the class fails with an error.

Note that following the HTTP specification, unless this option is set to 1 (Always), automatic redirects will be performed only for 'GET' or 'HEAD' requests. Other methods could potentially change the conditions of the initial request and create security vulnerabilities.

Furthermore, if either the new URL server and port are different than the existing one, User and Password are also reset to empty, unless this property is set to 1 (Always), in which case the same credentials are used to connect to the new server.

A Redirect event is fired for every URL the product is redirected to. In the case of automatic redirections, the Redirect event is a good place to set properties related to the new connection (e.g. new authentication parameters).

The default value is 0 (Never). In this case, redirects are never followed, and the class fails with an error instead.

Valid options are:

  • 0 - Never
  • 1 - Always
  • 2 - Same Scheme

GetOn302Redirect: If set to true the class will perform a GET on the new location.

The default value is false. If set to true the class will perform a GET on the new location. Otherwise it will use the same HTTP method again.

HTTPVersion: The version of HTTP used by the class.

Possible values include "1.0", and "1.1". The default is "1.1".

IfModifiedSince: A date determining the maximum age of the desired document.

This is the same as the IfModifiedSince property. This setting is exposed here for use by classs that inherit from HTTP.

KeepAlive: Determines whether the HTTP connection is closed after completion of the request.

If true, the component will not send the 'Connection: Close' header. The absence of the Connection header indicates to the server that HTTP persistent connections should be used if supported. Note that not all server support persistent connections. You may also explicitly add the Keep-Alive header to the request headers by setting OtherHeaders to 'Connection: Keep-Alive'. If false, the connection will be closed immediately after the server response is received.

The default value for KeepAlive is false.

MaxRedirectAttempts: Limits the number of redirects that are followed in a request.

When FollowRedirects is set to any value besides frNever the class will follow redirects until this maximum number of redirect attempts are made. The default value is 20.

OtherHeaders: Other headers as determined by the user (optional).

This configuration option can be set to a string of headers to be appended to the HTTP request headers.

The headers must be of the format "header: value" as described in the HTTP specifications. Header lines should be separated by CRLF ("\r\ n") .

Use this configuration option with caution. If this configuration option contains invalid headers, HTTP requests may fail.

This configuration option is useful for extending the functionality of the class beyond what is provided.

ProxyAuthorization: The authorization string to be sent to the proxy server.

Similar to the Authorization config, but for proxy authorization. If this config contains a non-empty string, a Proxy-Authorization HTTP request header is added to the request. This header conveys proxy authorization information to the server. If ProxyUser and ProxyPassword are specified, this value is calculated using the algorithm specified by ProxyAuthScheme.

ProxyAuthScheme: The authorization scheme to be used for the proxy.

This is the same as ProxyAuthScheme. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPassword: A password if authentication is to be used for the proxy.

This is the same as ProxyPassword. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPort: Port for the proxy server (default 80).

This is the same as ProxyPort. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyServer: Name or IP address of a proxy server (optional).

This is the same as ProxyServer. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyUser: A user name if authentication is to be used for the proxy.

This is the same as ProxyUser. This setting is provided for use by classs that do not directly expose Proxy properties.

TransferredDataLimit: The maximum number of incoming bytes to be stored by the class.

If TransferredDataLimit is set to 0 (default), no limits are imposed. Otherwise this reflects the maximum number of incoming bytes that can be stored by the class. If TransferredDataLimit is set to 0, no limits are imposed.

UseChunkedEncoding: Enables or Disables HTTP chunked encoding for transfers.

If UseChunkedEncoding is set to true, the class will use HTTP chunked encoding when posting if possible. HTTP chunked encoding allows large files to be sent in chunks instead of all at once. If set to false, the class will not use HTTP chunked encoding. The default value is false.

Note: Some servers (such as the ASP.NET Development Server) may not support chunked encoding.

ChunkSize: Specifies the chunk size in bytes when using chunked encoding.

This is only applicable when UseChunkedEncoding is true. This setting specifies the chunk size in bytes to be used when posting data. The default value is 16384.

UsePlatformHTTPClient: Whether or not to use the platform HTTP client.

If True, the component will use the default HTTP client for the platform (URLConnection in Java or WebRequest in .NET) instead of the internal HTTP implementation. This is important for environments where direct access to sockets is limited or not allowed (as in the Google AppEngine for instance).

UserAgent: Information about the user agent (browser).

This is the value supplied in the HTTP User-Agent header. The default setting is "/n software IPWorks HTTP/S Component - www.nsoftware.com".

Override the default with the name and version of your software.

KerberosSPN: The Service Principal Name for the Kerberos Domain Controller.

If the Service Principal Name on the Kerberos Domain Controller is not the same as the URL that you are authenticating to, the Service Principal Name should be set here.

IPPort Configuration Settings

FirewallAutoDetect: Tells the class whether or not to automatically detect and use firewall system settings, if available.

This is the same as FirewallAutoDetect. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallHost: Name or IP address of firewall (optional).

If a FirewallHost is given, requested connections will be authenticated through the specified firewall when connecting.

If the FirewallHost setting is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, the FirewallHost setting is set to the corresponding address. If the search is not successful, an error is returned.

NOTE: This is the same as FirewallHost. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPassword: Password to be used if authentication is to be used when connecting through the firewall.

If FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallPassword. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPort: The TCP port for the FirewallHost;.

Note that the FirewallPort is set automatically when FirewallType is set to a valid value.

NOTE: This is the same as FirewallPort. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallType: Determines the type of firewall to connect through.

The appropriate values are as follows:

0 | No firewall (default setting).
1 | Connect through a tunneling proxy. FirewallPort is set to 80.
2 | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
3 | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

NOTE: This is the same as FirewallType. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallUser: A user name if authentication is to be used connecting through a firewall.

If the FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the Firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallUser. This setting is provided for use by classs that do not directly expose Firewall properties.

KeepAliveTime: The inactivity time in milliseconds before a TCP keep-alive packet is sent.

When set, TCPKeepAlive will automatically be set to true. By default the operating system will determine the time a connection is idle before a TCP keep-alive packet is sent. This system default if this value is not specified here is 2 hours. In many cases a shorter interval is more useful. Set this value to the desired interval in milliseconds.

Note: This value is not applicable in Java.

KeepAliveInterval: The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.

When set, TCPKeepAlive will automatically be set to true. A TCP keep-alive packet will be sent after a period of inactivity as defined by KeepAliveTime. If no acknowledgement is received from the remote host the keep-alive packet will be re-sent. This setting specifies the interval at which the successive keep-alive packets are sent in milliseconds. This system default if this value is not specified here is 1 second.

Note: This value is not applicable in Java or MAC.

Linger: When set to True, connections are terminated gracefully.

This property controls how a connection is closed. The default is True.

In the case that Linger is True (default), there are two scenarios for determining how long the connection will linger. The first, if LingerTime is 0 (default), the system will attempt to send pending data for a connection until the default IP protocol timeout expires.

In the second scenario, LingerTime is a positive value, the system will attempt to send pending data until the specified LingerTime is reached. If this attempt fails, then the system will reset the connection.

The default behavior (which is also the default mode for stream sockets) might result in a long delay in closing the connection. Although the class returns control immediately, the system could hold system resources until all pending data is sent (even after your application closes).

Setting this property to False forces an immediate disconnection. If you know that the other side has received all the data you sent (by a client acknowledgment, for example), setting this property to False might be the appropriate course of action.

LingerTime: Time in seconds to have the connection linger.

LingerTime is the time, in seconds, to leave the socket connection linger. This value is 0 by default, which means it will use the default IP protocol timeout.

LocalHost: The name of the local host through which connections are initiated or accepted.

The LocalHost setting contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.

In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the class initiate connections (or accept in the case of server classs) only through that interface.

If the class is connected, the LocalHost setting shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).

LocalPort: The TCP port in the local host where the class binds.

This must be set before a connection is attempted. It instructs the class to bind to a specific port (or communication endpoint) in the local machine.

Setting this to 0 (default) enables the system to choose a port at random. The chosen port will be shown by LocalPort after the connection is established.

LocalPort cannot be changed once a connection is made. Any attempt to set this when a connection is active will generate an error.

This; setting is useful when trying to connect to services that require a trusted port in the client side. An example is the remote shell (rsh) service in UNIX systems.

MaxLineLength: The maximum amount of data to accumulate when no EOL is found.

MaxLineLength is the size of an internal buffer, which holds received data while waiting for an EOL string.

If an EOL string is found in the input stream before MaxLineLength bytes are received, the DataIn event is fired with the EOL parameter set to True, and the buffer is reset.

If no EOL is found, and MaxLineLength bytes are accumulated in the buffer, the DataIn event is fired with the EOL parameter set to False, and the buffer is reset.

The minimum value for MaxLineLength is 256 bytes. The default value is 2048 bytes. The maximum value is 65536 bytes.

MaxTransferRate: The transfer rate limit in bytes per second.

This setting can be used to throttle outbound TCP traffic. Set this to the number of bytes to be sent per second. By default this is not set and there is no limit.

TCPKeepAlive: Determines whether or not the keep alive socket option is enabled.

If set to true, the socket's keep-alive option is enabled and keep-alive packets will be sent periodically to maintain the connection. Set KeepAliveTime and KeepAliveInterval to configure the timing of the keep-alive packets.

Note: This value is not applicable in Java.

UseIPv6: Whether or not to use IPv6.

By default, the component expects an IPv4 address for local and remote host properties, and will create an IPv4 socket. To use IPv6 instead, set this to True.

TcpNoDelay: Whether or not to delay when sending packets.

When true, the socket will send all data that is ready to send at once. When false, the socket will send smaller buffered packets of data at small intervals. This is known as the Nagle algorithm.

By default, this config is set to false.

SSL Configuration Settings

ReuseSSLSession: Determines if the SSL session is reused.

If set to true, the component will reuse the context if and only if the following criteria are met:

  • The target host name is the same.
  • The system cache entry has not expired (default timeout is 10 hours).
  • The application process that calls the function is the same.
  • The logon session is the same.
  • The instance of the component is the same.

SSLCipherStrength: The minimum cipher strength used for bulk encryption.

This minimum cipher strength largely dependent on the security modules installed on the system. If the cipher strength specified is not supported, an error will be returned when connections are initiated.

Please note that this setting contains the minimum cipher strength requested from the security library. The actual cipher strength used for the connection is shown by the SSLStatus event.

Use this setting with caution. Requesting a lower cipher strength than necessary could potentially cause serious security vulnerabilities in your application.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

SSLEnabledProtocols: Used to enable/disable the supported security protocols.

Used to enable/disable the supported security protocols.

Not all supported protocols are enabled by default (the value of this setting is 240). If you want more granular control over the enabled protocols, you can set this property to the binary 'OR' of one or more of the following values:

TLS1.2 | 3072 (Hex C00)
TLS1.1 | 768 (Hex 300)
TLS1 | 192 (Hex C0) (Default)
SSL3 | 48 (Hex 30) (Default)
SSL2 | 12 (Hex 0C)

Please note that although a number of sites still support SSL2, it is usually a good idea to disable it because of potential security vulnerabilities.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

TLS 1.1 and TLS1.2 support are only available starting with Windows 7.

SSLProvider: The name of the security provider to use.

Change this setting to use security providers other than the system default.

Use this setting with caution. Disabling SSL security or pointing to the wrong provider could potentially cause serious security vulnerabilities in your application.

The special value "*" (default) picks the default SSL provider defined in the system. On Windows, this is "Microsoft Unified Security Protocol Provider".

SSLSecurityFlags: Flags that control certificate verification.

The following flags are defined (specified in hexadecimal notation). They can be or-ed together to exclude multiple conditions:

0x00000001 | Ignore time validity status of certificate.
0x00000002 | Ignore time validity status of CTL.
0x00000004 | Ignore non-nested certificate times.
0x00000010 | Allow unknown Certificate Authority.
0x00000020 | Ignore wrong certificate usage.
0x00000100 | Ignore unknown certificate revocation status.
0x00000200 | Ignore unknown CTL signer revocation status.
0x00000400 | Ignore unknown Certificate Authority revocation status.
0x00000800 | Ignore unknown Root revocation status.
0x00008000 | Allow test Root certificate.
0x00004000 | Trust test Root certificate.
0x80000000 | Ignore non-matching CN (certificate CN not-matching server name).

This functionality is currently not available when the provider is OpenSSL.

OpenSSLCADir: The path to a directory containing CA certificates.

This functionality is available only when the provider is OpenSSL.

The path set by this property should point to a directory containing CA certificates in PEM format. The files each contain one CA certificate. The files are looked up by the CA subject name hash value, which must hence be available. If more than one CA certificate with the same name hash value exist, the extension must be different (e.g. 9d66eef0.0, 9d66eef0.1 etc). OpenSSL recommends to use the c_rehash utility to create the necessary links. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCAFile: Name of the file containing the list of CA's trusted by your application.

This functionality is available only when the provider is OpenSSL.

The file set by this property should contain a list of CA certificates in PEM format. The file can contain several CA certificates identified by

-----BEGIN CERTIFICATE-----

... (CA certificate in base64 encoding) ...

-----END CERTIFICATE-----

sequences. Before, between, and after the certificates text is allowed which can be used e.g. for descriptions of the certificates. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCipherList: A string that controls the ciphers to be used by SSL.

This functionality is available only when the provider is OpenSSL.

The format of this string is described in the OpenSSL man page ciphers(1) section "CIPHER LIST FORMAT". Please refer to it for details. The default string "DEFAULT" is determined at compile time and is normally equivalent to "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH".

OpenSSLPrngSeedData: The data to seed the pseudo random number generator (PRNG).

This functionality is available only when the provider is OpenSSL.

By default OpenSSL uses the device file "/dev/urandom" to seed the PRNG and setting OpenSSLPrngSeedData is not required. If set, the string specified is used to seed the PRNG.

SSLAlgorithmList: A string that controls the cipher algorithms to be used by SSL.

This configuration option takes a semicolon (;) delimited list of cipher algorithms to specify what algorithms may be used by SSL. This option can be used in conjunction with SSLEnabledProtocols to control which ciphers are used.

For example:

  obj.Config("SSLEnabledProtocols=3027"); // TLS1.2  (it supports SHA_256)
  obj.Config("SSLAlgorithmList=CALG_SHA_256;CALG_MD5");
Possible values include:
  • CALG_3DES
  • CALG_3DES_112
  • CALG_AES
  • CALG_AES_128
  • CALG_AES_192
  • CALG_AES_256
  • CALG_AGREEDKEY_ANY
  • CALG_CYLINK_MEK
  • CALG_DES
  • CALG_DESX
  • CALG_DH_EPHEM
  • CALG_DH_SF
  • CALG_DSS_SIGN
  • CALG_ECDH
  • CALG_ECDSA
  • CALG_ECMQV
  • CALG_HASH_REPLACE_OWF
  • CALG_HUGHES_MD5
  • CALG_HMAC
  • CALG_KEA_KEYX
  • CALG_MAC
  • CALG_MD2
  • CALG_MD4
  • CALG_MD5
  • CALG_NO_SIGN
  • CALG_OID_INFO_CNG_ONLY
  • CALG_OID_INFO_PARAMETERS
  • CALG_PCT1_MASTER
  • CALG_RC2
  • CALG_RC4
  • CALG_RC5
  • CALG_RSA_KEYX
  • CALG_RSA_SIGN
  • CALG_SCHANNEL_ENC_KEY
  • CALG_SCHANNEL_MAC_KEY
  • CALG_SCHANNEL_MASTER_HASH
  • CALG_SEAL
  • CALG_SHA
  • CALG_SHA1
  • CALG_SHA_256
  • CALG_SHA_384
  • CALG_SHA_512
  • CALG_SKIPJACK
  • CALG_SSL2_MASTER
  • CALG_SSL3_MASTER
  • CALG_SSL3_SHAMD5
  • CALG_TEK
  • CALG_TLS1_MASTER
  • CALG_TLS1PRF

This option is only valid in Windows.

Socket Configuration Settings

AbsoluteTimeout: Determines whether timeouts are inactivity timeouts or absolute timeouts.

If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.

Note: This option is not valid for UDP ports.

FirewallData: Used to send extra data to the firewall.

When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).

InBufferSize: The size in bytes of the incoming queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be receiving. Increasing the value of the InBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

OutBufferSize: The size in bytes of the outgoing queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be sending. Increasing the value of the OutBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

Base Configuration Settings

SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

Base Configuration Settings

CodePage: The system code page used for Unicode to Multibyte translations.

The default code page is the Active Code Page (0).

The following is a list of valid code page identifiers:

Identifier | Name
037 | IBM EBCDIC - U.S./Canada
437 | OEM - United States
500 | IBM EBCDIC - International
708 | Arabic - ASMO 708
709 | Arabic - ASMO 449+, BCON V4
710 | Arabic - Transparent Arabic
720 | Arabic - Transparent ASMO
737 | OEM - Greek (formerly 437G)
775 | OEM - Baltic
850 | OEM - Multilingual Latin I
852 | OEM - Latin II
855 | OEM - Cyrillic (primarily Russian)
857 | OEM - Turkish
858 | OEM - Multlingual Latin I + Euro symbol
860 | OEM - Portuguese
861 | OEM - Icelandic
862 | OEM - Hebrew
863 | OEM - Canadian-French
864 | OEM - Arabic
865 | OEM - Nordic
866 | OEM - Russian
869 | OEM - Modern Greek
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2)
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875 | IBM EBCDIC - Modern Greek
932 | ANSI/OEM - Japanese, Shift-JIS
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore)
949 | ANSI/OEM - Korean (Unified Hangeul Code)
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026 | IBM EBCDIC - Turkish (Latin-5)
1047 | IBM EBCDIC - Latin 1/Open System
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141 | IBM EBCDIC - Germany (20273 + Euro symbol)
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144 | IBM EBCDIC - Italy (20280 + Euro symbol)
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147 | IBM EBCDIC - France (20297 + Euro symbol)
1148 | IBM EBCDIC - International (500 + Euro symbol)
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 | Unicode UCS-2 Big-Endian
1250 | ANSI - Central European
1251 | ANSI - Cyrillic
1252 | ANSI - Latin I
1253 | ANSI - Greek
1254 | ANSI - Turkish
1255 | ANSI - Hebrew
1256 | ANSI - Arabic
1257 | ANSI - Baltic
1258 | ANSI/OEM - Vietnamese
1361 | Korean (Johab)
10000 | MAC - Roman
10001 | MAC - Japanese
10002 | MAC - Traditional Chinese (Big5)
10003 | MAC - Korean
10004 | MAC - Arabic
10005 | MAC - Hebrew
10006 | MAC - Greek I
10007 | MAC - Cyrillic
10008 | MAC - Simplified Chinese (GB 2312)
10010 | MAC - Romania
10017 | MAC - Ukraine
10021 | MAC - Thai
10029 | MAC - Latin II
10079 | MAC - Icelandic
10081 | MAC - Turkish
10082 | MAC - Croatia
12000 | Unicode UCS-4 Little-Endian
12001 | Unicode UCS-4 Big-Endian
20000 | CNS - Taiwan
20001 | TCA - Taiwan
20002 | Eten - Taiwan
20003 | IBM5550 - Taiwan
20004 | TeleText - Taiwan
20005 | Wang - Taiwan
20105 | IA5 IRV International Alphabet No. 5 (7-bit)
20106 | IA5 German (7-bit)
20107 | IA5 Swedish (7-bit)
20108 | IA5 Norwegian (7-bit)
20127 | US-ASCII (7-bit)
20261 | T.61
20269 | ISO 6937 Non-Spacing Accent
20273 | IBM EBCDIC - Germany
20277 | IBM EBCDIC - Denmark/Norway
20278 | IBM EBCDIC - Finland/Sweden
20280 | IBM EBCDIC - Italy
20284 | IBM EBCDIC - Latin America/Spain
20285 | IBM EBCDIC - United Kingdom
20290 | IBM EBCDIC - Japanese Katakana Extended
20297 | IBM EBCDIC - France
20420 | IBM EBCDIC - Arabic
20423 | IBM EBCDIC - Greek
20424 | IBM EBCDIC - Hebrew
20833 | IBM EBCDIC - Korean Extended
20838 | IBM EBCDIC - Thai
20866 | Russian - KOI8-R
20871 | IBM EBCDIC - Icelandic
20880 | IBM EBCDIC - Cyrillic (Russian)
20905 | IBM EBCDIC - Turkish
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932 | JIS X 0208-1990 & 0121-1990
20936 | Simplified Chinese (GB2312)
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027 | Extended Alpha Lowercase
21866 | Ukrainian (KOI8-U)
28591 | ISO 8859-1 Latin I
28592 | ISO 8859-2 Central Europe
28593 | ISO 8859-3 Latin 3
28594 | ISO 8859-4 Baltic
28595 | ISO 8859-5 Cyrillic
28596 | ISO 8859-6 Arabic
28597 | ISO 8859-7 Greek
28598 | ISO 8859-8 Hebrew
28599 | ISO 8859-9 Latin 5
28605 | ISO 8859-15 Latin 9
29001 | Europa 3
38598 | ISO 8859-8 Hebrew
50220 | ISO 2022 Japanese with no halfwidth Katakana
50221 | ISO 2022 Japanese with halfwidth Katakana
50222 | ISO 2022 Japanese JIS X 0201-1989
50225 | ISO 2022 Korean
50227 | ISO 2022 Simplified Chinese
50229 | ISO 2022 Traditional Chinese
50930 | Japanese (Katakana) Extended
50931 | US/Canada and Japanese
50933 | Korean Extended and Korean
50935 | Simplified Chinese Extended and Simplified Chinese
50936 | Simplified Chinese
50937 | US/Canada and Traditional Chinese
50939 | Japanese (Latin) Extended and Japanese
51932 | EUC - Japanese
51936 | EUC - Simplified Chinese
51949 | EUC - Korean
51950 | EUC - Traditional Chinese
52936 | HZ-GB2312 Simplified Chinese
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte)
57002 | ISCII Devanagari
57003 | ISCII Bengali
57004 | ISCII Tamil
57005 | ISCII Telugu
57006 | ISCII Assamese
57007 | ISCII Oriya
57008 | ISCII Kannada
57009 | ISCII Malayalam
57010 | ISCII Gujarati
57011 | ISCII Punjabi
65000 | Unicode UTF-7
65001 | Unicode UTF-8

The following is a list of valid code page identifiers for Mac OS only:

Identifier | Name
1 | ASCII
2 | NEXTSTEP
3 | JapaneseEUC
4 | UTF8
5 | ISOLatin1
6 | Symbol
7 | NonLossyASCII
8 | ShiftJIS
9 | ISOLatin2
10 | Unicode
11 | WindowsCP1251
12 | WindowsCP1252
13 | WindowsCP1253
14 | WindowsCP1254
15 | WindowsCP1250
21 | ISO2022JP
30 | MacOSRoman
10 | UTF16String
0x90000100 | UTF16BigEndian
0x94000100 | UTF16LittleEndian
0x8c000100 | UTF32String
0x98000100 | UTF32BigEndian
0x9c000100 | UTF32LittleEndian
65536 | Proprietary


FIProfile Errors

Trappable Errors (FIProfile Class)

OFX Errors

2000 Required field missing from server response.
2001 OFX server error. Description follows.
2002 Invalid OFX response.
2003 OFX response contains unknown element tags.

The class may also return one of the following error codes, which are inherited from other classes.

XMLp Errors

101 Invalid attribute index.
102 No attributes available.
103 Invalid namespace index.
104 No namespaces available.
105 Invalid element index.
106 No elements available.
107 Attribute does not exist.
201 Unbalanced element tag.
202 Unknown element prefix (can't find namespace).
203 Unknown attribute prefix (can't find namespace).
204 Invalid XML markup.
205 Invalid end state for parser.
206 Document contains unbalanced elements.
207 Invalid XPath.
208 No such child.
209 Top element does not match start of path.
210 DOM tree unavailable (set BuildDOM to true and reparse).
302 Can't open file.

HTTP Errors

118 Firewall Error. Error description contains detailed message.
143 Busy executing current method.
151 HTTP protocol error. The error message has the server response.
152 No server specified in URL
153 Specified URLScheme is invalid.
155 Range operation is not supported by server.
156 Invalid cookie index (out of range).
301 Interrupted.
302 Can't open AttachedFile.

The class may also return one of the following error codes, which are inherited from other classes.

IPPort Errors

100 You cannot change the RemotePort at this time. A connection is in progress.
101 You cannot change the RemoteHost (Server) at this time. A connection is in progress.
102 The RemoteHost address is invalid (0.0.0.0).
104 Already connected. If you want to reconnect, close the current connection first.
106 You cannot change the LocalPort at this time. A connection is in progress.
107 You cannot change the LocalHost at this time. A connection is in progress.
112 You cannot change MaxLineLength at this time. A connection is in progress.
116 RemotePort cannot be zero. Please specify a valid service port number.
117 Cannot change UseConnection option while the class is Active.
135 Operation would block.
201 Timeout.
211 Action impossible in control's present state.
212 Action impossible while connected.
213 Action impossible while listening.
303 Could not open file.
434 Unable to convert string to selected CodePage
1105 Already connecting. If you want to reconnect, close the current connection first.
1117 You need to connect first.
1119 You cannot change the LocalHost at this time. A connection is in progress.
1120 Connection dropped by remote host.

SSL Errors

270 Cannot load specified security library.
271 Cannot open certificate store.
272 Cannot find specified certificate.
273 Cannot acquire security credentials.
274 Cannot find certificate chain.
275 Cannot verify certificate chain.
276 Error during handshake.
280 Error verifying certificate.
281 Could not find client certificate.
282 Could not find server certificate.
283 Error encrypting data.
284 Error decrypting data.

TCP/IP Errors

10004 [10004] Interrupted system call.
10009 [10009] Bad file number.
10013 [10013] Access denied.
10014 [10014] Bad address.
10022 [10022] Invalid argument.
10024 [10024] Too many open files.
10035 [10035] Operation would block.
10036 [10036] Operation now in progress.
10037 [10037] Operation already in progress.
10038 [10038] Socket operation on non-socket.
10039 [10039] Destination address required.
10040 [10040] Message too long.
10041 [10041] Protocol wrong type for socket.
10042 [10042] Bad protocol option.
10043 [10043] Protocol not supported.
10044 [10044] Socket type not supported.
10045 [10045] Operation not supported on socket.
10046 [10046] Protocol family not supported.
10047 [10047] Address family not supported by protocol family.
10048 [10048] Address already in use.
10049 [10049] Can't assign requested address.
10050 [10050] Network is down.
10051 [10051] Network is unreachable.
10052 [10052] Net dropped connection or reset.
10053 [10053] Software caused connection abort.
10054 [10054] Connection reset by peer.
10055 [10055] No buffer space available.
10056 [10056] Socket is already connected.
10057 [10057] Socket is not connected.
10058 [10058] Can't send after socket shutdown.
10059 [10059] Too many references, can't splice.
10060 [10060] Connection timed out.
10061 [10061] Connection refused.
10062 [10062] Too many levels of symbolic links.
10063 [10063] File name too long.
10064 [10064] Host is down.
10065 [10065] No route to host.
10066 [10066] Directory not empty
10067 [10067] Too many processes.
10068 [10068] Too many users.
10069 [10069] Disc Quota Exceeded.
10070 [10070] Stale NFS file handle.
10071 [10071] Too many levels of remote in path.
10091 [10091] Network subsystem is unavailable.
10092 [10092] WINSOCK DLL Version out of range.
10093 [10093] Winsock not loaded yet.
11001 [11001] Host not found.
11002 [11002] Non-authoritative 'Host not found' (try again or check DNS setup).
11003 [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP.
11004 [11004] Valid name, no data record (check DNS setup).


InvStatement Class

InvStatement Class

Properties Methods Events Configuration Settings Errors

The InvStatement component is a single component that supports the SignOn and Investment Statement Download functions of Open Financial eXchange, as described by the OFX Specification version 1.0.2.

Syntax

InvStatement

Remarks

This class adds detailed investment account statement download functionality to your desktop application, or allows your web application to fetch a user's investment statement without having to redirect to another website. All downloads are done using a secure HTTPS Post to send account sign on information to a financial institution. The InvStatement class receives the secure response and parses the response into its properties.

To use the InvStatement class first identify the financial institution by setting the FIId, FIOrganization and FIUrl, properties. Next identify the OFX user and application by setting the OFXUser, OFXPassword, OFXAppId and OFXAppVersion properties. Next set the BrokerId and AccountId properties to the appropriate values to identify the account for which you wish to download a statement.

The following properties provide additional control over the request:

IncludeTransactions | Whether you want the investment transactions to be included in the statement download.
StartDate | To constrain the investment transaction list.
EndDate | To constrain the investment transaction list.
IncludePositions | Whether you want the positions to be included in the statement download.
AsOfDate | To constrain the positions list.
IncludeOpenOrders | Whether you want the open orders to be included in the statement download.
IncludeBalances | Whether you want the account balances to be included in the statement download.

Once you have finished setting the properties that describe the statement you wish to download, use the GetStatement method to build and transmit the request automatically. When the response returns, the transaction(s) properties will be populated automatically, together with StartDate, EndDate and any other data the investment statement includes.

The server's response consists of five blocks of information:

  • Transactions: a combination of bank transaction detail records and investment transaction detail records. Transactions only within the specified start and stop dates are sent.
  • Positions: positions a user has at a brokerage. Each statement response contains a complete set of position records, even if no transactions occurred in the requested statement period for a particular holding.
  • Balances: current balances typically reported on an FI statement, such as cash balance or buying power. They can also convey other items of interest, such as current interest rates.
  • Open Orders: current open trading orders that a user has at a brokerage.
  • Securities: any security referenced in either transactions, positions, or open orders.

Property List

The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

AccountId | The account number used for the next statement download.
AsOfDate | Date for returned list of positions.
AvailableCash | Cash balance across all sub-accounts.
BalCount | The number of records in the Bal arrays.
BalAggregate | Wrapper for an investment balance.
BalAmount | The value of the current balance.
BalType | The type of balance.
BalDescription | A description of the current balance.
BalName | The name for the current balance.
BalTypeDescription | A description of the balance type.
BrokerId | Unique identifier for the FI.
BuyingPower | Buying power.
ClosingDetailCount | The number of records in the ClosingDetail arrays.
ClosingDetailAggregate | Aggregates are pieces of XML taken from the financial institution's original response.
ClosingDetailFITID | Unique identifier assigned by financial institution to identify this particular statement closing information.
ClosingDetailImageRef | Server specified unique identifier for the statement closing image.
ClosingDetailImageRefType | Type of retrieval method for actual statement closing image.
CurrencyCode | Default currency code for this statement.
EndDate | End date of requested transaction list.
FIId | Financial institution identifier.
FIOrganization | Financial institution organization name.
FirewallAutoDetect | This property tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallType | This property determines the type of firewall to connect through.
FirewallHost | This property contains the name or IP address of firewall (optional).
FirewallPassword | This property contains a password if authentication is to be used when connecting through the firewall.
FirewallPort | This property contains the TCP port for the firewall Host .
FirewallUser | This property contains a user name if authentication is to be used connecting through a firewall.
FIUrl | Financial institution URL.
ImageFileName | Filename and location to save the image content of a transaction or statement.
IncludeBalances | Specifies whether or not to include balances in the statement download.
IncludeImages | Whether the server has to return data for bank transactions or closing statements images.
IncludeOpenOrders | Specifies whether or not to include open orders in the response.
IncludePositions | Specifies whether or not to include positions in the statement download.
IncludeTransactions | Whether to include transactions in the statement download.
MarginBalance | Margin balance.
MarketingInfo | Marketing information (at most one).
OFXAccessKey | Access key value received after a MFA authentication in a previous signon.
OFXAppId | OFX application identifier.
OFXAppVersion | OFX application version.
OFXPassword | User's password.
OFXRequest | The current OFX request aggregate.
OFXResponse | The current OFX response aggregate.
OFXUser | User's id.
OFXVersion | OFX API version.
OOCount | The number of records in the OO arrays.
OOAggregate | Wrapper for a general open order, each pertaining to a different aggregate type.
OOBuyType | Type of purchase for this open order.
OODatePlaced | Date-time the order was placed.
OODuration | Indicates how long the open order is good for.
OOFITID | Transaction Id assigned by the financial institution.
OOMemo | Other information about an open order (at most one).
OOType | Type for general open order aggregate.
OORestriction | Special restriction on the open order.
OOSecurityId | Security ID for this open order.
OOSellType | Type of sale.
OOSubAccountType | This identifies the type of a sub-account.
OOTypeDescription | A description of the open order type.
OOUnits | Quantity of the security the open order is for.
OOUnitType | What the units represent.
PosCount | The number of records in the Pos arrays.
PosAccount | Indicates the type of sub-account where the position is held in.
PosAggregate | Wrapper for a position information.
PosDatePriceAsOf | Date and time of unit price and market value.
PosMarketValue | Current market value of this position.
PosMemo | Memo regarding this position.
PosOption | Indicates position type for the given sub-account where this position takes place.
PosType | Type for general position aggregate.
PosSecurityId | The security ID for this position.
PosTypeDescription | A description of the position type.
PosUnitPrice | Unit price.
PosUnits | Quantity of positions.
SecCount | The number of records in the Sec arrays.
SecAggregate | Wrapper for security information.
SecAssetClass | Asset Class for the security (at most one).
SecFITID | Transaction Id assigned by the financial institution.
SecMemo | Memo regarding this security.
SecName | Full name of the security.
SecType | The type of security.
SecSecurityId | Security identifier.
SecTicker | Ticker symbol of the security.
SecTypeDescription | A description of the security type.
SecUnitPrice | This is the current unit price of the security as provided by the server.
SecYield | Current yield reported as portion of the fund's assets (at most one).
ShortBalance | Market value of all short positions.
SSLAcceptServerCertEncoded | The certificate (PEM/base64 encoded).
SSLCertEncoded | The certificate (PEM/base64 encoded).
SSLCertStore | The name of the certificate store for the client certificate.
SSLCertStorePassword | If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.
SSLCertStoreType | The type of certificate store for this certificate.
SSLCertSubject | The subject of the certificate used for client authentication.
SSLServerCertEncoded | The certificate (PEM/base64 encoded).
StartDate | Start date of requested transaction list.
StatementDate | Date and time for the statement download.
Timeout | A timeout for the component.
TxCount | The number of records in the Tx arrays.
TxAggregate | Wrapper for an investment statement transaction.
TxDate | For other than banking transactions, this is the date when the transaction trade occurred, and for stock splits, this is the day of record stored as a string.
TxDateSettle | For other than banking transactions, this is the date when settlement occurred, and for stock splits, this is the execution date.
TxFITID | Transaction Id assigned by the financial institution.
TxMemo | Other information (memo) regarding this transaction.
TxName | Name for this bank transaction.
TxSecurityId | Security ID for this investment transaction.
TxSubAccountFund | The sub-account associated with the funds for the transaction.
TxSubAccountSec | Sub-account type for the security.
TxTotal | Transaction amount.
TxType | This is the type of transaction that was made on the account.
TxTypeDescription | A description of the transaction type.
TxUnitPrice | Price per commonly-quoted unit, excluding markup/markdown.
TxUnits | The quantity for security-based actions other than stock splits.

Method List

The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

Config | Sets or retrieves a configuration setting.
GetClosingInfo | Download a statement closing information for an investment account.
GetImage | Request and retrieve a check or statement image (if available).
GetStatement | Downloads statement for an investment account.
ReadOFXDataFile | Reads an OFX response from a file.
Reset | Reset the internal state of the component and all properties to their default values.
WriteOFXDataFile | Writes the OFX response sent by the server to a file.

Event List

The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ConnectionStatus | Fired to indicate changes in connection state.
Error | Information about errors during data delivery.
SSLServerAuthentication | Fired after the server presents its certificate to the client.
SSLStatus | Shows the progress of the secure connection.

Configuration Settings

The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

CurrencyFormat | The format to be used for returning currency values.
OFXDateFormat | The date format as required by OFX FI server.
DateFormat | The format to be used for input and output dates.
GetResponseVar | Parses additional information out of the response.
NewPassword | New password for the current OFX user.
OFXLog | Log file for the OFX transaction.
ServerMessage | Server message if a warning or other information returned.
ClientUId | Unique ID identifying OFX Client.
UserCred1A | Additional user credential required by server.
UserCred2A | Additional user credential required by server.
AuthToken | Authentication token required for this signon session only.
CorrectFITID[i] | The FITID of a previously sent transaction corrected by the current one.
CorrectAction[i] | The action taken to a previously sent transaction corrected by the current one.
AcceptEncoding | Used to tell the server which types of content encodings the client supports.
AllowHTTPCompression | This property enables HTTP compression for receiving data.
Authorization | The Authorization string to be sent to the server.
BytesTransferred | Contains the number of bytes transferred in the response data.
EncodeURL | If set to true the URL will be encoded by the component.
FollowRedirects | Determines what happens when the server issues a redirect.
GetOn302Redirect | If set to true the component will perform a GET on the new location.
HTTPVersion | The version of HTTP used by the component.
IfModifiedSince | A date determining the maximum age of the desired document.
KeepAlive | Determines whether the HTTP connection is closed after completion of the request.
MaxRedirectAttempts | Limits the number of redirects that are followed in a request.
OtherHeaders | Other headers as determined by the user (optional).
ProxyAuthorization | The authorization string to be sent to the proxy server.
ProxyAuthScheme | The authorization scheme to be used for the proxy.
ProxyPassword | A password if authentication is to be used for the proxy.
ProxyPort | Port for the proxy server (default 80).
ProxyServer | Name or IP address of a proxy server (optional).
ProxyUser | A user name if authentication is to be used for the proxy.
TransferredDataLimit | The maximum number of incoming bytes to be stored by the component.
UseChunkedEncoding | Enables or Disables HTTP chunked encoding for transfers.
ChunkSize | Specifies the chunk size in bytes when using chunked encoding.
UsePlatformHTTPClient | Whether or not to use the platform HTTP client.
UserAgent | Information about the user agent (browser).
KerberosSPN | The Service Principal Name for the Kerberos Domain Controller.
FirewallAutoDetect | Tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallHost | Name or IP address of firewall (optional).
FirewallPassword | Password to be used if authentication is to be used when connecting through the firewall.
FirewallPort | The TCP port for the FirewallHost;.
FirewallType | Determines the type of firewall to connect through.
FirewallUser | A user name if authentication is to be used connecting through a firewall.
KeepAliveTime | The inactivity time in milliseconds before a TCP keep-alive packet is sent.
KeepAliveInterval | The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.
Linger | When set to True, connections are terminated gracefully.
LingerTime | Time in seconds to have the connection linger.
LocalHost | The name of the local host through which connections are initiated or accepted.
LocalPort | The TCP port in the local host where the component binds.
MaxLineLength | The maximum amount of data to accumulate when no EOL is found.
MaxTransferRate | The transfer rate limit in bytes per second.
TCPKeepAlive | Determines whether or not the keep alive socket option is enabled.
UseIPv6 | Whether or not to use IPv6.
TcpNoDelay | Whether or not to delay when sending packets.
ReuseSSLSession | Determines if the SSL session is reused.
SSLCipherStrength | The minimum cipher strength used for bulk encryption.
SSLEnabledProtocols | Used to enable/disable the supported security protocols.
SSLProvider | The name of the security provider to use.
SSLSecurityFlags | Flags that control certificate verification.
OpenSSLCADir | The path to a directory containing CA certificates.
OpenSSLCAFile | Name of the file containing the list of CA's trusted by your application.
OpenSSLCipherList | A string that controls the ciphers to be used by SSL.
OpenSSLPrngSeedData | The data to seed the pseudo random number generator (PRNG).
SSLAlgorithmList | A string that controls the cipher algorithms to be used by SSL.
AbsoluteTimeout | Determines whether timeouts are inactivity timeouts or absolute timeouts.
FirewallData | Used to send extra data to the firewall.
InBufferSize | The size in bytes of the incoming queue of the socket.
OutBufferSize | The size in bytes of the outgoing queue of the socket.
CodePage | The system code page used for Unicode to Multibyte translations.


AccountId Property

AccountId Property (InvStatement Class)

The account number used for the next statement download.

Syntax

char* GetAccountId();

int SetAccountId(char* lpszAccountId);

Default Value

""

Remarks

This is the account number for which the user wishes to download a statement. This is used during signon. This property is required to be specified when the GetStatement method is called and is also included in the server response.

Data Type

String


AsOfDate Property

AsOfDate Property (InvStatement Class)

Date for returned list of positions.

Syntax

char* GetAsOfDate();

int SetAsOfDate(char* lpszAsOfDate);

Default Value

""

Remarks

This property is optional. It must be specified when IncludePositions property is set to True. If it is not included with the request, the server should return the most current position information available.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Data Type

String


AvailableCash Property

AvailableCash Property (InvStatement Class)

Cash balance across all sub-accounts.

Syntax

char* GetAvailableCash();

Default Value

""

Remarks

This should include sweep funds as well.

This property is always returned with the balance information if such information is requested to be included (IncludeBalances was set to True) in the investment statement download request (when calling the GetStatement method).

This property is read-only.

Data Type

String


BalCount Property

BalCount Property (InvStatement Class)

The number of records in the Bal arrays.

Syntax

int GetBalCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • BalAggregate
  • BalAmount
  • BalDescription
  • BalName
  • BalType
  • BalTypeDescription

The array indices start at 0 and end at BalCount-1.

This property is read-only and not available at design time.

Data Type

Integer


BalAggregate Property

BalAggregate Property (InvStatement Class)

Wrapper for an investment balance.

Syntax

char* GetBalAggregate(int iBalIndex);

Default Value

""

Remarks

Wrapper for an investment balance.

This allows an FI to send any number of balances to the user, complete with description and Help text. The intent is to capture the same type of balance information present on the first page of many FI brokerage statements. This aggregate can also be used to send margin call information.

This property is an optional property. When calling the GetStatement method, if the server's response does not contain this value, querying the property will return an empty string.

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the BalCount property.

This property is read-only and not available at design time.

Data Type

String


BalAmount Property

BalAmount Property (InvStatement Class)

The value of the current balance.

Syntax

char* GetBalAmount(int iBalIndex);

Default Value

""

Remarks

The value of the current balance. Interpretation of this depends on the value of BalType property:

Value of BalType | Format of BalAmount
DOLLAR | Formatted as DDDD.cc
PERCENT | Formatted as XXXX.YYYY
NUMBER | Formatted as is

If a balance list is present in the server response, the BalAmount is always present in the response for each balance listed.

The size of the array is controlled by the BalCount property.

This property is read-only and not available at design time.

Data Type

String


BalType Property

BalType Property (InvStatement Class)

The type of balance.

Syntax

int GetBalType(int iBalIndex);

Possible Values

  BT_DOLLAR(0),
  BT_PERCENT(1),
  BT_NUMBER(2),
  BT_OTHER(255)

Default Value

0

Remarks

The type of balance. Possible values for balance types and their meanings are as follows:

btDOLLAR (0) | Dollar (BalValue formatted as DDDD.cc)
btPERCENT (1) | percentage (BalValue formatted as XXXX.YYYY)
btNUMBER (2) | number (BalValue formatted as is)
ptOTHER (255) | Other

If a balance list is present in the server response, the BalType is always present in the response for each balance listed.

The size of the array is controlled by the BalCount property.

This property is read-only and not available at design time.

Data Type

Integer


BalDescription Property

BalDescription Property (InvStatement Class)

A description of the current balance.

Syntax

char* GetBalDescription(int iBalIndex);

Default Value

""

Remarks

A description of the current balance. If a balance list is present in the server response, the BalDescription is always present in the response for each balance listed.

The size of the array is controlled by the BalCount property.

This property is read-only and not available at design time.

Data Type

String


BalName Property

BalName Property (InvStatement Class)

The name for the current balance.

Syntax

char* GetBalName(int iBalIndex);

Default Value

""

Remarks

The name for the current balance. If a balance list is present in the server response, the BalName is always present in the response for each balance listed.

The size of the array is controlled by the BalCount property.

This property is read-only and not available at design time.

Data Type

String


BalTypeDescription Property

BalTypeDescription Property (InvStatement Class)

A description of the balance type.

Syntax

char* GetBalTypeDescription(int iBalIndex);

Default Value

""

Remarks

A description of the balance type. This is a string representation of the value returned by the BalType property.

The corresponding description for each balance type are as follows:

btDOLLAR (0) | Dollar
btPERCENT (1) | Dollar
btNUMBER (2) | Number
btOTHER (255) | Other

The size of the array is controlled by the BalCount property.

This property is read-only and not available at design time.

Data Type

String


BrokerId Property

BrokerId Property (InvStatement Class)

Unique identifier for the FI.

Syntax

char* GetBrokerId();

int SetBrokerId(char* lpszBrokerId);

Default Value

""

Remarks

This property holds the identifier of the OFX Financial Institution and is used during signon. This value is unique for each organization name.

It is required to be specified when the GetStatement method is called and is also included in the server response.

Data Type

String


BuyingPower Property

BuyingPower Property (InvStatement Class)

Buying power.

Syntax

char* GetBuyingPower();

Default Value

""

Remarks

The amount of money available to buy securities. In a margin account, the buying power is the total cash held in the brokerage account plus maximum margin available.

This property is an optional field. When calling the GetStatement method, if the server's response does not contain this value, querying the property will return an empty string.

This property is read-only.

Data Type

String


ClosingDetailCount Property

ClosingDetailCount Property (InvStatement Class)

The number of records in the ClosingDetail arrays.

Syntax

int GetClosingDetailCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • ClosingDetailAggregate
  • ClosingDetailFITID
  • ClosingDetailImageRef
  • ClosingDetailImageRefType

The array indices start at 0 and end at ClosingDetailCount-1.

This property is read-only and not available at design time.

Data Type

Integer


ClosingDetailAggregate Property

ClosingDetailAggregate Property (InvStatement Class)

Aggregates are pieces of XML taken from the financial institution's original response.

Syntax

char* GetClosingDetailAggregate(int iClosingDetailIndex);

Default Value

""

Remarks

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

This aggregate describes a statement closing information. It contains data (elements and values) associated with the following properties:

  • ClosingDetailFITID
  • ClosingDetailDateStart
  • ClosingDetailDateEnd
  • ClosingDetailDateOpen
  • ClosingDetailDateClose
  • ClosingDetailDateDue (applicable to credit card accounts only)
  • ClosingDetailBalanceOpening
  • ClosingDetailBalanceClosing
  • ClosingDetailTotalInterest (not applicable to credit card accounts)
  • ClosingDetailTotalFees
  • ClosingDetailTotalCredit
  • ClosingDetailTotalDebit
  • ClosingDetailCreditLimit (applicable to credit card accounts only)
  • ClosingDetailImageRef
  • ClosingDetailImageRefType

For each aggregate returned, clients can retrieve corresponding transactions by using ClosingDetailDateStart and ClosingDetailDateEnd in a statement download request (when calling GetStatement method).

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailFITID Property

ClosingDetailFITID Property (InvStatement Class)

Unique identifier assigned by financial institution to identify this particular statement closing information.

Syntax

char* GetClosingDetailFITID(int iClosingDetailIndex);

Default Value

""

Remarks

Unique identifier assigned by financial institution to identify this particular statement closing information. This id provides a way for the client to distinguish one closing statement from another.

This is always returned in the server response for each statement.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailImageRef Property

ClosingDetailImageRef Property (InvStatement Class)

Server specified unique identifier for the statement closing image.

Syntax

char* GetClosingDetailImageRef(int iClosingDetailIndex);

Default Value

""

Remarks

Server specified unique identifier for the statement closing image.

This can be either image identifier (to be used during the request to retrieve the actual image when the GetImage method is called) or URL, depending on the value of ClosingDetailImageRefType.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailImageRefType Property

ClosingDetailImageRefType Property (InvStatement Class)

Type of retrieval method for actual statement closing image.

Syntax

char* GetClosingDetailImageRefType(int iClosingDetailIndex);

Default Value

""

Remarks

Type of retrieval method for actual statement closing image.

If ClosingDetailImageRef is returned in the response, this can be either image identifier (to be used during the request for the image when the GetImage method is called) or a URL.

Possible values for ClosingDetailImageRefType are:

Value | Meaning
OPAQUE | Requires the client to send a separate OFX request to access the image. The image can be retrieved by calling the GetImage method where ClosingDetailImageRef will be the parameter value for this method.
URL | The image is accessed directly via the URL provided. The client will not provide authentication and will simply follow the URL provided.
FORMURL | The image is accessed directly via an encoded URL. The client will send authentication to the server.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


CurrencyCode Property

CurrencyCode Property (InvStatement Class)

Default currency code for this statement.

Syntax

char* GetCurrencyCode();

Default Value

""

Remarks

Indicates how to interpret the monetary amounts in the current statement. This is a 3-character ISO-4217 currency code, such as USD and EUR.

This property is read-only.

Data Type

String


EndDate Property

EndDate Property (InvStatement Class)

End date of requested transaction list.

Syntax

char* GetEndDate();

int SetEndDate(char* lpszEndDate);

Default Value

""

Remarks

Date range if transactions should be downloaded. This is a string representing the date at which to stop listing transactions on the statement. Use this property and StartDate to constrain the list of transactions retrieved when calling GetStatement. This property is optional and can be specified when IncludeTransactions property is set to True. If this is empty, today's date will be passed in the request by default.

This is the value that should be sent in the next StartDate request to insure that no transactions are missed.

The EndDate will be returned in the server's response either with the value provided in the request, or as today's date if an end date was not included in the request.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Data Type

String


FIId Property

FIId Property (InvStatement Class)

Financial institution identifier.

Syntax

char* GetFIId();

int SetFIId(char* lpszFIId);

Default Value

""

Remarks

FIId holds the identifier of the OFX Financial Institution and is used during signon. This value is unique for each organization name.

Data Type

String


FIOrganization Property

FIOrganization Property (InvStatement Class)

Financial institution organization name.

Syntax

char* GetFIOrganization();

int SetFIOrganization(char* lpszFIOrganization);

Default Value

""

Remarks

This is the name of the OFX Financial Institution and is used during signon. Each organization has a unique FIId that must also be used at signon.

Data Type

String


FirewallAutoDetect Property

FirewallAutoDetect Property (InvStatement Class)

This property tells the component whether or not to automatically detect and use firewall system settings, if available.

Syntax

int GetFirewallAutoDetect();

int SetFirewallAutoDetect(int bFirewallAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use firewall system settings, if available.

Data Type

Boolean


FirewallType Property

FirewallType Property (InvStatement Class)

This property determines the type of firewall to connect through.

Syntax

int GetFirewallType();

int SetFirewallType(int iFirewallType);

Possible Values

  FW_NONE(0),
  FW_TUNNEL(1),
  FW_SOCKS4(2),
  FW_SOCKS5(3)

Default Value

0

Remarks

This property determines the type of firewall to connect through. The applicable values are the following:

fwNone (0) | No firewall (default setting).
fwTunnel (1) | Connect through a tunneling proxy. FirewallPort is set to 80.
fwSOCKS4 (2) | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
fwSOCKS5 (3) | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

Data Type

Integer


FirewallHost Property

FirewallHost Property (InvStatement Class)

This property contains the name or IP address of firewall (optional).

Syntax

char* GetFirewallHost();

int SetFirewallHost(char* lpszFirewallHost);

Default Value

""

Remarks

This property contains the name or IP address of firewall (optional). If a FirewallHost is given, the requested connections will be authenticated through the specified firewall when connecting.

If this property is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, this property is set to the corresponding address. If the search is not successful, the class fails with an error.

Data Type

String


FirewallPassword Property

FirewallPassword Property (InvStatement Class)

This property contains a password if authentication is to be used when connecting through the firewall.

Syntax

char* GetFirewallPassword();

int SetFirewallPassword(char* lpszFirewallPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used when connecting through the firewall. If FirewallHost is specified, the FirewallUser and FirewallPassword properties are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

Data Type

String


FirewallPort Property

FirewallPort Property (InvStatement Class)

This property contains the TCP port for the firewall Host .

Syntax

int GetFirewallPort();

int SetFirewallPort(int lFirewallPort);

Default Value

0

Remarks

This property contains the TCP port for the firewall FirewallHost. See the description of the FirewallHost property for details.

Note that this property is set automatically when FirewallType is set to a valid value. See the description of the FirewallType property for details.

Data Type

Long


FirewallUser Property

FirewallUser Property (InvStatement Class)

This property contains a user name if authentication is to be used connecting through a firewall.

Syntax

char* GetFirewallUser();

int SetFirewallUser(char* lpszFirewallUser);

Default Value

""

Remarks

This property contains a user name if authentication is to be used connecting through a firewall. If the FirewallHost is specified, this property and FirewallPassword properties are used to connect and authenticate to the given Firewall. If the authentication fails, the class fails with an error.

Data Type

String


FIUrl Property

FIUrl Property (InvStatement Class)

Financial institution URL.

Syntax

char* GetFIUrl();

int SetFIUrl(char* lpszFIUrl);

Default Value

""

Remarks

This is the URL of the OFX Financial Institution to which the class will signon and fetch data.

Data Type

String


ImageFileName Property

ImageFileName Property (InvStatement Class)

Filename and location to save the image content of a transaction or statement.

Syntax

char* GetImageFileName();

int SetImageFileName(char* lpszImageFileName);

Default Value

""

Remarks

When calling the GetImage method, the image content is returned by that method. If you want the image content to be written to disk, you can set the ImageFileName to a desired file name without specifying the type. The file type will be set automatically depending on the image type supported by the server. Possible image types are: jpeg, tiff, png, pdf.

If the filename exists, you can choose to overwrite it or not by setting the Overwrite config setting (which defaults to True).

Note: Image download is available only for OFX version 2.1.1. When this method is called, the OFXVersion is automatically set to '211'.

Data Type

String


IncludeBalances Property

IncludeBalances Property (InvStatement Class)

Specifies whether or not to include balances in the statement download.

Syntax

int GetIncludeBalances();

int SetIncludeBalances(int bIncludeBalances);

Default Value

TRUE

Remarks

This property is required when the GetStatement method is called.

Data Type

Boolean


IncludeImages Property

IncludeImages Property (InvStatement Class)

Whether the server has to return data for bank transactions or closing statements images.

Syntax

int GetIncludeImages();

int SetIncludeImages(int bIncludeImages);

Default Value

FALSE

Remarks

If False (default value), the server will not return any image references in the response.

Otherwise, if the FI supports image download service :

  • when the GetStatement method is called, the server will return the image references for each transaction (e.g., check image).
  • when the GetClosingInfo method is called, the server will return a reference to the statement closing information image.

These references can then be used as parameters when the GetImage method is called.

This is optional and supported in OFX 2.1.1 version only (i.e., if this is requested, the OFXVersion should be set to '211').

Note: Clients may request images in statement download and/or closing requests in various message sets. But not all FIs support image download. Prior to requesting these images, clients must verify that support exists on the server for image download. This is indicated by the presence of the IMAGEMSGSET aggregate in the profile response, as well as the IMAGEPROF aggregate in the profile response for the specific message set in question.

For instance, if a client wishes to request transaction images in the banking statement download request, the client must verify the presence of IMAGEMSGSET in the profile as well as transaction image support in the IMAGEPROF aggregate in the BANKMSGSET in the profile. Image download requests are allowed only in OFX 2.1.1 in the Banking, Credit Card, Loan and Investments message sets.

To verify whether your FI supports this service, you should check its profile (by calling the GetProfile method in FIProfile class) and check the values of FIMessageSetTxImage and FIMessageSetClosingInfoImage for each message set (bank, credit card, loan and investment).

Data Type

Boolean


IncludeOpenOrders Property

IncludeOpenOrders Property (InvStatement Class)

Specifies whether or not to include open orders in the response.

Syntax

int GetIncludeOpenOrders();

int SetIncludeOpenOrders(int bIncludeOpenOrders);

Default Value

TRUE

Remarks

This property is required when the GetStatement method is called.

Data Type

Boolean


IncludePositions Property

IncludePositions Property (InvStatement Class)

Specifies whether or not to include positions in the statement download.

Syntax

int GetIncludePositions();

int SetIncludePositions(int bIncludePositions);

Default Value

TRUE

Remarks

This property is required when the GetStatement method is called.

Data Type

Boolean


IncludeTransactions Property

IncludeTransactions Property (InvStatement Class)

Whether to include transactions in the statement download.

Syntax

int GetIncludeTransactions();

int SetIncludeTransactions(int bIncludeTransactions);

Default Value

TRUE

Remarks

This property is required when the GetStatement method is called.

Data Type

Boolean


MarginBalance Property

MarginBalance Property (InvStatement Class)

Margin balance.

Syntax

char* GetMarginBalance();

Default Value

""

Remarks

A positive balance indicates a positive cash balance, while a negative balance indicates the customer has borrowed funds.

This property is always returned with the balance information if such information is requested to be included (IncludeBalances was set to True) in the investment statement download request (when calling the GetStatement method).

This property is read-only.

Data Type

String


MarketingInfo Property

MarketingInfo Property (InvStatement Class)

Marketing information (at most one).

Syntax

char* GetMarketingInfo();

Default Value

""

Remarks

Optional. This information might be returned when the GetStatement method is called.

This property is read-only.

Data Type

String


OFXAccessKey Property

OFXAccessKey Property (InvStatement Class)

Access key value received after a MFA authentication in a previous signon.

Syntax

char* GetOFXAccessKey();

int SetOFXAccessKey(char* lpszOFXAccessKey);

Default Value

""

Remarks

This might be returned in the server response after a MFA authentication (i.e. MFA challenge question/answer pairs were validated by the server when the SendChallengeAnswers method in FIProfile class was called).

To prevent servers from needing to authenticate the user in each OFX request, the server may respond to a correct set of challenge answers with a OFXAccessKey on the signon response (when the SendChallengeAnswers method in FIProfile class was called).

The server determines the contents of this optional element. On each subsequent signon request, the client will send the last value of the OFXAccessKey it has received, even after the end of the current session. The server has the option to respond to any subsequent request with a 3000 error code, requiring the client to send the MFA challenge questions request again (by calling the RequestChallengeQuestions method in FIProfile class). This allows the server to determine the lifetime of the OFXAccessKey.

Data Type

String


OFXAppId Property

OFXAppId Property (InvStatement Class)

OFX application identifier.

Syntax

char* GetOFXAppId();

int SetOFXAppId(char* lpszOFXAppId);

Default Value

""

Remarks

This is the unique identifier of the user's OFX application.

Data Type

String


OFXAppVersion Property

OFXAppVersion Property (InvStatement Class)

OFX application version.

Syntax

char* GetOFXAppVersion();

int SetOFXAppVersion(char* lpszOFXAppVersion);

Default Value

""

Remarks

This is the version of the user's OFX application.

Data Type

String


OFXPassword Property

OFXPassword Property (InvStatement Class)

User's password.

Syntax

char* GetOFXPassword();

int SetOFXPassword(char* lpszOFXPassword);

Default Value

""

Remarks

This is the password used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXRequest Property

OFXRequest Property (InvStatement Class)

The current OFX request aggregate.

Syntax

char* GetOFXRequest();

Default Value

""

Remarks

Polling OFXRequest will cause the class to generate and return an OFX request aggregate.

This property is read-only and not available at design time.

Data Type

String


OFXResponse Property

OFXResponse Property (InvStatement Class)

The current OFX response aggregate.

Syntax

char* GetOFXResponse();

int SetOFXResponse(char* lpszOFXResponse);

Default Value

""

Remarks

This can be used especially for debugging purposes. This can also be used to parse an OFX Response. To do so, you can set the OFX Response data (in string format) to OFXResponse. Once set, the supplied OFX data will be parsed and will populate the same read-only properties that ReadOFXDataFile does.

This property is not available at design time.

Data Type

String


OFXUser Property

OFXUser Property (InvStatement Class)

User's id.

Syntax

char* GetOFXUser();

int SetOFXUser(char* lpszOFXUser);

Default Value

""

Remarks

This is the UserID used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXVersion Property

OFXVersion Property (InvStatement Class)

OFX API version.

Syntax

char* GetOFXVersion();

int SetOFXVersion(char* lpszOFXVersion);

Default Value

"102"

Remarks

This is the OFX API version used in all requests sent to your FI server (such as 1.0.2, 2.0.1, 2.1.1, etc.). Valid values: 102, 103, 200, 201, 203, 210, 211. Note that not all OFX Versions are supported by FIs.

Note: If the OFXVersion is set to 1x, the request and the response are going to be in SGML format. If set to 2x, the request will be in XML format (the response format depends on the FI's server capabilities). Note that if the OFX FI server does not support version 2x, the server will return an error (such as 'Bad Request').

Certain services are available only for a specific OFX version. For example, image download, is available only in OFX version 2.1.1.

Data Type

String


OOCount Property

OOCount Property (InvStatement Class)

The number of records in the OO arrays.

Syntax

int GetOOCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • OOAggregate
  • OOBuyType
  • OODatePlaced
  • OODuration
  • OOFITID
  • OOMemo
  • OORestriction
  • OOSecurityId
  • OOSellType
  • OOSubAccountType
  • OOType
  • OOTypeDescription
  • OOUnits
  • OOUnitType

The array indices start at 0 and end at OOCount-1.

This property is read-only and not available at design time.

Data Type

Integer


OOAggregate Property

OOAggregate Property (InvStatement Class)

Wrapper for a general open order, each pertaining to a different aggregate type.

Syntax

char* GetOOAggregate(int iOOIndex);

Default Value

""

Remarks

Wrapper for a general open order, each pertaining to a different aggregate type.

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OOBuyType Property

OOBuyType Property (InvStatement Class)

Type of purchase for this open order.

Syntax

char* GetOOBuyType(int iOOIndex);

Default Value

""

Remarks

Type of purchase for this open order. Possible values are: BUY and BUYTOCOVER (used to close short sales).

This property is always returned with the open order information if such an information is requested to be included (IncludeOpenOrders was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OODatePlaced Property

OODatePlaced Property (InvStatement Class)

Date-time the order was placed.

Syntax

char* GetOODatePlaced(int iOOIndex);

Default Value

""

Remarks

Date-time the order was placed.

This property is always returned with the open order information if such an information is requested to be included (IncludeOpenOrders was set to True) in the investment statement download request (when calling the GetStatement method).

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OODuration Property

OODuration Property (InvStatement Class)

Indicates how long the open order is good for.

Syntax

char* GetOODuration(int iOOIndex);

Default Value

""

Remarks

Indicates how long the open order is good for. The possible values are: DAY, GOODTILCANCEL, IMMEDIATE.

This property is always returned with the open order information if such an information is requested to be included (IncludeOpenOrders was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OOFITID Property

OOFITID Property (InvStatement Class)

Transaction Id assigned by the financial institution.

Syntax

char* GetOOFITID(int iOOIndex);

Default Value

""

Remarks

Transaction Id assigned by the financial institution.

This is a unique id number that the financial institution uses to identify a particular transaction. Its primary purpose is to allow a client to detect duplicate responses, whether the server previously downloaded the transaction.

This property is always returned with the open order information if such an information is requested to be included (IncludeOpenOrders was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OOMemo Property

OOMemo Property (InvStatement Class)

Other information about an open order (at most one).

Syntax

char* GetOOMemo(int iOOIndex);

Default Value

""

Remarks

Other information about an open order (at most one).

This property is an optional property. When calling the GetStatement method, if the server's response does not contain this value, querying the property will return an empty string.

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OOType Property

OOType Property (InvStatement Class)

Type for general open order aggregate.

Syntax

int GetOOType(int iOOIndex);

Possible Values

  OOT_OOBUYDEBT(0),
  OOT_OOBUYMF(1),
  OOT_OOBUYOPT(2),
  OOT_OOBUYOTHER(3),
  OOT_OOBUYSTOCK(4),
  OOT_OOSELLDEBT(5),
  OOT_OOSELLMF(6),
  OOT_OOSELLOPT(7),
  OOT_OOSELLOTHER(8),
  OOT_OOSELLSTOCK(9),
  OOT_SWITCHMF(10),
  OOT_OTHER(255)

Default Value

0

Remarks

Type for general open order aggregate. The open order types and their meanings are as follows:

ootOOBUYDEBT (0) | Buy Debt
ootOOBUYMF (1) | Buy Mutual Fund
ootOOBUYOPT (2) | Buy Option
ootOOBUYOTHER (3) | Buy Other
ootOOBUYSTOCK (4) | Buy Stock
ootOOSELLDEBT (5) | Sell Debt
ootOOSELLMF (6) | Sell Mutual Fund
ootOOSELLOPT (7) | Sell Option
ootOOSELLOTHER (8) | Sell Other
ootOOSELLSTOCK (9) | Sell Stock
ootSWITCHMF (10) | Switch to Mutual Fund
ootOTHER (255) | Other

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

Integer


OORestriction Property

OORestriction Property (InvStatement Class)

Special restriction on the open order.

Syntax

char* GetOORestriction(int iOOIndex);

Default Value

""

Remarks

Special restriction on the open order. The possible values are: ALLORNONE, MINUNITS, NONE.

This property is always returned with the open order information if such an information is requested to be included (IncludeOpenOrders was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OOSecurityId Property

OOSecurityId Property (InvStatement Class)

Security ID for this open order.

Syntax

char* GetOOSecurityId(int iOOIndex);

Default Value

""

Remarks

Security ID for this open order.

This property consists of a naming standard followed by a semicolon and a 9-character identifier. The naming standard identifies the method used for assigning the identifier ("CUSIP" in the US) and is unique within the indicated naming standard. This property is always returned with the open order information if such an information is requested to be included (IncludeOpenOrders was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OOSellType Property

OOSellType Property (InvStatement Class)

Type of sale.

Syntax

char* GetOOSellType(int iOOIndex);

Default Value

""

Remarks

Type of sale. Possible values are: SELL, SELLSHORT.

This property is always returned with the open order information if such an information is requested to be included (IncludeOpenOrders was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OOSubAccountType Property

OOSubAccountType Property (InvStatement Class)

This identifies the type of a sub-account.

Syntax

char* GetOOSubAccountType(int iOOIndex);

Default Value

""

Remarks

This identifies the type of a sub-account.

Many Financial Institutions (FIs) distinguish between activity and positions in cash, margin, and short accounts, with some FIs having many other types of 'sub-accounts'. Open Financial Exchange (OFX) defines four standard sub-account types: CASH, MARGIN, SHORT, and OTHER.

This property is always returned with the open order information if such an information is requested to be included (IncludeOpenOrders was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OOTypeDescription Property

OOTypeDescription Property (InvStatement Class)

A description of the open order type.

Syntax

char* GetOOTypeDescription(int iOOIndex);

Default Value

""

Remarks

A description of the open order type. This is a string representation of the value returned by the OOType property.

The types and their meanings are as follows:

ootOOBUYDEBT (0) | Buy Debt
ootOOBUYMF (1) | Buy Mutual Fund
ootOOBUYOPT (2) | Buy Option
ootOOBUYOTHER (3) | Buy Other
ootOOBUYSTOCK (4) | Buy Stock
ootOOSELLDEBT (5) | Sell Debt
ootOOSELLMF (6) | Sell Mutual Fund
ootOOSELLOPT (7) | Sell Option
ootOOSELLOTHER (8) | Sell Other
ootOOSELLSTOCK (9) | Sell Stock
ootSWITCHMF (10) | Switch to Mutual Fund
ootOTHER (255) | Other

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OOUnits Property

OOUnits Property (InvStatement Class)

Quantity of the security the open order is for.

Syntax

char* GetOOUnits(int iOOIndex);

Default Value

""

Remarks

Quantity of the security the open order is for.

This property is always returned with the open order information if such an information is requested to be included (IncludeOpenOrders was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


OOUnitType Property

OOUnitType Property (InvStatement Class)

What the units represent.

Syntax

char* GetOOUnitType(int iOOIndex);

Default Value

""

Remarks

What the units represent. Possible values are: SHARES and CURRENCY.

This property is always returned with the open order information if such an information is requested to be included (IncludeOpenOrders was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the OOCount property.

This property is read-only and not available at design time.

Data Type

String


PosCount Property

PosCount Property (InvStatement Class)

The number of records in the Pos arrays.

Syntax

int GetPosCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • PosAccount
  • PosAggregate
  • PosDatePriceAsOf
  • PosMarketValue
  • PosMemo
  • PosOption
  • PosSecurityId
  • PosType
  • PosTypeDescription
  • PosUnitPrice
  • PosUnits

The array indices start at 0 and end at PosCount-1.

This property is read-only and not available at design time.

Data Type

Integer


PosAccount Property

PosAccount Property (InvStatement Class)

Indicates the type of sub-account where the position is held in.

Syntax

char* GetPosAccount(int iPosIndex);

Default Value

""

Remarks

Indicates the type of sub-account where the position is held in. Possible values are: CASH, MARGIN, SHORT, OTHER.

This property is always returned with the positions information if such an information is requested to be included (IncludePositions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

String


PosAggregate Property

PosAggregate Property (InvStatement Class)

Wrapper for a position information.

Syntax

char* GetPosAggregate(int iPosIndex);

Default Value

""

Remarks

Wrapper for a position information.

This aggregate contains properties relevant to all investment position types, as well as those specific to a given position type.

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

String


PosDatePriceAsOf Property

PosDatePriceAsOf Property (InvStatement Class)

Date and time of unit price and market value.

Syntax

char* GetPosDatePriceAsOf(int iPosIndex);

Default Value

""

Remarks

Date and time of unit price and market value. Can be 0 if unit price and market value are unknown.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is always returned with the positions information if such an information is requested to be included (IncludePositions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

String


PosMarketValue Property

PosMarketValue Property (InvStatement Class)

Current market value of this position.

Syntax

char* GetPosMarketValue(int iPosIndex);

Default Value

""

Remarks

Current market value of this position.

This property is always returned with the positions information if such an information is requested to be included (IncludePositions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

String


PosMemo Property

PosMemo Property (InvStatement Class)

Memo regarding this position.

Syntax

char* GetPosMemo(int iPosIndex);

Default Value

""

Remarks

Memo regarding this position.

This property is an optional property. When calling the GetStatement method, if the server's response does not contain this value, querying the property will return an empty string.

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

String


PosOption Property

PosOption Property (InvStatement Class)

Indicates position type for the given sub-account where this position takes place.

Syntax

char* GetPosOption(int iPosIndex);

Default Value

""

Remarks

Indicates position type for the given sub-account where this position takes place. Each statement response must contain a complete set of position records, even if no transactions occurred in the requested statement period for a particular holding.

Possible values are: SHORT (Writer for options, Short for all others) and LONG (Holder for options, Long for all others). For options, position type SHORT is equivalent to WRITING an option, and position type LONG is equivalent to HOLDING an option.

For security types where there is only one type (for example, bonds), LONG is used.

This property is always returned with the positions information if such an information is requested to be included (IncludePositions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

String


PosType Property

PosType Property (InvStatement Class)

Type for general position aggregate.

Syntax

int GetPosType(int iPosIndex);

Possible Values

  PT_POSDEBT(0),
  PT_POSMF(1),
  PT_POSOPT(2),
  PT_POSOTHER(3),
  PT_POSSTOCK(4),
  PT_OTHER(255)

Default Value

0

Remarks

Type for general position aggregate. The positions types and their meanings are as follows:

ptPOSDEBT (0) | Debt
ptPOSMF (1) | Mutual Fund
ptPOSOPT (2) | Option
ptPOSOTHER (3) | Other Position
ptPOSSTOCK (4) | Stock
ptOTHER (255) | Other

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

Integer


PosSecurityId Property

PosSecurityId Property (InvStatement Class)

The security ID for this position.

Syntax

char* GetPosSecurityId(int iPosIndex);

Default Value

""

Remarks

The security ID for this position.

This property consists of a naming standard followed by a semicolon and a 9-character identifier. The naming standard identifies the method used for assigning the identifier ("CUSIP" in the US) and is unique within the indicated naming standard. This property is always returned with the positions information if such an information is requested to be included (IncludePositions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

String


PosTypeDescription Property

PosTypeDescription Property (InvStatement Class)

A description of the position type.

Syntax

char* GetPosTypeDescription(int iPosIndex);

Default Value

""

Remarks

A description of the position type. This is a string representation of the value returned by the PosType.

The types and their meanings are as follows:

ptPOSDEBT (0) | Debt
ptPOSMF (1) | Mutual Fund
ptPOSOPT (2) | Option
ptPOSOTHER (3) | Other Position
ptPOSSTOCK (4) | Stock
ptOTHER (255) | Other

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

String


PosUnitPrice Property

PosUnitPrice Property (InvStatement Class)

Unit price.

Syntax

char* GetPosUnitPrice(int iPosIndex);

Default Value

""

Remarks

Unit price. Depending on the type of sub-account where this position takes place, this indicates the following:

Stocks, Market Funds, Other | Price per share
Bonds | Percentage of par
Options | Premium per share of underlying security

This property is always returned with the positions information if such an information is requested to be included (IncludePositions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

String


PosUnits Property

PosUnits Property (InvStatement Class)

Quantity of positions.

Syntax

char* GetPosUnits(int iPosIndex);

Default Value

""

Remarks

Quantity of positions. Depending on the type of sub-account where this position takes place, this indicates the following:

Stocks, Market Funds, Other, | Number of shares held
Bonds | The face value
Options | Number of contracts

This property is always returned with the positions information if such an information is requested to be included (IncludePositions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the PosCount property.

This property is read-only and not available at design time.

Data Type

String


SecCount Property

SecCount Property (InvStatement Class)

The number of records in the Sec arrays.

Syntax

int GetSecCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • SecAggregate
  • SecAssetClass
  • SecFITID
  • SecMemo
  • SecName
  • SecSecurityId
  • SecTicker
  • SecType
  • SecTypeDescription
  • SecUnitPrice
  • SecYield

The array indices start at 0 and end at SecCount-1.

This property is read-only and not available at design time.

Data Type

Integer


SecAggregate Property

SecAggregate Property (InvStatement Class)

Wrapper for security information.

Syntax

char* GetSecAggregate(int iSecIndex);

Default Value

""

Remarks

Wrapper for security information.

The value of this property is returned by the server when the investment statement download contains positions, transactions, or open orders.

The SecAggregate contains information about security referenced in the investment statement download. Clients are completely dependent on the security list to provide descriptive information for the securities referenced in positions, transactions, and open orders.

These aggregates define the type of security, and one or more sets of descriptive information.

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

String


SecAssetClass Property

SecAssetClass Property (InvStatement Class)

Asset Class for the security (at most one).

Syntax

char* GetSecAssetClass(int iSecIndex);

Default Value

""

Remarks

Asset Class for the security (at most one). The possible values and their meanings are as follows:

DOMESTICBOND | The Domestic Bonds asset class consists of government or corporate bonds issued in the United States.
INTLBOND | The International Bonds asset class consists of government or corporate bonds issued in foreign countries or the United States.
LARGESTOCK | The Large Cap Stocks asset class consists of stocks for U.S. companies with market capitalizations of $2 billion or more.
SMALLSTOCK | The Small Cap Stocks asset class consists of stocks for U.S. companies with market capitalizations of approximately $100 million to $2 billion.
INTLSTOCK | The International Stocks asset class consists of publicly traded stocks for companies based in foreign countries.
MONEYMRKT | The Money Market asset class consists of stable, short-term investments, which provide income that rises and falls with short-term interest rates.
OTHER | The Other asset class consists of investments that do not fit in any of the other asset classes.

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

String


SecFITID Property

SecFITID Property (InvStatement Class)

Transaction Id assigned by the financial institution.

Syntax

char* GetSecFITID(int iSecIndex);

Default Value

""

Remarks

Transaction Id assigned by the financial institution.

This is a unique id number that the financial institution uses to identify a particular transaction. Its primary purpose is to allow a client to detect duplicate responses, whether the server previously downloaded the transaction.

This is a character string up to 32 octets long.

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

String


SecMemo Property

SecMemo Property (InvStatement Class)

Memo regarding this security.

Syntax

char* GetSecMemo(int iSecIndex);

Default Value

""

Remarks

Memo regarding this security. This value is optional.

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

String


SecName Property

SecName Property (InvStatement Class)

Full name of the security.

Syntax

char* GetSecName(int iSecIndex);

Default Value

""

Remarks

Full name of the security. The name can be up to 120 characters long.

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

String


SecType Property

SecType Property (InvStatement Class)

The type of security.

Syntax

int GetSecType(int iSecIndex);

Possible Values

  ST_DEBTINFO(0),
  ST_MFINFO(1),
  ST_OPTINFO(2),
  ST_OTHERINFO(3),
  ST_STOCKINFO(4),
  ST_OTHER(255)

Default Value

0

Remarks

The type of security. This is a string representation of the value returned by the SecType property.

The security types and their meanings are as follows:

stDEBTINFO (0) | Debt information
stMFINFO (1) | Mutual fund information
stOPTINFO (2) | Option information
stOTHERINFO (3) | Other information
stSTOCKINFO (4) | Stock information
stOTHER(255) | Other

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

Integer


SecSecurityId Property

SecSecurityId Property (InvStatement Class)

Security identifier.

Syntax

char* GetSecSecurityId(int iSecIndex);

Default Value

""

Remarks

Security identifier.

This property consists of a naming standard followed by a semicolon and a 9-character identifier. The naming standard identifies the method used for assigning the identifier ("CUSIP" in the US) and is unique within the indicated naming standard.

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

String


SecTicker Property

SecTicker Property (InvStatement Class)

Ticker symbol of the security.

Syntax

char* GetSecTicker(int iSecIndex);

Default Value

""

Remarks

Ticker symbol of the security. The value can be up to 32 characters long.

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

String


SecTypeDescription Property

SecTypeDescription Property (InvStatement Class)

A description of the security type.

Syntax

char* GetSecTypeDescription(int iSecIndex);

Default Value

""

Remarks

A description of the security type. This is a string representation of the value returned by the SecType property.

The types and their meanings are as follows:

stDEBTINFO (0) | Debt information
stMFINFO (1) | Mutual fund information
stOPTINFO (2) | Option information
stOTHERINFO (3) | Other information
stSTOCKINFO (4) | Stock information
stOTHER (255) | Other information

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

String


SecUnitPrice Property

SecUnitPrice Property (InvStatement Class)

This is the current unit price of the security as provided by the server.

Syntax

char* GetSecUnitPrice(int iSecIndex);

Default Value

""

Remarks

This is the current unit price of the security as provided by the server. It may be a real-time or delayed quote. The delay amount is determined by the data provider.

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

String


SecYield Property

SecYield Property (InvStatement Class)

Current yield reported as portion of the fund's assets (at most one).

Syntax

char* GetSecYield(int iSecIndex);

Default Value

""

Remarks

Current yield reported as portion of the fund's assets (at most one). This can be returned in the server reply only when SecType is stMFINFO or stSTOCKINFO.

The size of the array is controlled by the SecCount property.

This property is read-only and not available at design time.

Data Type

String


ShortBalance Property

ShortBalance Property (InvStatement Class)

Market value of all short positions.

Syntax

char* GetShortBalance();

Default Value

""

Remarks

This property is always returned with the balance information if such information is requested to be included (IncludeBalances was set to True) in the investment statement download request (when calling the GetStatement method).

This property is read-only.

Data Type

String


SSLAcceptServerCertEncoded Property

SSLAcceptServerCertEncoded Property (InvStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLAcceptServerCertEncoded(char *&lpSSLAcceptServerCertEncoded, int &lenSSLAcceptServerCertEncoded);

int SetSSLAcceptServerCertEncoded(char *lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLAcceptServerCertStore and SSLAcceptServerCertSubject properties may also be used to specify a certificate.

When SSLAcceptServerCertEncoded is set, a search is initiated in the current SSLAcceptServerCertStore for the private key of the certificate. If the key is found, SSLAcceptServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLAcceptServerCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertEncoded Property

SSLCertEncoded Property (InvStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLCertEncoded(char *&lpSSLCertEncoded, int &lenSSLCertEncoded);

int SetSSLCertEncoded(char *lpSSLCertEncoded, int lenSSLCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLCertStore and SSLCertSubject properties may also be used to specify a certificate.

When SSLCertEncoded is set, a search is initiated in the current SSLCertStore for the private key of the certificate. If the key is found, SSLCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertStore Property

SSLCertStore Property (InvStatement Class)

The name of the certificate store for the client certificate.

Syntax

int GetSSLCertStore(char *&lpSSLCertStore, int &lenSSLCertStore);

int SetSSLCertStore(char *lpSSLCertStore, int lenSSLCertStore);

Default Value

"MY"

Remarks

The name of the certificate store for the client certificate.

The SSLCertStoreType property specifies the type of the certificate store specified by SSLCertStore. If the store is password protected, specify the password in SSLCertStorePassword.

SSLCertStore is used in conjunction with the SSLCertSubject property in order to specify client certificates. If SSLCertStore has a value, and SSLCertSubject or SSLCertEncoded is set, a search for a certificate is initiated. Please refer to the SSLCertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MY | A certificate store holding personal certificates with their associated private keys.
CA | Certifying authority certificates.
ROOT | Root certificates.
SPC | Software publisher certificates.

In Java, the certificate store normally is a file containing certificates and optional private keys.

When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).

If the provider is OpenSSL, the certificate store is a file containing a certificate and a private key. This property must be set to the name of the file.

Data Type

Binary String


SSLCertStorePassword Property

SSLCertStorePassword Property (InvStatement Class)

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Syntax

char* GetSSLCertStorePassword();

int SetSSLCertStorePassword(char* lpszSSLCertStorePassword);

Default Value

""

Remarks

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Data Type

String


SSLCertStoreType Property

SSLCertStoreType Property (InvStatement Class)

The type of certificate store for this certificate.

Syntax

int GetSSLCertStoreType();

int SetSSLCertStoreType(int iSSLCertStoreType);

Possible Values

  CST_USER(0),
  CST_MACHINE(1),
  CST_PFXFILE(2),
  CST_PFXBLOB(3),
  CST_JKSFILE(4),
  CST_JKSBLOB(5),
  CST_PEMKEY_FILE(6),
  CST_PEMKEY_BLOB(7),
  CST_PUBLIC_KEY_FILE(8),
  CST_PUBLIC_KEY_BLOB(9),
  CST_SSHPUBLIC_KEY_BLOB(10),
  CST_P7BFILE(11),
  CST_P7BBLOB(12),
  CST_SSHPUBLIC_KEY_FILE(13),
  CST_PPKFILE(14),
  CST_PPKBLOB(15),
  CST_XMLFILE(16),
  CST_XMLBLOB(17)

Default Value

0

Remarks

The type of certificate store for this certificate.

This property can take one of the following values:

0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java.
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java.
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates.
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format.
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java.
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java.
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate.
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate.
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate.
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate.
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key.
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates.
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format.
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key.
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key).
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key).
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format.
17 (cstXMLlob) | The certificate store is a string that contains a certificate in XML format.

Data Type

Integer


SSLCertSubject Property

SSLCertSubject Property (InvStatement Class)

The subject of the certificate used for client authentication.

Syntax

char* GetSSLCertSubject();

int SetSSLCertSubject(char* lpszSSLCertSubject);

Default Value

""

Remarks

The subject of the certificate used for client authentication.

When this property is set, a search is performed in the current certificate store certificate with matching subject.

If a matching certificate is found, the property is set to the full subject of the matching certificate.

If an exact match is not found, the store is searched for subjects containing the value of the property.

If a match is still not found, the property is set to an empty string, and no certificate is selected.

The special value "*" picks a random certificate in the certificate store.

The certificate subject is a comma separated list of distinguished name properties and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common properties and their meanings are displayed below.

Field | Meaning
CN | Common Name. This is commonly a host name like www.server.com.
O | Organization
OU | Organizational Unit
L | Locality
S | State
C | Country
E | Email Address

If a property value contains a comma it must be quoted.

Data Type

String


SSLServerCertEncoded Property

SSLServerCertEncoded Property (InvStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLServerCertEncoded(char *&lpSSLServerCertEncoded, int &lenSSLServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLServerCertStore and SSLServerCertSubject properties may also be used to specify a certificate.

When SSLServerCertEncoded is set, a search is initiated in the current SSLServerCertStore for the private key of the certificate. If the key is found, SSLServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLServerCertSubject is set to empty string.

This property is read-only and not available at design time.

Data Type

Binary String


StartDate Property

StartDate Property (InvStatement Class)

Start date of requested transaction list.

Syntax

char* GetStartDate();

int SetStartDate(char* lpszStartDate);

Default Value

""

Remarks

This is a string representing the date at which to start listing transactions on the statement. Use this property and EndDate to constrain the list of transactions retrieved when calling GetStatement. When provided in the request, StartDate value will be echoed in the server's response.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Note: This property is optional and can be specified when IncludeTransactions property is set to True.

Data Type

String


StatementDate Property

StatementDate Property (InvStatement Class)

Date and time for the statement download.

Syntax

char* GetStatementDate();

Default Value

""

Remarks

This property is always returned in the server's response when calling the GetStatement method.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is read-only.

Data Type

String


Timeout Property

Timeout Property (InvStatement Class)

A timeout for the component.

Syntax

int GetTimeout();

int SetTimeout(int iTimeout);

Default Value

60

Remarks

If the Timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.

If Timeout is set to a positive value, the class will wait for the operation to complete before returning control.

The class will use DoEvents to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not "freeze" and remains responsive.

If Timeout expires, and the operation is not yet complete, the class fails with an error.

Please note that by default, all timeouts are inactivity timeouts, i.e. the timeout period is extended by Timeout seconds when any amount of data is successfully sent or received.

Optionally, the behavior of the class may be changed to absolute timeouts, i.e. the class will wait for a maximum of Timeout seconds since the beginning of the operation, without extending the timeout period during communications.

This behavior is controlled by the AbsoluteTimeout configuration setting.

The default value for the Timeout property is 60 (seconds).

Data Type

Integer


TxCount Property

TxCount Property (InvStatement Class)

The number of records in the Tx arrays.

Syntax

int GetTxCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • TxAggregate
  • TxDate
  • TxDateSettle
  • TxFITID
  • TxMemo
  • TxName
  • TxSecurityId
  • TxSubAccountFund
  • TxSubAccountSec
  • TxTotal
  • TxType
  • TxTypeDescription
  • TxUnitPrice
  • TxUnits

The array indices start at 0 and end at TxCount-1.

This property is read-only and not available at design time.

Data Type

Integer


TxAggregate Property

TxAggregate Property (InvStatement Class)

Wrapper for an investment statement transaction.

Syntax

char* GetTxAggregate(int iTxIndex);

Default Value

""

Remarks

Wrapper for an investment statement transaction.

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxDate Property

TxDate Property (InvStatement Class)

For other than banking transactions, this is the date when the transaction trade occurred, and for stock splits, this is the day of record stored as a string.

Syntax

char* GetTxDate(int iTxIndex);

Default Value

""

Remarks

For other than banking transactions, this is the date when the transaction trade occurred, and for stock splits, this is the day of record stored as a string.

For banking transactions, this is the date the transaction was posted to the financial institution.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is always returned with the transaction information if such an information is requested to be included (IncludeTransactions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxDateSettle Property

TxDateSettle Property (InvStatement Class)

For other than banking transactions, this is the date when settlement occurred, and for stock splits, this is the execution date.

Syntax

char* GetTxDateSettle(int iTxIndex);

Default Value

""

Remarks

For other than banking transactions, this is the date when settlement occurred, and for stock splits, this is the execution date.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is always returned with the transaction information if such an information is requested to be included (IncludeTransactions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxFITID Property

TxFITID Property (InvStatement Class)

Transaction Id assigned by the financial institution.

Syntax

char* GetTxFITID(int iTxIndex);

Default Value

""

Remarks

Transaction Id assigned by the financial institution.

This is a unique id number that the financial institution uses to identify a particular transaction. Its primary purpose is to allow a client to detect duplicate responses, whether the server previously downloaded the transaction.

This property is always returned with the transaction information if such an information is requested to be included (IncludeTransactions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxMemo Property

TxMemo Property (InvStatement Class)

Other information (memo) regarding this transaction.

Syntax

char* GetTxMemo(int iTxIndex);

Default Value

""

Remarks

Other information (memo) regarding this transaction. The memo property stores a notice from the broker to the customer as a string.

This property is an optional property. When calling the GetStatement method, if the server's response does not contain this value, querying the property will return an empty string.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxName Property

TxName Property (InvStatement Class)

Name for this bank transaction.

Syntax

char* GetTxName(int iTxIndex);

Default Value

""

Remarks

Name for this bank transaction. When there are bank transactions returned in the statement download (i.e. TxType returned is ttINVBANKTRAN), the TxName stores the name of the financial institution or a name assigned by the institution to this transaction, such as 'Customer deposit'.

This property is an optional property. When calling the GetStatement method, if the server's response does not contain this value, querying the property will return an empty string.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxSecurityId Property

TxSecurityId Property (InvStatement Class)

Security ID for this investment transaction.

Syntax

char* GetTxSecurityId(int iTxIndex);

Default Value

""

Remarks

Security ID for this investment transaction.

This property consists of a naming standard followed by a semicolon and a 9-character identifier. The naming standard identifies the method used for assigning the identifier ("CUSIP" in the US) and is unique within the indicated naming standard. This property is always returned with the transaction information if such an information is requested to be included (IncludeTransactions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxSubAccountFund Property

TxSubAccountFund Property (InvStatement Class)

The sub-account associated with the funds for the transaction.

Syntax

char* GetTxSubAccountFund(int iTxIndex);

Default Value

""

Remarks

The sub-account associated with the funds for the transaction. Where did the money for the transaction come from or go to. The possible values are : CASH, MARGIN, SHORT, OTHER.

This property is always returned with the transaction information if such an information is requested to be included (IncludeTransactions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxSubAccountSec Property

TxSubAccountSec Property (InvStatement Class)

Sub-account type for the security.

Syntax

char* GetTxSubAccountSec(int iTxIndex);

Default Value

""

Remarks

Sub-account type for the security. The possible values are: CASH, MARGIN, SHORT, OTHER.

This property is always returned with the transaction information if such an information is requested to be included (IncludeTransactions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxTotal Property

TxTotal Property (InvStatement Class)

Transaction amount.

Syntax

char* GetTxTotal(int iTxIndex);

Default Value

""

Remarks

Transaction amount. For other than banking transactions (buys, sells, etc.) this is the transaction total: ((quantity * (price +/- markup/markdown)) +/- (commission + fees + load + taxes)).

Distributions, interest, margin interest, misc. expense, etc.: amount.

Return of cap: cost basis.

Banking transactions: this is the amount of money exchanged during a given transaction.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting.

This property is always returned with the transaction information if such an information is requested to be included (IncludeTransactions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxType Property

TxType Property (InvStatement Class)

This is the type of transaction that was made on the account.

Syntax

int GetTxType(int iTxIndex);

Possible Values

  TT_BUYDEBT(0),
  TT_BUYMF(1),
  TT_BUYOPT(2),
  TT_BUYOTHER(3),
  TT_BUYSTOCK(4),
  TT_CLOSUREOPT(5),
  TT_INCOME(6),
  TT_INVEXPENSE(7),
  TT_JRNLFUND(8),
  TT_JRNLSEC(9),
  TT_MARGININTEREST(10),
  TT_REINVEST(11),
  TT_RETOFCAP(12),
  TT_SELLDEBT(13),
  TT_SELLMF(14),
  TT_SELLOPT(15),
  TT_SELLOTHER(16),
  TT_SELLSTOCK(17),
  TT_SPLIT(18),
  TT_TRANSFERS(19),
  TT_INVBANKTRAN(20),
  TT_OTHER(255)

Default Value

0

Remarks

This is the type of transaction that was made on the account. Checks, electronic funds transfers, and ATM transactions associated with CMA or money market sweep accounts are always represented with a bank transaction record.

Investment actions that involve securities (buy, sell, stock split, reinvest, etc.) are always represented with an investment record. Actions that are cash-only but are directly associated with a security are also investment actions (for example, dividends).

Other cash-only actions require careful analysis by the FI. Those that affect investment performance analysis should be sent using the appropriate investment action (investment income - miscellaneous, investment expense). Those that are completely unrelated to investment should be sent as a bank record.

The types and their meanings are as follows:

ttBUYDEBT (0) | Buy debt security
ttBUYMF (1) | Buy mutual fund (being switched to).
ttBUYOPT (2) | Buy option.
ttBUYOTHER (3) | Buy other security type
ttBUYSTOCK (4) | Buy stock.
ttCLOSUREOPT (5) | Close a position for an option.
ttINCOME (6) | Investment income is realized as cash into the investment account. A negative TOTAL is used to denote adjustments to income.
ttINVEXPENSE (7) | Misc. investment expense that is associated with a specific security.
ttJRNLFUND (8) | Journaling cash holdings between sub-accounts within the same investment account.
ttJRNLSEC (9) | Journaling security holdings between sub-accounts within the same investment account.
ttMARGININTEREST (10) | Margin interest expense
ttREINVEST (11) | Reinvestment of income
ttRETOFCAP (12) | Return of capital
ttSELLDEBT (13) | Sell debt security. Used when debt is sold, called, or reached maturity.
ttSELLMF (14) | Sell mutual fund (being switched from).
ttSELLOPT (15) | Sell option.
ttSELLOTHER (16) | Sell other type of security
ttSELLSTOCK (17) | Sell stock
ttSPLIT (18) | Stock or Mutual Fund Split. (Note: the trade date is interpreted as the 'day of record' for the split.)
ttTRANSFERS (19) | Transfer holdings in and out of the investment account.
ttINVBANKTRAN (20) | Banking related transactions for the investment account.
ttOTHER (255) | Other

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

Integer


TxTypeDescription Property

TxTypeDescription Property (InvStatement Class)

A description of the transaction type.

Syntax

char* GetTxTypeDescription(int iTxIndex);

Default Value

""

Remarks

A description of the transaction type. This is a string representation of the value returned by the TxType property.

The types and their meanings are as follows:

ttBUYDEBT (0) | Buy debt security
ttBUYMF (1) | Buy mutual fund (being switched to).
ttBUYOPT (2) | Buy option
ttBUYOTHER (3) | Buy other security type
ttBUYSTOCK (4) | Buy stock
ttCLOSUREOPT (5) | Close a position for an option
ttINCOME (6) | Investment income is realized as cash into the investment account
ttINVEXPENSE (7) | Misc. investment expense that is associated with a specific security
ttJRNLFUND (8) | Journaling cash holdings between sub-accounts
ttJRNLSEC (9) | Journaling security holdings between sub-accounts
ttMARGININTEREST (10) | Margin interest expense
ttREINVEST (11) | Reinvestment of income
ttRETOFCAP (12) | Return of capital
ttSELLDEBT (13) | Sell debt security
ttSELLMF (14) | Sell mutual fund
ttSELLOPT (15) | Sell option
ttSELLOTHER (16) | Sell other type of security
ttSELLSTOCK (17) | Sell stock
ttSPLIT (18) | Stock or Mutual Fund Split
ttTRANSFER (19) | Transfer holdings
ttINVBANKTRAN (20) | Bank transactions
ttOTHER (255) | Other

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxUnitPrice Property

TxUnitPrice Property (InvStatement Class)

Price per commonly-quoted unit, excluding markup/markdown.

Syntax

char* GetTxUnitPrice(int iTxIndex);

Default Value

""

Remarks

Price per commonly-quoted unit, excluding markup/markdown.

It indicates:

  • share price for stocks, mutual funds, and others.
  • percentage of par for bonds.
  • per share (not contract) for options.

This property is always returned with the transaction information if such an information is requested to be included (IncludeTransactions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxUnits Property

TxUnits Property (InvStatement Class)

The quantity for security-based actions other than stock splits.

Syntax

char* GetTxUnits(int iTxIndex);

Default Value

""

Remarks

The quantity for security-based actions other than stock splits. The TxUnits differ for each type of security.

Depending on the type of the security, the TxUnits indicates the following:

  • Stocks, Mutual Funds and Other : number of shares.
  • Bonds : face value. For example, a $25,000 bond trading at $88 would use 25000 as the units and 88 as the unit price.
  • Options : number of contracts (not shares).

This property is always returned with the transaction information if such an information is requested to be included (IncludeTransactions was set to True) in the investment statement download request (when calling the GetStatement method).

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


Config Method

Config Method (InvStatement Class)

Sets or retrieves a configuration setting.

Syntax

 char* Config(char* lpszConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.


GetClosingInfo Method

GetClosingInfo Method (InvStatement Class)

Download a statement closing information for an investment account.

Syntax

 int GetClosingInfo();

Remarks

This is applicable and supported in OFX 2.1.1 version only (i.e., when this method is called, the OFXVersion should be set to '211').

This function generates the Signon and Investment Statement Closing Information request page, submits it to the financial institution via secure HTTPS Post, receives and parses the closing statement information.

The server response includes the FI transaction unique Id and image data information (when available).

The following properties should be set when this method is called:

  • FIId (required)
  • FIOrganization (required)
  • FIUrl (required)
  • OFXAppId (required)
  • OFXAppVersion (required)
  • OFXVersion (required if 2.x OFX version is the one supported by your FI)
  • OFXUser (required)
  • OFXPassword (required)
  • BrokerId (required)
  • AccountId (required)

The client can also specify a date range (by setting the StartDate and EndDate properties) to limit the number of closing information aggregates that the server returns. If the client does not specify a date range, the server returns as many closing information aggregates as it can (which will be stored in ClosingDetails).

If you want the server to return an image reference for each statement closing information, and if the server supports this service, you will have to set the IncludeImages to True.

The following read-only properties are populated as a result of parsing the statement response:

  • CurrencyCode
  • ClosingDetails


GetImage Method

GetImage Method (InvStatement Class)

Request and retrieve a check or statement image (if available).

Syntax

 char* GetImage(char* lpszImageRef, char* lpszImageRefType, int *lpSize = NULL);

Remarks

This function generates the Signon and Download Image request page, submits it to the financial institution via secure HTTPS Post.

The requested image of a check or statement closing information is identified by ImageRef parameter. The type of this image reference should be specified by ImageRefType parameter.

Possible values and their meanings for the ImageRefType parameter are:

OPAQUE (default value) | The class will send an OFX request to access this image. This request will be in the form of a normal OFX request (complete with Signon) and the login credentials are required to authenticate the client. However, whereas the request file contains typical OFX syntax, the successful response returned is in the form of raw bytes. If a failure condition occurs, the class will return an error with a specific message.
URL | The URL identifies a service on an FI server that can accept an image request and produce a response. The class issues an HTTP request (over SSL) to the URL specified by the ImageRef parameter. The client will then authenticate. Once this authentication takes place, the image can be displayed
FORMURL | The class issues an HTTP request (over SSL), with encoded data specified in the URL retrieved from the ImageRef parameter. The image can then be displayed.

If you want the server to return image references for each transaction or statement closing information, and if the server supports image download service via OFX, you will have to set the IncludeImages to True when either GetStatement or GetClosingInfo method is called.

If available, then you can access that particular image by calling the GetImage method, where ImageRef parameter value is set to the image reference stored in TxImageRef (or ClosingDetailImageRef) and the ImageRefType parameter is set to the respective TxImageRefType (or ClosingDetailImageRefType) corresponding to the requested check or statement.

Upon successful response, the image content will be returned by this method. If you want the image to be saved to a file, you can set the ImageFileName to a desired name without specifying the type. The file type will be set automatically depending on the image type supported by the server. Possible image types are: jpeg, tiff, png, pdf.

Otherwise, the class will throw an error.

Image download is available only for OFX version 2.1.1. When this method is called, the OFXVersion is automatically set to '211'.

Note: Clients may request images in statement download and/or closing requests in various message sets. But not all FIs support image download. Prior to requesting these images, clients must verify that support exists on the server for image download. This is indicated by the presence of the IMAGEMSGSET aggregate in the profile response, as well as the IMAGEPROF aggregate in the profile response for the specific message set in question.

For instance, if a client wishes to request transaction images in the banking statement download request, the client must verify the presence of IMAGEMSGSET in the profile as well as transaction image support in the IMAGEPROF aggregate in the BANKMSGSET in the profile. Image download requests are allowed only in OFX 2.1.1 in the Banking, Credit Card, Loan and Investments message sets.

To verify whether your FI supports this service, you should check its profile (by calling the GetProfile method in FIProfile class) and check the values of FIMessageSetTxImage and FIMessageSetClosingInfoImage for each message set (bank, credit card, loan and investment).


GetStatement Method

GetStatement Method (InvStatement Class)

Downloads statement for an investment account.

Syntax

 int GetStatement();

Remarks

This function generates the Signon and Investment Statement request page, submits it to the financial institution via secure HTTPS Post, receives and parses the investment statement.

This allows a customer to receive investment transactions, positions, open orders, balances and list of securities that are typically part of a regular paper statement. By using the transaction IDs supplied by FIs, OFX makes it possible that each transaction is downloaded only once. Calling of this method requires to designate an account for the download and to indicate what type of data should be downloaded.

The following properties should be set when this method is called:

  • FIId (required)
  • FIOrganization (required)
  • FIUrl (required)
  • OFXAppId (required)
  • OFXAppVersion (required)
  • OFXVersion (required if 2.x OFX version is the one supported by your FI)
  • OFXUser (required)
  • OFXPassword (required)
  • BrokerId (required)
  • AccountId (required)
  • IncludeTransactions (required if the user does not want to include bank transactions in the current statement download - True by default)
  • IncludePositions (required if the user does not want to include positions as well in the current statement download - True by default)
  • IncludeOpenOrders (required if the user does not want to include open orders as well in the current statement download - True by default)
  • IncludeBalances (required if the user does not want to include balances as well in the current statement download - True by default)

If the user wants to download investment bank transactions (i.e., IncludeTransactions is set to True), a date range (that the transactions fall within) can be specified by setting the StartDate and EndDate. Otherwise, the server will use default values if no dates are supplied.

The following information is returned in server's response:

Date and time for statement (StatementDate). |
Default currency for statement (CurrencyCode). |
Account identifier (as entered in the request). |
Investment transactions (only within the specified start and end dates) including banking transactions, which are a combination of bank transaction detail records and investment transaction detail records. |
Open orders - current open trading orders that a user has at a brokerage. | This is stored in OpenOrders.
Positions - positions a user has at a brokerage. Each statement response must contain a complete set of position records, even if no transactions occurred in the requested statement period for a particular holding. | This is stored in Positions.
Account balances - current balances typically reported on an FI statement, such as cash balance or buying power. They can also convey other numbers of interest, such as current interest rates. | This is stored in Balances.
Available Cash Balance (AvailableCash). |
Short Balance (ShortBalance) |
Margin Balance (MarginBalance). |
Marketing message (MarketingInfo). |
List of securities - any security referenced in either transactions, positions, open orders or explicitly requested. | This is stored in Securities.

For a full list of all read-only properties that are populated as a result of parsing the statement response, please look at OFXDataFile method remarks.


ReadOFXDataFile Method

ReadOFXDataFile Method (InvStatement Class)

Reads an OFX response from a file.

Syntax

 int ReadOFXDataFile(char* lpszFileName);

Remarks

This method reads a previously recorded OFX response from a file, including HTTP and OFX headers.

The following read-only properties are populated as a result of parsing the data file:

  • CurrencyCode
  • MarketingInfo
  • StatementDate
  • AvailableCash
  • BuyingPower
  • MarginBalance
  • ShortBalance
  • Balances
  • OpenOrders
  • Positions
  • Securities
  • Transactions
  • ClosingDetails


Reset Method

Reset Method (InvStatement Class)

Reset the internal state of the component and all properties to their default values.

Syntax

 int Reset();

Remarks

The Reset method does not have any parameters and does not return any value.


WriteOFXDataFile Method

WriteOFXDataFile Method (InvStatement Class)

Writes the OFX response sent by the server to a file.

Syntax

 int WriteOFXDataFile(char* lpszFileName);

Remarks

This method records the entire OFX response, including HTTP and OFX headers to a file. This file can later be read and parsed by the ReadOFXDataFile method as though it were a live response.


ConnectionStatus Event

ConnectionStatus Event (InvStatement Class)

Fired to indicate changes in connection state.

Syntax

 virtual int FireConnectionStatus(InvStatementConnectionStatusEventParams *e);

 typedef struct {

  char* ConnectionEvent;
  int StatusCode;
  char* Description;

  int reserved;

 } InvStatementConnectionStatusEventParams;

Remarks

The ConnectionStatus event is fired when the connection state changes: completion of a firewall or proxy connection, completion of a security handshake, etc.

The ConnectionEvent parameter indicates the type of connection event. Values may include:

Firewall connection complete.
SSL or S/Shell handshake complete (where applicable).
Remote host connection complete.
Remote host disconnected.
SSL or S/Shell connection broken.
Firewall host disconnected.

StatusCode has the error code returned by the TCP/IP stack. Description contains a description of this code. The value of StatusCode is equal to the value of the error.


Error Event

Error Event (InvStatement Class)

Information about errors during data delivery.

Syntax

 virtual int FireError(InvStatementErrorEventParams *e);

 typedef struct {

  int ErrorCode;
  char* Description;

  int reserved;

 } InvStatementErrorEventParams;

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Messages section.


SSLServerAuthentication Event

SSLServerAuthentication Event (InvStatement Class)

Fired after the server presents its certificate to the client.

Syntax

 virtual int FireSSLServerAuthentication(InvStatementSSLServerAuthenticationEventParams *e);

 typedef struct {

  char* CertEncoded;
  char* CertSubject;
  char* CertIssuer;
  char* Status;
  int Accept;

  int lenCertEncoded;
  int reserved;

 } InvStatementSSLServerAuthenticationEventParams;

Remarks

This event is where the client can decide whether to continue with the connection process or not. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether to continue or not.

When Accept is False, Status shows why the verification failed (otherwise, Status contains the string "OK"). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.


SSLStatus Event

SSLStatus Event (InvStatement Class)

Shows the progress of the secure connection.

Syntax

 virtual int FireSSLStatus(InvStatementSSLStatusEventParams *e);

 typedef struct {

  char* Message;

  int reserved;

 } InvStatementSSLStatusEventParams;

Remarks

The event is fired for informational and logging purposes only. Used to track the progress of the connection.


InvStatement Configuration

Configuration Settings (InvStatement Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

OFX Configuration Settings

CurrencyFormat: The format to be used for returning currency values.

If this is set to a non-empty string, the class will attempt to use the value as a pattern to format all currency strings returned from the server. You may use any of the system's default number formatting strings.

OFXDateFormat: The date format as required by OFX FI server.

Most of OFX FI servers, accept the default format, where the offset (G) and timezone (Z) are specified. However, there might still be some servers that do not accept that part. In such cases, you will have to set the OFXDateFormat to "YYYYMMddHHmmss.xxx" and GMT will be assumed as the default value.

Your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat (format that OFX FI server recognizes) right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

DateFormat: The format to be used for input and output dates.

This format is used for input and output dates. You may use any of the system's default date formatting strings.

When submitting the request: all your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

When parsing the response: if DateFormat is set to a non-empty string, the class will attempt to use the value as a pattern to format all date strings as they are returned. Otherwise, the system's default value will be used for formatting.

If the DateFormat is set to the special value "OFXDATE": During input:, any values you supply to date properties are passed to the server directly with no changes; During output: all dates will be returned in the OFX format as it was provided by the server without performing any modifications.

GetResponseVar: Parses additional information out of the response.

Any additional response information contained within the OFX response that is not available via the Response fields, may be retrieved with this GetResponseVar config.

To obtain a response value, pass the XPath to the value you wish to receive. For instance, if the OFX response contains:

    "<OFX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0<SEVERITY>INFO</STATUS><DTSERVER>20120104223836.575<LANGUAGE>ENG"

Then calling GetResponseVar("/OFX/SIGNONMSGSRVSV1/LANGUAGE") will return "ENG".

NewPassword: New password for the current OFX user.

Setting NewPassword to a non-empty value will cause the class to issue a password change request during sign-on along with the regular current OFX request. After the request is sent, this value will be cleared.

The correct current password is needed as well during signon request and must be supplied through the OFXPassword. Upon successful reply from the server, the NewPassword used becomes the new password.

OFXLog: Log file for the OFX transaction.

This setting records the OFX communication, but without including HTTP headers, to a file.

Please note that ReadOFXDataFile will not be able to parse this file because of the OFX request content present. If only the response of the server is required, please look at the WriteOFXDataFile method instead.

ServerMessage: Server message if a warning or other information returned.

When sending a transaction request to a FI, their server with return either a successful reply or an error. However, even when a transaction is successful, a warning or other server messages might still be returned and are to be treated as informational notes only.

ClientUId: Unique ID identifying OFX Client.

In the profile response, if SignOnClientUIdReq is True, then ClientUId should be set and included in all future requests.

UserCred1A: Additional user credential required by server.

In the profile response, if SignOnUserCred1Q is present, then UserCred1A should be set (as the answer to question identified by SignOnUserCred1Q) and it should be included in all future requests as part of the signon.

UserCred2A: Additional user credential required by server.

In the profile response, if SignOnUserCred2Q is present, then UserCred2A should be set (as the answer to question identified by SignOnUserCred2Q) and it should be included in all future requests as part of the signon.

AuthToken: Authentication token required for this signon session only.

This credential is provided to the user out of band.

In the profile response, if SignOnAuthTokenFirst is True, then AuthToken should be sent in the very first signon.

CorrectFITID[i]: The FITID of a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the FITID of a previously sent transaction that is corrected by this record. Based on the value of CorrectAction[i], this transaction replaces or deletes the transaction that it corrects. This is applicable to statement download components only.

CorrectAction[i]: The action taken to a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the action taken to a previously sent transaction that is corrected by this record. Possible values are: REPLACE or DELETE. REPLACE replaces the transaction that it corrects referenced by CorrectFITID[i]. DELETE deletes it. This is applicable to statement download components only.

HTTP Configuration Settings

AcceptEncoding: Used to tell the server which types of content encodings the client supports.

When AllowHTTPCompression is true, the class adds an "Accept-Encoding: " header to the request being sent to the server. By default, this header's value is "gzip, deflate". This config allows you to change the value of the "Accept-Encoding" header. NOTE: The class only supports gzip and deflate decompression algorithms.

AllowHTTPCompression: This property enables HTTP compression for receiving data.

This is the same as the AllowHTTPCompression property. This setting is exposed here for use by classs that inherit from HTTP.

Authorization: The Authorization string to be sent to the server.

If the Authorization property contains a non-empty string, an Authorization HTTP request header is added to the request. This header conveys Authorization information to the server.

This property is provided so that the HTTP class can be extended with other security schemes in addition to the authorization schemes already implemented by the class.

The AuthScheme property defines the authentication scheme used. In the case of HTTP Basic Authentication (default), every time User and Password are set, they are Base64 encoded, and the result is put in the Authorization property in the form "Basic [encoded-user-password]".

BytesTransferred: Contains the number of bytes transferred in the response data.

Returns the raw number of bytes from the HTTP response data, prior to the component processing the data, whether it is chunked and/or compressed. This returns the same value as the Transfer event, by BytesTransferred.

EncodeURL: If set to true the URL will be encoded by the class.

The default value is false. If set to true the URL passed to the class will be URL encoded.

FollowRedirects: Determines what happens when the server issues a redirect.

This option determines what happens when the server issues a redirect. Normally, the class returns an error if the server responds with an "Object Moved" message. If this property is set to 1 (always), the new URL for the object is retrieved automatically every time.

If this property is set to 2 (Same Scheme), the new URL is retrieved automatically only if the URL Scheme is the same, otherwise the class fails with an error.

Note that following the HTTP specification, unless this option is set to 1 (Always), automatic redirects will be performed only for 'GET' or 'HEAD' requests. Other methods could potentially change the conditions of the initial request and create security vulnerabilities.

Furthermore, if either the new URL server and port are different than the existing one, User and Password are also reset to empty, unless this property is set to 1 (Always), in which case the same credentials are used to connect to the new server.

A Redirect event is fired for every URL the product is redirected to. In the case of automatic redirections, the Redirect event is a good place to set properties related to the new connection (e.g. new authentication parameters).

The default value is 0 (Never). In this case, redirects are never followed, and the class fails with an error instead.

Valid options are:

  • 0 - Never
  • 1 - Always
  • 2 - Same Scheme

GetOn302Redirect: If set to true the class will perform a GET on the new location.

The default value is false. If set to true the class will perform a GET on the new location. Otherwise it will use the same HTTP method again.

HTTPVersion: The version of HTTP used by the class.

Possible values include "1.0", and "1.1". The default is "1.1".

IfModifiedSince: A date determining the maximum age of the desired document.

This is the same as the IfModifiedSince property. This setting is exposed here for use by classs that inherit from HTTP.

KeepAlive: Determines whether the HTTP connection is closed after completion of the request.

If true, the component will not send the 'Connection: Close' header. The absence of the Connection header indicates to the server that HTTP persistent connections should be used if supported. Note that not all server support persistent connections. You may also explicitly add the Keep-Alive header to the request headers by setting OtherHeaders to 'Connection: Keep-Alive'. If false, the connection will be closed immediately after the server response is received.

The default value for KeepAlive is false.

MaxRedirectAttempts: Limits the number of redirects that are followed in a request.

When FollowRedirects is set to any value besides frNever the class will follow redirects until this maximum number of redirect attempts are made. The default value is 20.

OtherHeaders: Other headers as determined by the user (optional).

This configuration option can be set to a string of headers to be appended to the HTTP request headers.

The headers must be of the format "header: value" as described in the HTTP specifications. Header lines should be separated by CRLF ("\r\ n") .

Use this configuration option with caution. If this configuration option contains invalid headers, HTTP requests may fail.

This configuration option is useful for extending the functionality of the class beyond what is provided.

ProxyAuthorization: The authorization string to be sent to the proxy server.

Similar to the Authorization config, but for proxy authorization. If this config contains a non-empty string, a Proxy-Authorization HTTP request header is added to the request. This header conveys proxy authorization information to the server. If ProxyUser and ProxyPassword are specified, this value is calculated using the algorithm specified by ProxyAuthScheme.

ProxyAuthScheme: The authorization scheme to be used for the proxy.

This is the same as ProxyAuthScheme. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPassword: A password if authentication is to be used for the proxy.

This is the same as ProxyPassword. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPort: Port for the proxy server (default 80).

This is the same as ProxyPort. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyServer: Name or IP address of a proxy server (optional).

This is the same as ProxyServer. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyUser: A user name if authentication is to be used for the proxy.

This is the same as ProxyUser. This setting is provided for use by classs that do not directly expose Proxy properties.

TransferredDataLimit: The maximum number of incoming bytes to be stored by the class.

If TransferredDataLimit is set to 0 (default), no limits are imposed. Otherwise this reflects the maximum number of incoming bytes that can be stored by the class. If TransferredDataLimit is set to 0, no limits are imposed.

UseChunkedEncoding: Enables or Disables HTTP chunked encoding for transfers.

If UseChunkedEncoding is set to true, the class will use HTTP chunked encoding when posting if possible. HTTP chunked encoding allows large files to be sent in chunks instead of all at once. If set to false, the class will not use HTTP chunked encoding. The default value is false.

Note: Some servers (such as the ASP.NET Development Server) may not support chunked encoding.

ChunkSize: Specifies the chunk size in bytes when using chunked encoding.

This is only applicable when UseChunkedEncoding is true. This setting specifies the chunk size in bytes to be used when posting data. The default value is 16384.

UsePlatformHTTPClient: Whether or not to use the platform HTTP client.

If True, the component will use the default HTTP client for the platform (URLConnection in Java or WebRequest in .NET) instead of the internal HTTP implementation. This is important for environments where direct access to sockets is limited or not allowed (as in the Google AppEngine for instance).

UserAgent: Information about the user agent (browser).

This is the value supplied in the HTTP User-Agent header. The default setting is "/n software IPWorks HTTP/S Component - www.nsoftware.com".

Override the default with the name and version of your software.

KerberosSPN: The Service Principal Name for the Kerberos Domain Controller.

If the Service Principal Name on the Kerberos Domain Controller is not the same as the URL that you are authenticating to, the Service Principal Name should be set here.

IPPort Configuration Settings

FirewallAutoDetect: Tells the class whether or not to automatically detect and use firewall system settings, if available.

This is the same as FirewallAutoDetect. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallHost: Name or IP address of firewall (optional).

If a FirewallHost is given, requested connections will be authenticated through the specified firewall when connecting.

If the FirewallHost setting is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, the FirewallHost setting is set to the corresponding address. If the search is not successful, an error is returned.

NOTE: This is the same as FirewallHost. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPassword: Password to be used if authentication is to be used when connecting through the firewall.

If FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallPassword. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPort: The TCP port for the FirewallHost;.

Note that the FirewallPort is set automatically when FirewallType is set to a valid value.

NOTE: This is the same as FirewallPort. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallType: Determines the type of firewall to connect through.

The appropriate values are as follows:

0 | No firewall (default setting).
1 | Connect through a tunneling proxy. FirewallPort is set to 80.
2 | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
3 | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

NOTE: This is the same as FirewallType. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallUser: A user name if authentication is to be used connecting through a firewall.

If the FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the Firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallUser. This setting is provided for use by classs that do not directly expose Firewall properties.

KeepAliveTime: The inactivity time in milliseconds before a TCP keep-alive packet is sent.

When set, TCPKeepAlive will automatically be set to true. By default the operating system will determine the time a connection is idle before a TCP keep-alive packet is sent. This system default if this value is not specified here is 2 hours. In many cases a shorter interval is more useful. Set this value to the desired interval in milliseconds.

Note: This value is not applicable in Java.

KeepAliveInterval: The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.

When set, TCPKeepAlive will automatically be set to true. A TCP keep-alive packet will be sent after a period of inactivity as defined by KeepAliveTime. If no acknowledgement is received from the remote host the keep-alive packet will be re-sent. This setting specifies the interval at which the successive keep-alive packets are sent in milliseconds. This system default if this value is not specified here is 1 second.

Note: This value is not applicable in Java or MAC.

Linger: When set to True, connections are terminated gracefully.

This property controls how a connection is closed. The default is True.

In the case that Linger is True (default), there are two scenarios for determining how long the connection will linger. The first, if LingerTime is 0 (default), the system will attempt to send pending data for a connection until the default IP protocol timeout expires.

In the second scenario, LingerTime is a positive value, the system will attempt to send pending data until the specified LingerTime is reached. If this attempt fails, then the system will reset the connection.

The default behavior (which is also the default mode for stream sockets) might result in a long delay in closing the connection. Although the class returns control immediately, the system could hold system resources until all pending data is sent (even after your application closes).

Setting this property to False forces an immediate disconnection. If you know that the other side has received all the data you sent (by a client acknowledgment, for example), setting this property to False might be the appropriate course of action.

LingerTime: Time in seconds to have the connection linger.

LingerTime is the time, in seconds, to leave the socket connection linger. This value is 0 by default, which means it will use the default IP protocol timeout.

LocalHost: The name of the local host through which connections are initiated or accepted.

The LocalHost setting contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.

In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the class initiate connections (or accept in the case of server classs) only through that interface.

If the class is connected, the LocalHost setting shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).

LocalPort: The TCP port in the local host where the class binds.

This must be set before a connection is attempted. It instructs the class to bind to a specific port (or communication endpoint) in the local machine.

Setting this to 0 (default) enables the system to choose a port at random. The chosen port will be shown by LocalPort after the connection is established.

LocalPort cannot be changed once a connection is made. Any attempt to set this when a connection is active will generate an error.

This; setting is useful when trying to connect to services that require a trusted port in the client side. An example is the remote shell (rsh) service in UNIX systems.

MaxLineLength: The maximum amount of data to accumulate when no EOL is found.

MaxLineLength is the size of an internal buffer, which holds received data while waiting for an EOL string.

If an EOL string is found in the input stream before MaxLineLength bytes are received, the DataIn event is fired with the EOL parameter set to True, and the buffer is reset.

If no EOL is found, and MaxLineLength bytes are accumulated in the buffer, the DataIn event is fired with the EOL parameter set to False, and the buffer is reset.

The minimum value for MaxLineLength is 256 bytes. The default value is 2048 bytes. The maximum value is 65536 bytes.

MaxTransferRate: The transfer rate limit in bytes per second.

This setting can be used to throttle outbound TCP traffic. Set this to the number of bytes to be sent per second. By default this is not set and there is no limit.

TCPKeepAlive: Determines whether or not the keep alive socket option is enabled.

If set to true, the socket's keep-alive option is enabled and keep-alive packets will be sent periodically to maintain the connection. Set KeepAliveTime and KeepAliveInterval to configure the timing of the keep-alive packets.

Note: This value is not applicable in Java.

UseIPv6: Whether or not to use IPv6.

By default, the component expects an IPv4 address for local and remote host properties, and will create an IPv4 socket. To use IPv6 instead, set this to True.

TcpNoDelay: Whether or not to delay when sending packets.

When true, the socket will send all data that is ready to send at once. When false, the socket will send smaller buffered packets of data at small intervals. This is known as the Nagle algorithm.

By default, this config is set to false.

SSL Configuration Settings

ReuseSSLSession: Determines if the SSL session is reused.

If set to true, the component will reuse the context if and only if the following criteria are met:

  • The target host name is the same.
  • The system cache entry has not expired (default timeout is 10 hours).
  • The application process that calls the function is the same.
  • The logon session is the same.
  • The instance of the component is the same.

SSLCipherStrength: The minimum cipher strength used for bulk encryption.

This minimum cipher strength largely dependent on the security modules installed on the system. If the cipher strength specified is not supported, an error will be returned when connections are initiated.

Please note that this setting contains the minimum cipher strength requested from the security library. The actual cipher strength used for the connection is shown by the SSLStatus event.

Use this setting with caution. Requesting a lower cipher strength than necessary could potentially cause serious security vulnerabilities in your application.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

SSLEnabledProtocols: Used to enable/disable the supported security protocols.

Used to enable/disable the supported security protocols.

Not all supported protocols are enabled by default (the value of this setting is 240). If you want more granular control over the enabled protocols, you can set this property to the binary 'OR' of one or more of the following values:

TLS1.2 | 3072 (Hex C00)
TLS1.1 | 768 (Hex 300)
TLS1 | 192 (Hex C0) (Default)
SSL3 | 48 (Hex 30) (Default)
SSL2 | 12 (Hex 0C)

Please note that although a number of sites still support SSL2, it is usually a good idea to disable it because of potential security vulnerabilities.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

TLS 1.1 and TLS1.2 support are only available starting with Windows 7.

SSLProvider: The name of the security provider to use.

Change this setting to use security providers other than the system default.

Use this setting with caution. Disabling SSL security or pointing to the wrong provider could potentially cause serious security vulnerabilities in your application.

The special value "*" (default) picks the default SSL provider defined in the system. On Windows, this is "Microsoft Unified Security Protocol Provider".

SSLSecurityFlags: Flags that control certificate verification.

The following flags are defined (specified in hexadecimal notation). They can be or-ed together to exclude multiple conditions:

0x00000001 | Ignore time validity status of certificate.
0x00000002 | Ignore time validity status of CTL.
0x00000004 | Ignore non-nested certificate times.
0x00000010 | Allow unknown Certificate Authority.
0x00000020 | Ignore wrong certificate usage.
0x00000100 | Ignore unknown certificate revocation status.
0x00000200 | Ignore unknown CTL signer revocation status.
0x00000400 | Ignore unknown Certificate Authority revocation status.
0x00000800 | Ignore unknown Root revocation status.
0x00008000 | Allow test Root certificate.
0x00004000 | Trust test Root certificate.
0x80000000 | Ignore non-matching CN (certificate CN not-matching server name).

This functionality is currently not available when the provider is OpenSSL.

OpenSSLCADir: The path to a directory containing CA certificates.

This functionality is available only when the provider is OpenSSL.

The path set by this property should point to a directory containing CA certificates in PEM format. The files each contain one CA certificate. The files are looked up by the CA subject name hash value, which must hence be available. If more than one CA certificate with the same name hash value exist, the extension must be different (e.g. 9d66eef0.0, 9d66eef0.1 etc). OpenSSL recommends to use the c_rehash utility to create the necessary links. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCAFile: Name of the file containing the list of CA's trusted by your application.

This functionality is available only when the provider is OpenSSL.

The file set by this property should contain a list of CA certificates in PEM format. The file can contain several CA certificates identified by

-----BEGIN CERTIFICATE-----

... (CA certificate in base64 encoding) ...

-----END CERTIFICATE-----

sequences. Before, between, and after the certificates text is allowed which can be used e.g. for descriptions of the certificates. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCipherList: A string that controls the ciphers to be used by SSL.

This functionality is available only when the provider is OpenSSL.

The format of this string is described in the OpenSSL man page ciphers(1) section "CIPHER LIST FORMAT". Please refer to it for details. The default string "DEFAULT" is determined at compile time and is normally equivalent to "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH".

OpenSSLPrngSeedData: The data to seed the pseudo random number generator (PRNG).

This functionality is available only when the provider is OpenSSL.

By default OpenSSL uses the device file "/dev/urandom" to seed the PRNG and setting OpenSSLPrngSeedData is not required. If set, the string specified is used to seed the PRNG.

SSLAlgorithmList: A string that controls the cipher algorithms to be used by SSL.

This configuration option takes a semicolon (;) delimited list of cipher algorithms to specify what algorithms may be used by SSL. This option can be used in conjunction with SSLEnabledProtocols to control which ciphers are used.

For example:

  obj.Config("SSLEnabledProtocols=3027"); // TLS1.2  (it supports SHA_256)
  obj.Config("SSLAlgorithmList=CALG_SHA_256;CALG_MD5");
Possible values include:
  • CALG_3DES
  • CALG_3DES_112
  • CALG_AES
  • CALG_AES_128
  • CALG_AES_192
  • CALG_AES_256
  • CALG_AGREEDKEY_ANY
  • CALG_CYLINK_MEK
  • CALG_DES
  • CALG_DESX
  • CALG_DH_EPHEM
  • CALG_DH_SF
  • CALG_DSS_SIGN
  • CALG_ECDH
  • CALG_ECDSA
  • CALG_ECMQV
  • CALG_HASH_REPLACE_OWF
  • CALG_HUGHES_MD5
  • CALG_HMAC
  • CALG_KEA_KEYX
  • CALG_MAC
  • CALG_MD2
  • CALG_MD4
  • CALG_MD5
  • CALG_NO_SIGN
  • CALG_OID_INFO_CNG_ONLY
  • CALG_OID_INFO_PARAMETERS
  • CALG_PCT1_MASTER
  • CALG_RC2
  • CALG_RC4
  • CALG_RC5
  • CALG_RSA_KEYX
  • CALG_RSA_SIGN
  • CALG_SCHANNEL_ENC_KEY
  • CALG_SCHANNEL_MAC_KEY
  • CALG_SCHANNEL_MASTER_HASH
  • CALG_SEAL
  • CALG_SHA
  • CALG_SHA1
  • CALG_SHA_256
  • CALG_SHA_384
  • CALG_SHA_512
  • CALG_SKIPJACK
  • CALG_SSL2_MASTER
  • CALG_SSL3_MASTER
  • CALG_SSL3_SHAMD5
  • CALG_TEK
  • CALG_TLS1_MASTER
  • CALG_TLS1PRF

This option is only valid in Windows.

Socket Configuration Settings

AbsoluteTimeout: Determines whether timeouts are inactivity timeouts or absolute timeouts.

If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.

Note: This option is not valid for UDP ports.

FirewallData: Used to send extra data to the firewall.

When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).

InBufferSize: The size in bytes of the incoming queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be receiving. Increasing the value of the InBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

OutBufferSize: The size in bytes of the outgoing queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be sending. Increasing the value of the OutBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

Base Configuration Settings

SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

Base Configuration Settings

CodePage: The system code page used for Unicode to Multibyte translations.

The default code page is the Active Code Page (0).

The following is a list of valid code page identifiers:

Identifier | Name
037 | IBM EBCDIC - U.S./Canada
437 | OEM - United States
500 | IBM EBCDIC - International
708 | Arabic - ASMO 708
709 | Arabic - ASMO 449+, BCON V4
710 | Arabic - Transparent Arabic
720 | Arabic - Transparent ASMO
737 | OEM - Greek (formerly 437G)
775 | OEM - Baltic
850 | OEM - Multilingual Latin I
852 | OEM - Latin II
855 | OEM - Cyrillic (primarily Russian)
857 | OEM - Turkish
858 | OEM - Multlingual Latin I + Euro symbol
860 | OEM - Portuguese
861 | OEM - Icelandic
862 | OEM - Hebrew
863 | OEM - Canadian-French
864 | OEM - Arabic
865 | OEM - Nordic
866 | OEM - Russian
869 | OEM - Modern Greek
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2)
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875 | IBM EBCDIC - Modern Greek
932 | ANSI/OEM - Japanese, Shift-JIS
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore)
949 | ANSI/OEM - Korean (Unified Hangeul Code)
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026 | IBM EBCDIC - Turkish (Latin-5)
1047 | IBM EBCDIC - Latin 1/Open System
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141 | IBM EBCDIC - Germany (20273 + Euro symbol)
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144 | IBM EBCDIC - Italy (20280 + Euro symbol)
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147 | IBM EBCDIC - France (20297 + Euro symbol)
1148 | IBM EBCDIC - International (500 + Euro symbol)
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 | Unicode UCS-2 Big-Endian
1250 | ANSI - Central European
1251 | ANSI - Cyrillic
1252 | ANSI - Latin I
1253 | ANSI - Greek
1254 | ANSI - Turkish
1255 | ANSI - Hebrew
1256 | ANSI - Arabic
1257 | ANSI - Baltic
1258 | ANSI/OEM - Vietnamese
1361 | Korean (Johab)
10000 | MAC - Roman
10001 | MAC - Japanese
10002 | MAC - Traditional Chinese (Big5)
10003 | MAC - Korean
10004 | MAC - Arabic
10005 | MAC - Hebrew
10006 | MAC - Greek I
10007 | MAC - Cyrillic
10008 | MAC - Simplified Chinese (GB 2312)
10010 | MAC - Romania
10017 | MAC - Ukraine
10021 | MAC - Thai
10029 | MAC - Latin II
10079 | MAC - Icelandic
10081 | MAC - Turkish
10082 | MAC - Croatia
12000 | Unicode UCS-4 Little-Endian
12001 | Unicode UCS-4 Big-Endian
20000 | CNS - Taiwan
20001 | TCA - Taiwan
20002 | Eten - Taiwan
20003 | IBM5550 - Taiwan
20004 | TeleText - Taiwan
20005 | Wang - Taiwan
20105 | IA5 IRV International Alphabet No. 5 (7-bit)
20106 | IA5 German (7-bit)
20107 | IA5 Swedish (7-bit)
20108 | IA5 Norwegian (7-bit)
20127 | US-ASCII (7-bit)
20261 | T.61
20269 | ISO 6937 Non-Spacing Accent
20273 | IBM EBCDIC - Germany
20277 | IBM EBCDIC - Denmark/Norway
20278 | IBM EBCDIC - Finland/Sweden
20280 | IBM EBCDIC - Italy
20284 | IBM EBCDIC - Latin America/Spain
20285 | IBM EBCDIC - United Kingdom
20290 | IBM EBCDIC - Japanese Katakana Extended
20297 | IBM EBCDIC - France
20420 | IBM EBCDIC - Arabic
20423 | IBM EBCDIC - Greek
20424 | IBM EBCDIC - Hebrew
20833 | IBM EBCDIC - Korean Extended
20838 | IBM EBCDIC - Thai
20866 | Russian - KOI8-R
20871 | IBM EBCDIC - Icelandic
20880 | IBM EBCDIC - Cyrillic (Russian)
20905 | IBM EBCDIC - Turkish
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932 | JIS X 0208-1990 & 0121-1990
20936 | Simplified Chinese (GB2312)
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027 | Extended Alpha Lowercase
21866 | Ukrainian (KOI8-U)
28591 | ISO 8859-1 Latin I
28592 | ISO 8859-2 Central Europe
28593 | ISO 8859-3 Latin 3
28594 | ISO 8859-4 Baltic
28595 | ISO 8859-5 Cyrillic
28596 | ISO 8859-6 Arabic
28597 | ISO 8859-7 Greek
28598 | ISO 8859-8 Hebrew
28599 | ISO 8859-9 Latin 5
28605 | ISO 8859-15 Latin 9
29001 | Europa 3
38598 | ISO 8859-8 Hebrew
50220 | ISO 2022 Japanese with no halfwidth Katakana
50221 | ISO 2022 Japanese with halfwidth Katakana
50222 | ISO 2022 Japanese JIS X 0201-1989
50225 | ISO 2022 Korean
50227 | ISO 2022 Simplified Chinese
50229 | ISO 2022 Traditional Chinese
50930 | Japanese (Katakana) Extended
50931 | US/Canada and Japanese
50933 | Korean Extended and Korean
50935 | Simplified Chinese Extended and Simplified Chinese
50936 | Simplified Chinese
50937 | US/Canada and Traditional Chinese
50939 | Japanese (Latin) Extended and Japanese
51932 | EUC - Japanese
51936 | EUC - Simplified Chinese
51949 | EUC - Korean
51950 | EUC - Traditional Chinese
52936 | HZ-GB2312 Simplified Chinese
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte)
57002 | ISCII Devanagari
57003 | ISCII Bengali
57004 | ISCII Tamil
57005 | ISCII Telugu
57006 | ISCII Assamese
57007 | ISCII Oriya
57008 | ISCII Kannada
57009 | ISCII Malayalam
57010 | ISCII Gujarati
57011 | ISCII Punjabi
65000 | Unicode UTF-7
65001 | Unicode UTF-8

The following is a list of valid code page identifiers for Mac OS only:

Identifier | Name
1 | ASCII
2 | NEXTSTEP
3 | JapaneseEUC
4 | UTF8
5 | ISOLatin1
6 | Symbol
7 | NonLossyASCII
8 | ShiftJIS
9 | ISOLatin2
10 | Unicode
11 | WindowsCP1251
12 | WindowsCP1252
13 | WindowsCP1253
14 | WindowsCP1254
15 | WindowsCP1250
21 | ISO2022JP
30 | MacOSRoman
10 | UTF16String
0x90000100 | UTF16BigEndian
0x94000100 | UTF16LittleEndian
0x8c000100 | UTF32String
0x98000100 | UTF32BigEndian
0x9c000100 | UTF32LittleEndian
65536 | Proprietary


InvStatement Errors

Trappable Errors (InvStatement Class)

OFX Errors

2000 Required field missing from server response.
2001 OFX server error. Description follows.
2002 Invalid OFX response.
2003 OFX response contains unknown element tags.

The class may also return one of the following error codes, which are inherited from other classes.

XMLp Errors

101 Invalid attribute index.
102 No attributes available.
103 Invalid namespace index.
104 No namespaces available.
105 Invalid element index.
106 No elements available.
107 Attribute does not exist.
201 Unbalanced element tag.
202 Unknown element prefix (can't find namespace).
203 Unknown attribute prefix (can't find namespace).
204 Invalid XML markup.
205 Invalid end state for parser.
206 Document contains unbalanced elements.
207 Invalid XPath.
208 No such child.
209 Top element does not match start of path.
210 DOM tree unavailable (set BuildDOM to true and reparse).
302 Can't open file.

HTTP Errors

118 Firewall Error. Error description contains detailed message.
143 Busy executing current method.
151 HTTP protocol error. The error message has the server response.
152 No server specified in URL
153 Specified URLScheme is invalid.
155 Range operation is not supported by server.
156 Invalid cookie index (out of range).
301 Interrupted.
302 Can't open AttachedFile.

The class may also return one of the following error codes, which are inherited from other classes.

IPPort Errors

100 You cannot change the RemotePort at this time. A connection is in progress.
101 You cannot change the RemoteHost (Server) at this time. A connection is in progress.
102 The RemoteHost address is invalid (0.0.0.0).
104 Already connected. If you want to reconnect, close the current connection first.
106 You cannot change the LocalPort at this time. A connection is in progress.
107 You cannot change the LocalHost at this time. A connection is in progress.
112 You cannot change MaxLineLength at this time. A connection is in progress.
116 RemotePort cannot be zero. Please specify a valid service port number.
117 Cannot change UseConnection option while the class is Active.
135 Operation would block.
201 Timeout.
211 Action impossible in control's present state.
212 Action impossible while connected.
213 Action impossible while listening.
303 Could not open file.
434 Unable to convert string to selected CodePage
1105 Already connecting. If you want to reconnect, close the current connection first.
1117 You need to connect first.
1119 You cannot change the LocalHost at this time. A connection is in progress.
1120 Connection dropped by remote host.

SSL Errors

270 Cannot load specified security library.
271 Cannot open certificate store.
272 Cannot find specified certificate.
273 Cannot acquire security credentials.
274 Cannot find certificate chain.
275 Cannot verify certificate chain.
276 Error during handshake.
280 Error verifying certificate.
281 Could not find client certificate.
282 Could not find server certificate.
283 Error encrypting data.
284 Error decrypting data.

TCP/IP Errors

10004 [10004] Interrupted system call.
10009 [10009] Bad file number.
10013 [10013] Access denied.
10014 [10014] Bad address.
10022 [10022] Invalid argument.
10024 [10024] Too many open files.
10035 [10035] Operation would block.
10036 [10036] Operation now in progress.
10037 [10037] Operation already in progress.
10038 [10038] Socket operation on non-socket.
10039 [10039] Destination address required.
10040 [10040] Message too long.
10041 [10041] Protocol wrong type for socket.
10042 [10042] Bad protocol option.
10043 [10043] Protocol not supported.
10044 [10044] Socket type not supported.
10045 [10045] Operation not supported on socket.
10046 [10046] Protocol family not supported.
10047 [10047] Address family not supported by protocol family.
10048 [10048] Address already in use.
10049 [10049] Can't assign requested address.
10050 [10050] Network is down.
10051 [10051] Network is unreachable.
10052 [10052] Net dropped connection or reset.
10053 [10053] Software caused connection abort.
10054 [10054] Connection reset by peer.
10055 [10055] No buffer space available.
10056 [10056] Socket is already connected.
10057 [10057] Socket is not connected.
10058 [10058] Can't send after socket shutdown.
10059 [10059] Too many references, can't splice.
10060 [10060] Connection timed out.
10061 [10061] Connection refused.
10062 [10062] Too many levels of symbolic links.
10063 [10063] File name too long.
10064 [10064] Host is down.
10065 [10065] No route to host.
10066 [10066] Directory not empty
10067 [10067] Too many processes.
10068 [10068] Too many users.
10069 [10069] Disc Quota Exceeded.
10070 [10070] Stale NFS file handle.
10071 [10071] Too many levels of remote in path.
10091 [10091] Network subsystem is unavailable.
10092 [10092] WINSOCK DLL Version out of range.
10093 [10093] Winsock not loaded yet.
11001 [11001] Host not found.
11002 [11002] Non-authoritative 'Host not found' (try again or check DNS setup).
11003 [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP.
11004 [11004] Valid name, no data record (check DNS setup).


LoanStatement Class

LoanStatement Class

Properties Methods Events Configuration Settings Errors

The LoanStatement component is a single component that supports the SignOn and Loan Statement Download functions of Open Financial eXchange, as described by the OFX Specification version 2.1.

Syntax

LoanStatement

Remarks

The LoanStatement class adds loan statement download functionality to your desktop application, or allows your web application to fetch a user's loan statement without having to redirect to another website. All downloads are done using a secure HTTPS Post to send account sign-on information to a financial institution. The class receives the secure response and parses the response into its properties.

To use the LoanStatement class first identify the financial institution by setting the FIId, FIOrganization and FIUrl, properties. Next, identify the OFX user and application by setting the OFXUser, OFXPassword, OFXAppId and OFXAppVersion properties. Next, set the AccountId and AccountType properties to the appropriate values to identify the account for which you wish to download a loan statement. You may also set StartDate and EndDate properties to constrain the transaction list.

Once you have finished setting the properties that describe the statement you wish to download, use the GetStatement method to build and transmit the request automatically. When the response returns, the transaction properties will be populated automatically, as well as the StartDate, EndDate, AvailableBalance, PrincipalBalance, and any other data the loan statement includes.

The transaction properties (TxAmount, TxCheckNumber TxDatePosted, TxFITID, TxMemo, TxPayeeName, and TxType, etc.) may be imagined as arrays, so that the getter function for each property takes as its argument the index of a transaction in the list.

For example, TxAmount(0) gives the amount of the first transaction for the last statement downloaded.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting.

Note: Loan Statement Download is supported only in OFX Versions 2.1.0 and 2.1.1. If your FI does not support this OFX version, then you will not be able to use this class.

Property List

The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

AccountId | The account number used for the next statement download.
AccountType | Indicates the type of the loan account.
AvailableBalance | Amount of the available balance.
AvailableBalanceDate | Date of the available balance.
ClosingDetailCount | The number of records in the ClosingDetail arrays.
ClosingDetailAggregate | Aggregates are pieces of XML taken from the financial institution's original response.
ClosingDetailBalanceOpening | Opening statement balance.
ClosingDetailDateClose | Closing statement date.
ClosingDetailDateDue | Next payment due date.
ClosingDetailDateEnd | End date of transaction data for this statement.
ClosingDetailDateOpen | Opening statement date.
ClosingDetailDateStart | Start date of transaction data for this statement.
ClosingDetailFITID | Unique identifier assigned by financial institution to identify this particular statement closing information.
ClosingDetailImageRef | Server specified unique identifier for the statement closing image.
ClosingDetailImageRefType | Type of retrieval method for actual statement closing image.
ClosingDetailMinimumPayment | Next minimum amount due.
ClosingDetailTotalInterest | Total interest.
CurrencyCode | Default currency code for this statement.
EndDate | End date of statement requested.
FIId | Financial institution identifier.
FIOrganization | Financial institution organization name.
FirewallAutoDetect | This property tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallType | This property determines the type of firewall to connect through.
FirewallHost | This property contains the name or IP address of firewall (optional).
FirewallPassword | This property contains a password if authentication is to be used when connecting through the firewall.
FirewallPort | This property contains the TCP port for the firewall Host .
FirewallUser | This property contains a user name if authentication is to be used connecting through a firewall.
FIUrl | Financial institution URL.
ImageFileName | Filename and location to save the image content of a transaction or statement.
IncludeImages | Whether the server has to return data for bank transactions or closing statements images.
OFXAccessKey | Access key value received after a MFA authentication in a previous signon.
OFXAppId | OFX application identifier.
OFXAppVersion | OFX application version.
OFXPassword | User's password.
OFXRequest | The current OFX request aggregate.
OFXResponse | The current OFX response aggregate.
OFXUser | User's id.
OFXVersion | OFX API version.
PrincipalBalance | Amount of the loan principal balance for the current statement.
PrincipalBalanceDate | Date and time of the current loan principal balance.
SSLAcceptServerCertEncoded | The certificate (PEM/base64 encoded).
SSLCertEncoded | The certificate (PEM/base64 encoded).
SSLCertStore | The name of the certificate store for the client certificate.
SSLCertStorePassword | If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.
SSLCertStoreType | The type of certificate store for this certificate.
SSLCertSubject | The subject of the certificate used for client authentication.
SSLServerCertEncoded | The certificate (PEM/base64 encoded).
StartDate | Start date of requested transaction list.
Timeout | A timeout for the component.
TotalPrincipalLTD | Total principal paid loan to date.
TotalPrincipalYTD | Total principal paid year to date.
TxCount | The number of records in the Tx arrays.
TxAggregate | Wrapper for a bank transaction.
TxAmount | This is the amount of money exchanged during a given transaction.
TxCheckNumber | The check number as found on the original check.
TxDatePosted | This is the date the transaction was posted to the financial institution, stored as a string.
TxEscrow | This is the total amount of payment applied to Escrow.
TxFITID | Transaction Id assigned by the financial institution.
TxImageRef | Server specified unique identifier for the transaction image.
TxImageRefType | Type of retrieval method for actual transaction image.
TxInterest | This is the amount of payment applied to Interest.
TxMemo | The memo property stores a notice from the payee to the customer as a string.
TxPayeeName | If this property has a value, the NAME element replaces the entire PAYEE aggregate in the request XML.
TxPrincipal | This is the amount of payment applied to Principal.
TxType | This is the type of transaction that was made on the account.
TxTypeDescription | A description of the transaction type.

Method List

The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

Config | Sets or retrieves a configuration setting.
GetClosingInfo | Download a statement closing information for a bank account.
GetImage | Request and retrieve a check or statement image (if available).
GetStatement | Download a loan statement.
ReadOFXDataFile | Reads an OFX response from a file.
Reset | Reset the internal state of the component and all properties to their default values.
WriteOFXDataFile | Writes the OFX response sent by the server to a file.

Event List

The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ConnectionStatus | Fired to indicate changes in connection state.
Error | Information about errors during data delivery.
SSLServerAuthentication | Fired after the server presents its certificate to the client.
SSLStatus | Shows the progress of the secure connection.

Configuration Settings

The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

Overwrite | Determines whether image files will be overwritten.
MarketingInfo | Marketing information regarding the current loan.
CurrencyFormat | The format to be used for returning currency values.
OFXDateFormat | The date format as required by OFX FI server.
DateFormat | The format to be used for input and output dates.
GetResponseVar | Parses additional information out of the response.
NewPassword | New password for the current OFX user.
OFXLog | Log file for the OFX transaction.
ServerMessage | Server message if a warning or other information returned.
ClientUId | Unique ID identifying OFX Client.
UserCred1A | Additional user credential required by server.
UserCred2A | Additional user credential required by server.
AuthToken | Authentication token required for this signon session only.
CorrectFITID[i] | The FITID of a previously sent transaction corrected by the current one.
CorrectAction[i] | The action taken to a previously sent transaction corrected by the current one.
AcceptEncoding | Used to tell the server which types of content encodings the client supports.
AllowHTTPCompression | This property enables HTTP compression for receiving data.
Authorization | The Authorization string to be sent to the server.
BytesTransferred | Contains the number of bytes transferred in the response data.
EncodeURL | If set to true the URL will be encoded by the component.
FollowRedirects | Determines what happens when the server issues a redirect.
GetOn302Redirect | If set to true the component will perform a GET on the new location.
HTTPVersion | The version of HTTP used by the component.
IfModifiedSince | A date determining the maximum age of the desired document.
KeepAlive | Determines whether the HTTP connection is closed after completion of the request.
MaxRedirectAttempts | Limits the number of redirects that are followed in a request.
OtherHeaders | Other headers as determined by the user (optional).
ProxyAuthorization | The authorization string to be sent to the proxy server.
ProxyAuthScheme | The authorization scheme to be used for the proxy.
ProxyPassword | A password if authentication is to be used for the proxy.
ProxyPort | Port for the proxy server (default 80).
ProxyServer | Name or IP address of a proxy server (optional).
ProxyUser | A user name if authentication is to be used for the proxy.
TransferredDataLimit | The maximum number of incoming bytes to be stored by the component.
UseChunkedEncoding | Enables or Disables HTTP chunked encoding for transfers.
ChunkSize | Specifies the chunk size in bytes when using chunked encoding.
UsePlatformHTTPClient | Whether or not to use the platform HTTP client.
UserAgent | Information about the user agent (browser).
KerberosSPN | The Service Principal Name for the Kerberos Domain Controller.
FirewallAutoDetect | Tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallHost | Name or IP address of firewall (optional).
FirewallPassword | Password to be used if authentication is to be used when connecting through the firewall.
FirewallPort | The TCP port for the FirewallHost;.
FirewallType | Determines the type of firewall to connect through.
FirewallUser | A user name if authentication is to be used connecting through a firewall.
KeepAliveTime | The inactivity time in milliseconds before a TCP keep-alive packet is sent.
KeepAliveInterval | The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.
Linger | When set to True, connections are terminated gracefully.
LingerTime | Time in seconds to have the connection linger.
LocalHost | The name of the local host through which connections are initiated or accepted.
LocalPort | The TCP port in the local host where the component binds.
MaxLineLength | The maximum amount of data to accumulate when no EOL is found.
MaxTransferRate | The transfer rate limit in bytes per second.
TCPKeepAlive | Determines whether or not the keep alive socket option is enabled.
UseIPv6 | Whether or not to use IPv6.
TcpNoDelay | Whether or not to delay when sending packets.
ReuseSSLSession | Determines if the SSL session is reused.
SSLCipherStrength | The minimum cipher strength used for bulk encryption.
SSLEnabledProtocols | Used to enable/disable the supported security protocols.
SSLProvider | The name of the security provider to use.
SSLSecurityFlags | Flags that control certificate verification.
OpenSSLCADir | The path to a directory containing CA certificates.
OpenSSLCAFile | Name of the file containing the list of CA's trusted by your application.
OpenSSLCipherList | A string that controls the ciphers to be used by SSL.
OpenSSLPrngSeedData | The data to seed the pseudo random number generator (PRNG).
SSLAlgorithmList | A string that controls the cipher algorithms to be used by SSL.
AbsoluteTimeout | Determines whether timeouts are inactivity timeouts or absolute timeouts.
FirewallData | Used to send extra data to the firewall.
InBufferSize | The size in bytes of the incoming queue of the socket.
OutBufferSize | The size in bytes of the outgoing queue of the socket.
CodePage | The system code page used for Unicode to Multibyte translations.


AccountId Property

AccountId Property (LoanStatement Class)

The account number used for the next statement download.

Syntax

char* GetAccountId();

int SetAccountId(char* lpszAccountId);

Default Value

""

Remarks

This is the account number for which the user wishes to download a statement.

Data Type

String


AccountType Property

AccountType Property (LoanStatement Class)

Indicates the type of the loan account.

Syntax

int GetAccountType();

int SetAccountType(int iAccountType);

Possible Values

  AT_AUTO(0),
  AT_CONSUMER(1),
  AT_MORTGAGE(2),
  AT_COMMERCIAL(3),
  AT_STUDENT(4),
  AT_MILITARY(5),
  AT_SMALL_BUSINESS(6),
  AT_CONSTRUCTION(7),
  AT_HOME_EQUITY(8)

Default Value

0

Remarks

This property uses the following values:

  • atAuto (0)
  • atConsumer (1)
  • atMortgage (2)
  • atCommercial (3)
  • atStudent (4)
  • atMilitary (5)
  • atSmallBusiness (6)
  • atConstruction (7)
  • atHomeEquity (8)

Data Type

Integer


AvailableBalance Property

AvailableBalance Property (LoanStatement Class)

Amount of the available balance.

Syntax

char* GetAvailableBalance();

Default Value

""

Remarks

This is the amount of money available from a given account.

For bank accounts, LedgerBalance represents the last balance recorded in official documents. AvailableBalance represents the value in the ledger balance once all temporary authorizations, such as ATM withdrawals, have posted to the ledger. Any positive value means that funds are available while negative values mean that the account is overdrawn.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

This property is read-only.

Data Type

String


AvailableBalanceDate Property

AvailableBalanceDate Property (LoanStatement Class)

Date of the available balance.

Syntax

char* GetAvailableBalanceDate();

Default Value

""

Remarks

This is the date as of which the account balance is valid.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is read-only.

Data Type

String


ClosingDetailCount Property

ClosingDetailCount Property (LoanStatement Class)

The number of records in the ClosingDetail arrays.

Syntax

int GetClosingDetailCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • ClosingDetailAggregate
  • ClosingDetailBalanceOpening
  • ClosingDetailDateClose
  • ClosingDetailDateDue
  • ClosingDetailDateEnd
  • ClosingDetailDateOpen
  • ClosingDetailDateStart
  • ClosingDetailFITID
  • ClosingDetailImageRef
  • ClosingDetailImageRefType
  • ClosingDetailMinimumPayment
  • ClosingDetailTotalInterest

The array indices start at 0 and end at ClosingDetailCount-1.

This property is read-only and not available at design time.

Data Type

Integer


ClosingDetailAggregate Property

ClosingDetailAggregate Property (LoanStatement Class)

Aggregates are pieces of XML taken from the financial institution's original response.

Syntax

char* GetClosingDetailAggregate(int iClosingDetailIndex);

Default Value

""

Remarks

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

This aggregate describes a statement closing information. It contains data (elements and values) associated with the following properties:

  • ClosingDetailFITID
  • ClosingDetailDateStart
  • ClosingDetailDateEnd
  • ClosingDetailDateOpen
  • ClosingDetailDateClose
  • ClosingDetailDateDue (applicable to credit card accounts only)
  • ClosingDetailBalanceOpening
  • ClosingDetailBalanceClosing
  • ClosingDetailTotalInterest (not applicable to credit card accounts)
  • ClosingDetailTotalFees
  • ClosingDetailTotalCredit
  • ClosingDetailTotalDebit
  • ClosingDetailCreditLimit (applicable to credit card accounts only)
  • ClosingDetailImageRef
  • ClosingDetailImageRefType

For each aggregate returned, clients can retrieve corresponding transactions by using ClosingDetailDateStart and ClosingDetailDateEnd in a statement download request (when calling GetStatement method).

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailBalanceOpening Property

ClosingDetailBalanceOpening Property (LoanStatement Class)

Opening statement balance.

Syntax

char* GetClosingDetailBalanceOpening(int iClosingDetailIndex);

Default Value

""

Remarks

Opening statement balance.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateClose Property

ClosingDetailDateClose Property (LoanStatement Class)

Closing statement date.

Syntax

char* GetClosingDetailDateClose(int iClosingDetailIndex);

Default Value

""

Remarks

Closing statement date.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateDue Property

ClosingDetailDateDue Property (LoanStatement Class)

Next payment due date.

Syntax

char* GetClosingDetailDateDue(int iClosingDetailIndex);

Default Value

""

Remarks

Next payment due date. This is applicable to credit card and loan accounts only.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateEnd Property

ClosingDetailDateEnd Property (LoanStatement Class)

End date of transaction data for this statement.

Syntax

char* GetClosingDetailDateEnd(int iClosingDetailIndex);

Default Value

""

Remarks

End date of transaction data for this statement. A client should be able to use this date when requesting individual transactions that match this statement.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateOpen Property

ClosingDetailDateOpen Property (LoanStatement Class)

Opening statement date.

Syntax

char* GetClosingDetailDateOpen(int iClosingDetailIndex);

Default Value

""

Remarks

Opening statement date.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailDateStart Property

ClosingDetailDateStart Property (LoanStatement Class)

Start date of transaction data for this statement.

Syntax

char* GetClosingDetailDateStart(int iClosingDetailIndex);

Default Value

""

Remarks

Start date of transaction data for this statement. A client should be able to use this date when requesting individual transactions that match this statement.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailFITID Property

ClosingDetailFITID Property (LoanStatement Class)

Unique identifier assigned by financial institution to identify this particular statement closing information.

Syntax

char* GetClosingDetailFITID(int iClosingDetailIndex);

Default Value

""

Remarks

Unique identifier assigned by financial institution to identify this particular statement closing information. This id provides a way for the client to distinguish one closing statement from another.

This is always returned in the server response for each statement.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailImageRef Property

ClosingDetailImageRef Property (LoanStatement Class)

Server specified unique identifier for the statement closing image.

Syntax

char* GetClosingDetailImageRef(int iClosingDetailIndex);

Default Value

""

Remarks

Server specified unique identifier for the statement closing image.

This can be either image identifier (to be used during the request to retrieve the actual image when the GetImage method is called) or URL, depending on the value of ClosingDetailImageRefType.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailImageRefType Property

ClosingDetailImageRefType Property (LoanStatement Class)

Type of retrieval method for actual statement closing image.

Syntax

char* GetClosingDetailImageRefType(int iClosingDetailIndex);

Default Value

""

Remarks

Type of retrieval method for actual statement closing image.

If ClosingDetailImageRef is returned in the response, this can be either image identifier (to be used during the request for the image when the GetImage method is called) or a URL.

Possible values for ClosingDetailImageRefType are:

Value | Meaning
OPAQUE | Requires the client to send a separate OFX request to access the image. The image can be retrieved by calling the GetImage method where ClosingDetailImageRef will be the parameter value for this method.
URL | The image is accessed directly via the URL provided. The client will not provide authentication and will simply follow the URL provided.
FORMURL | The image is accessed directly via an encoded URL. The client will send authentication to the server.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailMinimumPayment Property

ClosingDetailMinimumPayment Property (LoanStatement Class)

Next minimum amount due.

Syntax

char* GetClosingDetailMinimumPayment(int iClosingDetailIndex);

Default Value

""

Remarks

Next minimum amount due. This is applicable to credit card and loan accounts only.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


ClosingDetailTotalInterest Property

ClosingDetailTotalInterest Property (LoanStatement Class)

Total interest.

Syntax

char* GetClosingDetailTotalInterest(int iClosingDetailIndex);

Default Value

""

Remarks

Total interest.

For bank or investment accounts, this indicates total interest posted on the account for this statement (period indicated by ClosingDetailDateStart and ClosingDetailDateEnd).

For loan accounts, this indicates total interest paid year to date.

This is not applicable for credit card accounts.

The size of the array is controlled by the ClosingDetailCount property.

This property is read-only and not available at design time.

Data Type

String


CurrencyCode Property

CurrencyCode Property (LoanStatement Class)

Default currency code for this statement.

Syntax

char* GetCurrencyCode();

Default Value

""

Remarks

Indicates how to interpret the monetary amounts in the current statement. This is a 3-character ISO-4217 currency code, such as USD and EUR.

This property is read-only.

Data Type

String


EndDate Property

EndDate Property (LoanStatement Class)

End date of statement requested.

Syntax

char* GetEndDate();

int SetEndDate(char* lpszEndDate);

Default Value

""

Remarks

This is a string representing the date at which to stop listing transactions on the statement. Use this property and StartDate to constrain the list of transactions retrieved when calling GetStatement.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Data Type

String


FIId Property

FIId Property (LoanStatement Class)

Financial institution identifier.

Syntax

char* GetFIId();

int SetFIId(char* lpszFIId);

Default Value

""

Remarks

FIId holds the identifier of the OFX Financial Institution and is used during signon. This value is unique for each organization name.

Data Type

String


FIOrganization Property

FIOrganization Property (LoanStatement Class)

Financial institution organization name.

Syntax

char* GetFIOrganization();

int SetFIOrganization(char* lpszFIOrganization);

Default Value

""

Remarks

This is the name of the OFX Financial Institution and is used during signon. Each organization has a unique FIId that must also be used at signon.

Data Type

String


FirewallAutoDetect Property

FirewallAutoDetect Property (LoanStatement Class)

This property tells the component whether or not to automatically detect and use firewall system settings, if available.

Syntax

int GetFirewallAutoDetect();

int SetFirewallAutoDetect(int bFirewallAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use firewall system settings, if available.

Data Type

Boolean


FirewallType Property

FirewallType Property (LoanStatement Class)

This property determines the type of firewall to connect through.

Syntax

int GetFirewallType();

int SetFirewallType(int iFirewallType);

Possible Values

  FW_NONE(0),
  FW_TUNNEL(1),
  FW_SOCKS4(2),
  FW_SOCKS5(3)

Default Value

0

Remarks

This property determines the type of firewall to connect through. The applicable values are the following:

fwNone (0) | No firewall (default setting).
fwTunnel (1) | Connect through a tunneling proxy. FirewallPort is set to 80.
fwSOCKS4 (2) | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
fwSOCKS5 (3) | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

Data Type

Integer


FirewallHost Property

FirewallHost Property (LoanStatement Class)

This property contains the name or IP address of firewall (optional).

Syntax

char* GetFirewallHost();

int SetFirewallHost(char* lpszFirewallHost);

Default Value

""

Remarks

This property contains the name or IP address of firewall (optional). If a FirewallHost is given, the requested connections will be authenticated through the specified firewall when connecting.

If this property is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, this property is set to the corresponding address. If the search is not successful, the class fails with an error.

Data Type

String


FirewallPassword Property

FirewallPassword Property (LoanStatement Class)

This property contains a password if authentication is to be used when connecting through the firewall.

Syntax

char* GetFirewallPassword();

int SetFirewallPassword(char* lpszFirewallPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used when connecting through the firewall. If FirewallHost is specified, the FirewallUser and FirewallPassword properties are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

Data Type

String


FirewallPort Property

FirewallPort Property (LoanStatement Class)

This property contains the TCP port for the firewall Host .

Syntax

int GetFirewallPort();

int SetFirewallPort(int lFirewallPort);

Default Value

0

Remarks

This property contains the TCP port for the firewall FirewallHost. See the description of the FirewallHost property for details.

Note that this property is set automatically when FirewallType is set to a valid value. See the description of the FirewallType property for details.

Data Type

Long


FirewallUser Property

FirewallUser Property (LoanStatement Class)

This property contains a user name if authentication is to be used connecting through a firewall.

Syntax

char* GetFirewallUser();

int SetFirewallUser(char* lpszFirewallUser);

Default Value

""

Remarks

This property contains a user name if authentication is to be used connecting through a firewall. If the FirewallHost is specified, this property and FirewallPassword properties are used to connect and authenticate to the given Firewall. If the authentication fails, the class fails with an error.

Data Type

String


FIUrl Property

FIUrl Property (LoanStatement Class)

Financial institution URL.

Syntax

char* GetFIUrl();

int SetFIUrl(char* lpszFIUrl);

Default Value

""

Remarks

This is the URL of the OFX Financial Institution to which the class will signon and fetch data.

Data Type

String


ImageFileName Property

ImageFileName Property (LoanStatement Class)

Filename and location to save the image content of a transaction or statement.

Syntax

char* GetImageFileName();

int SetImageFileName(char* lpszImageFileName);

Default Value

""

Remarks

When calling the GetImage method, the image content is returned by that method. If you want the image content to be written to disk, you can set the ImageFileName to a desired file name without specifying the type. The file type will be set automatically depending on the image type supported by the server. Possible image types are: jpeg, tiff, png, pdf.

If the filename exists, you can choose to overwrite it or not by setting the Overwrite config setting (which defaults to True).

Note: Image download is available only for OFX version 2.1.1. When this method is called, the OFXVersion is automatically set to '211'.

Data Type

String


IncludeImages Property

IncludeImages Property (LoanStatement Class)

Whether the server has to return data for bank transactions or closing statements images.

Syntax

int GetIncludeImages();

int SetIncludeImages(int bIncludeImages);

Default Value

FALSE

Remarks

If False (default value), the server will not return any image references in the response.

Otherwise, if the FI supports image download service :

  • when the GetStatement method is called, the server will return the image references for each transaction (e.g., check image).
  • when the GetClosingInfo method is called, the server will return a reference to the statement closing information image.

These references can then be used as parameters when the GetImage method is called.

This is optional and supported in OFX 2.1.1 version only (i.e., if this is requested, the OFXVersion should be set to '211').

Note: Clients may request images in statement download and/or closing requests in various message sets. But not all FIs support image download. Prior to requesting these images, clients must verify that support exists on the server for image download. This is indicated by the presence of the IMAGEMSGSET aggregate in the profile response, as well as the IMAGEPROF aggregate in the profile response for the specific message set in question.

For instance, if a client wishes to request transaction images in the banking statement download request, the client must verify the presence of IMAGEMSGSET in the profile as well as transaction image support in the IMAGEPROF aggregate in the BANKMSGSET in the profile. Image download requests are allowed only in OFX 2.1.1 in the Banking, Credit Card, Loan and Investments message sets.

To verify whether your FI supports this service, you should check its profile (by calling the GetProfile method in FIProfile class) and check the values of FIMessageSetTxImage and FIMessageSetClosingInfoImage for each message set (bank, credit card, loan and investment).

Data Type

Boolean


OFXAccessKey Property

OFXAccessKey Property (LoanStatement Class)

Access key value received after a MFA authentication in a previous signon.

Syntax

char* GetOFXAccessKey();

int SetOFXAccessKey(char* lpszOFXAccessKey);

Default Value

""

Remarks

This might be returned in the server response after a MFA authentication (i.e. MFA challenge question/answer pairs were validated by the server when the SendChallengeAnswers method in FIProfile class was called).

To prevent servers from needing to authenticate the user in each OFX request, the server may respond to a correct set of challenge answers with a OFXAccessKey on the signon response (when the SendChallengeAnswers method in FIProfile class was called).

The server determines the contents of this optional element. On each subsequent signon request, the client will send the last value of the OFXAccessKey it has received, even after the end of the current session. The server has the option to respond to any subsequent request with a 3000 error code, requiring the client to send the MFA challenge questions request again (by calling the RequestChallengeQuestions method in FIProfile class). This allows the server to determine the lifetime of the OFXAccessKey.

Data Type

String


OFXAppId Property

OFXAppId Property (LoanStatement Class)

OFX application identifier.

Syntax

char* GetOFXAppId();

int SetOFXAppId(char* lpszOFXAppId);

Default Value

""

Remarks

This is the unique identifier of the user's OFX application.

Data Type

String


OFXAppVersion Property

OFXAppVersion Property (LoanStatement Class)

OFX application version.

Syntax

char* GetOFXAppVersion();

int SetOFXAppVersion(char* lpszOFXAppVersion);

Default Value

""

Remarks

This is the version of the user's OFX application.

Data Type

String


OFXPassword Property

OFXPassword Property (LoanStatement Class)

User's password.

Syntax

char* GetOFXPassword();

int SetOFXPassword(char* lpszOFXPassword);

Default Value

""

Remarks

This is the password used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXRequest Property

OFXRequest Property (LoanStatement Class)

The current OFX request aggregate.

Syntax

char* GetOFXRequest();

Default Value

""

Remarks

Polling OFXRequest will cause the class to generate and return an OFX request aggregate.

This property is read-only and not available at design time.

Data Type

String


OFXResponse Property

OFXResponse Property (LoanStatement Class)

The current OFX response aggregate.

Syntax

char* GetOFXResponse();

int SetOFXResponse(char* lpszOFXResponse);

Default Value

""

Remarks

This can be used especially for debugging purposes. This can also be used to parse an OFX Response. To do so, you can set the OFX Response data (in string format) to OFXResponse. Once set, the supplied OFX data will be parsed and will populate the same read-only properties that ReadOFXDataFile does.

This property is not available at design time.

Data Type

String


OFXUser Property

OFXUser Property (LoanStatement Class)

User's id.

Syntax

char* GetOFXUser();

int SetOFXUser(char* lpszOFXUser);

Default Value

""

Remarks

This is the UserID used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXVersion Property

OFXVersion Property (LoanStatement Class)

OFX API version.

Syntax

char* GetOFXVersion();

int SetOFXVersion(char* lpszOFXVersion);

Default Value

"102"

Remarks

This is the OFX API version used in all requests sent to your FI server (such as 1.0.2, 2.0.1, 2.1.1, etc.). Valid values: 102, 103, 200, 201, 203, 210, 211. Note that not all OFX Versions are supported by FIs.

Note: If the OFXVersion is set to 1x, the request and the response are going to be in SGML format. If set to 2x, the request will be in XML format (the response format depends on the FI's server capabilities). Note that if the OFX FI server does not support version 2x, the server will return an error (such as 'Bad Request').

Certain services are available only for a specific OFX version. For example, image download, is available only in OFX version 2.1.1.

Data Type

String


PrincipalBalance Property

PrincipalBalance Property (LoanStatement Class)

Amount of the loan principal balance for the current statement.

Syntax

char* GetPrincipalBalance();

Default Value

""

Remarks

This value reflects the loan principle balance as posted in the financial institution's records.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

This property is read-only.

Data Type

String


PrincipalBalanceDate Property

PrincipalBalanceDate Property (LoanStatement Class)

Date and time of the current loan principal balance.

Syntax

char* GetPrincipalBalanceDate();

Default Value

""

Remarks

This is the date, as of which, the loan principal balance is valid.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

This property is read-only.

Data Type

String


SSLAcceptServerCertEncoded Property

SSLAcceptServerCertEncoded Property (LoanStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLAcceptServerCertEncoded(char *&lpSSLAcceptServerCertEncoded, int &lenSSLAcceptServerCertEncoded);

int SetSSLAcceptServerCertEncoded(char *lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLAcceptServerCertStore and SSLAcceptServerCertSubject properties may also be used to specify a certificate.

When SSLAcceptServerCertEncoded is set, a search is initiated in the current SSLAcceptServerCertStore for the private key of the certificate. If the key is found, SSLAcceptServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLAcceptServerCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertEncoded Property

SSLCertEncoded Property (LoanStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLCertEncoded(char *&lpSSLCertEncoded, int &lenSSLCertEncoded);

int SetSSLCertEncoded(char *lpSSLCertEncoded, int lenSSLCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLCertStore and SSLCertSubject properties may also be used to specify a certificate.

When SSLCertEncoded is set, a search is initiated in the current SSLCertStore for the private key of the certificate. If the key is found, SSLCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertStore Property

SSLCertStore Property (LoanStatement Class)

The name of the certificate store for the client certificate.

Syntax

int GetSSLCertStore(char *&lpSSLCertStore, int &lenSSLCertStore);

int SetSSLCertStore(char *lpSSLCertStore, int lenSSLCertStore);

Default Value

"MY"

Remarks

The name of the certificate store for the client certificate.

The SSLCertStoreType property specifies the type of the certificate store specified by SSLCertStore. If the store is password protected, specify the password in SSLCertStorePassword.

SSLCertStore is used in conjunction with the SSLCertSubject property in order to specify client certificates. If SSLCertStore has a value, and SSLCertSubject or SSLCertEncoded is set, a search for a certificate is initiated. Please refer to the SSLCertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MY | A certificate store holding personal certificates with their associated private keys.
CA | Certifying authority certificates.
ROOT | Root certificates.
SPC | Software publisher certificates.

In Java, the certificate store normally is a file containing certificates and optional private keys.

When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).

If the provider is OpenSSL, the certificate store is a file containing a certificate and a private key. This property must be set to the name of the file.

Data Type

Binary String


SSLCertStorePassword Property

SSLCertStorePassword Property (LoanStatement Class)

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Syntax

char* GetSSLCertStorePassword();

int SetSSLCertStorePassword(char* lpszSSLCertStorePassword);

Default Value

""

Remarks

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Data Type

String


SSLCertStoreType Property

SSLCertStoreType Property (LoanStatement Class)

The type of certificate store for this certificate.

Syntax

int GetSSLCertStoreType();

int SetSSLCertStoreType(int iSSLCertStoreType);

Possible Values

  CST_USER(0),
  CST_MACHINE(1),
  CST_PFXFILE(2),
  CST_PFXBLOB(3),
  CST_JKSFILE(4),
  CST_JKSBLOB(5),
  CST_PEMKEY_FILE(6),
  CST_PEMKEY_BLOB(7),
  CST_PUBLIC_KEY_FILE(8),
  CST_PUBLIC_KEY_BLOB(9),
  CST_SSHPUBLIC_KEY_BLOB(10),
  CST_P7BFILE(11),
  CST_P7BBLOB(12),
  CST_SSHPUBLIC_KEY_FILE(13),
  CST_PPKFILE(14),
  CST_PPKBLOB(15),
  CST_XMLFILE(16),
  CST_XMLBLOB(17)

Default Value

0

Remarks

The type of certificate store for this certificate.

This property can take one of the following values:

0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java.
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java.
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates.
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format.
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java.
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java.
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate.
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate.
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate.
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate.
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key.
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates.
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format.
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key.
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key).
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key).
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format.
17 (cstXMLlob) | The certificate store is a string that contains a certificate in XML format.

Data Type

Integer


SSLCertSubject Property

SSLCertSubject Property (LoanStatement Class)

The subject of the certificate used for client authentication.

Syntax

char* GetSSLCertSubject();

int SetSSLCertSubject(char* lpszSSLCertSubject);

Default Value

""

Remarks

The subject of the certificate used for client authentication.

When this property is set, a search is performed in the current certificate store certificate with matching subject.

If a matching certificate is found, the property is set to the full subject of the matching certificate.

If an exact match is not found, the store is searched for subjects containing the value of the property.

If a match is still not found, the property is set to an empty string, and no certificate is selected.

The special value "*" picks a random certificate in the certificate store.

The certificate subject is a comma separated list of distinguished name properties and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common properties and their meanings are displayed below.

Field | Meaning
CN | Common Name. This is commonly a host name like www.server.com.
O | Organization
OU | Organizational Unit
L | Locality
S | State
C | Country
E | Email Address

If a property value contains a comma it must be quoted.

Data Type

String


SSLServerCertEncoded Property

SSLServerCertEncoded Property (LoanStatement Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLServerCertEncoded(char *&lpSSLServerCertEncoded, int &lenSSLServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLServerCertStore and SSLServerCertSubject properties may also be used to specify a certificate.

When SSLServerCertEncoded is set, a search is initiated in the current SSLServerCertStore for the private key of the certificate. If the key is found, SSLServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLServerCertSubject is set to empty string.

This property is read-only and not available at design time.

Data Type

Binary String


StartDate Property

StartDate Property (LoanStatement Class)

Start date of requested transaction list.

Syntax

char* GetStartDate();

int SetStartDate(char* lpszStartDate);

Default Value

""

Remarks

This is a string representing the date at which to start listing transactions on the statement. Use this property and EndDate to constrain the list of transactions retrieved when calling GetStatement. When provided in the request, StartDate value will be echoed in the server's response.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

Data Type

String


Timeout Property

Timeout Property (LoanStatement Class)

A timeout for the component.

Syntax

int GetTimeout();

int SetTimeout(int iTimeout);

Default Value

60

Remarks

If the Timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.

If Timeout is set to a positive value, the class will wait for the operation to complete before returning control.

The class will use DoEvents to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not "freeze" and remains responsive.

If Timeout expires, and the operation is not yet complete, the class fails with an error.

Please note that by default, all timeouts are inactivity timeouts, i.e. the timeout period is extended by Timeout seconds when any amount of data is successfully sent or received.

Optionally, the behavior of the class may be changed to absolute timeouts, i.e. the class will wait for a maximum of Timeout seconds since the beginning of the operation, without extending the timeout period during communications.

This behavior is controlled by the AbsoluteTimeout configuration setting.

The default value for the Timeout property is 60 (seconds).

Data Type

Integer


TotalPrincipalLTD Property

TotalPrincipalLTD Property (LoanStatement Class)

Total principal paid loan to date.

Syntax

char* GetTotalPrincipalLTD();

Default Value

""

Remarks

The availability of this information in the server response is optional.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

This property is read-only.

Data Type

String


TotalPrincipalYTD Property

TotalPrincipalYTD Property (LoanStatement Class)

Total principal paid year to date.

Syntax

char* GetTotalPrincipalYTD();

Default Value

""

Remarks

The availability of this information in the server response is optional.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular field if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for fields not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

This property is read-only.

Data Type

String


TxCount Property

TxCount Property (LoanStatement Class)

The number of records in the Tx arrays.

Syntax

int GetTxCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • TxAggregate
  • TxAmount
  • TxCheckNumber
  • TxDatePosted
  • TxEscrow
  • TxFITID
  • TxImageRef
  • TxImageRefType
  • TxInterest
  • TxMemo
  • TxPayeeName
  • TxPrincipal
  • TxType
  • TxTypeDescription

The array indices start at 0 and end at TxCount-1.

This property is read-only and not available at design time.

Data Type

Integer


TxAggregate Property

TxAggregate Property (LoanStatement Class)

Wrapper for a bank transaction.

Syntax

char* GetTxAggregate(int iTxIndex);

Default Value

""

Remarks

Wrapper for a bank transaction.

Each bank transaction aggregate contains data (elements and values) associated with the following properties:

  • TxAmount
  • TxCheckNumber
  • TxDatePosted
  • TxFITID
  • TxMemo
  • TxPayeeName
  • TxType
  • TxImageRef
  • TxImageRefType

Aggregates are pieces of XML taken from the financial institution's original response. They contain elements that correspond to many of the class's properties. However, some of these elements, and/or their potential values, may not be supported by the class. Any user who wishes to use unsupported properties may use this aggregate property to parse out the desired data either via our OFXAggregate class or any other means.

Note: The original data from the server is returned as SGML or XML (depending on the value of OFXVersion that FI supports. If the original data is returned in SGML format, the class internally manipulates these responses into the equivalent XML format by inserting close element tags (e.g., "</ACCTID>") into the data as it comes from the server.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxAmount Property

TxAmount Property (LoanStatement Class)

This is the amount of money exchanged during a given transaction.

Syntax

char* GetTxAmount(int iTxIndex);

Default Value

""

Remarks

This is the amount of money exchanged during a given transaction.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxCheckNumber Property

TxCheckNumber Property (LoanStatement Class)

The check number as found on the original check.

Syntax

char* GetTxCheckNumber(int iTxIndex);

Default Value

""

Remarks

The check number as found on the original check. Some stores that use electronic checks may put a randomly generated value in this property.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxDatePosted Property

TxDatePosted Property (LoanStatement Class)

This is the date the transaction was posted to the financial institution, stored as a string.

Syntax

char* GetTxDatePosted(int iTxIndex);

Default Value

""

Remarks

This is the date the transaction was posted to the financial institution, stored as a string.

All input dates should be entered in the format specified by DateFormat. For example, if the DateFormat is set to "MM/dd/yyyy hh:mm:ss" (default value), an input date should look like: 09/30/2009 12:00:00 AM.

This format specifies also how the returned dates are going to get parsed.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxEscrow Property

TxEscrow Property (LoanStatement Class)

This is the total amount of payment applied to Escrow.

Syntax

char* GetTxEscrow(int iTxIndex);

Default Value

""

Remarks

This is the total amount of payment applied to Escrow.

This is applicable to loan statements only.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxFITID Property

TxFITID Property (LoanStatement Class)

Transaction Id assigned by the financial institution.

Syntax

char* GetTxFITID(int iTxIndex);

Default Value

""

Remarks

Transaction Id assigned by the financial institution.

This is a unique id number that the financial institution uses to identify a particular transaction. Its primary purpose is to allow a client to detect duplicate responses, whether the server previously downloaded the transaction.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxImageRef Property

TxImageRef Property (LoanStatement Class)

Server specified unique identifier for the transaction image.

Syntax

char* GetTxImageRef(int iTxIndex);

Default Value

""

Remarks

Server specified unique identifier for the transaction image.

This can be either image identifier (to be used during the request to retrieve the actual image when the GetImage method is called) or URL, depending on the value of TxImageRefType.

Note: This is not applicable for credit card accounts.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxImageRefType Property

TxImageRefType Property (LoanStatement Class)

Type of retrieval method for actual transaction image.

Syntax

char* GetTxImageRefType(int iTxIndex);

Default Value

""

Remarks

Type of retrieval method for actual transaction image.

If TxImageRef is returned in the response, this can be either image identifier (to be used during the request for the image when the GetImage method is called) or a URL.

Possible values for TxImageRefType are:

Value | Meaning
OPAQUE | Requires the client to send a separate OFX request to access the image. The image can be retrieved by calling the GetImage method where TxImageRef will be the parameter value for this method.
URL | The image is accessed directly via the URL provided. The client will not provide authentication and will simply follow the URL provided.
FORMURL | The image is accessed directly via an encoded URL. The client will send authentication to the server.

Note: This is not applicable for credit card accounts.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxInterest Property

TxInterest Property (LoanStatement Class)

This is the amount of payment applied to Interest.

Syntax

char* GetTxInterest(int iTxIndex);

Default Value

""

Remarks

This is the amount of payment applied to Interest.

This is applicable to loan statements only.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxMemo Property

TxMemo Property (LoanStatement Class)

The memo property stores a notice from the payee to the customer as a string.

Syntax

char* GetTxMemo(int iTxIndex);

Default Value

""

Remarks

The memo property stores a notice from the payee to the customer as a string.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxPayeeName Property

TxPayeeName Property (LoanStatement Class)

If this property has a value, the NAME element replaces the entire PAYEE aggregate in the request XML.

Syntax

char* GetTxPayeeName(int iTxIndex);

Default Value

""

Remarks

If this property has a value, the NAME element replaces the entire PAYEE aggregate in the request XML.

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxPrincipal Property

TxPrincipal Property (LoanStatement Class)

This is the amount of payment applied to Principal.

Syntax

char* GetTxPrincipal(int iTxIndex);

Default Value

""

Remarks

This is the amount of payment applied to Principal.

This is applicable to loan statements only.

Note: the financial institution usually returns amounts as a string that includes the sign (+/-) of the amount. However, the server may sometimes leave out a particular property if it is not required by the OFX specification. To avoid confusion that can be caused by returning integers, the class will return all amount types as a string, with the empty string ("") for properties not returned by the server.

Where there is a value returned by the server, the class will attempt to convert the string into a format that can be easily parsed into an integer value. This behavior can be controlled by the CurrencyFormat config setting. .

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


TxType Property

TxType Property (LoanStatement Class)

This is the type of transaction that was made on the account.

Syntax

int GetTxType(int iTxIndex);

Possible Values

  TT_CREDIT(0),
  TT_DEBIT(1),
  TT_INTEREST(2),
  TT_DIVIDEND(3),
  TT_FIFEE(4),
  TT_SERVICE_CHARGE(5),
  TT_DEPOSIT(6),
  TT_ATM(7),
  TT_POINT_OF_SALE(8),
  TT_TRANSFER(9),
  TT_CHECK(10),
  TT_PAYMENT(11),
  TT_CASH(12),
  TT_DIRECT_DEPOSIT(13),
  TT_DIRECT_DEBIT(14),
  TT_REPEAT_PAYMENT(15),
  TT_LATE_FEE(16),
  TT_ADVANCE(17),
  TT_BALLOON(18),
  TT_OTHER(255)

Default Value

0

Remarks

This is the type of transaction that was made on the account. The effect on the account balance depends upon the sign of the amount, not upon the value of this transaction.

For example, if the amount is negative and the type is a credit, a negative credit is applied to the account. If the amount is negative and the type is debit, the amount is still debited from the account. A positive amount indicates the addition of money to the account, regardless of the type.

The types and their meanings are as follows:

ttCredit (0) | Generic credit
ttDebit (1) | Generic debit
ttInterest (2) | Interest earned or paid (note: depends on signage of amount)
ttDividend (3) | Dividend
ttFIFee (4) | FI fee
ttServiceCharge (5) | Service charge
ttDeposit (6) | Deposit
ttATM (7) | ATM debit or credit (note: depends on signage of amount)
ttPointOfSale (8) | Point of sale debit or credit (note: depends on signage of amount)
ttTransfer (9) | Transfer
ttCheck (10) | Check
ttPayment (11) | Payment
ttCash (12) | Cash withdrawal
ttDirectDeposit (13) | Direct deposit
ttDirectDebit (14) | Merchant initiated debit
ttRepeatPayment (15) | Repeating payment/standing order
ttLateFee (16) | Late Fee (note: applicable to loan accounts only)
ttAdvance (17) | Cash Advance which adds to Principal Balance (note: applicable to loan accounts only)
ttBalloon (18) | Payment of Balloon Amount (note: applicable to loan accounts only)
ttOther (255) | Other (note: see TxMemo for a possible transaction description)

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

Integer


TxTypeDescription Property

TxTypeDescription Property (LoanStatement Class)

A description of the transaction type.

Syntax

char* GetTxTypeDescription(int iTxIndex);

Default Value

"Credit"

Remarks

A description of the transaction type. This is a string representation of the value returned by the TxType property.

The values translate as follows:

The types and their meanings are as follows:

ttCredit (0) | Credit
ttDebit (1) | Debit
ttInterest (2) | Interest
ttDivident (3) | Dividend
ttFIFee (4) | FI Fee
ttServiceCharge (5) | Service Charge
ttDeposit (6) | Deposit
ttATM (7) | ATM
ttPointOfSale (8) | Point of Sale
ttTransfer (9) | Transfer
ttCheck (10) | Check
ttPayment (11) | Payment
ttCash (12) | Cash Withdrawal
ttDirectDeposit (13) | Direct Deposit
ttDirectDebit (14) | Direct Debit
ttRepeatPayment (15) | Repeat Payment
ttLateFee (16) | Late Fee (note: applicable to loan accounts only)
ttAdvance (17) | Cash Advance which adds to Principal Balance (note: applicable to loan accounts only)
ttBalloon (18) | Payment of Balloon Amount (note: applicable to loan accounts only)
ttOther (255) | Other

The size of the array is controlled by the TxCount property.

This property is read-only and not available at design time.

Data Type

String


Config Method

Config Method (LoanStatement Class)

Sets or retrieves a configuration setting.

Syntax

 char* Config(char* lpszConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.


GetClosingInfo Method

GetClosingInfo Method (LoanStatement Class)

Download a statement closing information for a bank account.

Syntax

 int GetClosingInfo();

Remarks

This function generates the Signon and Loan Statement Closing Information request page, submits it to the financial institution via secure HTTPS Post, receives and parses the closing loan statement information (that typically appears as part of a paper statement).

This information includes opening and closing dates and balances for a statement period, as well as a detailed breakdown of debits, credits, fees, and interest that are usually part of a paper statement. In addition to this information, you will also receive a date range for transactions that correspond to the closing statement. You can use this date range to retrieve transactions through statement download request (by calling the GetStatement method).

The following properties should be set when this method is called:

  • FIId (required)
  • FIOrganization (required)
  • FIUrl (required)
  • OFXAppId (required)
  • OFXAppVersion (required)
  • OFXVersion (required if 2.x OFX version is the one supported by your FI)
  • OFXUser (required)
  • OFXPassword (required)
  • AccountId (required)
  • AccountType (required)

The client can also specify a date range (by setting the StartDate and EndDate properties) to limit the number of closing information aggregates that the server returns. If the client does not specify a date range, the server returns as many closing information aggregates as it can (which will be stored in ClosingDetails).

If you want the server to return an image reference for each loan statement closing information, and if the server supports this service, you will have to set the IncludeImages to True.

The following read-only properties are populated as a result of parsing the statement response:

  • CurrencyCode
  • ClosingDetails

Note: Loan Statement Closing Information Download is supported only in OFX Versions 2.1.0 and 2.1.1. If your FI does not support this OFX version, then you will not be able to use this method.


GetImage Method

GetImage Method (LoanStatement Class)

Request and retrieve a check or statement image (if available).

Syntax

 char* GetImage(char* lpszImageRef, char* lpszImageRefType, int *lpSize = NULL);

Remarks

This function generates the Signon and Download Image request page, submits it to the financial institution via secure HTTPS Post.

The requested image of a check or statement closing information is identified by ImageRef parameter. The type of this image reference should be specified by ImageRefType parameter.

Possible values and their meanings for the ImageRefType parameter are:

OPAQUE (default value) | The class will send an OFX request to access this image. This request will be in the form of a normal OFX request (complete with Signon) and the login credentials are required to authenticate the client. However, whereas the request file contains typical OFX syntax, the successful response returned is in the form of raw bytes. If a failure condition occurs, the class will return an error with a specific message.
URL | The URL identifies a service on an FI server that can accept an image request and produce a response. The class issues an HTTP request (over SSL) to the URL specified by the ImageRef parameter. The client will then authenticate. Once this authentication takes place, the image can be displayed
FORMURL | The class issues an HTTP request (over SSL), with encoded data specified in the URL retrieved from the ImageRef parameter. The image can then be displayed.

If you want the server to return image references for each transaction or statement closing information, and if the server supports image download service via OFX, you will have to set the IncludeImages to True when either GetStatement or GetClosingInfo method is called.

If available, then you can access that particular image by calling the GetImage method, where ImageRef parameter value is set to the image reference stored in TxImageRef (or ClosingDetailImageRef) and the ImageRefType parameter is set to the respective TxImageRefType (or ClosingDetailImageRefType) corresponding to the requested check or statement.

Upon successful response, the image content will be returned by this method. If you want the image to be saved to a file, you can set the ImageFileName to a desired name without specifying the type. The file type will be set automatically depending on the image type supported by the server. Possible image types are: jpeg, tiff, png, pdf.

Otherwise, the class will throw an error.

Image download is available only for OFX version 2.1.1. When this method is called, the OFXVersion is automatically set to '211'.

Note: Clients may request images in statement download and/or closing requests in various message sets. But not all FIs support image download. Prior to requesting these images, clients must verify that support exists on the server for image download. This is indicated by the presence of the IMAGEMSGSET aggregate in the profile response, as well as the IMAGEPROF aggregate in the profile response for the specific message set in question.

For instance, if a client wishes to request transaction images in the banking statement download request, the client must verify the presence of IMAGEMSGSET in the profile as well as transaction image support in the IMAGEPROF aggregate in the BANKMSGSET in the profile. Image download requests are allowed only in OFX 2.1.1 in the Banking, Credit Card, Loan and Investments message sets.

To verify whether your FI supports this service, you should check its profile (by calling the GetProfile method in FIProfile class) and check the values of FIMessageSetTxImage and FIMessageSetClosingInfoImage for each message set (bank, credit card, loan and investment).


GetStatement Method

GetStatement Method (LoanStatement Class)

Download a loan statement.

Syntax

 int GetStatement();

Remarks

This function generates the Signon and Loan Statement request page, submits it to the financial institution via secure HTTPS Post, receives and parses the loan statement. Individual transactions are downloaded with the statement.

The following properties should be set when this method is called:

  • FIId (required)
  • FIOrganization (required)
  • FIUrl (required)
  • OFXAppId (required)
  • OFXAppVersion (required)
  • OFXVersion (required if 2.x OFX version is the one supported by your FI)
  • OFXUser (required)
  • OFXPassword (required)
  • AccountId (required)
  • AccountType (required)

You may constrain this transaction list by setting the StartDate and EndDate properties. The server will use default values if no dates are supplied.

If you want the server to return image references for each transaction, and if the server supports this service, you will have to set the IncludeImages to True.

The following read-only properties are populated as a result of parsing the statement response:

  • AvailableBalance
  • AvailableBalanceDate
  • PrincipalBalance
  • PrincipalBalanceDate
  • TotalPrincipalYTD
  • TotalPrincipalLTD
  • CurrencyCode
  • Transactions

Note: Loan Statement Download is supported only in OFX Versions 2.1.0 and 2.1.1. If your FI does not support this OFX version, then you will not be able to use this method.


ReadOFXDataFile Method

ReadOFXDataFile Method (LoanStatement Class)

Reads an OFX response from a file.

Syntax

 int ReadOFXDataFile(char* lpszFileName);

Remarks

This method reads a previously recorded OFX response from a file, including HTTP and OFX headers.

The following read-only properties are populated as a result of parsing the data file:

  • AvailableBalance
  • AvailableBalanceDate
  • PrincipalBalance
  • PrincipalBalanceDate
  • TotalPrincipalYTD
  • TotalPrincipalLTD
  • CurrencyCode
  • Transactions
  • ClosingDetails


Reset Method

Reset Method (LoanStatement Class)

Reset the internal state of the component and all properties to their default values.

Syntax

 int Reset();

Remarks

The Reset method does not have any parameters and does not return any value.


WriteOFXDataFile Method

WriteOFXDataFile Method (LoanStatement Class)

Writes the OFX response sent by the server to a file.

Syntax

 int WriteOFXDataFile(char* lpszFileName);

Remarks

This method records the entire OFX response, including HTTP and OFX headers to a file. This file can later be read and parsed by the ReadOFXDataFile method as though it were a live response.


ConnectionStatus Event

ConnectionStatus Event (LoanStatement Class)

Fired to indicate changes in connection state.

Syntax

 virtual int FireConnectionStatus(LoanStatementConnectionStatusEventParams *e);

 typedef struct {

  char* ConnectionEvent;
  int StatusCode;
  char* Description;

  int reserved;

 } LoanStatementConnectionStatusEventParams;

Remarks

The ConnectionStatus event is fired when the connection state changes: completion of a firewall or proxy connection, completion of a security handshake, etc.

The ConnectionEvent parameter indicates the type of connection event. Values may include:

Firewall connection complete.
SSL or S/Shell handshake complete (where applicable).
Remote host connection complete.
Remote host disconnected.
SSL or S/Shell connection broken.
Firewall host disconnected.

StatusCode has the error code returned by the TCP/IP stack. Description contains a description of this code. The value of StatusCode is equal to the value of the error.


Error Event

Error Event (LoanStatement Class)

Information about errors during data delivery.

Syntax

 virtual int FireError(LoanStatementErrorEventParams *e);

 typedef struct {

  int ErrorCode;
  char* Description;

  int reserved;

 } LoanStatementErrorEventParams;

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Messages section.


SSLServerAuthentication Event

SSLServerAuthentication Event (LoanStatement Class)

Fired after the server presents its certificate to the client.

Syntax

 virtual int FireSSLServerAuthentication(LoanStatementSSLServerAuthenticationEventParams *e);

 typedef struct {

  char* CertEncoded;
  char* CertSubject;
  char* CertIssuer;
  char* Status;
  int Accept;

  int lenCertEncoded;
  int reserved;

 } LoanStatementSSLServerAuthenticationEventParams;

Remarks

This event is where the client can decide whether to continue with the connection process or not. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether to continue or not.

When Accept is False, Status shows why the verification failed (otherwise, Status contains the string "OK"). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.


SSLStatus Event

SSLStatus Event (LoanStatement Class)

Shows the progress of the secure connection.

Syntax

 virtual int FireSSLStatus(LoanStatementSSLStatusEventParams *e);

 typedef struct {

  char* Message;

  int reserved;

 } LoanStatementSSLStatusEventParams;

Remarks

The event is fired for informational and logging purposes only. Used to track the progress of the connection.


LoanStatement Configuration

Configuration Settings (LoanStatement Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

LoanStatement Configuration Settings

Overwrite: Determines whether image files will be overwritten.

If True (default value) the check or statement image files are overwritten. Otherwise, an error is returned if the file exist.

MarketingInfo: Marketing information regarding the current loan.

This is optional to be returned in the server response when a loan statement download request has been sent. If present, the client might find this information useful as it is relevant to the current loan.

OFX Configuration Settings

CurrencyFormat: The format to be used for returning currency values.

If this is set to a non-empty string, the class will attempt to use the value as a pattern to format all currency strings returned from the server. You may use any of the system's default number formatting strings.

OFXDateFormat: The date format as required by OFX FI server.

Most of OFX FI servers, accept the default format, where the offset (G) and timezone (Z) are specified. However, there might still be some servers that do not accept that part. In such cases, you will have to set the OFXDateFormat to "YYYYMMddHHmmss.xxx" and GMT will be assumed as the default value.

Your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat (format that OFX FI server recognizes) right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

DateFormat: The format to be used for input and output dates.

This format is used for input and output dates. You may use any of the system's default date formatting strings.

When submitting the request: all your input dates should be entered in a format specified by DateFormat and the class will convert those to OFXDateFormat right before sending the request.

For example, if you set a date to '2000.01.01' (by first setting the DateFormat to 'yyyy.MM.dd'), for a EST timezone, the class will convert it to '20000101000000.000[-5:EST]' (format specified by OFXDateFormat).

When parsing the response: if DateFormat is set to a non-empty string, the class will attempt to use the value as a pattern to format all date strings as they are returned. Otherwise, the system's default value will be used for formatting.

If the DateFormat is set to the special value "OFXDATE": During input:, any values you supply to date properties are passed to the server directly with no changes; During output: all dates will be returned in the OFX format as it was provided by the server without performing any modifications.

GetResponseVar: Parses additional information out of the response.

Any additional response information contained within the OFX response that is not available via the Response fields, may be retrieved with this GetResponseVar config.

To obtain a response value, pass the XPath to the value you wish to receive. For instance, if the OFX response contains:

    "<OFX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0<SEVERITY>INFO</STATUS><DTSERVER>20120104223836.575<LANGUAGE>ENG"

Then calling GetResponseVar("/OFX/SIGNONMSGSRVSV1/LANGUAGE") will return "ENG".

NewPassword: New password for the current OFX user.

Setting NewPassword to a non-empty value will cause the class to issue a password change request during sign-on along with the regular current OFX request. After the request is sent, this value will be cleared.

The correct current password is needed as well during signon request and must be supplied through the OFXPassword. Upon successful reply from the server, the NewPassword used becomes the new password.

OFXLog: Log file for the OFX transaction.

This setting records the OFX communication, but without including HTTP headers, to a file.

Please note that ReadOFXDataFile will not be able to parse this file because of the OFX request content present. If only the response of the server is required, please look at the WriteOFXDataFile method instead.

ServerMessage: Server message if a warning or other information returned.

When sending a transaction request to a FI, their server with return either a successful reply or an error. However, even when a transaction is successful, a warning or other server messages might still be returned and are to be treated as informational notes only.

ClientUId: Unique ID identifying OFX Client.

In the profile response, if SignOnClientUIdReq is True, then ClientUId should be set and included in all future requests.

UserCred1A: Additional user credential required by server.

In the profile response, if SignOnUserCred1Q is present, then UserCred1A should be set (as the answer to question identified by SignOnUserCred1Q) and it should be included in all future requests as part of the signon.

UserCred2A: Additional user credential required by server.

In the profile response, if SignOnUserCred2Q is present, then UserCred2A should be set (as the answer to question identified by SignOnUserCred2Q) and it should be included in all future requests as part of the signon.

AuthToken: Authentication token required for this signon session only.

This credential is provided to the user out of band.

In the profile response, if SignOnAuthTokenFirst is True, then AuthToken should be sent in the very first signon.

CorrectFITID[i]: The FITID of a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the FITID of a previously sent transaction that is corrected by this record. Based on the value of CorrectAction[i], this transaction replaces or deletes the transaction that it corrects. This is applicable to statement download components only.

CorrectAction[i]: The action taken to a previously sent transaction corrected by the current one.

If present in the list of transactions response, this represents the action taken to a previously sent transaction that is corrected by this record. Possible values are: REPLACE or DELETE. REPLACE replaces the transaction that it corrects referenced by CorrectFITID[i]. DELETE deletes it. This is applicable to statement download components only.

HTTP Configuration Settings

AcceptEncoding: Used to tell the server which types of content encodings the client supports.

When AllowHTTPCompression is true, the class adds an "Accept-Encoding: " header to the request being sent to the server. By default, this header's value is "gzip, deflate". This config allows you to change the value of the "Accept-Encoding" header. NOTE: The class only supports gzip and deflate decompression algorithms.

AllowHTTPCompression: This property enables HTTP compression for receiving data.

This is the same as the AllowHTTPCompression property. This setting is exposed here for use by classs that inherit from HTTP.

Authorization: The Authorization string to be sent to the server.

If the Authorization property contains a non-empty string, an Authorization HTTP request header is added to the request. This header conveys Authorization information to the server.

This property is provided so that the HTTP class can be extended with other security schemes in addition to the authorization schemes already implemented by the class.

The AuthScheme property defines the authentication scheme used. In the case of HTTP Basic Authentication (default), every time User and Password are set, they are Base64 encoded, and the result is put in the Authorization property in the form "Basic [encoded-user-password]".

BytesTransferred: Contains the number of bytes transferred in the response data.

Returns the raw number of bytes from the HTTP response data, prior to the component processing the data, whether it is chunked and/or compressed. This returns the same value as the Transfer event, by BytesTransferred.

EncodeURL: If set to true the URL will be encoded by the class.

The default value is false. If set to true the URL passed to the class will be URL encoded.

FollowRedirects: Determines what happens when the server issues a redirect.

This option determines what happens when the server issues a redirect. Normally, the class returns an error if the server responds with an "Object Moved" message. If this property is set to 1 (always), the new URL for the object is retrieved automatically every time.

If this property is set to 2 (Same Scheme), the new URL is retrieved automatically only if the URL Scheme is the same, otherwise the class fails with an error.

Note that following the HTTP specification, unless this option is set to 1 (Always), automatic redirects will be performed only for 'GET' or 'HEAD' requests. Other methods could potentially change the conditions of the initial request and create security vulnerabilities.

Furthermore, if either the new URL server and port are different than the existing one, User and Password are also reset to empty, unless this property is set to 1 (Always), in which case the same credentials are used to connect to the new server.

A Redirect event is fired for every URL the product is redirected to. In the case of automatic redirections, the Redirect event is a good place to set properties related to the new connection (e.g. new authentication parameters).

The default value is 0 (Never). In this case, redirects are never followed, and the class fails with an error instead.

Valid options are:

  • 0 - Never
  • 1 - Always
  • 2 - Same Scheme

GetOn302Redirect: If set to true the class will perform a GET on the new location.

The default value is false. If set to true the class will perform a GET on the new location. Otherwise it will use the same HTTP method again.

HTTPVersion: The version of HTTP used by the class.

Possible values include "1.0", and "1.1". The default is "1.1".

IfModifiedSince: A date determining the maximum age of the desired document.

This is the same as the IfModifiedSince property. This setting is exposed here for use by classs that inherit from HTTP.

KeepAlive: Determines whether the HTTP connection is closed after completion of the request.

If true, the component will not send the 'Connection: Close' header. The absence of the Connection header indicates to the server that HTTP persistent connections should be used if supported. Note that not all server support persistent connections. You may also explicitly add the Keep-Alive header to the request headers by setting OtherHeaders to 'Connection: Keep-Alive'. If false, the connection will be closed immediately after the server response is received.

The default value for KeepAlive is false.

MaxRedirectAttempts: Limits the number of redirects that are followed in a request.

When FollowRedirects is set to any value besides frNever the class will follow redirects until this maximum number of redirect attempts are made. The default value is 20.

OtherHeaders: Other headers as determined by the user (optional).

This configuration option can be set to a string of headers to be appended to the HTTP request headers.

The headers must be of the format "header: value" as described in the HTTP specifications. Header lines should be separated by CRLF ("\r\ n") .

Use this configuration option with caution. If this configuration option contains invalid headers, HTTP requests may fail.

This configuration option is useful for extending the functionality of the class beyond what is provided.

ProxyAuthorization: The authorization string to be sent to the proxy server.

Similar to the Authorization config, but for proxy authorization. If this config contains a non-empty string, a Proxy-Authorization HTTP request header is added to the request. This header conveys proxy authorization information to the server. If ProxyUser and ProxyPassword are specified, this value is calculated using the algorithm specified by ProxyAuthScheme.

ProxyAuthScheme: The authorization scheme to be used for the proxy.

This is the same as ProxyAuthScheme. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPassword: A password if authentication is to be used for the proxy.

This is the same as ProxyPassword. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyPort: Port for the proxy server (default 80).

This is the same as ProxyPort. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyServer: Name or IP address of a proxy server (optional).

This is the same as ProxyServer. This setting is provided for use by classs that do not directly expose Proxy properties.

ProxyUser: A user name if authentication is to be used for the proxy.

This is the same as ProxyUser. This setting is provided for use by classs that do not directly expose Proxy properties.

TransferredDataLimit: The maximum number of incoming bytes to be stored by the class.

If TransferredDataLimit is set to 0 (default), no limits are imposed. Otherwise this reflects the maximum number of incoming bytes that can be stored by the class. If TransferredDataLimit is set to 0, no limits are imposed.

UseChunkedEncoding: Enables or Disables HTTP chunked encoding for transfers.

If UseChunkedEncoding is set to true, the class will use HTTP chunked encoding when posting if possible. HTTP chunked encoding allows large files to be sent in chunks instead of all at once. If set to false, the class will not use HTTP chunked encoding. The default value is false.

Note: Some servers (such as the ASP.NET Development Server) may not support chunked encoding.

ChunkSize: Specifies the chunk size in bytes when using chunked encoding.

This is only applicable when UseChunkedEncoding is true. This setting specifies the chunk size in bytes to be used when posting data. The default value is 16384.

UsePlatformHTTPClient: Whether or not to use the platform HTTP client.

If True, the component will use the default HTTP client for the platform (URLConnection in Java or WebRequest in .NET) instead of the internal HTTP implementation. This is important for environments where direct access to sockets is limited or not allowed (as in the Google AppEngine for instance).

UserAgent: Information about the user agent (browser).

This is the value supplied in the HTTP User-Agent header. The default setting is "/n software IPWorks HTTP/S Component - www.nsoftware.com".

Override the default with the name and version of your software.

KerberosSPN: The Service Principal Name for the Kerberos Domain Controller.

If the Service Principal Name on the Kerberos Domain Controller is not the same as the URL that you are authenticating to, the Service Principal Name should be set here.

IPPort Configuration Settings

FirewallAutoDetect: Tells the class whether or not to automatically detect and use firewall system settings, if available.

This is the same as FirewallAutoDetect. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallHost: Name or IP address of firewall (optional).

If a FirewallHost is given, requested connections will be authenticated through the specified firewall when connecting.

If the FirewallHost setting is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, the FirewallHost setting is set to the corresponding address. If the search is not successful, an error is returned.

NOTE: This is the same as FirewallHost. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPassword: Password to be used if authentication is to be used when connecting through the firewall.

If FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallPassword. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallPort: The TCP port for the FirewallHost;.

Note that the FirewallPort is set automatically when FirewallType is set to a valid value.

NOTE: This is the same as FirewallPort. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallType: Determines the type of firewall to connect through.

The appropriate values are as follows:

0 | No firewall (default setting).
1 | Connect through a tunneling proxy. FirewallPort is set to 80.
2 | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
3 | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

NOTE: This is the same as FirewallType. This setting is provided for use by classs that do not directly expose Firewall properties.

FirewallUser: A user name if authentication is to be used connecting through a firewall.

If the FirewallHost is specified, the FirewallUser and FirewallPassword settings are used to connect and authenticate to the Firewall. If the authentication fails, the class fails with an error.

NOTE: This is the same as FirewallUser. This setting is provided for use by classs that do not directly expose Firewall properties.

KeepAliveTime: The inactivity time in milliseconds before a TCP keep-alive packet is sent.

When set, TCPKeepAlive will automatically be set to true. By default the operating system will determine the time a connection is idle before a TCP keep-alive packet is sent. This system default if this value is not specified here is 2 hours. In many cases a shorter interval is more useful. Set this value to the desired interval in milliseconds.

Note: This value is not applicable in Java.

KeepAliveInterval: The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.

When set, TCPKeepAlive will automatically be set to true. A TCP keep-alive packet will be sent after a period of inactivity as defined by KeepAliveTime. If no acknowledgement is received from the remote host the keep-alive packet will be re-sent. This setting specifies the interval at which the successive keep-alive packets are sent in milliseconds. This system default if this value is not specified here is 1 second.

Note: This value is not applicable in Java or MAC.

Linger: When set to True, connections are terminated gracefully.

This property controls how a connection is closed. The default is True.

In the case that Linger is True (default), there are two scenarios for determining how long the connection will linger. The first, if LingerTime is 0 (default), the system will attempt to send pending data for a connection until the default IP protocol timeout expires.

In the second scenario, LingerTime is a positive value, the system will attempt to send pending data until the specified LingerTime is reached. If this attempt fails, then the system will reset the connection.

The default behavior (which is also the default mode for stream sockets) might result in a long delay in closing the connection. Although the class returns control immediately, the system could hold system resources until all pending data is sent (even after your application closes).

Setting this property to False forces an immediate disconnection. If you know that the other side has received all the data you sent (by a client acknowledgment, for example), setting this property to False might be the appropriate course of action.

LingerTime: Time in seconds to have the connection linger.

LingerTime is the time, in seconds, to leave the socket connection linger. This value is 0 by default, which means it will use the default IP protocol timeout.

LocalHost: The name of the local host through which connections are initiated or accepted.

The LocalHost setting contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.

In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the class initiate connections (or accept in the case of server classs) only through that interface.

If the class is connected, the LocalHost setting shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).

LocalPort: The TCP port in the local host where the class binds.

This must be set before a connection is attempted. It instructs the class to bind to a specific port (or communication endpoint) in the local machine.

Setting this to 0 (default) enables the system to choose a port at random. The chosen port will be shown by LocalPort after the connection is established.

LocalPort cannot be changed once a connection is made. Any attempt to set this when a connection is active will generate an error.

This; setting is useful when trying to connect to services that require a trusted port in the client side. An example is the remote shell (rsh) service in UNIX systems.

MaxLineLength: The maximum amount of data to accumulate when no EOL is found.

MaxLineLength is the size of an internal buffer, which holds received data while waiting for an EOL string.

If an EOL string is found in the input stream before MaxLineLength bytes are received, the DataIn event is fired with the EOL parameter set to True, and the buffer is reset.

If no EOL is found, and MaxLineLength bytes are accumulated in the buffer, the DataIn event is fired with the EOL parameter set to False, and the buffer is reset.

The minimum value for MaxLineLength is 256 bytes. The default value is 2048 bytes. The maximum value is 65536 bytes.

MaxTransferRate: The transfer rate limit in bytes per second.

This setting can be used to throttle outbound TCP traffic. Set this to the number of bytes to be sent per second. By default this is not set and there is no limit.

TCPKeepAlive: Determines whether or not the keep alive socket option is enabled.

If set to true, the socket's keep-alive option is enabled and keep-alive packets will be sent periodically to maintain the connection. Set KeepAliveTime and KeepAliveInterval to configure the timing of the keep-alive packets.

Note: This value is not applicable in Java.

UseIPv6: Whether or not to use IPv6.

By default, the component expects an IPv4 address for local and remote host properties, and will create an IPv4 socket. To use IPv6 instead, set this to True.

TcpNoDelay: Whether or not to delay when sending packets.

When true, the socket will send all data that is ready to send at once. When false, the socket will send smaller buffered packets of data at small intervals. This is known as the Nagle algorithm.

By default, this config is set to false.

SSL Configuration Settings

ReuseSSLSession: Determines if the SSL session is reused.

If set to true, the component will reuse the context if and only if the following criteria are met:

  • The target host name is the same.
  • The system cache entry has not expired (default timeout is 10 hours).
  • The application process that calls the function is the same.
  • The logon session is the same.
  • The instance of the component is the same.

SSLCipherStrength: The minimum cipher strength used for bulk encryption.

This minimum cipher strength largely dependent on the security modules installed on the system. If the cipher strength specified is not supported, an error will be returned when connections are initiated.

Please note that this setting contains the minimum cipher strength requested from the security library. The actual cipher strength used for the connection is shown by the SSLStatus event.

Use this setting with caution. Requesting a lower cipher strength than necessary could potentially cause serious security vulnerabilities in your application.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

SSLEnabledProtocols: Used to enable/disable the supported security protocols.

Used to enable/disable the supported security protocols.

Not all supported protocols are enabled by default (the value of this setting is 240). If you want more granular control over the enabled protocols, you can set this property to the binary 'OR' of one or more of the following values:

TLS1.2 | 3072 (Hex C00)
TLS1.1 | 768 (Hex 300)
TLS1 | 192 (Hex C0) (Default)
SSL3 | 48 (Hex 30) (Default)
SSL2 | 12 (Hex 0C)

Please note that although a number of sites still support SSL2, it is usually a good idea to disable it because of potential security vulnerabilities.

When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList config setting.

TLS 1.1 and TLS1.2 support are only available starting with Windows 7.

SSLProvider: The name of the security provider to use.

Change this setting to use security providers other than the system default.

Use this setting with caution. Disabling SSL security or pointing to the wrong provider could potentially cause serious security vulnerabilities in your application.

The special value "*" (default) picks the default SSL provider defined in the system. On Windows, this is "Microsoft Unified Security Protocol Provider".

SSLSecurityFlags: Flags that control certificate verification.

The following flags are defined (specified in hexadecimal notation). They can be or-ed together to exclude multiple conditions:

0x00000001 | Ignore time validity status of certificate.
0x00000002 | Ignore time validity status of CTL.
0x00000004 | Ignore non-nested certificate times.
0x00000010 | Allow unknown Certificate Authority.
0x00000020 | Ignore wrong certificate usage.
0x00000100 | Ignore unknown certificate revocation status.
0x00000200 | Ignore unknown CTL signer revocation status.
0x00000400 | Ignore unknown Certificate Authority revocation status.
0x00000800 | Ignore unknown Root revocation status.
0x00008000 | Allow test Root certificate.
0x00004000 | Trust test Root certificate.
0x80000000 | Ignore non-matching CN (certificate CN not-matching server name).

This functionality is currently not available when the provider is OpenSSL.

OpenSSLCADir: The path to a directory containing CA certificates.

This functionality is available only when the provider is OpenSSL.

The path set by this property should point to a directory containing CA certificates in PEM format. The files each contain one CA certificate. The files are looked up by the CA subject name hash value, which must hence be available. If more than one CA certificate with the same name hash value exist, the extension must be different (e.g. 9d66eef0.0, 9d66eef0.1 etc). OpenSSL recommends to use the c_rehash utility to create the necessary links. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCAFile: Name of the file containing the list of CA's trusted by your application.

This functionality is available only when the provider is OpenSSL.

The file set by this property should contain a list of CA certificates in PEM format. The file can contain several CA certificates identified by

-----BEGIN CERTIFICATE-----

... (CA certificate in base64 encoding) ...

-----END CERTIFICATE-----

sequences. Before, between, and after the certificates text is allowed which can be used e.g. for descriptions of the certificates. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.

OpenSSLCipherList: A string that controls the ciphers to be used by SSL.

This functionality is available only when the provider is OpenSSL.

The format of this string is described in the OpenSSL man page ciphers(1) section "CIPHER LIST FORMAT". Please refer to it for details. The default string "DEFAULT" is determined at compile time and is normally equivalent to "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH".

OpenSSLPrngSeedData: The data to seed the pseudo random number generator (PRNG).

This functionality is available only when the provider is OpenSSL.

By default OpenSSL uses the device file "/dev/urandom" to seed the PRNG and setting OpenSSLPrngSeedData is not required. If set, the string specified is used to seed the PRNG.

SSLAlgorithmList: A string that controls the cipher algorithms to be used by SSL.

This configuration option takes a semicolon (;) delimited list of cipher algorithms to specify what algorithms may be used by SSL. This option can be used in conjunction with SSLEnabledProtocols to control which ciphers are used.

For example:

  obj.Config("SSLEnabledProtocols=3027"); // TLS1.2  (it supports SHA_256)
  obj.Config("SSLAlgorithmList=CALG_SHA_256;CALG_MD5");
Possible values include:
  • CALG_3DES
  • CALG_3DES_112
  • CALG_AES
  • CALG_AES_128
  • CALG_AES_192
  • CALG_AES_256
  • CALG_AGREEDKEY_ANY
  • CALG_CYLINK_MEK
  • CALG_DES
  • CALG_DESX
  • CALG_DH_EPHEM
  • CALG_DH_SF
  • CALG_DSS_SIGN
  • CALG_ECDH
  • CALG_ECDSA
  • CALG_ECMQV
  • CALG_HASH_REPLACE_OWF
  • CALG_HUGHES_MD5
  • CALG_HMAC
  • CALG_KEA_KEYX
  • CALG_MAC
  • CALG_MD2
  • CALG_MD4
  • CALG_MD5
  • CALG_NO_SIGN
  • CALG_OID_INFO_CNG_ONLY
  • CALG_OID_INFO_PARAMETERS
  • CALG_PCT1_MASTER
  • CALG_RC2
  • CALG_RC4
  • CALG_RC5
  • CALG_RSA_KEYX
  • CALG_RSA_SIGN
  • CALG_SCHANNEL_ENC_KEY
  • CALG_SCHANNEL_MAC_KEY
  • CALG_SCHANNEL_MASTER_HASH
  • CALG_SEAL
  • CALG_SHA
  • CALG_SHA1
  • CALG_SHA_256
  • CALG_SHA_384
  • CALG_SHA_512
  • CALG_SKIPJACK
  • CALG_SSL2_MASTER
  • CALG_SSL3_MASTER
  • CALG_SSL3_SHAMD5
  • CALG_TEK
  • CALG_TLS1_MASTER
  • CALG_TLS1PRF

This option is only valid in Windows.

Socket Configuration Settings

AbsoluteTimeout: Determines whether timeouts are inactivity timeouts or absolute timeouts.

If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.

Note: This option is not valid for UDP ports.

FirewallData: Used to send extra data to the firewall.

When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).

InBufferSize: The size in bytes of the incoming queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be receiving. Increasing the value of the InBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

OutBufferSize: The size in bytes of the outgoing queue of the socket.

This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be sending. Increasing the value of the OutBufferSize setting can provide significant improvements in performance in some cases.

Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the class is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.

Base Configuration Settings

SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

Base Configuration Settings

CodePage: The system code page used for Unicode to Multibyte translations.

The default code page is the Active Code Page (0).

The following is a list of valid code page identifiers:

Identifier | Name
037 | IBM EBCDIC - U.S./Canada
437 | OEM - United States
500 | IBM EBCDIC - International
708 | Arabic - ASMO 708
709 | Arabic - ASMO 449+, BCON V4
710 | Arabic - Transparent Arabic
720 | Arabic - Transparent ASMO
737 | OEM - Greek (formerly 437G)
775 | OEM - Baltic
850 | OEM - Multilingual Latin I
852 | OEM - Latin II
855 | OEM - Cyrillic (primarily Russian)
857 | OEM - Turkish
858 | OEM - Multlingual Latin I + Euro symbol
860 | OEM - Portuguese
861 | OEM - Icelandic
862 | OEM - Hebrew
863 | OEM - Canadian-French
864 | OEM - Arabic
865 | OEM - Nordic
866 | OEM - Russian
869 | OEM - Modern Greek
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2)
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875 | IBM EBCDIC - Modern Greek
932 | ANSI/OEM - Japanese, Shift-JIS
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore)
949 | ANSI/OEM - Korean (Unified Hangeul Code)
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026 | IBM EBCDIC - Turkish (Latin-5)
1047 | IBM EBCDIC - Latin 1/Open System
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141 | IBM EBCDIC - Germany (20273 + Euro symbol)
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144 | IBM EBCDIC - Italy (20280 + Euro symbol)
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147 | IBM EBCDIC - France (20297 + Euro symbol)
1148 | IBM EBCDIC - International (500 + Euro symbol)
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 | Unicode UCS-2 Big-Endian
1250 | ANSI - Central European
1251 | ANSI - Cyrillic
1252 | ANSI - Latin I
1253 | ANSI - Greek
1254 | ANSI - Turkish
1255 | ANSI - Hebrew
1256 | ANSI - Arabic
1257 | ANSI - Baltic
1258 | ANSI/OEM - Vietnamese
1361 | Korean (Johab)
10000 | MAC - Roman
10001 | MAC - Japanese
10002 | MAC - Traditional Chinese (Big5)
10003 | MAC - Korean
10004 | MAC - Arabic
10005 | MAC - Hebrew
10006 | MAC - Greek I
10007 | MAC - Cyrillic
10008 | MAC - Simplified Chinese (GB 2312)
10010 | MAC - Romania
10017 | MAC - Ukraine
10021 | MAC - Thai
10029 | MAC - Latin II
10079 | MAC - Icelandic
10081 | MAC - Turkish
10082 | MAC - Croatia
12000 | Unicode UCS-4 Little-Endian
12001 | Unicode UCS-4 Big-Endian
20000 | CNS - Taiwan
20001 | TCA - Taiwan
20002 | Eten - Taiwan
20003 | IBM5550 - Taiwan
20004 | TeleText - Taiwan
20005 | Wang - Taiwan
20105 | IA5 IRV International Alphabet No. 5 (7-bit)
20106 | IA5 German (7-bit)
20107 | IA5 Swedish (7-bit)
20108 | IA5 Norwegian (7-bit)
20127 | US-ASCII (7-bit)
20261 | T.61
20269 | ISO 6937 Non-Spacing Accent
20273 | IBM EBCDIC - Germany
20277 | IBM EBCDIC - Denmark/Norway
20278 | IBM EBCDIC - Finland/Sweden
20280 | IBM EBCDIC - Italy
20284 | IBM EBCDIC - Latin America/Spain
20285 | IBM EBCDIC - United Kingdom
20290 | IBM EBCDIC - Japanese Katakana Extended
20297 | IBM EBCDIC - France
20420 | IBM EBCDIC - Arabic
20423 | IBM EBCDIC - Greek
20424 | IBM EBCDIC - Hebrew
20833 | IBM EBCDIC - Korean Extended
20838 | IBM EBCDIC - Thai
20866 | Russian - KOI8-R
20871 | IBM EBCDIC - Icelandic
20880 | IBM EBCDIC - Cyrillic (Russian)
20905 | IBM EBCDIC - Turkish
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932 | JIS X 0208-1990 & 0121-1990
20936 | Simplified Chinese (GB2312)
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027 | Extended Alpha Lowercase
21866 | Ukrainian (KOI8-U)
28591 | ISO 8859-1 Latin I
28592 | ISO 8859-2 Central Europe
28593 | ISO 8859-3 Latin 3
28594 | ISO 8859-4 Baltic
28595 | ISO 8859-5 Cyrillic
28596 | ISO 8859-6 Arabic
28597 | ISO 8859-7 Greek
28598 | ISO 8859-8 Hebrew
28599 | ISO 8859-9 Latin 5
28605 | ISO 8859-15 Latin 9
29001 | Europa 3
38598 | ISO 8859-8 Hebrew
50220 | ISO 2022 Japanese with no halfwidth Katakana
50221 | ISO 2022 Japanese with halfwidth Katakana
50222 | ISO 2022 Japanese JIS X 0201-1989
50225 | ISO 2022 Korean
50227 | ISO 2022 Simplified Chinese
50229 | ISO 2022 Traditional Chinese
50930 | Japanese (Katakana) Extended
50931 | US/Canada and Japanese
50933 | Korean Extended and Korean
50935 | Simplified Chinese Extended and Simplified Chinese
50936 | Simplified Chinese
50937 | US/Canada and Traditional Chinese
50939 | Japanese (Latin) Extended and Japanese
51932 | EUC - Japanese
51936 | EUC - Simplified Chinese
51949 | EUC - Korean
51950 | EUC - Traditional Chinese
52936 | HZ-GB2312 Simplified Chinese
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte)
57002 | ISCII Devanagari
57003 | ISCII Bengali
57004 | ISCII Tamil
57005 | ISCII Telugu
57006 | ISCII Assamese
57007 | ISCII Oriya
57008 | ISCII Kannada
57009 | ISCII Malayalam
57010 | ISCII Gujarati
57011 | ISCII Punjabi
65000 | Unicode UTF-7
65001 | Unicode UTF-8

The following is a list of valid code page identifiers for Mac OS only:

Identifier | Name
1 | ASCII
2 | NEXTSTEP
3 | JapaneseEUC
4 | UTF8
5 | ISOLatin1
6 | Symbol
7 | NonLossyASCII
8 | ShiftJIS
9 | ISOLatin2
10 | Unicode
11 | WindowsCP1251
12 | WindowsCP1252
13 | WindowsCP1253
14 | WindowsCP1254
15 | WindowsCP1250
21 | ISO2022JP
30 | MacOSRoman
10 | UTF16String
0x90000100 | UTF16BigEndian
0x94000100 | UTF16LittleEndian
0x8c000100 | UTF32String
0x98000100 | UTF32BigEndian
0x9c000100 | UTF32LittleEndian
65536 | Proprietary


LoanStatement Errors

Trappable Errors (LoanStatement Class)

OFX Errors

2000 Required field missing from server response.
2001 OFX server error. Description follows.
2002 Invalid OFX response.
2003 OFX response contains unknown element tags.

The class may also return one of the following error codes, which are inherited from other classes.

XMLp Errors

101 Invalid attribute index.
102 No attributes available.
103 Invalid namespace index.
104 No namespaces available.
105 Invalid element index.
106 No elements available.
107 Attribute does not exist.
201 Unbalanced element tag.
202 Unknown element prefix (can't find namespace).
203 Unknown attribute prefix (can't find namespace).
204 Invalid XML markup.
205 Invalid end state for parser.
206 Document contains unbalanced elements.
207 Invalid XPath.
208 No such child.
209 Top element does not match start of path.
210 DOM tree unavailable (set BuildDOM to true and reparse).
302 Can't open file.

HTTP Errors

118 Firewall Error. Error description contains detailed message.
143 Busy executing current method.
151 HTTP protocol error. The error message has the server response.
152 No server specified in URL
153 Specified URLScheme is invalid.
155 Range operation is not supported by server.
156 Invalid cookie index (out of range).
301 Interrupted.
302 Can't open AttachedFile.

The class may also return one of the following error codes, which are inherited from other classes.

IPPort Errors

100 You cannot change the RemotePort at this time. A connection is in progress.
101 You cannot change the RemoteHost (Server) at this time. A connection is in progress.
102 The RemoteHost address is invalid (0.0.0.0).
104 Already connected. If you want to reconnect, close the current connection first.
106 You cannot change the LocalPort at this time. A connection is in progress.
107 You cannot change the LocalHost at this time. A connection is in progress.
112 You cannot change MaxLineLength at this time. A connection is in progress.
116 RemotePort cannot be zero. Please specify a valid service port number.
117 Cannot change UseConnection option while the class is Active.
135 Operation would block.
201 Timeout.
211 Action impossible in control's present state.
212 Action impossible while connected.
213 Action impossible while listening.
303 Could not open file.
434 Unable to convert string to selected CodePage
1105 Already connecting. If you want to reconnect, close the current connection first.
1117 You need to connect first.
1119 You cannot change the LocalHost at this time. A connection is in progress.
1120 Connection dropped by remote host.

SSL Errors

270 Cannot load specified security library.
271 Cannot open certificate store.
272 Cannot find specified certificate.
273 Cannot acquire security credentials.
274 Cannot find certificate chain.
275 Cannot verify certificate chain.
276 Error during handshake.
280 Error verifying certificate.
281 Could not find client certificate.
282 Could not find server certificate.
283 Error encrypting data.
284 Error decrypting data.

TCP/IP Errors

10004 [10004] Interrupted system call.
10009 [10009] Bad file number.
10013 [10013] Access denied.
10014 [10014] Bad address.
10022 [10022] Invalid argument.
10024 [10024] Too many open files.
10035 [10035] Operation would block.
10036 [10036] Operation now in progress.
10037 [10037] Operation already in progress.
10038 [10038] Socket operation on non-socket.
10039 [10039] Destination address required.
10040 [10040] Message too long.
10041 [10041] Protocol wrong type for socket.
10042 [10042] Bad protocol option.
10043 [10043] Protocol not supported.
10044 [10044] Socket type not supported.
10045 [10045] Operation not supported on socket.
10046 [10046] Protocol family not supported.
10047 [10047] Address family not supported by protocol family.
10048 [10048] Address already in use.
10049 [10049] Can't assign requested address.
10050 [10050] Network is down.
10051 [10051] Network is unreachable.
10052 [10052] Net dropped connection or reset.
10053 [10053] Software caused connection abort.
10054 [10054] Connection reset by peer.
10055 [10055] No buffer space available.
10056 [10056] Socket is already connected.
10057 [10057] Socket is not connected.
10058 [10058] Can't send after socket shutdown.
10059 [10059] Too many references, can't splice.
10060 [10060] Connection timed out.
10061 [10061] Connection refused.
10062 [10062] Too many levels of symbolic links.
10063 [10063] File name too long.
10064 [10064] Host is down.
10065 [10065] No route to host.
10066 [10066] Directory not empty
10067 [10067] Too many processes.
10068 [10068] Too many users.
10069 [10069] Disc Quota Exceeded.
10070 [10070] Stale NFS file handle.
10071 [10071] Too many levels of remote in path.
10091 [10091] Network subsystem is unavailable.
10092 [10092] WINSOCK DLL Version out of range.
10093 [10093] Winsock not loaded yet.
11001 [11001] Host not found.
11002 [11002] Non-authoritative 'Host not found' (try again or check DNS setup).
11003 [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP.
11004 [11004] Valid name, no data record (check DNS setup).


OFXAggregate Class

OFXAggregate Class

Properties Methods Events Configuration Settings Errors

The OFXAggregate component supports parsing of XML aggregates that can be retrieved from other components.

Syntax

OFXAggregate

Remarks

The OFXAggregate class supports simple XML aggregate traversal functionality. Simply set the Aggregate property to the value received from any aggregate property of any class in the package (e.g. the TxAggregate property from BankStatement or CCStatement). You can then use XPath to walk the Document Object Model (DOM) tree.

Property List

The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

Aggregate | The full text of the current aggregate.
NamespaceCount | The number of records in the Namespace arrays.
NamespacePrefix | The Prefix for the Namespace.
NamespaceURI | Namespace URI associated with the corresponding Prefix .
XChildrenCount | The number of records in the XChild arrays.
XChildName | The Name property provides the local name (without prefix) of the element.
XChildNamespace | Namespace of the element.
XChildPrefix | Prefix of the element (if any).
XChildXText | The inner text of the element.
XElement | The name of the current element.
XNamespace | The namespace of the current element.
XParent | The parent of the current element.
XPath | Provides a way to point to a specific element in the document.
XPrefix | The prefix of the current element.
XText | The text of the current element.

Method List

The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

Config | Sets or retrieves a configuration setting.
HasXPath | Checks whether a certain XPath exists inside the aggregate.

Event List

The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

Configuration Settings

The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

IgnoreBadAttributePrefixes | If true, bad (unknown) attribute prefixes are ignored.
IgnoreBadElementPrefixes | If true, bad (unknown) element prefixes are ignored.
CacheContent | If true, the original XML is saved in a buffer.
ErrorOnEmptyAttr | If true, passing an invalid attribute to the Attr method will throw an exception.
PreserveWhitespace | If true, leading and trailing whitespace in element text is preserved.
CodePage | The system code page used for Unicode to Multibyte translations.


Aggregate Property

Aggregate Property (OFXAggregate Class)

The full text of the current aggregate.

Syntax

char* GetAggregate();

int SetAggregate(char* lpszAggregate);

Default Value

""

Remarks

Aggregate contains the full text of the XML aggregate currently being represented by the class's DOM. You may set this to a value obtained from any aggregate property of any other control (such as SignOnInfoAggregate from FIProfile). Once set, you can use XPath to walk the DOM tree. XElement and XText will retrieve the current element's name and contents, and XChildren can be used to get the number of children.

Data Type

String


NamespaceCount Property

NamespaceCount Property (OFXAggregate Class)

The number of records in the Namespace arrays.

Syntax

int GetNamespaceCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • NamespacePrefix
  • NamespaceURI

The array indices start at 0 and end at NamespaceCount-1.

This property is read-only and not available at design time.

Data Type

Integer


NamespacePrefix Property

NamespacePrefix Property (OFXAggregate Class)

The Prefix for the Namespace.

Syntax

char* GetNamespacePrefix(int iNamespaceIndex);

Default Value

""

Remarks

The NamespacePrefix for the Namespace.

The size of the array is controlled by the NamespaceCount property.

This property is read-only and not available at design time.

Data Type

String


NamespaceURI Property

NamespaceURI Property (OFXAggregate Class)

Namespace URI associated with the corresponding Prefix .

Syntax

char* GetNamespaceURI(int iNamespaceIndex);

Default Value

""

Remarks

Namespace URI associated with the corresponding NamespacePrefix. This is usually a URL pointing to the XML schema for the namespace.

The size of the array is controlled by the NamespaceCount property.

This property is read-only and not available at design time.

Data Type

String


XChildrenCount Property

XChildrenCount Property (OFXAggregate Class)

The number of records in the XChild arrays.

Syntax

int GetXChildrenCount();

Default Value

0

Remarks

This property controls the size of the following arrays:
  • XChildName
  • XChildNamespace
  • XChildPrefix
  • XChildXText

The array indices start at 0 and end at XChildrenCount-1.

This property is read-only and not available at design time.

Data Type

Integer


XChildName Property

XChildName Property (OFXAggregate Class)

The Name property provides the local name (without prefix) of the element.

Syntax

char* GetXChildName(int iXChildIndex);

Default Value

""

Remarks

The XChildName property provides the local name (without prefix) of the element.

The size of the array is controlled by the XChildrenCount property.

This property is read-only and not available at design time.

Data Type

String


XChildNamespace Property

XChildNamespace Property (OFXAggregate Class)

Namespace of the element.

Syntax

char* GetXChildNamespace(int iXChildIndex);

Default Value

""

Remarks

Namespace of the element.

The size of the array is controlled by the XChildrenCount property.

This property is read-only and not available at design time.

Data Type

String


XChildPrefix Property

XChildPrefix Property (OFXAggregate Class)

Prefix of the element (if any).

Syntax

char* GetXChildPrefix(int iXChildIndex);

Default Value

""

Remarks

Prefix of the element (if any). If the element does not have a prefix, this property is empty.

The size of the array is controlled by the XChildrenCount property.

This property is read-only and not available at design time.

Data Type

String


XChildXText Property

XChildXText Property (OFXAggregate Class)

The inner text of the element.

Syntax

char* GetXChildXText(int iXChildIndex);

Default Value

""

Remarks

The inner text of the element.

The size of the array is controlled by the XChildrenCount property.

This property is read-only and not available at design time.

Data Type

String


XElement Property

XElement Property (OFXAggregate Class)

The name of the current element.

Syntax

char* GetXElement();

Default Value

""

Remarks

The current element is specified via the XPath property.

This property is read-only.

Data Type

String


XNamespace Property

XNamespace Property (OFXAggregate Class)

The namespace of the current element.

Syntax

char* GetXNamespace();

Default Value

""

Remarks

The current element is specified via the XPath property.

This property is read-only.

Data Type

String


XParent Property

XParent Property (OFXAggregate Class)

The parent of the current element.

Syntax

char* GetXParent();

Default Value

""

Remarks

The current element is specified via the XPath property.

This property is read-only.

Data Type

String


XPath Property

XPath Property (OFXAggregate Class)

Provides a way to point to a specific element in the document.

Syntax

char* GetXPath();

int SetXPath(char* lpszXPath);

Default Value

""

Remarks

XPath implements a subset of the XML XPath specification, allowing you to point to specific elements in the XML documents.

The path is a series of one or more element accessors separated by '/'. The path can be absolute (starting with '/') or relative to the current XPath location.

The following are possible values for an element accessor:

'name' | A particular element name
name[i] | The i-th subelement of the current element with the given name
[i] | The i-th subelement of the current element
[last()] | The last subelement of the current element
[last()-i] | The subelement located at the last location minus i in the current element
name[@attrname="attrvalue"] | The subelement containing a particular value for a given attribute (supports single AND double quotes)
.. | The parent of the current element

When XPath is set to a valid path, XElement points to the name of the element, with XParent, XNamespace, XPrefix, XChildren, and XText providing other properties of the element. The attributes of the current element are provided in the XAttributes properties .

BuildDOM must be set to True prior to parsing the document for the XPath functionality to be available. Example (Setting XPath)

Document root | XMLpControl.XPath = "/"
Specific Element | XMLpControl.XPath = "/root/SubElement1/SubElement2/"
i-th Child | XMLpControl.XPath = "/root/SubElement1[i]"

Data Type

String


XPrefix Property

XPrefix Property (OFXAggregate Class)

The prefix of the current element.

Syntax

char* GetXPrefix();

Default Value

""

Remarks

The current element is specified via the XPath property.

This property is read-only.

Data Type

String


XText Property

XText Property (OFXAggregate Class)

The text of the current element.

Syntax

char* GetXText();

Default Value

""

Remarks

The current element is specified via the XPath property.

This property is read-only.

Data Type

String


Config Method

Config Method (OFXAggregate Class)

Sets or retrieves a configuration setting.

Syntax

 char* Config(char* lpszConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.


HasXPath Method

HasXPath Method (OFXAggregate Class)

Checks whether a certain XPath exists inside the aggregate.

Syntax

 int HasXPath(char* lpszXPath);

Remarks

Used when there is no assurance that a certain XPath exists inside an aggregate.


OFXAggregate Configuration

Configuration Settings (OFXAggregate Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

XMLp Configuration Settings

IgnoreBadAttributePrefixes: If true, bad (unknown) attribute prefixes are ignored.

Normally a trappable error is generated when an unknown attribute prefix is encountered. This setting suppresses the error. The default value is False.

IgnoreBadElementPrefixes: If true, bad (unknown) element prefixes are ignored.

Normally a trappable error is generated when an unknown element prefix is encountered. This setting suppresses the error. The default value is False.

CacheContent: If true, the original XML is saved in a buffer.

This config controls whether or not the component retains the entire original XML in a buffer. This is used to retain the original XML as opposed to returning generated XML after parsing. The default value is true.

ErrorOnEmptyAttr: If true, passing an invalid attribute to the Attr method will throw an exception.

If an invalid attribute name is passed into the Attr method, the method will return with an empty string if this is set to false, otherwise an exception is thrown.

PreserveWhitespace: If true, leading and trailing whitespace in element text is preserved.

Normally the leading and trailing whitespace from an element's text is trimmed. When this property is set to true, this leading and trailing whitespace is preserved. The default value is false.

Base Configuration Settings

SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

Base Configuration Settings

CodePage: The system code page used for Unicode to Multibyte translations.

The default code page is the Active Code Page (0).

The following is a list of valid code page identifiers:

Identifier | Name
037 | IBM EBCDIC - U.S./Canada
437 | OEM - United States
500 | IBM EBCDIC - International
708 | Arabic - ASMO 708
709 | Arabic - ASMO 449+, BCON V4
710 | Arabic - Transparent Arabic
720 | Arabic - Transparent ASMO
737 | OEM - Greek (formerly 437G)
775 | OEM - Baltic
850 | OEM - Multilingual Latin I
852 | OEM - Latin II
855 | OEM - Cyrillic (primarily Russian)
857 | OEM - Turkish
858 | OEM - Multlingual Latin I + Euro symbol
860 | OEM - Portuguese
861 | OEM - Icelandic
862 | OEM - Hebrew
863 | OEM - Canadian-French
864 | OEM - Arabic
865 | OEM - Nordic
866 | OEM - Russian
869 | OEM - Modern Greek
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2)
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875 | IBM EBCDIC - Modern Greek
932 | ANSI/OEM - Japanese, Shift-JIS
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore)
949 | ANSI/OEM - Korean (Unified Hangeul Code)
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026 | IBM EBCDIC - Turkish (Latin-5)
1047 | IBM EBCDIC - Latin 1/Open System
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141 | IBM EBCDIC - Germany (20273 + Euro symbol)
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144 | IBM EBCDIC - Italy (20280 + Euro symbol)
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147 | IBM EBCDIC - France (20297 + Euro symbol)
1148 | IBM EBCDIC - International (500 + Euro symbol)
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 | Unicode UCS-2 Big-Endian
1250 | ANSI - Central European
1251 | ANSI - Cyrillic
1252 | ANSI - Latin I
1253 | ANSI - Greek
1254 | ANSI - Turkish
1255 | ANSI - Hebrew
1256 | ANSI - Arabic
1257 | ANSI - Baltic
1258 | ANSI/OEM - Vietnamese
1361 | Korean (Johab)
10000 | MAC - Roman
10001 | MAC - Japanese
10002 | MAC - Traditional Chinese (Big5)
10003 | MAC - Korean
10004 | MAC - Arabic
10005 | MAC - Hebrew
10006 | MAC - Greek I
10007 | MAC - Cyrillic
10008 | MAC - Simplified Chinese (GB 2312)
10010 | MAC - Romania
10017 | MAC - Ukraine
10021 | MAC - Thai
10029 | MAC - Latin II
10079 | MAC - Icelandic
10081 | MAC - Turkish
10082 | MAC - Croatia
12000 | Unicode UCS-4 Little-Endian
12001 | Unicode UCS-4 Big-Endian
20000 | CNS - Taiwan
20001 | TCA - Taiwan
20002 | Eten - Taiwan
20003 | IBM5550 - Taiwan
20004 | TeleText - Taiwan
20005 | Wang - Taiwan
20105 | IA5 IRV International Alphabet No. 5 (7-bit)
20106 | IA5 German (7-bit)
20107 | IA5 Swedish (7-bit)
20108 | IA5 Norwegian (7-bit)
20127 | US-ASCII (7-bit)
20261 | T.61
20269 | ISO 6937 Non-Spacing Accent
20273 | IBM EBCDIC - Germany
20277 | IBM EBCDIC - Denmark/Norway
20278 | IBM EBCDIC - Finland/Sweden
20280 | IBM EBCDIC - Italy
20284 | IBM EBCDIC - Latin America/Spain
20285 | IBM EBCDIC - United Kingdom
20290 | IBM EBCDIC - Japanese Katakana Extended
20297 | IBM EBCDIC - France
20420 | IBM EBCDIC - Arabic
20423 | IBM EBCDIC - Greek
20424 | IBM EBCDIC - Hebrew
20833 | IBM EBCDIC - Korean Extended
20838 | IBM EBCDIC - Thai
20866 | Russian - KOI8-R
20871 | IBM EBCDIC - Icelandic
20880 | IBM EBCDIC - Cyrillic (Russian)
20905 | IBM EBCDIC - Turkish
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932 | JIS X 0208-1990 & 0121-1990
20936 | Simplified Chinese (GB2312)
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027 | Extended Alpha Lowercase
21866 | Ukrainian (KOI8-U)
28591 | ISO 8859-1 Latin I
28592 | ISO 8859-2 Central Europe
28593 | ISO 8859-3 Latin 3
28594 | ISO 8859-4 Baltic
28595 | ISO 8859-5 Cyrillic
28596 | ISO 8859-6 Arabic
28597 | ISO 8859-7 Greek
28598 | ISO 8859-8 Hebrew
28599 | ISO 8859-9 Latin 5
28605 | ISO 8859-15 Latin 9
29001 | Europa 3
38598 | ISO 8859-8 Hebrew
50220 | ISO 2022 Japanese with no halfwidth Katakana
50221 | ISO 2022 Japanese with halfwidth Katakana
50222 | ISO 2022 Japanese JIS X 0201-1989
50225 | ISO 2022 Korean
50227 | ISO 2022 Simplified Chinese
50229 | ISO 2022 Traditional Chinese
50930 | Japanese (Katakana) Extended
50931 | US/Canada and Japanese
50933 | Korean Extended and Korean
50935 | Simplified Chinese Extended and Simplified Chinese
50936 | Simplified Chinese
50937 | US/Canada and Traditional Chinese
50939 | Japanese (Latin) Extended and Japanese
51932 | EUC - Japanese
51936 | EUC - Simplified Chinese
51949 | EUC - Korean
51950 | EUC - Traditional Chinese
52936 | HZ-GB2312 Simplified Chinese
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte)
57002 | ISCII Devanagari
57003 | ISCII Bengali
57004 | ISCII Tamil
57005 | ISCII Telugu
57006 | ISCII Assamese
57007 | ISCII Oriya
57008 | ISCII Kannada
57009 | ISCII Malayalam
57010 | ISCII Gujarati
57011 | ISCII Punjabi
65000 | Unicode UTF-7
65001 | Unicode UTF-8

The following is a list of valid code page identifiers for Mac OS only:

Identifier | Name
1 | ASCII
2 | NEXTSTEP
3 | JapaneseEUC
4 | UTF8
5 | ISOLatin1
6 | Symbol
7 | NonLossyASCII
8 | ShiftJIS
9 | ISOLatin2
10 | Unicode
11 | WindowsCP1251
12 | WindowsCP1252
13 | WindowsCP1253
14 | WindowsCP1254
15 | WindowsCP1250
21 | ISO2022JP
30 | MacOSRoman
10 | UTF16String
0x90000100 | UTF16BigEndian
0x94000100 | UTF16LittleEndian
0x8c000100 | UTF32String
0x98000100 | UTF32BigEndian
0x9c000100 | UTF32LittleEndian
65536 | Proprietary


OFXAggregate Errors

Trappable Errors (OFXAggregate Class)

XMLp Errors

101 Invalid attribute index.
102 No attributes available.
103 Invalid namespace index.
104 No namespaces available.
105 Invalid element index.
106 No elements available.
107 Attribute does not exist.
201 Unbalanced element tag.
202 Unknown element prefix (can't find namespace).
203 Unknown attribute prefix (can't find namespace).
204 Invalid XML markup.
205 Invalid end state for parser.
206 Document contains unbalanced elements.
207 Invalid XPath.
208 No such child.
209 Top element does not match start of path.
210 DOM tree unavailable (set BuildDOM to true and reparse).
302 Can't open file.


OFXBatch Class

OFXBatch Class

Properties Methods Events Configuration Settings Errors

Enables sending of multiple requests to an OFX server through a single connection.

Syntax

OFXBatch

Remarks

The OFXBatch class allows your application to download account information, bank, credit card, investment, loan statements, make intrabank and/or interbank transfers, and/or download your FI profile in one single request submitted to the FI's OFX server. This class provides for applying a single authentication context to multiple requests in order to reduce the overhead of user authentication.

All downloads are batched into a single secure HTTPS connection to the financial institution. To use the OFXBatch class first identify the financial institution by setting the FIId, FIOrganization and FIUrl,properties. Next identify the OFX user and application by setting the OFXUser, OFXPassword, OFXAppId and OFXAppVersion properties. The same signon information will be used for the entire batch.

To build the request, depending on each request type, the corresponding E-Banking Integrator components should be used. So, if account information, bank, credit card, investment, loan statement, bank transfer, and FI profile are part of this multiple request, then instances of Account, BankStatement, CCStatement, InvStatement, LoanStatement, BankTransfer, and FIProfile (corresponding to the each request type) should be used. The individual components that generate the OFX request aggregate will not need the sign on data to generate their request.

Set properties of each corresponding component (excluding the SignOn part which is already set), as you would do when using these components to send single requests to the server. Please refer to each class help files for details on how to build each individual OFX request .

Once you have finished setting the properties that describe each individual request, set the OFXBatchItemRequest in OFXBatch to the OFXRequest of each corresponding component. For example:

OFXBatch.OFXBatchItems[0].Request = BankStatement.OFXRequest;
OFXBatch.OFXBatchItems[1].Request = CCStatement.OFXRequest;
OFXBatch.OFXBatchItems[2].Request = FIProfile.OFXRequest;

Then, use the PostRequest method to build and transmit the request automatically.

Message sets will/must appear in the following order in the request: Signon, Signup, Bank statement, Intrabank funds transfers, Credit card statements, Loan statements, Investment statements, Interbank funds transfers, and FI Profile, regardless of their order while populating the OFXBatchItems. In the server response, the message sets will be returned in the server response in the same order.

Upon successful response, the OFXBatchItemResponse array property will be populated automatically, which will contain several blocks of information consisting of a server response for each request. To parse this response, the OFXBatchItemResponse at the same index should be passed as OFXResponse of the corresponding component using the same order as submitted in the request.

BankStatement.OFXResponse = OFXBatch.OFXBatchItems[0].Response;
CCStatement.OFXResponse = OFXBatch.OFXBatchItems[1].Response;
FIProfile.OFXResponse = OFXBatch.OFXBatchItems[2].Response;

Properties of each class are now populated and ready for retrieval.

Note: If signon data is different across components, then they cannot be used in the same batch, otherwise an error will be thrown.

Property List

The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

FIId | Financial institution identifier.
FIOrganization | Financial institution organization name.
FirewallAutoDetect | This property tells the component whether or not to automatically detect and use firewall system settings, if available.
FirewallType | This property determines the type of firewall to connect through.
FirewallHost | This property contains the name or IP address of firewall (optional).
FirewallPassword | This property contains a password if authentication is to be used when connecting through the firewall.
FirewallPort | This property contains the TCP port for the firewall Host .
FirewallUser | This property contains a user name if authentication is to be used connecting through a firewall.
FIUrl | Financial institution URL.
OFXAppId | OFX application identifier.
OFXAppVersion | OFX application version.
OFXBatchItemCount | The number of records in the OFXBatchItem arrays.
OFXBatchItemRequest | OFX request aggregate.
OFXBatchItemRequestType | The type of OFX request included in the batch.
OFXBatchItemRequestUID | The current batch item's unique transaction ID.
OFXBatchItemResponse | The OFX response aggregate.
OFXPassword | User's password.
OFXUser | User's id.
ProxyAuthScheme | This property is used to tell the component which type of authorization to perform when connecting to the proxy.
ProxyAutoDetect | This property tells the component whether or not to automatically detect and use proxy system settings, if available.
ProxyPassword | This property contains a password if authentication is to be used for the proxy.
ProxyPort | This property contains the TCP port for the proxy Server (default 80).
ProxyServer | If a proxy Server is given, then the HTTP request is sent to the proxy instead of the server otherwise specified.
ProxySSL | This property determines when to use SSL for the connection to the proxy.
ProxyUser | This property contains a user name, if authentication is to be used for the proxy.
SSLAcceptServerCertEncoded | The certificate (PEM/base64 encoded).
SSLCertEncoded | The certificate (PEM/base64 encoded).
SSLCertStore | The name of the certificate store for the client certificate.
SSLCertStorePassword | If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.
SSLCertStoreType | The type of certificate store for this certificate.
SSLCertSubject | The subject of the certificate used for client authentication.
SSLServerCertEncoded | The certificate (PEM/base64 encoded).
Timeout | A timeout for the component.

Method List

The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

Config | Sets or retrieves a configuration setting.
PostRequest | Submits a batch of requests to an OFX server through a single connection.
ReadOFXDataFile | Reads an OFX response from a file.
Reset | Reset the internal state of the component and all properties to their default values.
WriteOFXDataFile | Writes the OFX response sent by the server to a file.

Event List

The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ConnectionStatus | Fired to indicate changes in connection state.
Error | Information about errors during data delivery.
SSLServerAuthentication | Fired after the server presents its certificate to the client.
SSLStatus | Shows the progress of the secure connection.

Configuration Settings

The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.

IgnoreBadAttributePrefixes | If true, bad (unknown) attribute prefixes are ignored.
IgnoreBadElementPrefixes | If true, bad (unknown) element prefixes are ignored.
CacheContent | If true, the original XML is saved in a buffer.
ErrorOnEmptyAttr | If true, passing an invalid attribute to the Attr method will throw an exception.
PreserveWhitespace | If true, leading and trailing whitespace in element text is preserved.
CodePage | The system code page used for Unicode to Multibyte translations.


FIId Property

FIId Property (OFXBatch Class)

Financial institution identifier.

Syntax

char* GetFIId();

int SetFIId(char* lpszFIId);

Default Value

""

Remarks

FIId holds the identifier of the OFX Financial Institution and is used during signon. This value is unique for each organization name.

Data Type

String


FIOrganization Property

FIOrganization Property (OFXBatch Class)

Financial institution organization name.

Syntax

char* GetFIOrganization();

int SetFIOrganization(char* lpszFIOrganization);

Default Value

""

Remarks

This is the name of the OFX Financial Institution and is used during signon. Each organization has a unique FIId that must also be used at signon.

Data Type

String


FirewallAutoDetect Property

FirewallAutoDetect Property (OFXBatch Class)

This property tells the component whether or not to automatically detect and use firewall system settings, if available.

Syntax

int GetFirewallAutoDetect();

int SetFirewallAutoDetect(int bFirewallAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use firewall system settings, if available.

Data Type

Boolean


FirewallType Property

FirewallType Property (OFXBatch Class)

This property determines the type of firewall to connect through.

Syntax

int GetFirewallType();

int SetFirewallType(int iFirewallType);

Possible Values

  FW_NONE(0),
  FW_TUNNEL(1),
  FW_SOCKS4(2),
  FW_SOCKS5(3)

Default Value

0

Remarks

This property determines the type of firewall to connect through. The applicable values are the following:

fwNone (0) | No firewall (default setting).
fwTunnel (1) | Connect through a tunneling proxy. FirewallPort is set to 80.
fwSOCKS4 (2) | Connect through a SOCKS4 Proxy. FirewallPort is set to 1080.
fwSOCKS5 (3) | Connect through a SOCKS5 Proxy. FirewallPort is set to 1080.

Data Type

Integer


FirewallHost Property

FirewallHost Property (OFXBatch Class)

This property contains the name or IP address of firewall (optional).

Syntax

char* GetFirewallHost();

int SetFirewallHost(char* lpszFirewallHost);

Default Value

""

Remarks

This property contains the name or IP address of firewall (optional). If a FirewallHost is given, the requested connections will be authenticated through the specified firewall when connecting.

If this property is set to a Domain Name, a DNS request is initiated. Upon successful termination of the request, this property is set to the corresponding address. If the search is not successful, the class fails with an error.

Data Type

String


FirewallPassword Property

FirewallPassword Property (OFXBatch Class)

This property contains a password if authentication is to be used when connecting through the firewall.

Syntax

char* GetFirewallPassword();

int SetFirewallPassword(char* lpszFirewallPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used when connecting through the firewall. If FirewallHost is specified, the FirewallUser and FirewallPassword properties are used to connect and authenticate to the given firewall. If the authentication fails, the class fails with an error.

Data Type

String


FirewallPort Property

FirewallPort Property (OFXBatch Class)

This property contains the TCP port for the firewall Host .

Syntax

int GetFirewallPort();

int SetFirewallPort(int lFirewallPort);

Default Value

0

Remarks

This property contains the TCP port for the firewall FirewallHost. See the description of the FirewallHost property for details.

Note that this property is set automatically when FirewallType is set to a valid value. See the description of the FirewallType property for details.

Data Type

Long


FirewallUser Property

FirewallUser Property (OFXBatch Class)

This property contains a user name if authentication is to be used connecting through a firewall.

Syntax

char* GetFirewallUser();

int SetFirewallUser(char* lpszFirewallUser);

Default Value

""

Remarks

This property contains a user name if authentication is to be used connecting through a firewall. If the FirewallHost is specified, this property and FirewallPassword properties are used to connect and authenticate to the given Firewall. If the authentication fails, the class fails with an error.

Data Type

String


FIUrl Property

FIUrl Property (OFXBatch Class)

Financial institution URL.

Syntax

char* GetFIUrl();

int SetFIUrl(char* lpszFIUrl);

Default Value

""

Remarks

This is the URL of the OFX Financial Institution to which the class will signon and fetch data.

Data Type

String


OFXAppId Property

OFXAppId Property (OFXBatch Class)

OFX application identifier.

Syntax

char* GetOFXAppId();

int SetOFXAppId(char* lpszOFXAppId);

Default Value

""

Remarks

This is the unique identifier of the user's OFX application.

Data Type

String


OFXAppVersion Property

OFXAppVersion Property (OFXBatch Class)

OFX application version.

Syntax

char* GetOFXAppVersion();

int SetOFXAppVersion(char* lpszOFXAppVersion);

Default Value

""

Remarks

This is the version of the user's OFX application.

Data Type

String


OFXBatchItemCount Property

OFXBatchItemCount Property (OFXBatch Class)

The number of records in the OFXBatchItem arrays.

Syntax

int GetOFXBatchItemCount();

int SetOFXBatchItemCount(int iOFXBatchItemCount);

Default Value

0

Remarks

This property controls the size of the following arrays:
  • OFXBatchItemRequest
  • OFXBatchItemRequestType
  • OFXBatchItemRequestUID
  • OFXBatchItemResponse

The array indices start at 0 and end at OFXBatchItemCount-1.

This property is not available at design time.

Data Type

Integer


OFXBatchItemRequest Property

OFXBatchItemRequest Property (OFXBatch Class)

OFX request aggregate.

Syntax

char* GetOFXBatchItemRequest(int iOFXBatchItemIndex);

int SetOFXBatchItemRequest(int iOFXBatchItemIndex, char* lpszOFXBatchItemRequest);

Default Value

""

Remarks

OFX request aggregate. The OFXBatchItemRequest is obtained by setting it to a OFXRequest aggregate of a class that corresponds to that request type. For example:

OFXBatch.OFXBatchItemCount = 3;
OFXBatch.OFXBathcItems[0].Request = BankStatement.OFXRequest;
OFXBatch.OFXBathcItems[1].Request = CCStatement.OFXRequest;
OFXBatch.OFXBathcItems[2].Request = FIProfile.OFXRequest;

Message sets will/must appear in the following order in the batch request sent to the server: Signon, Signup, Bank statement, Intrabank funds transfers, Credit card statements, Loan statements, Investment statements, Interbank funds transfers, and FI Profile, regardless of their order while populating the OFXBatchItems. In the server response, the message sets will be returned in the server response in the same order.

The size of the array is controlled by the OFXBatchItemCount property.

This property is not available at design time.

Data Type

String


OFXBatchItemRequestType Property

OFXBatchItemRequestType Property (OFXBatch Class)

The type of OFX request included in the batch.

Syntax

char* GetOFXBatchItemRequestType(int iOFXBatchItemIndex);

Default Value

""

Remarks

The type of OFX request included in the batch. Request types supported by OFXBatch component are: Account Info, Bank, Credit Card, Loan, and Investment statement download, Intrabank and Interbank Transfer, Bill Pay, and FI Profile. The support for these requests depend whether the FI OFX server supports that request type and whether they allow it to be part of a batch request.

Possible values and their meanings are as follows:

Value | Meaning
ACCTINFO | Account Information request
STMT | Bank Statement request
CCSTMT | Credit Card Statement request
LOANSTMT | Loan Statement request
INVSTMT | Investment Statement request
INTRA | Intrabank Transfer request (Note: This is subject to synchronization and should be followed by calling the SynchronizeTransfers; method in BankTransfer class, depending on what was requested as part of the batch.)
INTER | Interbank Transfer request (Note: This is subject to synchronization and should be followed by calling the SynchronizeTransfers; method in BankTransfer class, depending on what was requested as part of the batch.)
BILLPAY | Bill Payment request (Note: This is subject to synchronization and should be followed by calling the SynchronizePayments; and/or SynchronizePayees methods in BillPayment class, depending on what was requested as part of the batch.)
PROF | FI Profile request

The size of the array is controlled by the OFXBatchItemCount property.

This property is read-only and not available at design time.

Data Type

String


OFXBatchItemRequestUID Property

OFXBatchItemRequestUID Property (OFXBatch Class)

The current batch item's unique transaction ID.

Syntax

char* GetOFXBatchItemRequestUID(int iOFXBatchItemIndex);

Default Value

""

Remarks

The current batch item's unique transaction ID.

The value in OFXBatchItemResponse is parsed out of the server's response to the batch and matched to the appropriate original OFXBatchItemRequest using by matching the response UID to the OFXBatchItemRequestUID.

The size of the array is controlled by the OFXBatchItemCount property.

This property is read-only and not available at design time.

Data Type

String


OFXBatchItemResponse Property

OFXBatchItemResponse Property (OFXBatch Class)

The OFX response aggregate.

Syntax

char* GetOFXBatchItemResponse(int iOFXBatchItemIndex);

int SetOFXBatchItemResponse(int iOFXBatchItemIndex, char* lpszOFXBatchItemResponse);

Default Value

""

Remarks

The OFX response aggregate. This string represents the OFX response aggregate for the current OFXBatchItemRequest. When the OFXBatch is posted, the OFXBatchItemResponse property will be populated automatically with the server's response to the OFXBatchItemRequest.

For example, if the batch request consisted of BankStatement, CCStatement and FIProfile, such as:

OFXBatch.OFXBatchItemCount = 3;
OFXBatch.OFXBatchItems[0].Request = BankStatement.OFXRequest;
OFXBatch.OFXBatchItems[1].Request = CCStatement.OFXRequest;
OFXBatch.OFXBatchItems[2].Request = FIProfile.OFXRequest;

Upon successful server response, the OFXResponse aggregate of the corresponding class should be set (in the same order as they were included in the batch request), for example:

BankStatement.OFXResponse = OFXBatch.OFXBatchItems[0].Response;
CCStatement.OFXResponse = OFXBatch.OFXBatchItems[1].Response;
FIProfile.OFXResponse = OFXBatch.OFXBatchItems[2].Response;

Properties of each class are now populated and ready for retrieval.

The size of the array is controlled by the OFXBatchItemCount property.

This property is not available at design time.

Data Type

String


OFXPassword Property

OFXPassword Property (OFXBatch Class)

User's password.

Syntax

char* GetOFXPassword();

int SetOFXPassword(char* lpszOFXPassword);

Default Value

""

Remarks

This is the password used when signing on to the OFX Financial Institution's service.

Data Type

String


OFXUser Property

OFXUser Property (OFXBatch Class)

User's id.

Syntax

char* GetOFXUser();

int SetOFXUser(char* lpszOFXUser);

Default Value

""

Remarks

This is the UserID used when signing on to the OFX Financial Institution's service.

Data Type

String


ProxyAuthScheme Property

ProxyAuthScheme Property (OFXBatch Class)

This property is used to tell the component which type of authorization to perform when connecting to the proxy.

Syntax

int GetProxyAuthScheme();

int SetProxyAuthScheme(int iProxyAuthScheme);

Possible Values

  AUTH_BASIC(0),
  AUTH_DIGEST(1),
  AUTH_PROPRIETARY(2),
  AUTH_NONE(3),
  AUTH_NTLM(4),
  AUTH_NEGOTIATE(5)

Default Value

0

Remarks

This property is used to tell the class which type of authorization to perform when connecting to the proxy. This is only used when the ProxyUser and ProxyPassword properties are set.

ProxyAuthScheme should be set to authNone (3) when no authentication is expected.

By default, ProxyAuthScheme is authBasic (0), and if the ProxyUser and ProxyPassword properties are set, the component will attempt basic authentication.

If ProxyAuthScheme is set to authDigest (1), digest authentication will be attempted instead.

If ProxyAuthScheme is set to authProprietary (2), then the authorization token will not be generated by the class. Look at the configuration file for the class being used to find more information about manually setting this token.

If ProxyAuthScheme is set to authNtlm (4), NTLM authentication will be used.

For security reasons, setting this property will clear the values of ProxyUser and ProxyPassword.

Data Type

Integer


ProxyAutoDetect Property

ProxyAutoDetect Property (OFXBatch Class)

This property tells the component whether or not to automatically detect and use proxy system settings, if available.

Syntax

int GetProxyAutoDetect();

int SetProxyAutoDetect(int bProxyAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use proxy system settings, if available.

Data Type

Boolean


ProxyPassword Property

ProxyPassword Property (OFXBatch Class)

This property contains a password if authentication is to be used for the proxy.

Syntax

char* GetProxyPassword();

int SetProxyPassword(char* lpszProxyPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used for the proxy.

If ProxyAuthScheme is set to Basic Authentication, the ProxyUser and ProxyPassword are Base64 encoded and the proxy authentication token will be generated in the form "Basic [encoded-user-password]".

If ProxyAuthScheme is set to Digest Authentication, the ProxyUser and ProxyPassword properties are used to respond to the Digest Authentication challenge from the server.

If ProxyAuthScheme is set to NTLM Authentication, the ProxyUser and ProxyPassword properties are used to authenticate through NTLM negotiation.

Data Type

String


ProxyPort Property

ProxyPort Property (OFXBatch Class)

This property contains the TCP port for the proxy Server (default 80).

Syntax

int GetProxyPort();

int SetProxyPort(int lProxyPort);

Default Value

80

Remarks

This property contains the TCP port for the proxy ProxyServer (default 80). See the description of the ProxyServer property for details.

Data Type

Long


ProxyServer Property

ProxyServer Property (OFXBatch Class)

If a proxy Server is given, then the HTTP request is sent to the proxy instead of the server otherwise specified.

Syntax

char* GetProxyServer();

int SetProxyServer(char* lpszProxyServer);

Default Value

""

Remarks

If a proxy ProxyServer is given, then the HTTP request is sent to the proxy instead of the server otherwise specified.

If the ProxyServer property is set to a Domain Name, a DNS request is initiated and upon successful termination of the request, the ProxyServer property is set to the corresponding address. If the search is not successful, an error is returned.

Data Type

String


ProxySSL Property

ProxySSL Property (OFXBatch Class)

This property determines when to use SSL for the connection to the proxy.

Syntax

int GetProxySSL();

int SetProxySSL(int iProxySSL);

Possible Values

  PS_AUTOMATIC(0),
  PS_ALWAYS(1),
  PS_NEVER(2),
  PS_TUNNEL(3)

Default Value

0

Remarks

This property determines when to use SSL for the connection to the proxy. The applicable values are the following:

psAutomatic (0) | Default setting. If the URL is an "https" URL, the class will use the psTunnel option. If the URL is a "http" URL, the class will use the psNever option.
psAlways (1) | The connection is always SSL-enabled.
psNever (2) | The connection is not SSL-enabled.
psTunnel (3) | The connection is through a tunneling (HTTP) proxy.

Data Type

Integer


ProxyUser Property

ProxyUser Property (OFXBatch Class)

This property contains a user name, if authentication is to be used for the proxy.

Syntax

char* GetProxyUser();

int SetProxyUser(char* lpszProxyUser);

Default Value

""

Remarks

This property contains a user name, if authentication is to be used for the proxy.

If ProxyAuthScheme is set to Basic Authentication, the ProxyUser and ProxyPassword are Base64 encoded and the proxy authentication token will be generated in the form "Basic [encoded-user-password]".

If ProxyAuthScheme is set to Digest Authentication, the ProxyUser and ProxyPassword properties are used to respond to the Digest Authentication challenge from the server.

If ProxyAuthScheme is set to NTLM Authentication, the ProxyUser and ProxyPassword properties are used to authenticate through NTLM negotiation.

Data Type

String


SSLAcceptServerCertEncoded Property

SSLAcceptServerCertEncoded Property (OFXBatch Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLAcceptServerCertEncoded(char *&lpSSLAcceptServerCertEncoded, int &lenSSLAcceptServerCertEncoded);

int SetSSLAcceptServerCertEncoded(char *lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLAcceptServerCertStore and SSLAcceptServerCertSubject properties may also be used to specify a certificate.

When SSLAcceptServerCertEncoded is set, a search is initiated in the current SSLAcceptServerCertStore for the private key of the certificate. If the key is found, SSLAcceptServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLAcceptServerCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertEncoded Property

SSLCertEncoded Property (OFXBatch Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLCertEncoded(char *&lpSSLCertEncoded, int &lenSSLCertEncoded);

int SetSSLCertEncoded(char *lpSSLCertEncoded, int lenSSLCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLCertStore and SSLCertSubject properties may also be used to specify a certificate.

When SSLCertEncoded is set, a search is initiated in the current SSLCertStore for the private key of the certificate. If the key is found, SSLCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLCertSubject is set to empty string.

This property is not available at design time.

Data Type

Binary String


SSLCertStore Property

SSLCertStore Property (OFXBatch Class)

The name of the certificate store for the client certificate.

Syntax

int GetSSLCertStore(char *&lpSSLCertStore, int &lenSSLCertStore);

int SetSSLCertStore(char *lpSSLCertStore, int lenSSLCertStore);

Default Value

"MY"

Remarks

The name of the certificate store for the client certificate.

The SSLCertStoreType property specifies the type of the certificate store specified by SSLCertStore. If the store is password protected, specify the password in SSLCertStorePassword.

SSLCertStore is used in conjunction with the SSLCertSubject property in order to specify client certificates. If SSLCertStore has a value, and SSLCertSubject or SSLCertEncoded is set, a search for a certificate is initiated. Please refer to the SSLCertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MY | A certificate store holding personal certificates with their associated private keys.
CA | Certifying authority certificates.
ROOT | Root certificates.
SPC | Software publisher certificates.

In Java, the certificate store normally is a file containing certificates and optional private keys.

When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e. PKCS12 certificate store).

If the provider is OpenSSL, the certificate store is a file containing a certificate and a private key. This property must be set to the name of the file.

Data Type

Binary String


SSLCertStorePassword Property

SSLCertStorePassword Property (OFXBatch Class)

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Syntax

char* GetSSLCertStorePassword();

int SetSSLCertStorePassword(char* lpszSSLCertStorePassword);

Default Value

""

Remarks

If the certificate store is of a type that requires a password, this property is used to specify that password in order to open the certificate store.

Data Type

String


SSLCertStoreType Property

SSLCertStoreType Property (OFXBatch Class)

The type of certificate store for this certificate.

Syntax

int GetSSLCertStoreType();

int SetSSLCertStoreType(int iSSLCertStoreType);

Possible Values

  CST_USER(0),
  CST_MACHINE(1),
  CST_PFXFILE(2),
  CST_PFXBLOB(3),
  CST_JKSFILE(4),
  CST_JKSBLOB(5),
  CST_PEMKEY_FILE(6),
  CST_PEMKEY_BLOB(7),
  CST_PUBLIC_KEY_FILE(8),
  CST_PUBLIC_KEY_BLOB(9),
  CST_SSHPUBLIC_KEY_BLOB(10),
  CST_P7BFILE(11),
  CST_P7BBLOB(12),
  CST_SSHPUBLIC_KEY_FILE(13),
  CST_PPKFILE(14),
  CST_PPKBLOB(15),
  CST_XMLFILE(16),
  CST_XMLBLOB(17)

Default Value

0

Remarks

The type of certificate store for this certificate.

This property can take one of the following values:

0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user. Note: this store type is not available in Java.
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store. Note: this store type is not available in Java.
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS12) file containing certificates.
3 (cstPFXBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) format.
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates. Note: this store type is only available in Java.
5 (cstJKSBlob) | The certificate store is a string (binary or base64-encoded) representing a certificate store in Java Key Store (JKS) format. Note: this store type is only available in Java.
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate.
7 (cstPEMKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a private key and an optional certificate.
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate.
9 (cstPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains a PEM- or DER-encoded public key certificate.
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or base64-encoded) that contains an SSH-style public key.
11 (cstP7BFile) | The certificate store is the name of a PKCS7 file containing certificates.
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS7 format.
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key.
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key).
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key).
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format.
17 (cstXMLlob) | The certificate store is a string that contains a certificate in XML format.

Data Type

Integer


SSLCertSubject Property

SSLCertSubject Property (OFXBatch Class)

The subject of the certificate used for client authentication.

Syntax

char* GetSSLCertSubject();

int SetSSLCertSubject(char* lpszSSLCertSubject);

Default Value

""

Remarks

The subject of the certificate used for client authentication.

When this property is set, a search is performed in the current certificate store certificate with matching subject.

If a matching certificate is found, the property is set to the full subject of the matching certificate.

If an exact match is not found, the store is searched for subjects containing the value of the property.

If a match is still not found, the property is set to an empty string, and no certificate is selected.

The special value "*" picks a random certificate in the certificate store.

The certificate subject is a comma separated list of distinguished name properties and values. For instance "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common properties and their meanings are displayed below.

Field | Meaning
CN | Common Name. This is commonly a host name like www.server.com.
O | Organization
OU | Organizational Unit
L | Locality
S | State
C | Country
E | Email Address

If a property value contains a comma it must be quoted.

Data Type

String


SSLServerCertEncoded Property

SSLServerCertEncoded Property (OFXBatch Class)

The certificate (PEM/base64 encoded).

Syntax

int GetSSLServerCertEncoded(char *&lpSSLServerCertEncoded, int &lenSSLServerCertEncoded);

Default Value

""

Remarks

The certificate (PEM/base64 encoded). This property is used to assign a specific certificate for client authentication (server authentication in the case of Daemon classs). The SSLServerCertStore and SSLServerCertSubject properties may also be used to specify a certificate.

When SSLServerCertEncoded is set, a search is initiated in the current SSLServerCertStore for the private key of the certificate. If the key is found, SSLServerCertSubject is updated to reflect the full subject of the selected certificate, otherwise SSLServerCertSubject is set to empty string.

This property is read-only and not available at design time.

Data Type

Binary String


Timeout Property

Timeout Property (OFXBatch Class)

A timeout for the component.

Syntax

int GetTimeout();

int SetTimeout(int iTimeout);

Default Value

60

Remarks

If the Timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.

If Timeout is set to a positive value, the class will wait for the operation to complete before returning control.

The class will use DoEvents to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not "freeze" and remains responsive.

If Timeout expires, and the operation is not yet complete, the class fails with an error.

Please note that by default, all timeouts are inactivity timeouts, i.e. the timeout period is extended by Timeout seconds when any amount of data is successfully sent or received.

Optionally, the behavior of the class may be changed to absolute timeouts, i.e. the class will wait for a maximum of Timeout seconds since the beginning of the operation, without extending the timeout period during communications.

This behavior is controlled by the AbsoluteTimeout configuration setting.

The default value for the Timeout property is 60 (seconds).

Data Type

Integer


Config Method

Config Method (OFXBatch Class)

Sets or retrieves a configuration setting.

Syntax

 char* Config(char* lpszConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.


PostRequest Method

PostRequest Method (OFXBatch Class)

Submits a batch of requests to an OFX server through a single connection.

Syntax

 int PostRequest();

Remarks

This function generates the Signon and multiple requests page, submits it to the financial institution via secure HTTPS Post, and receives the multiple responses stored in OFXBatchItems property.

To create the batch of requests, first you will to create instances of the corresponding components to request type such as BankStatement, CCStatement, InvStatement, or FIProfile. Then, build the OFX request for each component used.

Finally, set the OFXBatchItemRequest array property to each OFXRequest of the corresponding component.

When PostRequest is called, the server response will be returned in OFXBatchItemResponse array property, ready to be retrieved by each individual component.


ReadOFXDataFile Method

ReadOFXDataFile Method (OFXBatch Class)

Reads an OFX response from a file.

Syntax

 int ReadOFXDataFile(char* lpszFileName);

Remarks

This method reads a previously recorded OFX response from a file, including HTTP and OFX headers.

The following read-only properties are populated as a result of parsing the data file:


Reset Method

Reset Method (OFXBatch Class)

Reset the internal state of the component and all properties to their default values.

Syntax

 int Reset();

Remarks

The Reset method does not have any parameters and does not return any value.


WriteOFXDataFile Method

WriteOFXDataFile Method (OFXBatch Class)

Writes the OFX response sent by the server to a file.

Syntax

 int WriteOFXDataFile(char* lpszFileName);

Remarks

This method records the entire OFX response, including HTTP and OFX headers to a file. This file can later be read and parsed by the ReadOFXDataFile method as though it were a live response.


ConnectionStatus Event

ConnectionStatus Event (OFXBatch Class)

Fired to indicate changes in connection state.

Syntax

 virtual int FireConnectionStatus(OFXBatchConnectionStatusEventParams *e);

 typedef struct {

  char* ConnectionEvent;
  int StatusCode;
  char* Description;

  int reserved;

 } OFXBatchConnectionStatusEventParams;

Remarks

The ConnectionStatus event is fired when the connection state changes: completion of a firewall or proxy connection, completion of a security handshake, etc.

The ConnectionEvent parameter indicates the type of connection event. Values may include:

Firewall connection complete.
SSL or S/Shell handshake complete (where applicable).
Remote host connection complete.
Remote host disconnected.
SSL or S/Shell connection broken.
Firewall host disconnected.

StatusCode has the error code returned by the TCP/IP stack. Description contains a description of this code. The value of StatusCode is equal to the value of the error.


Error Event

Error Event (OFXBatch Class)

Information about errors during data delivery.

Syntax

 virtual int FireError(OFXBatchErrorEventParams *e);

 typedef struct {

  int ErrorCode;
  char* Description;

  int reserved;

 } OFXBatchErrorEventParams;

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Messages section.


SSLServerAuthentication Event

SSLServerAuthentication Event (OFXBatch Class)

Fired after the server presents its certificate to the client.

Syntax

 virtual int FireSSLServerAuthentication(OFXBatchSSLServerAuthenticationEventParams *e);

 typedef struct {

  char* CertEncoded;
  char* CertSubject;
  char* CertIssuer;
  char* Status;
  int Accept;

  int lenCertEncoded;
  int reserved;

 } OFXBatchSSLServerAuthenticationEventParams;

Remarks

This event is where the client can decide whether to continue with the connection process or not. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether to continue or not.

When Accept is False, Status shows why the verification failed (otherwise, Status contains the string "OK"). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.


SSLStatus Event

SSLStatus Event (OFXBatch Class)

Shows the progress of the secure connection.

Syntax

 virtual int FireSSLStatus(OFXBatchSSLStatusEventParams *e);

 typedef struct {

  char* Message;

  int reserved;

 } OFXBatchSSLStatusEventParams;

Remarks

The event is fired for informational and logging purposes only. Used to track the progress of the connection.


OFXBatch Configuration

Configuration Settings (OFXBatch Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

XMLp Configuration Settings

IgnoreBadAttributePrefixes: If true, bad (unknown) attribute prefixes are ignored.

Normally a trappable error is generated when an unknown attribute prefix is encountered. This setting suppresses the error. The default value is False.

IgnoreBadElementPrefixes: If true, bad (unknown) element prefixes are ignored.

Normally a trappable error is generated when an unknown element prefix is encountered. This setting suppresses the error. The default value is False.

CacheContent: If true, the original XML is saved in a buffer.

This config controls whether or not the component retains the entire original XML in a buffer. This is used to retain the original XML as opposed to returning generated XML after parsing. The default value is true.

ErrorOnEmptyAttr: If true, passing an invalid attribute to the Attr method will throw an exception.

If an invalid attribute name is passed into the Attr method, the method will return with an empty string if this is set to false, otherwise an exception is thrown.

PreserveWhitespace: If true, leading and trailing whitespace in element text is preserved.

Normally the leading and trailing whitespace from an element's text is trimmed. When this property is set to true, this leading and trailing whitespace is preserved. The default value is false.

Base Configuration Settings

SelectWaitMillis: The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

Base Configuration Settings

CodePage: The system code page used for Unicode to Multibyte translations.

The default code page is the Active Code Page (0).

The following is a list of valid code page identifiers:

Identifier | Name
037 | IBM EBCDIC - U.S./Canada
437 | OEM - United States
500 | IBM EBCDIC - International
708 | Arabic - ASMO 708
709 | Arabic - ASMO 449+, BCON V4
710 | Arabic - Transparent Arabic
720 | Arabic - Transparent ASMO
737 | OEM - Greek (formerly 437G)
775 | OEM - Baltic
850 | OEM - Multilingual Latin I
852 | OEM - Latin II
855 | OEM - Cyrillic (primarily Russian)
857 | OEM - Turkish
858 | OEM - Multlingual Latin I + Euro symbol
860 | OEM - Portuguese
861 | OEM - Icelandic
862 | OEM - Hebrew
863 | OEM - Canadian-French
864 | OEM - Arabic
865 | OEM - Nordic
866 | OEM - Russian
869 | OEM - Modern Greek
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2)
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875 | IBM EBCDIC - Modern Greek
932 | ANSI/OEM - Japanese, Shift-JIS
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore)
949 | ANSI/OEM - Korean (Unified Hangeul Code)
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026 | IBM EBCDIC - Turkish (Latin-5)
1047 | IBM EBCDIC - Latin 1/Open System
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141 | IBM EBCDIC - Germany (20273 + Euro symbol)
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144 | IBM EBCDIC - Italy (20280 + Euro symbol)
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147 | IBM EBCDIC - France (20297 + Euro symbol)
1148 | IBM EBCDIC - International (500 + Euro symbol)
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201 | Unicode UCS-2 Big-Endian
1250 | ANSI - Central European
1251 | ANSI - Cyrillic
1252 | ANSI - Latin I
1253 | ANSI - Greek
1254 | ANSI - Turkish
1255 | ANSI - Hebrew
1256 | ANSI - Arabic
1257 | ANSI - Baltic
1258 | ANSI/OEM - Vietnamese
1361 | Korean (Johab)
10000 | MAC - Roman
10001 | MAC - Japanese
10002 | MAC - Traditional Chinese (Big5)
10003 | MAC - Korean
10004 | MAC - Arabic
10005 | MAC - Hebrew
10006 | MAC - Greek I
10007 | MAC - Cyrillic
10008 | MAC - Simplified Chinese (GB 2312)
10010 | MAC - Romania
10017 | MAC - Ukraine
10021 | MAC - Thai
10029 | MAC - Latin II
10079 | MAC - Icelandic
10081 | MAC - Turkish
10082 | MAC - Croatia
12000 | Unicode UCS-4 Little-Endian
12001 | Unicode UCS-4 Big-Endian
20000 | CNS - Taiwan
20001 | TCA - Taiwan
20002 | Eten - Taiwan
20003 | IBM5550 - Taiwan
20004 | TeleText - Taiwan
20005 | Wang - Taiwan
20105 | IA5 IRV International Alphabet No. 5 (7-bit)
20106 | IA5 German (7-bit)
20107 | IA5 Swedish (7-bit)
20108 | IA5 Norwegian (7-bit)
20127 | US-ASCII (7-bit)
20261 | T.61
20269 | ISO 6937 Non-Spacing Accent
20273 | IBM EBCDIC - Germany
20277 | IBM EBCDIC - Denmark/Norway
20278 | IBM EBCDIC - Finland/Sweden
20280 | IBM EBCDIC - Italy
20284 | IBM EBCDIC - Latin America/Spain
20285 | IBM EBCDIC - United Kingdom
20290 | IBM EBCDIC - Japanese Katakana Extended
20297 | IBM EBCDIC - France
20420 | IBM EBCDIC - Arabic
20423 | IBM EBCDIC - Greek
20424 | IBM EBCDIC - Hebrew
20833 | IBM EBCDIC - Korean Extended
20838 | IBM EBCDIC - Thai
20866 | Russian - KOI8-R
20871 | IBM EBCDIC - Icelandic
20880 | IBM EBCDIC - Cyrillic (Russian)
20905 | IBM EBCDIC - Turkish
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932 | JIS X 0208-1990 & 0121-1990
20936 | Simplified Chinese (GB2312)
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027 | Extended Alpha Lowercase
21866 | Ukrainian (KOI8-U)
28591 | ISO 8859-1 Latin I
28592 | ISO 8859-2 Central Europe
28593 | ISO 8859-3 Latin 3
28594 | ISO 8859-4 Baltic
28595 | ISO 8859-5 Cyrillic
28596 | ISO 8859-6 Arabic
28597 | ISO 8859-7 Greek
28598 | ISO 8859-8 Hebrew
28599 | ISO 8859-9 Latin 5
28605 | ISO 8859-15 Latin 9
29001 | Europa 3
38598 | ISO 8859-8 Hebrew
50220 | ISO 2022 Japanese with no halfwidth Katakana
50221 | ISO 2022 Japanese with halfwidth Katakana
50222 | ISO 2022 Japanese JIS X 0201-1989
50225 | ISO 2022 Korean
50227 | ISO 2022 Simplified Chinese
50229 | ISO 2022 Traditional Chinese
50930 | Japanese (Katakana) Extended
50931 | US/Canada and Japanese
50933 | Korean Extended and Korean
50935 | Simplified Chinese Extended and Simplified Chinese
50936 | Simplified Chinese
50937 | US/Canada and Traditional Chinese
50939 | Japanese (Latin) Extended and Japanese
51932 | EUC - Japanese
51936 | EUC - Simplified Chinese
51949 | EUC - Korean
51950 | EUC - Traditional Chinese
52936 | HZ-GB2312 Simplified Chinese
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte)
57002 | ISCII Devanagari
57003 | ISCII Bengali
57004 | ISCII Tamil
57005 | ISCII Telugu
57006 | ISCII Assamese
57007 | ISCII Oriya
57008 | ISCII Kannada
57009 | ISCII Malayalam
57010 | ISCII Gujarati
57011 | ISCII Punjabi
65000 | Unicode UTF-7
65001 | Unicode UTF-8

The following is a list of valid code page identifiers for Mac OS only:

Identifier | Name
1 | ASCII
2 | NEXTSTEP
3 | JapaneseEUC
4 | UTF8
5 | ISOLatin1
6 | Symbol
7 | NonLossyASCII
8 | ShiftJIS
9 | ISOLatin2
10 | Unicode
11 | WindowsCP1251
12 | WindowsCP1252
13 | WindowsCP1253
14 | WindowsCP1254
15 | WindowsCP1250
21 | ISO2022JP
30 | MacOSRoman
10 | UTF16String
0x90000100 | UTF16BigEndian
0x94000100 | UTF16LittleEndian
0x8c000100 | UTF32String
0x98000100 | UTF32BigEndian
0x9c000100 | UTF32LittleEndian
65536 | Proprietary


OFXBatch Errors

Trappable Errors (OFXBatch Class)

XMLp Errors

101 Invalid attribute index.
102 No attributes available.
103 Invalid namespace index.
104 No namespaces available.
105 Invalid element index.
106 No elements available.
107 Attribute does not exist.
201 Unbalanced element tag.
202 Unknown element prefix (can't find namespace).
203 Unknown attribute prefix (can't find namespace).
204 Invalid XML markup.
205 Invalid end state for parser.
206 Document contains unbalanced elements.
207 Invalid XPath.
208 No such child.
209 Top element does not match start of path.
210 DOM tree unavailable (set BuildDOM to true and reparse).
302 Can't open file.


Copyright & Licensing

Copyright & Licensing

END USER LICENSE AGREEMENT

VERY IMPORTANT - READ CAREFULLY: This End User License Agreement ("Agreement") is a legal agreement between you, either for yourself individually or on behalf of the entity that licensed the software, as applicable, "you" or "your", and /N SOFTWARE INC. ("/N SOFTWARE"). Please read the terms and conditions of this agreement carefully before accepting this agreement. By clicking on the "I Agree" button below, you are agreeing to be bound by this agreement for yourself individually and on behalf of the entity that licensed the software and representing that you are authorized to do so. For the purposes of this Agreement, the effective date of this Agreement shall be the date upon which you click the "I Agree" button below. If you do not agree to all of the terms of this agreement, click the "Cancel" button and the installation process will cease. The order for the licensed software may not be cancelled once you have clicked the "I Agree" button. This is a license and not a sale. This Agreement does not operate as an acceptance of any conflicting terms and conditions and shall prevail over any conflicting provisions of any purchase order or any other instruments. If you have signed a written software license agreement with /N SOFTWARE covering the use of the Licensed Software, the terms of the signed license agreement shall take precedence over any conflicting terms of this Agreement. You, at your own expense, shall be responsible for installing the Licensed Software and all Updates.

1. DEFINITIONS. "Authorized User" means one person, named developer, employee or other temporary worker authorized to Use the Licensed Software for personal use or while performing duties within the scope of their employment or assignment. "Commercial Use" means any Use or handling of the Licensed Software by any person or entity, including but not limited to the Authorized User, for financial reasons, whether or not profitable. "License Key" means a unique key-code that enables the Authorized User to Use the Licensed Software. Only /N SOFTWARE and or its representatives are permitted to produce License Keys for Licensed Software. "Licensed Software" means the object code version of the software product(s) listed in the order for which valid License Keys have been issued by /N SOFTWARE or its representatives to the Authorized User. Although the program media may contain other software products, you are licensed to Use only the designated Licensed Software listed in the order for which valid License Keys have been issued. "Use" means to install, load, view, print, update, access, utilize, or store the Licensed Software. "Server" or "Server Environment" means any computer where more than one person can simultaneously either directly or remotely access the Licensed Software. For the avoidance of doubt, the definition of Server includes physical hardware servers located on your premises or in a hosted environment or in a cloud environment, whether or not the physical server is a dedicated machine or a virtual server installation. "Workstation or Desktop" means an attended or remotely controlled computer upon which the Licensed Software is loaded, that is operated by no more than one person at a time.

2. LICENSE GRANTS. Your rights to Use the Licensed Software differ based on the product option you have purchased as listed in the order:

2(a). DEVELOPER LICENSE. If the product option you have purchased is marked as a "DEVELOPER", "SINGLE DEVELOPER", "NAMED DEVELOPER", or "ONE DEVELOPER" license, the following terms apply: In consideration of your payment of applicable license fees, and subject to the terms, conditions, and restrictions set forth in this Agreement, /N SOFTWARE hereby grants to you a limited, non-exclusive, non-transferable license to Use the Licensed Software as follows: (i) install and Use the most recent version and edition of the Licensed Software specified in the License Key; (ii) Use the Licensed Software in conjunction with the maximum number of Authorized User(s) specified in the order, provided that a single License Key is used by a single named Authorized User regardless whether occasionally or full-time. One Authorized User can use the same License Key on more than one Workstation as long as such use is not concurrent; and (iii) make one backup copy of the Licensed Software for archival purposes. For the avoidance of doubt, a Developer License may not be used on a Server.

2(b). DEVELOPMENT WORKSTATION LICENSE. If the product option you have purchased is marked as a "DEVELOPMENT WORKSTATION" or "SINGLE DEVELOPMENT WORKSTATION" license, the following terms apply: In consideration of your payment of applicable license fees, and subject to the terms, conditions, and restrictions set forth in this Agreement, /N SOFTWARE hereby grants to you a limited, non-exclusive, non-transferable license to Use the Licensed Software as follows: (i) install and Use the most recent version and edition of the Licensed Software specified in the License Key; (ii) Use the Licensed Software in conjunction with the maximum number of Development Workstation(s) specified in the order; and (iii) make one backup copy of the Licensed Software for archival purposes.

2(c). SINGLE SERVER LICENSE. If the product option you have purchased is marked as a "SINGLE SERVER" or "SERVER" license, the following terms apply: In consideration of your payment of applicable license fees, and subject to the terms, conditions, and restrictions set forth in this Agreement, /N SOFTWARE hereby grants to you a limited, non-exclusive, non-transferable license to Use the Licensed Software as follows: (i) install and Use the most recent version and edition of the Licensed Software specified in the order; (ii) Use the Licensed Software in conjunction with the maximum number of Servers specified in the order; and (iii) make one backup copy of the Licensed Software for archival purposes.

3. LICENSE RESTRICTIONS. The following restrictions apply to all of the licenses set forth in Section 2 above. You may NOT: (i) sell, redistribute, encumber, give, lend, rent, lease, sublicense, or otherwise transfer the Licensed Software, or any portions of the Licensed Software (except as set forth herein), to anyone without the prior written consent of /N SOFTWARE; (ii) reverse-engineer, decompile, disassemble, modify, translate, make any attempt to discover the source code of the Licensed Software, or create derivative works from the Licensed Software; (iii) share the same License Key between different Authorized Users unless specified in the license grant. You acknowledge and agree that any breach of this Section 3 will constitute a material breach of this Agreement and will result in an immediate termination of the licenses granted herein.

4. APPLICATION DISTRIBUTION. Your right to create and distribute your own product(s) that Use the Licensed Software as a runtime component ("Application(s)") and whether or not a fee is attached thereto differ as noted below. For the avoidance of doubt, You may not distribute the Licensed Software as a runtime component of Your Application(s) without explicit permission from /N SOFTWARE.

4(a). ROYALTY-FREE. If the product option you have purchased is marked as "ROYALTY-FREE" the following terms apply: You may freely distribute your own Applications that use the Licensed Software as a runtime component without owing fees to /N SOFTWARE, if and only if the Licensed Software used by such Application is not marked as a Non-Commercial, Trial, Evaluation, Demonstration or Beta License, and the Applications: (a) contain no modifications to the Licensed Software (including alterations to the original proprietary notices); and (b) are in compiled, executable form; and (c) do not provide substantially the same functionality as the Licensed Software or have as one of their purposes to build other software that would compete with the Licensed Software; and (d) do not reproduce or distribute any portion of the documentation for the Licensed Software or document the Application in a manner that identifies the programmatic interface to the callable routines in the Licensed Software; and (e) are not a software development application that is sold primarily to software developers or system integrators, or a development environment of any kind; and (f) are subject to a license agreement that (i) limits Application end-users use of the Licensed Software to a run-time component, (ii) restricts the Application end-user from changing, altering or modifying the Licensed Software, creating derivative works, translations, reverse assembling, reverse compiling, disassembling, or in any way reverse engineering the Licensed Software, and (iii) prevents the Application end-user from sublicensing, renting, distributing, leasing or otherwise transferring or assigning any portion of the Licensed Software.

4(b). DESKTOP RUNTIME FEE. If the product option you have purchased is marked as "Desktop Runtime Fees", or states "Desktop Fees" in connection with the number of Desktop(s), the following terms apply: you may deploy Applications that use the Licensed Software as a runtime component, if and only if the Licensed Software is licensed for all Desktops where the Applications are deployed and appropriate licensing fees are paid to /N SOFTWARE for each Desktop the Licensed Software is installed upon. The Licensed Software must be distributed with no modifications and no alterations of any kind, including alterations to the original proprietary notices.

4(c). SERVER RUNTIME FEE. If the product option you have purchased is marked as "Server Runtime Fees" or states "Server Fees" in connection with the number of Server(s) the following terms apply: you may deploy Applications that use the Licensed Software as a runtime component, if and only if the Licensed Software is licensed for each Server where the Applications are deployed and appropriate licensing fees are paid to /N SOFTWARE for each Server upon which the Licensed Software is deployed. The Licensed Software must be distributed with no modifications and no alterations of any kind, including alterations to the original proprietary notices.

5. TRIAL, EVALUATION, DEMONSTRATION, OR BETA LICENSES. If the Licensed Software product you have downloaded or otherwise obtained is marked as "TRIAL SOFTWARE" or "EVALUATION COPY" or "DEMONSTRATION COPY" or "BETA LICENSE", (hereinafter collectively referred to as "Trial Software") the following license terms apply: Subject to the terms, conditions, and restrictions set forth in this Agreement, /N SOFTWARE hereby grants to you a limited, non-exclusive, non-transferable license to Use the Trial Software as follows: (i) you may install one copy of the Trial Software for internal testing purposes only for a period of 30 calendar days from the date of installation ("Evaluation Time"). Upon expiration of the Evaluation Time, the Trial Software must be erased from the computer it was installed on and all copies destroyed. Under no circumstances should Trial Software be employed for Commercial Use. Trial Software may contain mechanisms that inhibit its ability to function at a later date. You may not distribute Applications that use the Trial Software as a runtime component.

6. NON-COMMERCIAL LICENSE. If the Licensed Software product you have downloaded or otherwise obtained is marked as "PERSONAL", "HOBBYIST", "NON-COMMERCIAL", or "EDUCATIONAL" the following license terms apply: Subject to the terms, conditions, and restrictions set forth in this Agreement, /N SOFTWARE hereby grants to you a limited, personal, non-exclusive, non-transferable license to Use the Licensed Software as follows: (i) personal and non-Commercial Use of the most recent version and edition of the Licensed Software specified in the License Key; (ii) non-Commercial Use of the Licensed Software in conjunction with the maximum number of Authorized User(s) specified in the product option You have purchased; and (iii) make one backup copy of the Licensed Software for archival purposes. You may not distribute Applications that use the Non-Commercial Software as a runtime component.

7. RIGHTS IN LICENSED SOFTWARE. You acknowledge that the Licensed Software and any copies, regardless of the form or media in which the original or copies may exist, are the sole and exclusive property of /N SOFTWARE; by accepting this License, you do not become the owner of the Licensed Software recorded on the media. You further acknowledge that the Licensed Software, including the code, logic and structure of the Licensed Software, contain valuable trade secrets belonging to /N SOFTWARE. You agree to use your best efforts to prevent the use of the Licensed Software in an unlicensed manner, including but not limited to, on or by non-licensed Workstations or Servers or by persons, programs or interfaces not licensed to access or use the Licensed Software. You further agree to secure and protect the Licensed Software consistent with the maintenance of /N SOFTWARE's rights in the Licensed Software, as set forth in this License. You agree that /N SOFTWARE can use the information provided during the purchase of the Licensed Software to deliver and confirm your purchase, in the marketing or promotion of the Licensed Software, or for other relevant purposes, as well as contact you again about other products, services, or offers.

8. SUBSCRIPTIONS; UPDATES and UPGRADES. /N SOFTWARE licenses certain of its separately-licensed Licensed Software bundled together in a product suite (the "Subscription") for a one (1) year term (the "Subscription Term"). The exact separately-licensed Licensed Software that is bundled into the Subscription may change from time-to-time in /N SOFTWARE's sole discretion as listed on the /N SOFTWARE website. Upon expiration of the Subscription Term, the Authorized User may continue to Use only the Licensed Software which was previously activated by the Authorized User before the expiration of the Subscription Term. For the avoidance of doubt, any individual Licensed Software products included in the Subscription which were not previously activated by the Authorized User during the Subscription Term will expire. You shall not unbundle or repackage the Licensed Software included in the Subscription for distribution, transfer or other disposition. Updates and upgrades to the Licensed Software, including those provided in a Subscription during the Subscription Term, may be provided by /N SOFTWARE from time-to-time, and, if so provided by /N SOFTWARE, are provided upon the terms and conditions offered at that time by /N SOFTWARE in its sole discretion. /N SOFTWARE may provide updates and upgrades to the Licensed Software for free or for any charge, at any time or never, and through its chosen manner of access and distribution, all in /N SOFTWARE's sole discretion.

9. OPEN SOURCE SOFTWARE. If you use open source software or any other third party software not supplied by /N SOFTWARE in conjunction with the Licensed Software as part of the Application, you must ensure that its use does not: (i) create, or purport to create, obligations of use with respect to the Licensed Software; or (ii) grant, or purport to grant, to any third party any rights to or immunities under /N SOFTWARE's intellectual property or proprietary rights in the Licensed Software.

10. OWNERSHIP. You acknowledge that the Licensed Software is protected by U.S. Copyright Law and international treaty and that unauthorized reproduction or distribution is subject to civil and criminal penalties. The Licensed Software is licensed, not sold, to you for Use solely under the terms of this Agreement. The Licensed Software, and all worldwide copyrights and other intellectual property rights therein, are and shall remain the exclusive property of /N SOFTWARE and its licensors, if any. Except for the limited rights expressly granted under this Agreement, You shall have no right, title, or interest (whether by implication, estoppel, or otherwise) in or to the Licensed Software or any intellectual property rights therein. /N SOFTWARE reserves all rights (including without limitation any and all trademarks in and to any trade name, logo, or trademark of /N SOFTWARE or /N SOFTWARE's affiliated companies or licensors) not expressly granted to you by virtue of this Agreement. Except as otherwise expressly provided for in this Agreement, You acquire no rights of any kind in or to, any product designation under which the Licensed Software was or is marketed and shall not make use of the same for any reason except as expressly authorized by this Agreement or otherwise authorized in writing by /N SOFTWARE.

11. THIRD PARTIES. You acknowledge and agree that the Licensed Software may be used to connect to or integrate with software and other technology owned and controlled by third parties. In order to connect to or integrate with any and all other such third party software or technology you may be subject to a license agreement with that third party. You acknowledge and agree that you will look solely to the applicable third party and not to /N SOFTWARE to enforce any of your rights with regard to such third party software or technology.

12. COPIES. The Licensed Software is copyrighted under the laws of the United States and international treaty provisions. Notwithstanding the copyright, the Licensed Software contains trade secrets and confidential information of /N SOFTWARE. You agree not to disclose or otherwise make available any part of the Licensed Software to any third party on any basis, other than as set forth in this Agreement. You agree not to make any copies of the documentation that is provided in hard copy as part of the Licensed Software.

13. TERM AND TERMINATIONS. Subject to the limitations herein, the licenses granted under this Agreement shall be perpetual unless (i) you fail to pay any required fee; (ii) otherwise fail to comply with any of the terms and conditions of the Agreement; or (iii) fail to comply with the terms and conditions set forth above in Section 8 for activating the individual Licensed Software as part of a Subscription, in which case the license shall terminate immediately, and without additional prior notice, provided, however, that copies of the run-time component of the Licensed Software that are part of the Application(s) licensed to third parties may be retained by such licensed third parties in accordance with this Agreement. Upon termination or expiration of this Agreement, you shall return the original and all copies, complete or partial, of the Licensed Software to /N SOFTWARE, and shall not access such media for the purpose of recovering any of the Licensed Software from any copies that may exist with respect to media containing regular backups of your computer or computer system. The provisions of this Agreement that require or contemplate performance after the expiration or termination of this Agreement shall be enforceable notwithstanding such expiration or termination.

14. DISCLAIMER OF WARRANTY. THE LICENSED SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. FURTHER, /N SOFTWARE SPECIFICALLY DOES NOT WARRANT, GUARANTEE, OR MAKE ANY REPRESENTATIONS REGARDING THE USE, OR THE RESULTS OF THE USE, OF THE LICENSED SOFTWARE OR DOCUMENTATION IN TERMS OF CORRECTNESS, ACCURACY, RELIABILITY, CURRENTNESS, OR OTHERWISE. THE ENTIRE RISK AS TO THE RESULTS AND PERFORMANCE OF THE LICENSED SOFTWARE IS ASSUMED BY YOU. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY /N SOFTWARE OR ITS EMPLOYEES SHALL CREATE A WARRANTY OR IN ANY WAY INCREASE THE SCOPE OF THIS WARRANTY, AND YOU MAY NOT RELY ON ANY SUCH INFORMATION OR ADVICE. FURTHER, THE LICENSED SOFTWARE IS NOT FAULT-TOLERANT AND IS NOT DESIGNED, MANUFACTURED OR INTENDED FOR USE OR RESALE AS ON-LINE CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE LICENSED SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). /N SOFTWARE AND ITS SUPPLIERS SPECIFICALLY DISCLAIM ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES.

15. LIMITATION ON LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL /N SOFTWARE'S TOTAL AGGREGATE AND CUMULATIVE LIABILITY TO YOU FOR ANY AND ALL CLAIMS OF ANY KIND ARISING HEREUNDER EXCEED THE AMOUNT OF LICENSE FEES ACTUALLY PAID BY YOU FOR THE LICENSED SOFTWARE GIVING RISE TO THE CLAIM IN THE TWELVE MONTHS PRECEDING THE CLAIM. /N SOFTWARE'S LICENSORS AND THEIR SUPPLIERS SHALL HAVE NO LIABILITY TO YOU FOR ANY DAMAGES SUFFERED BY YOU OR ANY THIRD PARTY AS A RESULT OF USING THE LICENSED SOFTWARE, OR ANY PORTION THEREOF. NOTWITHSTANDING THE FOREGOING, IN NO EVENT SHALL /N SOFTWARE, ITS LICENSORS, OR ANY OF THEIR RESPECTIVE SUPPLIERS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER, INCLUDING, WITHOUT LIMITATION, ANY COMMERCIAL DAMAGES OR LOSSES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OR INABILITY TO USE THE LICENSED SOFTWARE, OR ANY PORTION THEREOF, EVEN IF /N SOFTWARE, ITS LICENSORS AND/OR ANY OF THEIR RESPECTIVE SUPPLIERS HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATIONS MAY NOT APPLY. EACH EXCLUSION OF LIMITATION IS INTENDED TO BE SEPARATE AND THEREFORE SEVERABLE.

16. INDEMNIFICATION. You agree to indemnify, hold harmless, and defend /N SOFTWARE and its suppliers and resellers from and against any and all claims or lawsuits, including attorney's fees, which arise out of or result from (a) your breach of any of the terms and conditions of this Agreement; and (b) the use, procurement, reproduction or distribution of Applications by you, your users or other third parties.

17. U.S. GOVERNMENT RESTRICTED RIGHTS. The Licensed Software is Commercial Computer Software provided with RESTRICTED RIGHTS under Federal Acquisition Regulations and agency supplements to them. Use, duplication or disclosure by the U.S. Government is subject to restrictions as set forth in subsection (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFAR 255.227-7013 et. seq. or 252.211-7015, or subsections (a) through (d) of the Commercial Computer Software Restricted Rights at FAR 52.227-19, as applicable, or similar clauses in the NASA FAR Supplement. Contractor/manufacturer is /N SOFTWARE INC., 600 Market St., Suite 300, Chapel Hill, NC 27516.

18. EXPORT REGULATIONS. The Licensed Software, including technical data, is subject to U.S. export control laws, including the U.S. Export Administration Act and its associated regulations, and may be subject to export or import regulations in other countries. You agree to comply strictly with all such regulations, and agree to obtain all necessary licenses to export, re-export, or import the Licensed Software.

19. USE REPORTING, LICENSE VIOLATIONS AND REMEDIES. /N SOFTWARE reserves the right, and you authorize /N SOFTWARE, to gather data on key usage including license key numbers, Authorized Device IP addresses or other applicable device identifiers (including MAC address or UDID), domain counts and other information deemed relevant, to ensure that our products are being used in accordance with the terms of this Agreement. /N SOFTWARE reserves the right, and you authorize /N SOFTWARE, to remedy violations of any of the terms of this Agreement immediately upon discovery, by charging the then current list price of unauthorized keys to the payment instrument used to make the original, authorized purchase, or by any other means necessary, including remotely disabling the Software. You agree not to block, electronically or otherwise, the transmission of data required for compliance with this Agreement. Any blocking of data required for compliance under this Agreement is considered to be violation of this Agreement and will result in immediate termination of this Agreement pursuant to Section 13.

20. ENTIRE AGREEMENT. YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, UNDERSTAND IT, AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS. YOU ALSO AGREE THAT THIS AGREEMENT IS THE COMPLETE AND EXCLUSIVE STATEMENT OF THE AGREEMENT BETWEEN /N SOFTWARE INC. AND YOU, WHICH SUPERSEDES ANY PROPOSAL, PRIOR AGREEMENT, OR LICENSE, ORAL OR WRITTEN, AND ANY OTHER COMMUNICATIONS RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT. This Agreement shall be construed in accordance with the internal laws of North Carolina and all disputes shall have exclusive venue in the federal and state courts in Durham County, North Carolina, and both parties consent to the jurisdiction of these courts. If any term of this Agreement shall be found invalid, the term shall be modified or omitted to the extent necessary, and the remainder of the Agreement shall continue in full effect.