This specification describes the OFC data format and details how Microsoft ® Money uses OFC for online home banking and online bill payment features.

Microsoft hereby grants to any party a royalty-free, worldwide, perpetual license to use the Open Financial Connectivity and Microsoft® Money Specification to make, use, and sell products and services that conform to this Specification.

Version 1.0.6
September 4, 1996

 

M

 

Contents

Introduction

Audience

Document Overview

Related Documentation

Microsoft Money and OFC

Chapter overview

HTTP

HTTP POST

HTTP response

Connectivity options

Internet

Private dial-up connection

Mode of operation

Batch mode

File import mode

Timeout values

Security

Chapter overview

Possible risks

Microsoft Money solutions

Secure communication protocols

PCT and SSL

Communicating over a private network

OFC User ID and Password

Implementing security

Microsoft Money and the Branding Server

Chapter overview

Identifying a financial institution

Defining information for the Branding Server

Setting Up for Online Services with Microsoft Money

Chapter overview

Setting up for online services with Money

Online Bill Payment with Microsoft Money and OFC

Chapter overview

Paying a bill in Microsoft Money

Entering an electronic payment

Validating the payment

Days-to-pay value

Withdrawal date value

Payee add behavior

Inquiring about a payment

Canceling a payment

Online Banking with Microsoft Money and OFC

Chapter overview

Updating account information

Matching downloaded transactions

Transferring funds

Email

Microsoft Money, OFC and Crash Recovery

Chapter overview

DTCLIENT and Money crash recovery behavior

Server crash recovery behavior

Using the SESSKEY element to track sessions

OFC Data Format Details

Chapter overview

Introduction to the OFC format

Syntax

Structure

Order of records (batch mode)

Identifiers

Element lengths

Unsolicited responses

Server defined error messages

Illegal characters

Record structure with error responses

OFC Aggregates and Elements

Account <ACCTTO>, <ACCTFROM>

Account type <ACCTTYPE>

Action <ACTION>

Amount <AMOUNT>

Date and time <DTCLIENT>, <DTSERVER>

Online services <SERVICE>

Payee <PAYEE>

Statement transactions <STMTTRN>

Status <STATUS>

Transaction type <TRNTYPE>

OFC and Signon Records

OFC <OFC>

Signon Request <SONRQ>

Signon Response <SONRS>

Account Records

Account request <ACCTRQ>

Account response <ACCTRS>

Mail Records

Mail request <MAILRQ>

Mail response <MAILRS>

Online Banking Records

Statement request <STMTRQ>

Statement response <STMTRS>

Intrabank Transfer request <INTRARQ>

Intrabank Transfer response <INTRARS>

Interbank Transfer request <INTERRQ>

Interbank Transfer response <INTERRS>

Online Bill Payment Records

Payee request <PAYEERQ>

Payee response <PAYEERS>

Payment request <PAYMTRQ>

Payment response <PAYMTRS>

Payment inquiry request <PAYIQRQ>

Payment inquiry response <PAYIQRS>

File Import Records

Account statement <ACCTSTMT>

Standard Industrial Code support

Open Financial Connectivity (OFC) is a data format designed to represent financial transactions exchanged between client and server. The OFC format was designed to accommodate the requirements of a variety of banking and bill payment systems, both domestic and international.

The Microsoft Money 5.0 will support the OFC data format for its online home banking and online bill payment features.

Audience

This document is intended for use by banks and solution providers who are evaluating or implementing a home banking server solution using OFC and Microsoft Money.

Document Overview

This specification details the OFC data format and how the next release of Microsoft Money will use OFC. Following the introduction, this specification is divided into the following sections:

u Chapter 1, Microsoft Money and OFC

This explains how Microsoft Money will utilize the OFC data format for online home banking and online bill payment services.

u Chapter 2, Security

This explains how Microsoft Money will secure transactions sent from client to server.

u Chapter 3, Microsoft Money and the Branding Server

This explains the functionality of the Branding Server and how Microsoft Money utilizes it.

u Chapter 4, Setting Up for Online Services with Microsoft Money

This explains the process a user must go through to set up Microsoft Money for use with online services.

u Chapter 5, Online Bill Payment with Microsoft Money and OFC

This explains how Microsoft Money uses features of OFC for its online bill payment functionality.

u Chapter 6, Online Banking with Microsoft Money and OFC

This explains how Microsoft Money uses features of OFC for its online banking functionality.

u Chapter 7, Microsoft Money, OFC and Crash Recovery

This explains how Microsoft Money uses features in OFC to recover from communication and system errors.

u Chapter 8, OFC Data Format Details

This chapter provides more explanation of the OFC data format and introduces how Microsoft Money takes advantage of it.

u Chapter 9, OFC Aggregates and Elements

This explains each aggregate and element in the OFC data format.

u Chapter 10, OFC and Signon Records

This explains the OFC record and the Signon request and response.

u Chapter 11, Account Records

This explains the Account request and response records.

u Chapter 12, Mail Records

This explains the Mail request and response records.

u Chapter 13, Online Banking Records

This explains the records associated with online banking: Statement request and response, Interbank transfer request and response, Interbank transfer request and response

u Chapter 14, Online Bill Payment Records

This explains the records associated with online bill payment: Payee request and response, Payment request and response, Payment inquiry request and response.

u Chapter 15, File import records

This explains the structure for the Account Statement record.

Related Documentation

Additional documents related to OFC, Microsoft Money and online financial services can be found on the Microsoft web site at http://www.microsoft.com/industry/bank/online.htm.

Chapter 1

The Microsoft Money 5.0 will support the OFC data format for its online home banking and online bill payment features.

Chapter overview

HTTP

Microsoft Money will use the HTTP (Hypertext Transfer Protocol) protocol to transfer OFC files to an OFC server. HTTP is the same protocol that is used to run the Internet’s World Wide Web.

HTTP consists of requests and responses. Money will send an OFC request file in an HTTP POST request and will expect an HTTP response with an OFC response file.

HTTP POST

This section includes the HTTP headers that Money will be sending when it sends an HTTP POST command to the bank’s server.

POST URL HTTP/1.0

Connection: Keep-Alive

Pragma: no-cache

User-Agent: XSOFC Driver 1.0

Content-Type: application/x-ofc

Content-Length: length in bytes of OFC file

<OFC>

… data in the OFC file …

</OFC>

Implementation notes on HTTP POST:

HTTP response

This section describes the HTTP headers that Microsoft Money will expect when receiving data from a bank’s server.

HTTP 1.0 statuscode statusstring

Content-Type: application/x-ofc

Content-Length: length in bytes of OFC file

<OFC>

…data in the OFC file…

</OFC>

Notes on HTTP response:

 

Statuscode

Statusstring

Explanation

200

OK

The server should return 200 OK if it was able to process the OFC data sent to it in the HTTP POST and produce a response.

400

Bad request

The server should return 400 Bad request if it is unable to process the OFC request file.

403

Access denied

The server should return 403 Access denied if security is enabled on the server but the client is attempting to connect without security. Money will always attempt to connect with security; this HTTP error should be implemented as a safeguard.

500

Server error

The server should return a status of 500 when the server is unavailable.

Connectivity options

Microsoft Money supports two connectivity options between the client and a bank’s server: Internet and dial-up PPP. A bank must choose one connection method for its customers. Money will offer the same functionality with each connection option.

Internet

Microsoft Money can use the Internet to communicate with a bank’s server. Money will not supply Internet access for its users. A user must have an account with a Windows compatible Internet Service Provider (ISP). Money will use the user’s ISP to create an Internet connection and then use that connection to communicate with the bank’s server.

Implementing the Internet connection option

A bank should take the following steps when supporting an Internet connection:

Private dial-up connection

Microsoft Money can connect to a bank’s server through a private dial-up network running the Point-to-Point protocol (PPP). In this case, the bank will provide the user with a telephone number to connect to their server.

Implementing the Private dial-up connection option

A bank should take the following steps when supporting a private dial-up connection:

PPP setting

Explanation

IP header compression

Money will use IP header compression.

Software compression

Money will use the software compression supported by the PPP server.

Authentication protocols

Money will use the CHAP and SPAP authentication protocols. These will be used when the user connects and logs into the PPP server.

Network login

Money will not support a general network login. Money users will connect to the PPP server and will not be allowed to connect to other computers connected to the bank’s network.

Mode of operation

Batch mode

Microsoft Money 5.0 operates in a batch mode. While off-line, a user will queue up transaction requests (requests for account information, requests to make bill payments, etc.)

When a user chooses to send these requests to their bank, Money will create a single OFC file containing the requests and will send that file to the bank’s server. While the user is online, the bank’s server will process the requests in that file and produce a single OFC file with the responses. The bank server will send this file back to Microsoft Money. When this file has been received, Money will close the communication session and report the results of the session to the user.

File import mode

Microsoft Money will also support file import mode. This mode is designed to allow a user to import transactions in an OFC file (*.ofc) into their Microsoft Money data file.

File import mode does not specify the method of communication between Money and a server; the OFC file could be delivered to the user via electronic mail, downloaded from the World Wide Web, or distributed on a floppy disk. For instance, if a bank’s World Wide Web site allowed users to view the account activity for a particular account, that web site could also allow the user to download an OFC file that represented those transactions. Launching the OFC file will reconcile the transactions in the file with those already entered in Microsoft Money.

Timeout values

Money uses the following timeout values. When these values expire, Money will display an error message to the user telling the user that their bank’s server is unavailable and suggesting that the user attempt to connect at a later time.

Connect (establishing an HTTP connection via the Internet)

2 minutes

Send (Money sending an OFC file to the server)

1 minute

Receive (Money waiting for a response file from the server)

2 minutes

Chapter 2

All connections between Microsoft Money and a server will be secured. This section explains how Microsoft Money will secure sessions with a server.

Chapter overview

Possible risks

Any communication over a network exposes risk to each party involved in the communication and to the data sent over the network. These risks can be summarized as follows:

  1. Private and confidential information sent between client and server could be intercepted.
  2. Private and confidential information stored on a bank’s host system can be accessed by unauthorized individuals.
  3. An attacker can impersonate a user and conduct transactions on behalf of that user.
  4. Harmful code could be sent from the server to the client, possibly causing problems on the client computer.
  5. Harmful code could be sent from the client to the server, possibly causing problems on the server computer.

Microsoft Money solutions

Using features of OFC and standard, Internet security protocols and techniques, an OFC-based solution using Microsoft Money addresses these risks.

  1. All connections (Internet and dial-up PPP) between Microsoft Money and a bank’s server will be secured using the SSL or PCT protocols. These sessions will be encrypted using 128 bit keys (64-bit internationally.) This will create a secure channel of communication between Money and a server.
  2. Because Microsoft Money uses the HTTP protocol to transfer OFC files between client and server, a bank’s architecture using OFC can take advantage of "firewall" technology to isolate the computers on an internal network from the outside world. A firewall can be configured to only accept data of a particular type or from a particular client application. The flexibility of the OFC architecture based on standard protocols enables the bank to choose the firewall solution that meets their needs.
  3. Setting up for online services with Microsoft Money and OFC uses the authentication policies established by the bank. Money’s online services setup process relies on the user contacting their bank and the bank issuing the user an identification code and password. The bank can define the policy detailing how to authenticate the user before enabling online services for that user.
  4. Microsoft Money will only send OFC files to the server. No interpreted or compiled executable code will be sent from Money to the server. OFC files cannot include instructions to disrupt or harm the host system.
  5. Microsoft Money will only accept valid OFC files received from the server. No binary data will be accepted. In addition, Microsoft Money does not use HTTP cookies that store information on the client machine without the user knowing about it.

Secure communication protocols

Microsoft Money will support two Internet standard protocols for securing the communication channel between client and server: Private Communications Technology (PCT) and Secure Sockets Layer (SSL). Money will support PCT 1.0, SSL 2.0 and SSL 3.0.

PCT and SSL also guarantee the integrity of messages sent between client and will authenticate the identity of a server using certificates. Money will support a 128-bit key (64-bit internationally) for use with SSL or PCT.

Note: Email ofc@microsoft.com for more information on enabling your server to use 64 bit encryption.

PCT and SSL

Both PCT and SSL use public-key encryption to secure a channel between client and server. Before any OFC data is sent, Money and the bank’s server will negotiate a session key that is used to encrypt the session. Once a session key has been agreed upon and the session is secure, Money will send an OFC file to the server.

Each session secured using PCT and SSL uses a different session key. If a session is compromised, this security breach is limited to one particular session. Compromising subsequent sessions will involve spending the same amount of effort as it took to compromise the first session.

Using a 128-bit key makes the communication between Money and a bank’s server significantly more secure than previous implementations of SSL that used 40-bit keys. These implementations were subject to "brute force" attacks where it was possible to try each of the 240 possible keys until you find the one that decrypts the message. Using longer 128-bit keys make calculations prohibitively more expensive.

SSL is currently available in the Netscape Navigator browser, Netscape Commerce Server, Microsoft Internet Explorer 2.0, 3.0 and Microsoft Internet Information Server. PCT will be supported in Microsoft Internet Explorer 3.0 and Microsoft Internet Information Server 1.1.

A bank can choose the solution that best meets their needs. For more information about PCT reference http://pct.microsoft.com or http://www.microsoft.com/internet. For more information about SSL reference http://www.netscape.com/newsref/std/SSL.html.

 

Communicating over a private network

A bank can choose to communicate with Microsoft Money using a private dial-up network running the PPP protocol. Microsoft Money will use the same 128-bit (64-bit internationally) SSL or PCT security protocols to communicate on this type of network.

OFC User ID and Password

To set up Microsoft Money for use with OFC, the user will be asked for a bank-issued user identification code and password.

The user identification code must uniquely identify a user (i.e. social security number) on the bank’s server. A user will enter their password into Microsoft Money once and it will be sent to the bank’s server in every session.

A user must enter their password before calling the bank’s server. Microsoft Money will never write this password to disk and will always be displayed as asterisks (*) in the Money user interface. A bank can send a request to Microsoft Money that will force the user to change their password on the next session.

Implementing security

A bank should take the following steps to implement security:

Note: The Common Name on the server’s certificate should be the URL of the server (servername.domainname) For example, www.bank.com is a valid Common Name. When connecting to a server, Money will match the Common Name on the certificate with the server’s URL. If they match, Money will allow the session to proceed. If they don’t match, Money will alert the user that the server they are connecting to may be an impostor. The user will be given the option to proceed or to cancel the session.

Chapter 3

The Branding Server is a server used by Microsoft Money to download details about the online services a bank chooses to offer its customers. The information stored on the Branding Server is provided by the bank and can be updated by the bank at any time. Microsoft Money users will be able to call the Branding Server free of charge.

Information downloaded from the Branding Server tells Money what online services are offered by a bank, how to connect to the bank, and also provides graphics to enhance the Money user interface with the bank’s logo and contact information.

Chapter overview

Identifying a financial institution

The first step in Money’s online services setup process involves the user providing Money with the 9 digit routing and transit number or the first 6 digits of their credit card number.

This information will be sent to the Branding Server. The Server will match the routing and transit number or credit card number to a financial institution. Once the Branding Server has identified an institution, the information provided by the institution will be downloaded to Money.

Defining information for the Branding Server

If a bank has chosen to offer online services to its customers using OFC, the Branding Server will download information telling Microsoft Money how to connect to the bank. This section details the information Money will download from the Branding Server to support an OFC connection.

Money will also download other information such as logos and contact information. A specification for this information will be posted on the Microsoft web site at http://www.microsoft.com/industry/bank/online.htm.

Branding Server provider information for OFC

Each bank who implements an online solution based on OFC will provide a data file in the following format to the Branding Server. These data files are text files and can be composed using Windows Notepad.

Note: Instructions detailing how to submit this information to the Branding Server will be posted on http://www.microsoft.com/industry/bank/online.htm. Or, contact ofc@microsoft.com for more information.

Line item name

Possible values

Details

[OFC]

N/A

This is a constant expected to be the first line of every data file.

Services=

0 - The server supports OFC online banking.


1 - The server supports OFC online bill payment.



0,1 - The server supports both OFC online banking and online bill payment.

0,2 - The server supports OFC online banking and bill payment (Int’l releases only.)

0,3 - The server supports OFC online banking and bill payment (Int’l releases only.)

0,4 - The server supports OFC online banking and bill payment (Int’l releases only.)

This value will enable the Microsoft Money user interface for online banking.

This value will enable the Microsoft Money user interface for online bill payment

This value will enable the Microsoft Money user interface for both services.

This value will enable the Money user interface for both services. The user will be asked to supply a payee ID or the destination account information.

This value will enable the Money user interface for both services. The user will be asked to supply a payee ID.

This value will enable the Money user interface for both services. The user will be asked to supply destination account information.

DaysInquiryMax=

Any number (60 is the minimum required value.)

How many days into the future can the user inquire on an electronic bill payment after its due date.

DaysPreWithdrawalDefault=

Any number

Used for online bill payment services. Number of days lead time before withdrawal of money from user’s bank account.

DaysPostWithdrawalDefault=

Any number

Used for online bill payment services. Number of days after withdrawal of money from user’s bank account when check arrives at payee.

DaysIntraBankPreWithdrawalDefault=

Any number

If the bank processes INTRARQ transfers immediately, this should be zero (0.)

DaysIntraBankPostWithdrawalDefault=

Any number

If the bank processes INTRARQ transfers immediately, this should be zero (0.)

DaysInterBankPreWithdrawalDefault=

Any number

If the bank processes INTERRQ records immediately, this should be zero (0.)

DaysInterBankPreWithdrawalDefault=

Any number

If the bank processes INTERRQ transfers immediately, this should be zero (0.)

URL=

http://ofc.bank.com/isapi.dll

This is the URL for the bank’s OFC server.

Dialup=

0 - Internet
1- Private dial-up

"Internet" means that the bank’s server is accessible via the Internet and the user must use Money with an ISP to connect to the server.
"Private dial-up" means that the bank’s server is accessible via a private dial-up network running the PPP protocol.

CountryID=

TAPI country ID

Needed if Dialup=1. This is the TAPI country ID used by Microsoft Money. The value for the United States is 1.

AreaCode=

The three digit area code of the server’s phone number.

The AreaCode= entry is needed only if Dialup=1.

Phone=

The phone number of the server.

If Dialup=1 and Phone= exists but is blank, Money will prompt the user for a phone number when the user configures Money for online services.

RASUserName=

The user name used to log the user into the PPP server.

This entry is only required if Dialup=1.

RASPassword=

The password used to authenticate the user into the PPP server.

This entry is only required if Dialup=1.

RASPhoneEntry=

Used by Money to name the Dial-Up Networking program used to connect to the PPP server.

This should be the name of the bank, ex. "First Bank."

Notes on the Branding Server data file

 

 

Chapter 4

Before a user can start using online banking and/or online bill payment with Microsoft Money, they must go through a setup process. Microsoft Money will include a wizard to walk the user through each step of the process.

This section of the specification describes each step of the setup wizard, highlighting the bank’s involvement in this process.

Chapter overview

Setting up for online services with Money

Step 1 - Enter RTN or BIN

The first step of setting up online services will involve a user entering in the routing and transit (RTN) or Bank Identification Number (BIN) for their bank. Users will be asked to enter the 9 digit routing and transit number found in the lower left-hand corner of their checks or the first 6 digits of their credit card.

Step 2 - Download info from Branding Server

Next, Money will call the Branding Server and ask it to download a profile of information about the bank. This includes details on how to connect to the bank’s server as well as logos and other information to customize the Money interface.

Step 3 - Enrolling for online services with the bank

The profile will include a description of the online services offered by the bank and instructions that a user should follow to become enrolled for online services.

For example, a bank may tell users to call a 1-800 number and speak with a customer service representative. Or, a bank may point users to their web site where a user can fill out a form and immediately get authorized for online services with Money.

Regardless of the means a bank uses to get a user set up for online services, a bank should provide a user with the following information:

  1. A User ID. The user will be prompted for this in a dialog of the Money online setup wizard. The User ID should uniquely identify a user (e.g. social security number, account number.)
    Note: This is the <USERID> element of the Signon request.
  2. A user password. The user will be prompted for this each time they connect to the bank’s server.
    Note: This is the <USERPASS> element of the Signon request.
  3. (Optional) A phone number used to connect to the bank’s server. If the server is accessible via a private, dial up network, and the bank has not specified a phone number in the Phone= entry of the Branding Server Provider information for OFC (reference chapter 3) then Money will prompt the user to enter a phone number in a dialog of the Money online setup wizard.
  4. A list of accounts enabled for online services. It’s assumed that the bank will enable particular accounts for online services. The bank should tell the user what accounts are enabled and what online services are enabled for those accounts.

For example, the bank should tell the user the following information about each account:

- The name of the account (Checking, Savings, Credit Card)

- The account number of the account.

- The online services enabled for the account (online banking, online bill payment, or both.)

Step 4 - Enabling Money accounts for online services

The final step in Money’s online setup wizard will involve the user enabling their Money accounts for online services. The user will be asked to choose an account they’ve set up in Money and choose the online services (online banking, online bill payment, or both) their bank has enabled for that account.

Chapter 5

Online bill payment is the service where users can send a payment to any payee using Microsoft Money. Online bill payment also includes the ability for users to inquire on the status of previously sent payments and cancel payments.

Chapter overview

Paying a bill in Microsoft Money

Microsoft Money accounts that are enabled for online bill payment will expose additional user interface to help a user denote a payment as one that should be sent using online bill payment.

Entering an electronic payment

Entering an electronic payment entails a user entering the due date of the payment they wish to be paid into the Microsoft Money Account Register. Based on the capabilities of the bill payment system (see the sections on Days-to-pay and Funds withdrawal date below), the Money account register will record the date the funds will be deducted from the user’s account.

Microsoft Money will allow users to schedule electronic payments up to one year into the future.

Validating the payment

If the user is entering a payment to a payee that the user has not paid previously, they will be asked to provide details to route the payment to the payee. This includes the payee’s street address, city, state, zip code, phone number and the user’s account number with that payee. If the user enters a payment to a payee that has been paid previously, Money will not prompt the user for this information.

Determining a valid payment date

Money will use the days-to-pay value to determine if the payment can be made by the due date. Money will add the number of days-to-pay for the payee to the current date (starting with tomorrow.) If the resulting date is less than or equal to the due date of the payment, the payment will be accepted and entered into Money’s account register. If the resulting date is greater than the due date due date of the payment, Money will inform the user that the payment cannot be made and suggest the earliest possible date.

For example, let’s assume that today is January 10th and the user enters January 19th as the desired due date of the payment. The payee the user wants to pay has a days-to-pay value of 5 days. January 10th plus 5 days provides enough lead time to issue a payment by January 19th.

Now the user wants to enter another electronic payment. Today is still January 10th and the user enters January 12th as the due date of the payment. The payee has a days-to-pay value of 5 days. In this case, Money will not allow the user to enter the payment since there is not enough time to get a payment to the payee by the 12th. However, Money will suggest the next date the payment can be made (January 15th.)

Federal Reserve holiday schedule

Microsoft Money will validate payment dates to ensure users request payments on business days (Monday to Friday). And, Money also has knowledge of the Federal Reserve holiday schedule. If a user attempts to schedule a payment on one of these dates, the user will be asked to schedule the payment on the next business day after the holiday.

New Year’s Day

January 1

Martin Luther King Day

Third Monday in January

President’s Day

Third Monday in February

Memorial Day

Last Monday in May

Independence Day

July 4

Labor Day

First Monday in September

Columbus Day

Second Monday in October

Veterans Day

November 11

Thanksgiving Day

Fourth Thursday in November

Christmas Day

December 25

Days-to-pay value

Days-to-pay is the amount of lead time (measured by the number of business days) required to issue a payment to a payee. Money will use this value to determine if a payment can be made by the due date of a payment.

A bill payment service’s default days-to-pay value will be downloaded from the Branding Server. This value will be used to validate payment dates for all new payees. At any time, the server can send Money a new default days-to-pay value using the <DAYSREQD> element in the OFC Signon response.

This value can also be specified by the server for each payee the user has paid electronically. The server must send Money a new days-to-pay value for a particular payee using the <DAYSREQD> element in the OFC Payee response.

Reference the <DAYSREQD> element in the Signon response <SONRS> and Payee response <PAYEERS> records. The Signon response is described in the OFC and Signon Records chapter, the Payee response is described in the Online Bill Payment Records chapter.

Withdrawal date value

The withdrawal date value is the number of business days prior to the payment’s due date when the funds are deducted from the user’s bank account. Some payment systems that require guaranteed funds deduct funds from the user’s account before the due date, while others deduct funds from the user’s account on the date the payment is due.

A bill payment service’s default withdrawal date value will be downloaded from the Branding Server. Microsoft Money will record transactions in the account register according to when the funds are withdrawn from the user’s account. For example, if the user enters a payment with a due date of January 10th and the bill payment service has a funds withdrawal date of four (4), the payment will be recorded in the user’s Money account register as occurring on January 6th.

At any time, the server can send Money a new default funds withdrawn date value using the <DAYSWITH> element in the OFC Signon response.

This value can also be specified by the server for each payee the user has paid electronically. At any time, the server can send Money a new funds withdrawal date value for a particular payee using the <DAYSWITH> element in the OFC Payee response.

Reference the <DAYSWITH> element in the Signon response <SONRS> and Payee response <PAYEERS> records. The Signon response is described in the OFC and Signon Records chapter, the Payee response is described in the Online Bill Payment Records chapter.

Payee add behavior

The first time a user sends a payment to a payee, Money will send the OFC Payee request record (PAYEERQ) in addition to the OFC Payment request record (PAYMTRQ.) The Payee request record includes details about the payee so it can be added to the bill payment system.

The server will respond with a Payee response record. The bill payment service will assign a identification code to a payee and return it to Money in the <PAYEEID> element. If the server has returned a PAYEEID for a payee and the user sends subsequent payments to this payee, Money will send the PAYEEID and not the complete details (street address, city, state, zip code, account number) of the payee.

For more information, reference the <PAYEEID> element in the Payee response <PAYEERS> and Payment request <PAYMTRQ> records. The Payee response and Payment request are described in the Online Bill Payment Records chapter.

 

Inquiring about a payment

Using Microsoft Money, users will be able to inquire about the status of a previously sent payment. Inquiries are modeled after email; users can select a particular payment and type a question about it. This email will be sent as an OFC Payment Inquiry request to the server. The OFC Payment Inquiry request will include the payment’s confirmation number (SRVRTID) for easy reference by the bill payment processor.

For more information, reference the MAILRQ,, MAILRS and PAYIQRQ, PAYIQRS records in the Mail Records chapter and the Online Bill Payment records chapter.

Canceling a payment

Money users can sent requests to cancel a payment if the payment has not yet been processed. If today’s date + days-to-pay are less than the due date of the payment, Money will enable user interface that will allow the user to send a request to cancel a payment to the server.

 

Chapter 6

Online banking is the service where users can download their latest account balance, posted transactions and transfer money between accounts. Online banking also enables the user to send email to their bank.

Chapter overview

Updating account information

For each account enabled for online banking, Microsoft Money will request the latest account balance and a list of transactions that have been posted to the account during every session with the server. A user can choose to disable these requests, but Money will enable them by default.

After the user has downloaded their statement, Money will help the user reconcile the statement against transactions they may have already recorded in their Account Register. The next section details how Money reconciles downloaded statements.

Matching downloaded transactions

Money includes an algorithm that will attempt to match transactions that the user has entered in their Money Account Register to those that have been downloaded in STMTRS or ACCTSTMT records. This section describes what elements a server should return to facilitate Money’s matching algorithm.

Transferring funds

Users can transfer funds to and from accounts that are enabled for online banking. Both accounts must be at the same bank. Money will not allow future-dated transfers.

Email

Users who have enabled online banking in Microsoft Money will be able to send messages to their bank.

Chapter 7

Microsoft Money and a bank’s server communicate in a batch mode model where in a single session, Money will send a request file of OFC records to a server, the server will process this request file and return a response file of OFC records back to Money. During a session with a bank’s server, it is possible that the communication session will terminate prematurely.

Crash Recovery is the behavior built into Microsoft Money to ensure that duplicate transaction requests are not processed by the server and to minimize the amount of user uncertainty when the communication session is interrupted. Money uses the DTCLIENT element in the OFC Signon request record for crash recovery.

Chapter overview

DTCLIENT and Money crash recovery behavior

On each session with the server, Money will put the date and time of the call in the DTCLIENT element of the Signon request.

If a communication error occurs during a session or if the connection encounters a "time-out," Microsoft Money will enter crash recovery mode. While in this mode, a user will not be confident if their transactions were received by the server or not.

While in crash recovery mode, Money will not permit the user to send new transactions to the server. The user will be prompted to call the server again and resend the previous set of transactions. Crash recovery mode persists between sessions with Money.

When the user calls the server again, Money will send the exact same OFC request file to the server as it did on the last call to the server, when Money encountered a crash. This file will have the DTCLIENT value of the previous session. Money assumes that the server didn’t receive the transactions and sends them again. If the transactions were received and processed by the server, it is the server’s responsibility to prevent the transactions from processed twice.

Server crash recovery behavior

To guarantee that transactions are not processed multiple times, the server should store the OFC request and response files of the previous session.

When the server receives a request file from Money, it should compare the value in the DTCLIENT element of the Signon request to the DTCLIENT element of the last request file.

If they are equal, the server should assume Money is calling in crash recovery and the server should not process the transactions in the request file and send the response file from the previous session back to Money. If the DTCLIENT values are not equal, the server should process the transactions and send a new response file back to Money.

Algorithm to follow:

If (DTCLIENT in the current Signon request == DTCLIENT in the previous Signon request)

Don’t process the transactions in the request
Send the previous response file to Money

Else

Process the transactions in the request

Using the SESSKEY element to track sessions

Note: This section describes optional functionality for a server.

Money identifies each session with the server using the SESSKEY element in the OFC Signon record. The SESSKEY should be a value that uniquely identifies each user’s session between client and server.

A bank may want to make sure a user is calling their server in sequence by tracking SESSKEY values. If the user calls the server with an unexpected SESSKEY value, the bank can consider this to be an error and deny a user access to the server.

On the first call to an OFC server, Money will send a SESSKEY of zero (0) in the Signon request record. The server will process this request and send a Signon response back to Money. The Signon response from the server should include a SESSKEY value that will be sent in the next Signon request sent to the server.

On subsequent calls to the server, the Signon request sent from Money will include the SESSKEY value that was returned in the last session’s Signon response.

As an extra layer of security, the server can treat SESSKEY as session sequence numbers. The server should maintain the current and previous SESSKEY values.

If the user is calling with a SESSKEY that is unexpected (not the current or previous SESSKEY,) the server can reject the transactions in the request file. The server should return a Signon response record with a STATUS of 103 (Bad SESSKEY.) Based on this STATUS code, Money will display an error message to the user asking them to call their bank.

When the user calls their bank, it is expected that the bank will re-authenticate the user and then configure the server such that the next time the user connects, the server will process the transactions in the request file.

Algorithm to follow if the server is tracking SESSKEYs:

If (DTCLIENT in the current Signon request == DTCLIENT in the previous Signon request)

Don’t process the transactions in the request
Send the previous response file to Money

Else

If SESSKEY in the request file is the expected SESSKEY

Process the transactions in the request

Else

SESSKEY in the request file is not the expected SESSKEY and is not the previous SESSKEY

Don’t process the transactions in the request
Send just a Signon response with STATUS of 103

Notes:

Chapter 8

This chapter includes an introduction and some general notes about how Microsoft Money uses the OFC data format.

The OFC data format is composed of a set of records, each designed to represent a particular type of transaction between Microsoft Money and a server.

OFC is designed in a request-response model. OFC records come in pairs; each transaction includes a request and a response. The request transaction is designed to ask the server a question, the response will provide the answer. For example, one OFC transaction request asks the server for the latest balance of an account, and the response delivers the account balance to Microsoft Money.

Chapter overview

Introduction to the OFC format

Syntax

OFC files use a syntax based on Standardized General Markup Language (SGML). Records and aggregates are marked using open and closing tags to denote the beginning and end of the record or element. Elements are marked in a similar fashion, using one tag. Data immediately follows the tag.

Structure

OFC files are composed of records, aggregates, and elements. Each OFC record can hold a series of elements and/or aggregates. Elements represent single pieces of data like a date or a password. Aggregates are collections of elements and are used to describe more complex structures like an account or a payee. For example:

<Record>

<Element>

<Aggregate>

<Element>

</Aggregate>

</Record>

Order of records (batch mode)

Microsoft Money requires that records in a valid OFC file be in the following order:

Note: <OFC> and </OFC> tags must surround every OFC file.

Request file

Response file

<OFC>

<OFC>

Signon records

 

Signon request <SONRQ>

Signon response <SONRS>

Maintenance records

 

Account request <ACCTRQ>

Account response <ACCTRS>

Payee request <PAYEERQ>

Payee response <PAYEERS>

Mail request <MAILRQ>

Mail response <MAILRS>

Transaction records

 

Intrabank transfer request <INTRARQ>

Intrabank transfer response <INTRARS>

Interbank transfer request
<INTERRQ>

Interbank transfer response <INTERRS>

Statement request <STMTRQ>

Statement response <STMTRS>

Payment request <PAYMTRQ>

Payment response <PAYMTRS>

Payment inquiry request <PAYIQRQ>

Payment inquiry response <PAYIQRS>

</OFC>

</OFC>

Notes:

OFC files must have Signon records, then Maintenance records and then Transaction records. Within each section, the individual records do not need to be in a particular order.

Identifiers

OFC uses three identifiers to uniquely identify transactions. This section describes the purpose of each identifier.

Identifier

Description

<CLTID>

Client identifier. This value is assigned by Money to uniquely identify a transaction.

CLTIDs are found in every OFC record except the Signon request and Signon response.

The server should always echo the CLTID value from the request in the response. CLTID is used to match OFC responses with OFC requests.

CLTID can be up to 10 digits in length.

<SRVRTID>

Server transaction identifier. This value is assigned by a server to identify a transaction. For example, a confirmation number for a transaction is a SRVRTID.

SRVRTID appear in the Money user interface as a "Confirmation #" for a payment. Money will display up to 8 characters for a Confirmation #.

SRVRTIDs appear in STMTRS, INTRARS, INTERRS, PAYMTRS, PAYIQRQ, PAYIQRS, ACCTSTMT records.

<FITID>

Financial institution transaction identifier. This value is assigned by a financial institution to identify a transaction. FITIDs are included in STMTRS and ACCTSTMT records.

Money uses FITIDs to prevent duplicate transactions when the user reconciles a downloaded bank statement.

FITIDs appear in the STMTRS and ACCTSTMT records. It is strongly suggested that STMTRS and ACCTSTMT records include FITID elements for each transaction.

FITIDs can be no longer than 255 characters.

Element lengths

The following table lists the field lengths imposed by Money 5.0 on some OFC elements. Maximum lengths are listed in the Length column.

Element

Length

<ACCTID> Account number

22 characters

<BANKID> Routing number

9 characters

<BRANCHID> Branch number

9 characters

<MEMO> Memo text

255 characters

<NAME> Payee name

32 characters

<ADDRESS> Address

32 characters

<CITY> City

20 characters

<ST> State

2 characters

<POSTALID> Zip code

9 characters

<PHONE> Phone number

10 characters

<PAYEEID> Payee identifier

32 characters

<PAYACCT> Account number with payee

32 characters

<USERID> User identifier

32 characters

<USERPASS> User password

32 characters

<SESSKEY> Session key

32 characters

Unsolicited responses

Two OFC records can be sent "unsolicited" from server to client. Unsolicited responses do not have a corresponding request in the session.

The Payee response <PAYEERS> and Mail response <MAILRS> can be sent unsolicited. Unsolicited transactions will have a CLTID of "0" and a STATUS of "4."

A Payee response can be sent unsolicited if the bill payment processor has new information about a payee that needs to be reflected in Money. A Mail response can be sent unsolicited if the answer to the user’s question was not available during the session.

Server defined error messages

Each OFC response includes an <ERROR> element to hold error messages produced by the server. If the STATUS element in an OFC response is 100, Microsoft Money will display the information in the <ERROR> element to the user in its Call Summary dialog box. If a request was rejected by the server, the <ERROR> element should inform the user why the request was rejected and instruct them how to remedy the situation.

Servers can include one <ERROR> element in each response record. Each <ERROR> can be up to 65,534 characters long.

Illegal characters

An OFC server should never include the greater than or less than characters (>, <) in the data of a response. This applies to all aggregates and elements. Money will be unable to read OFC files that contain these characters. For example, this is an illegal response:

<MEMO>This is > than that.

Record structure with error responses

OFC response records include the STATUS element that tells Money if the corresponding request record was accepted or not. STATUS != 0 tell Money that the server did not process the request record.

When returning a response with a STATUS != 0, the server should include an opening tag for the record, a CLTID, a STATUS, (an ERROR if the STATUS is 100) and a closing tag for the record.

For example:

<MAINTRS>
<CLTID>000003
<STATUS>1
</MAINTRS>

 

 

 

 

Chapter 9

This section of the document details the structure and syntax of valid aggregates and elements in OFC. Aggregates are collections of elements, elements represent single pieces of data.

These aggregates and elements are refernced in the subsequent pages of this spec that detail specific OFC records. This chapter is designed to be a reference, refer to each OFC record for details….

Account <ACCTTO>, <ACCTFROM>

The account aggregate is used to describe an account.

Tag

Description

<BANKID>

Unique identifier for the bank (e.g. routing and transit number)

<BRANCHID>

Used to describe international banks.

<ACCTID>

Account number at bank

<ACCTTYPE>

Type of account (aggregate)

 

Account type <ACCTTYPE>

The account type aggregate provides a more detailed description of an account. Money uses it to match downloaded accounts with those created in Money.

Value

Description

0

Checking

1

Savings

2

Credit card

3

Money market

4

Line of credit

5

Loan (Not supported by Microsoft Money)

6

Interbank transfer payee

7

Other

Action <ACTION>

The action is used in transaction requests to instruct the server to do something on behalf of the user.

Value

Description

0

Add

1

Delete

2

Change

Amount <AMOUNT>

Amounts are composed of digits. A period "." or comma "," should be used to separate digits. If the amount is a debit, a minus "-" sign should be placed before the digits.

Amounts should always have 2 numbers following a decimal point.

<AMOUNT> XXXX.XX (credit w/ period)

<AMOUNT> XXXX,XX (credit w/ comma)

<AMOUNT>-XXXX.XX (debit w/ period)

<AMOUNT>-XXXX,XX (debit w/ comma)

Date and time <DTCLIENT>, <DTSERVER>

<DTCLIENT> and <DTSERVER> are used to specify date and time values. Both of these elements are based on the local time of the server and Money. The following syntax is supported

YYYYMMDDHHMMSS

YYYYMMDD (no time specified)

Online services <SERVICE>

SERVICE is used to define the online services supported by the server.

Value

Description

0

Online banking

1

Online bill payment

2

Interbank transfer (int’l.)

3

Interbank transfer (int’l.)

4

Interbank transfer (int’l.)

Notes on SERVICE:

Payee <PAYEE>

PAYEE is used to describe a payee (merchant or individual). A PAYEE can be anyone the user wishes to pay electronically.

Tag

Description

<NAME>

Name of payee

<ADDRESS>

First line of payee’s address

<ADDRESS>

Second line of payee’s address

<CITY>

Payee’s city

<STATE>

Payee’s state

<POSTALID>

Zip code

<PHONE>

Payee’s telephone number

 

Statement transactions <STMTTRN>

For each transaction downloaded in a STMTRS, a complete STMTTRN should be provided to describe the transaction.

Tag

Description

<TRNTYPE>

Type of transaction (aggregate)

<DTPOSTED>

Date transaction was posted to account

<TRNAMT>

Amount of transaction

<FITID>

Financial institution’s identifier for a statement transaction

<CLTID>

Money assigned transaction identifier

<SRVRTID>

Transaction identifier issued by the server

<CHKNUM>

Reference number for a transaction

<SIC>

Standard Industrial Code

<PAYEEID>

Payee identifier

<PAYEE>

Payee of transaction (aggregate)

<NAME>

Name of payee

<MEMO>

Description of transaction

Notes on STMTTRN:

 

Status <STATUS>

STATUS is used in responses to indicate the state of the request.

Value

Description

0

Accepted

1

Rejected

4

No CLTID (unsolicited transaction)

5

Bad SESSKEY (See chapter on Crash recovery)

100

Undefined error, include description in <ERROR> text

101

USERID not recognized

102

USERPASS not recognized

103

Password change requested

104

Account not recognized

 

Transaction type <TRNTYPE>

TRNTYPEs are used to define the type of a transaction.

Value

Description

0

Credit

1

Debit

2

Interest

3

Dividend

4

Service charge

5

Deposit

6

ATM withdrawal

7

Transfer

8

Check

9

Electronic payment

10

Cash withdrawal

11

Electronic payroll deposit

12

Other

Notes on <TRNTYPE>:

 

 

 

 

Chapter 10

OFC and Signon records are used to identify the OFC file and to authenticate a user on a server.

Tags displayed in bold are required by Microsoft Money.

OFC <OFC>

The OFC record contains the version of the OFC data format used to create the file.

Tag

Description

<OFC>

Opening tag for the OFC record.

<DTD>

Version of the Document Type Definition used to parse this OFC file.

<CPAGE>

Code page of the server computer.

…OFC records…

Additional OFC records are inserted in between the <OFC> and </OFC> tags.
Note: See Chapter 8 for the order of OFC records.

</OFC>

Closing tag for the OFC record.

Implementation details on <OFC>

 

Signon Request <SONRQ>

The Signon request is designed to contain information to log the user into a server. This record can also be used to identify the session between client and server.

Tag

Description

<SONRQ>

Opening tag for the SONRQ record.

<SESSKEY>

Session identifier. Used to keep track of the session between client and server. Can be up to 32 characters in length.

<DTCLIENT>

Date and time of the client computer used for crash recovery

<USERID>

User identification on server. Money allows a USERID up to 32 characters in length.

<USERPASS>

User’s password on server. Money allows a USERPASS up to 32 characters in length.

<NEWPASS>

If the client allows the user to change their password, this field could hold the new password.

</SONRQ>

Closing tag for the SONRQ record.

Notes on <SONRQ>

 

Signon Response <SONRS>

The Signon response answers the Signon request.

Tag

Description

<SONRS>

Opening tag for the SONRS record.

<STATUS>

Possible values here:
Value Description
0 The transactions in the session were processed by the server.
5 The bank would like the user to change their password.
100 A general error from the server.
101 The USERID sent in the SONRQ is wrong.
102 The USERPASS sent in the SONRQ is wrong.
103 The SESSKEY is out of sequence.

<DTSERVER>

Date and time of the server.

<ERROR>

If the STATUS is 100, an explanation should be provided here.

<SESSKEY>

The SESSKEY for use in the next session.

<SERVICE>

Possible values here:
Value Description
0 The server supports Online Banking
1 The server supports Online Bill Payment
2 The server supports Interbank transfers based on the user providing a Payee ID and destination account information. (Int’l releases only.)
3 The server supports Interbank transfers based on the user providing a Payee ID. (Int’l releases only.)
4 The server supports Interbank transfers based on the user providing destination account information. (Int’l releases only.)
Note: If both services are supported, include two <SERVICE> elements.

<DAYSREQD>

The default days-to-pay value for a bill payment service.

<DAYSWITH>

The default funds withdrawn value for a bill payment service.

</SONRS>

Closing tag for the SONRS record.

Notes on implementing <SONRS>:

When implementing the SONRS, follow these instructions based on the STATUS value returned:

If STATUS is 0

If STATUS is 5

If STATUS is 100

If STATUS is 101

If STATUS is 102

If STATUS is 103

If the user has changed their password

<MAINTRS>

<STATUS>4

<MAILRS>

<MEMO>Your password has been successfully changed.

</MAILRS>

</MAINTRS>


If the password was not changed, return the following MEMO in the same record as above:

<MEMO>Your password was not changed.

 

Chapter 11

Account records are used to describe the online services available for a user’s account.

Microsoft Money will send the server an Account request after the user enables or changes the online services for a particular account. The server is expected to return an Account response with the status of the user’s accounts on the server.

Tags displayed in bold are required by Microsoft Money.

 

Account request <ACCTRQ>

The Account request can be used to enable, or change online services for a particular account.

Tag

Description

<MAINTRQ>

Opening tag for the maintenance request

<CLTID>

This field includes a unique transaction identifier assigned Money.

<ACTION>

Possible values here:
Value Description
0 Add. The user has enabled accounts in Money Online Banking and/or Online Bill Payment and is calling the server for the first time.
2 Change. The user has already called the server and sent an ACCTRQ with Action of 0 for the account. The user has changed their accounts in Money and Money is sending a new ACCTRQ with Action of 2 to communicate these changes to the server.

<ACCTRQ>

Opening tag for the account request record

<ACCTFROM>

Opening tag of the account from aggregate.

<BANKID>

Code (e.g. routing and transit number) used to identify a bank.

<BRANCHID>

Code used to uniquely identify bank internationally.

<ACCTID>

Code (e.g. account number) used to uniquely identify an account.

<ACCTTYPE>

Possible values here:
Value Description
0 Checking
1 Savings
2 Credit card

</ACCTFROM>

End tag for account from aggregate.

<SERVRQST>

Opening tag of services requested aggregate.

<SERVICE>

Possible values here:
Value Description
0 Online banking
1 Online bill payment
2 Interbank transfer (See page 43)
3 Interbank transfer (See page 43)
4 Interbank transfer (See page 43)

<ACTION>

Possible values here:
Value Description
0 Enabling the SERVICE for this account
1 Disabling the SERVICE for this account

</SERVRQST>

Closing tag of services requested aggregate.

<SERVRQST>

Opening tag of services requested aggregate.

<SERVICE>

Possible values here:
Value Description
0 Online banking
1 Online bill payment

<ACTION>

Possible values here:
Value Description
0 Enabling the SERVICE for this account
1 Disabling the SERVICE for this account

</SERVRQST>

Closing tag of services requested aggregate.

</ACCTRQ>

Closing tag of account request

</MAINTRQ>

Closing tag for the MAINTRQ record.

Notes on implementing <ACCTRQ>:

When implementing the ACCTRQ, follow these instructions:

If ACTION is 0:

If ACTION is 2:

Account response <ACCTRS>

The Account response record answers the Account request. The Account response tells the client what online services are available for a particular account.

Tag

Description

<MAINTRS>

Opening tag for the maintenance response record.

<CLTID>

This element should contain the exact same CLTID sent in the ACCTRQ.

<STATUS>

Possible values here:
Value Description
0 The ACCTRQ was accepted by the server.
104 The account referenced in ACCTFROM is invalid.

<ERROR>

The server can send Money an error message in this element.

<ACCTRS>

Opening tag of the account response aggregate.

<SERVAUTH>

Opening tag of the services authorized aggregate.

<SERVICE>

Possible values here:
Value Description
0 Online banking
1 Online bill payment
2 Interbank transfer (See page 43)
3 Interbank transfer (See page 43)
4 Interbank transfer (See page 43)

<STATUS>

Possible values here:
Value Description
0 The SERVICE is enabled for this account.
1 The SERVICE is disabled for this account.

</SERVAUTH>

Closing tag of the services authorized aggregate.

<SERVAUTH>

Opening tag of the services authorized aggregate.

<SERVICE>

Possible values here:
Value Description
0 Online banking
1 Online bill payment

<STATUS>

Possible values here:
Value Description
0 The SERVICE is enabled for this account.
1 The SERVICE is disabled for this account.

</SERVAUTH>

Closing tag of the services authorized aggregate.

</ACCTRS>

Closing tag of the account response aggregate.

</MAINTRS>

Closing tag of the maintenance response record.

Notes on implementing <ACCTRS>:

Chapter 12

Mail records are used to send messages between the user and their financial institution.

Microsoft Money will allow a user to generate email up to 18 lines long with up to 60 characters per line. Mail from server to Money can be up to 36 lines long, with up to 60 characters per line.

Tags displayed in bold are required by Microsoft Money.

Mail request <MAILRQ>

The Mail request record includes information describing the type of mail as well as the contents of the message.

Tag

Description

<MAINTRQ>

Opening tag for the maintenance response record.

<CLTID>

This element will contain a unique value assigned by Money.

<ACTION>

Possible values here:
Value Description
0 Add

<MAILRQ>

Opening tag for the mail request record.

<SERVICE>

Possible values here:
Value Description
0 Online banking
1 Online bill payment

<ACCTFROM>

Opening tag of the account from aggregate.

<BANKID>

Code (e.g. routing and transit number) used to uniquely identify bank.

<BRANCHID>

Code used to uniquely identify bank internationally.

<ACCTID >

Code (e.g. account number) used to uniquely identify account at bank.

<ACCTTYPE>

Type of account referenced.

</ACCTFROM>

Closing tag of the account from record.

<MEMO>

The text of the message from user to financial institution. Multiple MEMO elements can be included.

</MAILRQ>

Closing tag for mail request record.

</MAINTRQ>

Closing tag for maintenance record.

Implementation notes on <MAILRQ>

<MEMO>To: Customer Service
<MEMO>Subject: Subject


The user is able to enter any text in the To: and Subject: fields.

If <SERVICE> is 0

If <SERVICE> is 1

Mail response <MAILRS>

The Mail response record can contain a message from financial institution to user.

Tag

Description

<MAINTRS>

Opening tag for the maintenance request record.

<CLTID>

This element can contain the client’s CLTID so the client can match requests with corresponding responses.

<STATUS>

Possible values here:
Value Description
0 Accepted
4 Unsolicited (no MAILRQ)

<MAILRS>

Opening tag for the mail response record.

<MEMO>

This element can contain the message from the financial institution to the user.

</MAILRS>

Closing tag of the Mail response record.

</MAINTRS>

Closing tag of the Maintenance response record.

Notes on <MAILRS>

 

 

 

 

Chapter 13

Online Banking records correspond to the online banking features offered by Microsoft Money. Enabling online banking services for an account will allow the user to download a list of posted transactions and the latest balance for an account. Online banking will also allow the user to make transfers between accounts enabled for online banking at the same bank.

The Interbank Transfer records are for use in international markets who support them. These transactions will not be sent from the North American release of Money.

Tags displayed in bold are required by Microsoft Money.

Statement request <STMTRQ>

The Statement request record is used to request the latest balance and a list of posted transactions for an account.

Tag

Description

<TRNRQ>

Opening tag for the transaction

<CLTID>

Money assigned transaction identifier

<ACTION>

Possible values here:
Value Description
0 Sending a new STMTRQ to the system.

<STMTRQ>

Opening tag for the Statement request

<ACCTFROM>

Opening tag for account from aggregate

<BANKID>

Routing and transit number for bank

<BRANCHID>

Bank identifier for international banks

<ACCTID>

Account number for account

<ACCTTYPE>

Type of account referenced

</ACCTFROM>

End tag for account from aggregate.

<DTSTART>

Start date of statement requested.

<DTEND>

Ending date of statement requested.

</STMTRQ>

End tag for statement request record.

</TRNRQ>

End tag for transaction request

Notes on <STMTRQ>

 

Statement response <STMTRS>

The Statement response record provides Money with a list of posted transactions and the latest account balance.

Tag

Description

<TRNRS>

Opening tag for the transaction response

<CLTID>

Client assigned transaction identifier

<STATUS>

Possible values here:
Value Description
0 Accepted
1 Rejected
100 General error, error text included in ERROR
104 Account in ACCTFROM not recognized.

<ERROR>

Error text from server

<STMTRS>

Opening tag for the Statement response

<DTSTART>

Start date of statement

<DTEND>

End date of statement

<LEDGER>

Ledger balance for account.

<STMTTRN>

Start tag for statement transaction aggregate
Note: Each transaction in the statement should be represented by a STMTTRN aggregate.

<TRNTYPE>

Possible values here:
Value Description
0 Credit, positively affects account balance
1 Debit, negatively affects account balance
2 Interest
3 Dividend
4 Service charge
5 Deposit
6 ATM withdrawal
7 Transfer
8 Check
9 Electronic payment
10 Cash withdrawal
11 Direct debit of paycheck
12 Other

<DTPOSTED>

Date transaction was posted to the account

<TRNAMT>

Amount of transaction.

<FITID>

Transaction identifier issued by financial institution.

<CLTID>

Money assigned transaction identifier

<SRVRTID>

Transaction identifier issued when bill payment was made.

<CHKNUM>

Check number for transaction.

<SIC>

Standard Industrial Code

<PAYEEID>

Bill payment identifier for the payee.

<NAME>

Name of payee
Note: The STMTTRN must include a NAME or a PAYEE, but not both.

<PAYEE>

Payee aggregate for the payee.
Note: The STMTTRN must include a NAME or a PAYEE, but not both.

<ACCTTO>

Account to aggregate. Recommended if transaction is a transfer.

<MEMO>

Description of transaction

</STMTTRN>

End tag of statement transaction

</STMTRS>

End tag of statement response record

</TRNRS>

End tag of transaction response.

Notes on <STMTRS>

This table details where each STMTRS element is recorded in a Money Account Register transaction.

STMTRS element

How Money uses it in a transaction

<CHKNUM>

Check number

<PAYEE> or <NAME>

Payee

<TRNAMT>

Amount

<MEMO>

Memo

Notes on credit card statements:

A server should follow these instructions when returning credit card statement data:

If STATUS is 0

If STATUS is 1

If STATUS is 100

If STATUS is 104

 

 

 

 

Intrabank Transfer request <INTRARQ>

The Intrabank Transfer request is used to transfer funds between accounts at the same bank. Both accounts must be enabled for online banking services in Money.

Tag

Description

<TRNRQ>

Opening tag for the transaction request

<CLTID>

Client assigned transaction identifier

<ACTION>

Possible values here:
Value Description
0 Adding an INTRARQ to the system

<INTRARQ>

Opening tag for the Intrabank transfer request

<ACCTFROM>

Account funds are transferred from

<BANKID>

Routing and transit number of bank

<BRANCHID>

Bank identifier for international markets

<ACCTID>

Account number

<ACCTTYPE>

Type of account

</ACCTFROM>

End tag for account from aggregate

<TRNAMT>

Amount of funds transfer

<ACCTTO>

Destination account of funds transfer

<BANKID>

Routing and transit number of bank

<BRANCHID>

Bank identifier for international markets

<ACCTID>

Account number of destination account

<ACCTTYPE>

Type of account

</ACCTTO>

End tag for account to aggregate

<MEMO>

Message from user to payee

</INTRARQ>

End tag of intrabank transfer request

</TRNRQ>

End tag of transaction request

Notes on <INTRARQ>

Intrabank Transfer response <INTRARS>

The Intrabank Transfer response is used to inform the user of the success or failure of their transfer.

Tag

Description

<TRNRS>

Opening tag for the transaction response

<CLTID>

Client assigned transaction identifier

<STATUS>

Possible values here:
Value Description
0 Accepted
1 Rejected
100 General error, error text included in ERROR
104 Account in ACCTFROM not recognized.

<ERROR>

Server defined error text

<INTRARS>

Start tag for Intrabank response

<SRVRTID>

Transaction identifier issued by the server

<DTPOSTED>

Date and time transfer was posted to the account

</INTRARS>

End tag for intrabank transfer response.

</TRNRS>

End tag for transaction response.

Notes on <INTRARS>

If STATUS is 0

If STATUS is 1

If STATUS is 100

If STATUS is 104

 

 

Interbank Transfer request <INTERRQ>

The Intrabank Transfer request is used in international versions of Money to accommodate payment systems that are based on transferring funds between accounts.

This transaction will not be used in US releases of Microsoft Money.

Tag

Description

<TRNRQ>

Opening tag for the transaction request

<CLTID>

Client assigned transaction identifier

<ACTION>

Possible values here:
Value Description
0 Adding an INTERRQ to the system
1 Deleting an INTERRQ from the system
2 Changing an INTERRQ on the system.

<INTERRQ>

Opening tag for the interbank transfer request

<ACCTFROM>

Account funds are transferred from (source)

<BANKID>

Bank identifier

<BRANCHID>

Bank identifier in some international markets.

<ACCTID>

Account number for account

<ACCTTYPE>

Type of account

</ACCTFROM>

End tag of account from aggregate

<TRNAMT>

Amount of transfer

<ACCTTO>

Start tag of account to aggregate (destination)
Note: Either an ACCTTO or PAYEEID are required, not both.

<BANKID>

Bank identifier

<BRANCHID>

Bank identifier in some international markets.

<ACCTID>

Account number for account

<ACCTTYPE>

Type of account

</ACCTTO>

End tag of account to aggregate

<PAYEEID>

Identifier of payee
Note: Either an ACCTTO or PAYEEID are required, not both.

<NAME>

Name of payee

<PAYACCT>

User’s account number with the payee

<DTDUE>

Date user wishes to transfer funds

<SRVRTID>

Transaction identifier issued by server.

<MEMO>

 

</INTERRQ>

End tag for interbank transfer request

</TRNRQ>

End tag for transfer request

Notes on INTERRQ:

Interbank Transfer response <INTERRS>

The Intrabank Transfer response provides an answer to the interbank transfer request.

This transaction will not be used in US releases of Microsoft Money.

Tag

Description

<TRNRS>

Opening tag for the transaction response

<CLTID>

Client assigned transaction identifier

<STATUS>

Status of request

<ERROR>

Server defined error text

<INTERRS>

Start tag for interbank transfer response

<SRVRTID>

Transaction identifier issued by server

<DTPOSTED>

Date transfer was posted to account

<CHKNUM>

Reference number for transaction

</INTERRS>

End tag for interbank transfer response

</TRNRS>

End tag for transfer response

Chapter 14

Online Bill Payment records correspond to the online bill payment features offered by Microsoft Money. Enabling online bill payment services for an account will allow the user to send electronic payments to any payee. Online bill payment will also allow the user to send email to the payment processor, inquire on the status of a previously sent payment, and cancel a payment.

Tags displayed in bold are required by Microsoft Money.

Payee request <PAYEERQ>

The Payee request record is sent from Money to the server when a user issues a payment to a payee for the first time. This record will also be sent when the user edits the details of an existing payee.

Tag

Description

<MAINTRQ>

Opening tag for the maintenance request

<CLTID>

Client assigned transaction identifier

<ACTION>

Possible values here:
Value Description
0 Adding a payee to the system
2 Changing a payee on the system

<PAYEERQ>

Opening tag of the payee request

<PAYEE>

Complete details for the payee aggregate

<PAYEEID>

Identifier for the payee as defined by the bill payment processor

<PAYACCT>

User’s account number with the payee

</PAYEERQ>

End tag of payee request record

</MAINTRQ>

End tag of maintenance request

Notes on <PAYEERQ>

If ACTION is 0

If ACTION is 2

 

 

Payee response <PAYEERS>

The Payee response record provides details about a payee from the server.

Tag

Description

<MAINTRS>

Opening tag for the maintenance response

<CLTID>

Client assigned transaction identifier

<STATUS>

Possible values here:
Value Description
0 Accepted
1 Rejected
4 Unsolicited
100 General error, error text included in ERROR

<ERROR>

Server supplied error text

<PAYEERS>

Opening tag of the Payee response record

<PAYEEID>

Bill payment processor identifier for the payee

<PAYEE>

Complete details for the payee aggregate

<DAYSREQD>

Days-to-pay value for the payee

<DAYSWITH>

Funds withdrawal date value for the payee

</PAYEERS>

End tag of payee response record.

</MAINTRS>

End tag of maintenance response record.

Notes on <PAYEERS>

If STATUS is 0

If STATUS is 1

If STATUS is 4

If STATUS is 100

 

Payment request <PAYMTRQ>

For each electronic payment transaction the user enters in their Money account register, Money will send a Payment request for each transaction. The payment requests asks the bill payment service to make a payment to a specific payee by a particular date.

Tag

Description

<TRNRQ>

Opening tag for the transaction request

<CLTID>

Client assigned transaction identifier

<ACTION>

Possible values here:
Value Description
0 Adding a payment request to the system
1 Deleting a payment request on the system

<PAYMTRQ>

Opening tag of the payment request

<ACCTFROM>

Opening tag of the account from aggregate

<BANKID>

Bank identifier

<BRANCHID>

Bank identifier in some international markets.

<ACCTID>

Account number for account

<ACCTTYPE>

Possible values here:
Value Description
0 Checking account
1 Savings account

</ACCTFROM>

End tag of account from aggregate

<TRNAMT>

Amount of payment

<PAYEEID>

Bill payment processor’s identifier for the payee

<PAYEE>

Complete details for payee aggregate

<PAYACCT>

User’s account number with the payee

<DTDUE>

Due date for payment

<SRVRTID>

Money assigned transaction identifier.

<MEMO>

Memo from user to payee

</PAYMTRQ>

End tag of payment request

</TRNRQ>

End tag of transaction request.

Notes on <PAYMTRQ>

If ACTION is 0

If ACTION is 1

Payment response <PAYMTRS>

The Payment response record answers the Payment request, providing details about the payment.

Tag

Description

<TRNRS>

Opening tag for the transaction response

<CLTID>

Client assigned transaction identifier

<STATUS>

Possible values here:
Value Description
0 The payment was accepted by the server and the payee will be paid by the date specified in DTDUE.
1 The payment was rejected by the server and a payment will not be issued to the payee.
100 The payment was rejected by the server and a payment will not be issued to the payee. An explanation detailing why the payment was rejected is in the ERROR element.

<ERROR>

Server supplied error text

<PAYMTRS>

Opening tag of the Payment response record

<SRVRTID>

Transaction identifier issued by the server

<PAYEEID>

Bill payment processor’s identifier for a payee

</PAYMTRS>

End tag of payment response record

</TRNRS>

End tag of transaction response

Notes on <PAYMTRS>

If STATUS is 0

If STATUS is 1

If STATUS is 100

 

Payment inquiry request <PAYIQRQ>

Money will allow a user to send email inquiring about the state of a previously sent payment.

Tag

Description

<TRNRQ>

Opening tag for the transaction request

<CLTID>

Client assigned transaction identifier

<ACTION>

Possible values here:
Value Description
0 Adding a payment inquiry request to the system

<PAYIQRQ>

Opening tag of the payment inquiry request

<SRVRTID>

Transaction identifier sent from server to Money in PAYMTRS

<MEMO>

User’s question about the payment

</PAYIQRQ>

End tag for payment inquiry request

</TRNRQ>

End tag for transaction request

Notes on <PAYIQRQ>

<MEMO>To: Customer Service
<MEMO>Subject: Subject


The user is able to enter any text in the To: and Subject: fields in Money.

 

Payment inquiry response <PAYIQRS>

The Payment inquiry response record answers the Payment inquiry request, answering the user’s question about the payment.

Tag

Description

<TRNRS>

Opening tag for the transaction response

<CLTID>

Client assigned transaction identifier

<STATUS>

Possible values here:
Value Description
0 Accepted. The server has accepted the PAYIQRQ.
1 Rejected. The server cannot process the PAYIQRQ
100 Rejected. An explanation of why the server rejected the PAYIQRQ is in the ERROR element.

<ERROR>

Server supplied error text

<PAYIQRS>

Opening tag of the Payment inquiry response record

<SRVRTID>

Transaction identifier issued by the server

<MEMO>

Answer to user’s question.

</PAYIQRS>

End tag of payment inquiry response record

</TRNRS>

End tag of transaction response

Notes on <PAYIQRS>

Chapter 15

File import will allow a user to import transactions in an OFC (*.ofc) file into Microsoft Money. Money will assume that the transactions in this file have already been posted at the bank.

A file import file is able to be imported into Microsoft Money without a corresponding request.

Tags displayed in bold are required by Microsoft Money.

Account statement <ACCTSTMT>

Tag

Description

<OFC>

Start tag of OFC file

<DTD>

Document type definition version

<CPAGE>

Code page used to interpret OFC data

<ACCTSTMT>

Start tag of Account statement record

<ACCTFROM>

Start tag of account this statement is from (source)

<BANKID>

Identifier for bank (e.g. routing and transit number)

<BRANCHID>

Used to identify banks internationally

<ACCTID>

Account number of account

<ACCTTYPE>

Type of account

</ACCTFROM>

Closing tag of account from aggregate

<STMTRS>

Opening tag for the Statement response

<DTSTART>

Start date of statement

<DTEND>

End date of statement

<LEDGER>

Ledger balance for account

<STMTTRN>

Start tag for statement transaction aggregate

<TRNTYPE>

Type of transaction

<DTPOSTED>

Date transaction was posted to the account

<TRNAMT>

Amount of transaction

<FITID>

Transaction identifier issued by financial institution

<CLTID>

Client assigned transaction identifier

<SRVRTID>

Transaction identifier issued by server.

<CHKNUM>

Reference number for transaction

<SIC>

Standard Industrial Code

<PAYEEID>

Payee identifier for payee

<NAME>

Name of payee
Note: The STMTTRN must include a NAME or a PAYEE, but not both.

<PAYEE>

Payee aggregate for the payee.
Note: The STMTTRN must include a NAME or a PAYEE, but not both.

<ACCTTO>

Account to aggregate. Recommended if transaction is a transfer.

<MEMO>

Description of transaction

</STMTTRN>

End tag of statement transaction

</STMTRS>

End tag of statement response record

</ACCTSTMT>

End tag of account statement record.

</OFC>

End of OFC file

Notes on <ACCTSTMT>

Appendix one

This section includes a list of the Standard Industrial Codes (SIC codes) supported by Money 5.0 and the categories that Money will assign a transaction that includes a SIC code. SIC codes can be included in a STMTRS or ACCTSTMT.

Money assigns a Category and Subcategory. For example, AutoGas in the list below means that Money will assign the category of Auto and the subcategory of Gas.

AutoGas = 5541, 5542

AutoMaint = 5511, 5521, 5531, 5532, 5533, 5599, 7523, 7524, 7531, 7532,

7533, 7534, 7535, 7536, 7537, 7538, 7539, 7542, 7549

Bank = 6051, 6760

Childcare = 8351

Clothing = 5611, 5621, 5631, 5632, 5641, 5651, 5655, 5661, 5681, 5691, 5697, 5698, 5699

EduBooks = 5942

EduTuition = 8211, 8220, 8221, 8222, 8241, 8243, 8244, 8249, 8299

FoodDiningOut = 5811, 5812, 5813, 5814

FoodGroceries = 5411, 5421, 5422, 5431, 5441, 5451, 5461, 5462, 5499, 5921

Furnishings = 5712, 5713, 5714, 5718, 5719, 5722, 5932

Gifts = 5947

Health = 5047, 5975, 5976, 8011, 8031, 8041, 8042, 8043, 8044, 8049, 8050, 8071, 8082, 8099

HealthDental = 8021

HealthEyecare = 5995

HealthHospital = 8062, 8063, 8069

HealthPrescriptions = 5912

HousingMaint = 780, 1520, 1711, 1731, 1740, 1750, 1761, 1771, 1799, 5033,

5211, 5231, 5251, 5261, 5271, 7216, 7217, 7341, 7342, 7349,

7622, 7623, 7629, 7631, 7641, 7692, 7699

Insurance = 6300, 6381, 6399, 6411

InsuranceHealth = 6321

InsuranceLife = 6311

Leisure = 5551, 5561, 5571, 5592, 5598, 5731, 5732, 5733, 5734, 5735,

5736, 5940, 5941, 5946, 5949, 5996, 7032, 7033, 7513, 7519,

7832, 7911, 7922, 7929, 7932, 7933, 7941, 7948, 7991, 7992,

7993, 7994, 7995, 7996, 7997, 7998, 7999, 8412, 8422

LeisureCableTV = 4841

LeisureToysGames = 5945

PersonalCare = 7231, 7241

UtilElec = 4911, 4931

UtilOilGas = 4922, 4923, 4924, 4925, 4932, 5983 ;

UtilTelephone = 4812, 4813, 4814, 4815 ;

UtilWaterSewerGarbage = 4941, 4952, 4953

VacationLodging = 7011, 7021

VacationTravel = 4011, 4111, 4119, 4512, 4724, 4725, 4729