<!DOCTYPE OFX [

<!--#version 103 -->

<!--
    $Revision:   1.3  $
    $Date:   24 Sep 1999 13:41:50  $
    
 Open Financial Exchange DTD - main module
 Defines common types and overall OFX structure
 Includes (via entity refs) all other service modules
 Copyright 1997, 1998, 1999 CheckFree Corp., Intuit Inc., Microsoft Corp.
 All rights reserved

-->

<!-- ============================================================================= -->
<!-- ENTITIES - Extensions
    This entity allows users of this DTD to add new message sets
    to the DTD.
    New message set request and response aggregates should be separated and
    preceded by a comma and must be optional (followed by a question mark).
    New message set profile aggregates should be separated and preceded by
    vertical bars.
-->
<!-- ============================================================================= -->

<!-- Add extra xxxMSGSETRQVn here -->
<!ENTITY % EXTRARQMSGSETS "">

<!-- Add extra xxxMSGSETRSVn here -->
<!ENTITY % EXTRARSMSGSETS "">

<!-- Add extra XXXMSGSET here -->
<!ENTITY % EXTRAMSGSETS   "">

<!-- ============================================================================= -->
<!-- ENTITIES - types
    This section defines entities as 'types' for all 
    primitive element values.  This is the only place
    that #PCDATA should appear.  
-->
<!-- ============================================================================= -->


<!-- Server ID : encoding for <TOKEN>'s, <SERVERTID>'s, etc -->
<!ENTITY % SRVRIDTYPE "(#PCDATA)" >

<!-- UUID : a universal ID , up to 36 char hexadecimal -->
<!ENTITY % UUIDTYPE "(#PCDATA)" >

<!-- Character string data -->
<!ENTITY % STRTYPE 	"(#PCDATA)">

<!-- URL -->
<!ENTITY % URLTYPE  "(#PCDATA)">

<!-- Integer -->
<!ENTITY % INTTYPE 	"(#PCDATA)">

<!-- Rate, percentage -->
<!ENTITY % RATETYPE "(#PCDATA)">


<!-- Current Amount: Used for specifying an amount.
	may be signed; comma or period for decimal point
-->
<!ENTITY % AMTTYPE 	"(#PCDATA)">
<!ENTITY % UNITPRICETYPE "(#PCDATA)">

<!--  Date and Time: Used for specifying
	the date and time. All date-time pairs
	are based on local time of the server or client.

-->
<!ENTITY % DTTMTYPE	"(#PCDATA)">

<!--
	Boolean : Y/N
-->
<!ENTITY % BOOLTYPE	"(#PCDATA)">

<!--
	a general purpose identifier type
-->
<!ENTITY % IDTYPE	"(#PCDATA)">

<!-- ============================================================================= -->
<!-- ENTITIES - macros
    This section defines macros used in one or more modules
    where a new level of aggregation was not desired but
    common structure is present
-->
<!-- ============================================================================= -->

<!-- Sync macros: all sync requests/responses have same form, but
     have own name.  Although we could use the multiple-element syntax and put
     them all here, we'd rather keep service-specific names in the service files.
     Thus, we have a macro here that is trivially referenced in each service module -->

<!ENTITY % SYNCRQMACRO "((TOKEN | TOKENONLY | REFRESH ) 
    , REJECTIFMISSING)" >

<!ENTITY % SYNCRSMACRO "(TOKEN, LOSTSYNC?)">

<!-- Transaction Macro: all transaction requests have same form
     but own name.  Didn't want to create a new sub-aggregate
     to hold these elements so use a macro to incorporate them
     into each XXXTRNRQ and XXXTRNRS -->
<!ENTITY % TRNRQMACRO "(TRNUID , CLTCOOKIE?, TAN?)">
<!ENTITY % TRNRSMACRO "(TRNUID , STATUS , CLTCOOKIE?)">

<!-- Account from and account info: if you add a new service and it adds
     a specific account from or account info aggregate, add it here so it will be
     known to aggregates such as the account info request -->
<!ENTITY % ACCTFROMMACRO "(BANKACCTFROM | CCACCTFROM | INVACCTFROM)">
<!ENTITY % ACCTTOMACRO "(BANKACCTTO | CCACCTTO | INVACCTTO)">
<!ENTITY % ACCTINFOMACRO "(BANKACCTINFO | CCACCTINFO | BPACCTINFO | INVACCTINFO)">

<!-- Profile message set macro 
     Each of the XXXMSGSET tags need to be listed here
     Referenced in oxprof MSGSETLIST element -->
<!-- OFX 1.6 correction: While entirely compatible with the previous formation
     of this macro ( SIGNONMSETSET?, SIGNUPMSGSET?, ... ), this form makes the
     intent more obvious.  Message set profile aggregates may appear in any
     order in <MSGSETLIST>.
     Also, removed SIGNONMSGSET and PROFMSGSET from the macro to make them
     required in <MSGSETLIST>. -->
<!ENTITY % MSGSETMACRO "
                     ( SIGNUPMSGSET | BANKMSGSET | CREDITCARDMSGSET |
		     INVSTMTMSGSET | INTERXFERMSGSET | WIREXFERMSGSET |
		     BILLPAYMSGSET | EMAILMSGSET | SECLISTMSGSET
		     %EXTRAMSGSETS )">


<!--
    $Revision:   1.5  $
    $Date:   29 Jul 1999 11:05:00  $
    
 Open Financial Exchange DTD - signon module
 Copyright 1997, 1998, 1999 CheckFree Corp., Intuit Inc., Microsoft Corp.
 All rights reserved

-->

<!-- Message set -->
<!-- Different from most: only one sonrq and at most one
     pin change allowed -->
<!ELEMENT SIGNONMSGSRQV1    - - (SONRQ , PINCHTRNRQ?, CHALLENGETRNRQ?)>
<!ELEMENT SIGNONMSGSRSV1    - - (SONRS , PINCHTRNRS?, CHALLENGETRNRS?)>

<!-- Signon message set profile entry -->
<!ELEMENT SIGNONMSGSET      - - (SIGNONMSGSETV1)>
<!ELEMENT SIGNONMSGSETV1    - - (MSGSETCORE )>


<!-- Transactions -->
<!ELEMENT PINCHTRNRQ    - - (%TRNRQMACRO , PINCHRQ)>
<!ELEMENT CHALLENGETRNRQ    - - (%TRNRQMACRO , CHALLENGERQ)>
<!ELEMENT PINCHTRNRS    - - (%TRNRSMACRO , PINCHRS?)>
<!ELEMENT CHALLENGETRNRS    - - (%TRNRSMACRO , CHALLENGERS?)>


<!-- Signon Request and Response -->

<!ELEMENT SONRQ 	- - (DTCLIENT , 
                         ((USERID , USERPASS) | USERKEY),
							GENUSERKEY? , LANGUAGE , FI? , 
							SESSCOOKIE? , APPID , APPVER ,
							CLIENTUID? , USERCRED1? , USERCRED2? , 
							ACCESSKEY? )>

<!ELEMENT FI            - - (ORG , FID?)>
<!ELEMENT ORG           - o %STRTYPE>
<!ELEMENT FID           - o %STRTYPE>

<!ELEMENT SESSCOOKIE    - o %STRTYPE>

<!ELEMENT SONRS		- - (STATUS , DTSERVER , USERKEY? , 
                         TSKEYEXPIRE? , LANGUAGE ,
                        DTPROFUP? , DTACCTUP? , FI?, SESSCOOKIE? , ACCESSKEY? )>

<!-- Pin Change request and response -->

<!ELEMENT PINCHRQ   - - (USERID , NEWUSERPASS)>

<!ELEMENT PINCHRS   - - (USERID , DTCHANGED?)>

<!ELEMENT NEWUSERPASS	- o %STRTYPE>
<!ELEMENT DTCHANGED     - o %DTTMTYPE>

<!-- Challenge request and response -->

<!ELEMENT CHALLENGERQ   - - (USERID, FICERTID?)>

<!ELEMENT CHALLENGERS   - - (USERID , NONCE, FICERTID)>

<!ELEMENT NONCE 	- o %STRTYPE>
<!ELEMENT FICERTID 	- o %STRTYPE>




<!--
    $Revision:   1.8  $
    $Date:   24 Sep 1999 13:42:12  $
    
 Open Financial Exchange DTD - banking module
 Copyright 1997, 1998, 1999 CheckFree Corp., Intuit Inc., Microsoft Corp.
 All rights reserved

-->

<!-- ============================================================================= -->
<!--            Message Entrys for Message Sets                                    -->
<!-- ============================================================================= -->

<!ELEMENT BANKMSGSET        - - (BANKMSGSETV1)>
<!ELEMENT CREDITCARDMSGSET  - - (CREDITCARDMSGSETV1)>
<!ELEMENT INTERXFERMSGSET   - - (INTERXFERMSGSETV1)>
<!ELEMENT WIREXFERMSGSET    - - (WIREXFERMSGSETV1)>


<!-- ============================================================================= -->
<!--            Message Set Profile Data                                           -->
<!-- ============================================================================= -->

<!-- Banking Message Set -->
<!ELEMENT BANKMSGSETV1     - - (MSGSETCORE , INVALIDACCTTYPE* , CLOSINGAVAIL , XFERPROF? ,
                                STPCHKPROF? , EMAILPROF)>

<!-- Credit Card Message Set -->
<!ELEMENT CREDITCARDMSGSETV1  - - (MSGSETCORE , CLOSINGAVAIL)>

<!-- Interbank Transfer Message Set -->
<!ELEMENT INTERXFERMSGSETV1  - - (MSGSETCORE , XFERPROF , CANBILLPAY, CANCELWND , DOMXFERFEE , 
                                  INTLXFERFEE)>

<!-- Wire Transfer Message Set -->
<!ELEMENT WIREXFERMSGSETV1  - - (MSGSETCORE , PROCDAYSOFF* , PROCENDTM , CANSCHED , DOMXFERFEE , 
                                  INTLXFERFEE)>


<!ELEMENT XFERPROF    - - (PROCDAYSOFF* , PROCENDTM , CANSCHED , CANRECUR , CANMODXFERS , 
                           CANMODMDLS , MODELWND, DAYSWITH, DFLTDAYSTOPAY)>

<!ELEMENT STPCHKPROF  - - (PROCDAYSOFF* , PROCENDTM , CANUSERANGE , CANUSEDESC, STPCHKFEE)>

<!ELEMENT EMAILPROF  - - (CANEMAIL , CANNOTIFY)>


<!--    Can schedule transfers -->
<!ELEMENT CANSCHED	- o %BOOLTYPE>

<!--    Can modify pending transfers -->
<!ELEMENT CANMODXFERS	- o %BOOLTYPE>

<!-- 	Can use description to stop a check -->
<!ELEMENT CANUSEDESC	- o %BOOLTYPE>

<!-- 	Can use range to stop checks -->
<!ELEMENT CANUSERANGE	- o %BOOLTYPE>

<!--    Default stop check fee -->
<!ELEMENT STPCHKFEE     - o %AMTTYPE>

<!-- 	Can handle email -->
<!ELEMENT CANEMAIL	- o %BOOLTYPE>

<!-- 	Can send notifications -->
<!ELEMENT CANNOTIFY	- o %BOOLTYPE>

<!--    Unsupported account types -->
<!ELEMENT INVALIDACCTTYPE - o %STRTYPE>

<!-- 	Can return closing statement info -->
<!ELEMENT CLOSINGAVAIL	- o %BOOLTYPE>

<!-- 	Can use interbank transfers for bill pay -->
<!ELEMENT CANBILLPAY	- o %BOOLTYPE>

<!-- Number of days after which a transfer is processed that it can be canceled -->
<!ELEMENT CANCELWND	- o	%INTTYPE>	

<!-- Fee for sending a domestic transfer transfer -->
<!ELEMENT DOMXFERFEE	- o	%INTTYPE>	

<!-- Fee for sending an international transfer -->
<!ELEMENT INTLXFERFEE	- o	%INTTYPE>	


<!-- ============================================================================= -->
<!--             Message Sets                                                      -->
<!-- ============================================================================= -->


<!-- Banking Messages Request Sets and their contained TRN requests -->
<!ELEMENT BANKMSGSRQV1        - - ((STMTTRNRQ   | STMTENDTRNRQ  | INTRATRNRQ | RECINTRATRNRQ | 
                                   STPCHKTRNRQ  | BANKMAILTRNRQ | BANKMAILSYNCRQ |
                                   STPCHKSYNCRQ | INTRASYNCRQ   | RECINTRASYNCRQ)+) >
<!ELEMENT CREDITCARDMSGSRQV1  - - ((CCSTMTTRNRQ | CCSTMTENDTRNRQ)+)>
<!ELEMENT INTERXFERMSGSRQV1   - - ((INTERTRNRQ  | RECINTERTRNRQ | INTERSYNCRQ | RECINTERSYNCRQ)+)>  
<!ELEMENT WIREXFERMSGSRQV1    - - ((WIRETRNRQ   | WIRESYNCRQ)+)>

<!-- Banking Message Set -->
<!ELEMENT STMTTRNRQ     - - (%TRNRQMACRO , STMTRQ)>
<!ELEMENT STMTENDTRNRQ  - - (%TRNRQMACRO , STMTENDRQ)>
<!ELEMENT STPCHKTRNRQ   - - (%TRNRQMACRO , STPCHKRQ)>
<!ELEMENT INTRATRNRQ    - - (%TRNRQMACRO , (INTRARQ | INTRAMODRQ | INTRACANRQ))>
<!ELEMENT RECINTRATRNRQ - - (%TRNRQMACRO , (RECINTRARQ | RECINTRAMODRQ | RECINTRACANRQ))>
<!ELEMENT BANKMAILTRNRQ - - (%TRNRQMACRO , BANKMAILRQ)>

<!-- Credit Card Message Set -->
<!ELEMENT CCSTMTTRNRQ      - - (%TRNRQMACRO , CCSTMTRQ)>
<!ELEMENT CCSTMTENDTRNRQ   - - (%TRNRQMACRO , CCSTMTENDRQ)>

<!-- Interbank Transfer Message Set -->
<!ELEMENT INTERTRNRQ    - - (%TRNRQMACRO , (INTERRQ | INTERMODRQ | INTERCANRQ))>
<!ELEMENT RECINTERTRNRQ - - (%TRNRQMACRO , (RECINTERRQ | RECINTERMODRQ | RECINTERCANRQ))>

<!-- Wire Transfer Message Set -->
<!ELEMENT WIRETRNRQ     - - (%TRNRQMACRO , (WIRERQ | WIRECANRQ))>

<!-- Banking Messages Response Sets and their contained TRN responses -->
<!ELEMENT BANKMSGSRSV1        - - ((STMTTRNRS   | STMTENDTRNRS  | INTRATRNRS | RECINTRATRNRS | 
                                   STPCHKTRNRS  | BANKMAILTRNRS | BANKMAILSYNCRS |
                                   STPCHKSYNCRS | INTRASYNCRS   | RECINTRASYNCRS)+)>
<!ELEMENT CREDITCARDMSGSRSV1  - - ((CCSTMTTRNRS | CCSTMTENDTRNRS)+)>
<!ELEMENT INTERXFERMSGSRSV1   - - ((INTERTRNRS  | RECINTERTRNRS | INTERSYNCRS | RECINTERSYNCRS)+)>  
<!ELEMENT WIREXFERMSGSRSV1    - - ((WIRETRNRS   | WIRESYNCRS)+)>

<!-- Banking TRN responses -->

<!-- Banking Message Set -->
<!ELEMENT STMTTRNRS     - - (%TRNRSMACRO , STMTRS?)>
<!ELEMENT STMTENDTRNRS  - - (%TRNRSMACRO , STMTENDRS?)>
<!ELEMENT STPCHKTRNRS   - - (%TRNRSMACRO , STPCHKRS?)>
<!ELEMENT INTRATRNRS    - - (%TRNRSMACRO , (INTRARS | INTRAMODRS | INTRACANRS)?)>
<!ELEMENT RECINTRATRNRS - - (%TRNRSMACRO , (RECINTRARS | RECINTRAMODRS | RECINTRACANRS)?)>
<!ELEMENT BANKMAILTRNRS - - (%TRNRSMACRO , (BANKMAILRS | CHKMAILRS | DEPMAILRS)?)>

<!-- Credit Card Message Set -->
<!ELEMENT CCSTMTTRNRS    - - (%TRNRSMACRO , CCSTMTRS?)>
<!ELEMENT CCSTMTENDTRNRS - - (%TRNRSMACRO , CCSTMTENDRS?)>

<!-- Interbank Transfer Message Set -->

<!ELEMENT INTERTRNRS    - - (%TRNRSMACRO , (INTERRS | INTERMODRS | INTERCANRS)?)>
<!ELEMENT RECINTERTRNRS - - (%TRNRSMACRO , (RECINTERRS | RECINTERMODRS | RECINTERCANRS)?)>

<!-- Wire Transfer Message Set -->
<!ELEMENT WIRETRNRS     - - (%TRNRSMACRO , (WIRERS | WIRECANRS)?)>

<!-- ============================================================================= -->
<!--            Requests                                                           -->
<!-- ============================================================================= -->

<!-- statement request -->
<!ELEMENT STMTRQ - - (BANKACCTFROM , INCTRAN?)>

<!-- credit card statement request -->
<!ELEMENT CCSTMTRQ - - (CCACCTFROM , INCTRAN?)>

<!-- closing statement request request -->
<!ELEMENT STMTENDRQ - - (BANKACCTFROM , DTSTART? , DTEND?)>

<!-- credit card closing statement request  -->
<!ELEMENT CCSTMTENDRQ - - (CCACCTFROM , DTSTART? , DTEND?)>

<!-- stop check request -->
<!ELEMENT STPCHKRQ - - (BANKACCTFROM , (CHKRANGE|CHKDESC))> 


<!-- intrabank transfer request -->
<!ELEMENT INTRARQ - - (XFERINFO)>


<!-- intrabank transfer modification request -->
<!ELEMENT INTRAMODRQ - - (SRVRTID , XFERINFO)> 


<!-- intrabank transfer cancellation request -->
<!ELEMENT INTRACANRQ - - (SRVRTID)>


<!-- interbank transfer request -->
<!ELEMENT INTERRQ - - (XFERINFO)> 


<!-- interbank transfer modification request -->
<!ELEMENT INTERMODRQ - - (SRVRTID , XFERINFO )>


<!-- interbank transfer cancellation request -->
<!ELEMENT INTERCANRQ - - (SRVRTID)>


<!-- wire transfer request -->
<!ELEMENT WIRERQ - - (BANKACCTFROM , WIREBENEFICIARY , WIREDESTBANK? , TRNAMT , DTDUE? , PAYINSTRUCT?)> 


<!-- wire transfer cancellation request -->
<!ELEMENT WIRECANRQ - - (SRVRTID)>


<!-- recurring intra transfer request -->
<!ELEMENT RECINTRARQ - - (RECURRINST , INTRARQ)>


<!-- recurring intra transfer modification request -->
<!ELEMENT RECINTRAMODRQ - - (RECSRVRTID , RECURRINST , INTRARQ , MODPENDING)>


<!-- recurring intra transfer cancellation request -->
<!ELEMENT RECINTRACANRQ - - (RECSRVRTID , CANPENDING)>


<!-- recurring inter transfer request -->
<!ELEMENT RECINTERRQ - - (RECURRINST , INTERRQ)>


<!-- recurring inter transfer modification request -->
<!ELEMENT RECINTERMODRQ - - (RECSRVRTID , RECURRINST , INTERRQ , MODPENDING)>

<!-- recurring inter transfer cancellation request -->
<!ELEMENT RECINTERCANRQ - - (RECSRVRTID , CANPENDING)>



<!-- bank mail request -->
<!ELEMENT BANKMAILRQ - - ((BANKACCTFROM | CCACCTFROM) , MAIL)>



<!-- ============================================================================= -->
<!--            Synchronization                                                    -->
<!-- ============================================================================= -->

<!-- stop check synchronization request -->
<!ELEMENT STPCHKSYNCRQ - - (%SYNCRQMACRO , BANKACCTFROM, STPCHKTRNRQ*)>


<!-- intrabank transfer sychronization request -->
<!ELEMENT INTRASYNCRQ - - (%SYNCRQMACRO , BANKACCTFROM, INTRATRNRQ*)>


<!-- interbank transfer synchronization request -->
<!ELEMENT INTERSYNCRQ - - (%SYNCRQMACRO , BANKACCTFROM, INTERTRNRQ*)>

<!-- wire transfer synchronization request -->
<!ELEMENT WIRESYNCRQ - - (%SYNCRQMACRO , BANKACCTFROM, WIRETRNRQ*)>

         
<!--
  recurring intra transfer synchronization request, 
  for transactions <RECINTRARQ>,<RECINTRAMODRQ>, and/or <RECINTRACANRQ>
-->
<!ELEMENT RECINTRASYNCRQ - - (%SYNCRQMACRO, BANKACCTFROM, RECINTRATRNRQ*)>

<!--
  recurring inter transfer synchronization request, 
  for transactions <RECINTERRQ>,<RECINTERMODRQ>, and/or <RECINTERCANRQ>
-->
<!ELEMENT RECINTERSYNCRQ - - (%SYNCRQMACRO, BANKACCTFROM, RECINTERTRNRQ*)>

<!-- bank mail synchronization request -->
<!ELEMENT BANKMAILSYNCRQ - - (%SYNCRQMACRO , INCIMAGES, USEHTML, (BANKACCTFROM | CCACCTFROM), BANKMAILTRNRQ*)>

<!-- ============================================================================= -->
<!--            Responses                                                          -->
<!-- ============================================================================= -->

<!-- statement response -->
<!ELEMENT STMTRS - -	(CURDEF , BANKACCTFROM , BANKTRANLIST? , LEDGERBAL , AVAILBAL? , MKTGINFO?)>

<!-- credit card statement response -->
<!ELEMENT CCSTMTRS - -	(CURDEF , CCACCTFROM , BANKTRANLIST? , LEDGERBAL , AVAILBAL? , MKTGINFO?)>

<!-- closing info response -->
<!ELEMENT STMTENDRS - -	(CURDEF , BANKACCTFROM , CLOSING*)>

<!-- credit card closing info response -->
<!ELEMENT CCSTMTENDRS - -	(CURDEF , CCACCTFROM , CCCLOSING*)>

<!-- stop check response -->
<!ELEMENT STPCHKRS - - (CURDEF , BANKACCTFROM , STPCHKNUM+,
                        FEE, FEEMSG)>
 

<!-- intrabank transfer response -->
<!ELEMENT INTRARS - - (CURDEF , SRVRTID , XFERINFO , (DTXFERPRJ|DTPOSTED)? , RECSRVRTID?, XFERPRCSTS?)>	


<!-- intrabank transfer modification response -->
<!ELEMENT INTRAMODRS - - (SRVRTID , XFERINFO , XFERPRCSTS?)>


<!-- intrabank transfer transfer cancellation response -->
<!ELEMENT INTRACANRS - - (SRVRTID)>


<!-- interbank transfer response -->
<!ELEMENT INTERRS - - (CURDEF , SRVRTID , XFERINFO,
                      (DTXFERPRJ|DTPOSTED)? , REFNUM? , RECSRVRTID?, XFERPRCSTS?)>


<!-- interbank transfer modification response -->
<!ELEMENT INTERMODRS - - (SRVRTID , XFERINFO, XFERPRCSTS?)>


<!-- interbank transfer cancellation request -->
<!ELEMENT INTERCANRS - - (SRVRTID)>


<!-- wire transfer response -->
<!ELEMENT WIRERS - - (CURDEF , SRVRTID , BANKACCTFROM , WIREBENEFICIARY ,
                      WIREDESTBANK? , TRNAMT , DTDUE? , PAYINSTRUCT? , (DTXFERPRJ|DTPOSTED)? , FEE? , CONFMSG?)>


<!-- wire transfer cancellation request -->
<!ELEMENT WIRECANRS	- - (SRVRTID)>


<!-- recurring intra transfer response -->
<!ELEMENT RECINTRARS - - (RECSRVRTID , RECURRINST , INTRARS)>


<!-- recurring intra transfer modification request -->
<!ELEMENT RECINTRAMODRS - - (RECSRVRTID , RECURRINST , INTRARS , MODPENDING)>


<!-- recurring intra transfer cancellation response -->
<!ELEMENT RECINTRACANRS	- - (RECSRVRTID , CANPENDING)>

<!-- recurring inter transfer response -->
<!ELEMENT RECINTERRS - - (RECSRVRTID , RECURRINST , INTERRS)>


<!-- recurring inter transfer modification request -->
<!ELEMENT RECINTERMODRS	- - (RECSRVRTID , RECURRINST , INTERRS , MODPENDING)>

<!-- recurring inter transfer cancellation response -->
<!ELEMENT RECINTERCANRS	- - (RECSRVRTID , CANPENDING)>


<!-- bank mail response -->
<!ELEMENT BANKMAILRS - - ((BANKACCTFROM | CCACCTFROM) , MAIL)>

<!-- returned check mail response -->
<!ELEMENT CHKMAILRS - - (BANKACCTFROM , MAIL , CHECKNUM , TRNAMT? , DTUSER? , FEE?)>

<!-- returned deposit mail response -->
<!ELEMENT DEPMAILRS - - (BANKACCTFROM , MAIL , TRNAMT , DTUSER? , FEE?)>

<!-- stop check synchronization request -->
<!ELEMENT STPCHKSYNCRS - - (%SYNCRSMACRO , BANKACCTFROM,  STPCHKTRNRS*)>

<!-- intrabank transfer synchronization request -->
<!ELEMENT INTRASYNCRS - - (%SYNCRSMACRO , BANKACCTFROM, INTRATRNRS*)>

<!-- interbank transfer synchronization request -->
<!ELEMENT INTERSYNCRS - - (%SYNCRSMACRO , BANKACCTFROM, INTERTRNRS*)>

<!-- wire transfer synchronization request -->
<!ELEMENT WIRESYNCRS - - (%SYNCRSMACRO , BANKACCTFROM, WIRETRNRS*)>

<!-- 
  recurring intra transfer synchronization request, 
  for transactions <RECINTRARS>,<RECINTRARS>, and/or <RECINTRACANRS>
-->
<!ELEMENT RECINTRASYNCRS	- - (%SYNCRSMACRO , BANKACCTFROM, RECINTRATRNRS*)>

<!-- 
  recurring inter transfer synchronization request, 
  for transactions <RECINTERRS>,<RECINTERRS>, and/or <RECINTERCANRS>
-->
<!ELEMENT RECINTERSYNCRS	- - (%SYNCRSMACRO , BANKACCTFROM, RECINTERTRNRS*)>

<!-- wire transfer synchronization request -->
<!ELEMENT BANKMAILSYNCRS - - (%SYNCRSMACRO , (BANKACCTFROM | CCACCTFROM), BANKMAILTRNRS*)>

<!-- ============================================================================= -->
<!--            Aggregates                                                         -->
<!-- ============================================================================= -->



<!-- BANKACCTINFO CCACCTINFO -->
<!ELEMENT BANKACCTINFO  - - (BANKACCTFROM ,
                             SUPTXDL, XFERSRC, XFERDEST, SVCSTATUS)>
<!ELEMENT CCACCTINFO    - - (CCACCTFROM ,
                             SUPTXDL, XFERSRC, XFERDEST, SVCSTATUS)>
                             
<!ELEMENT SUPTXDL       - o %BOOLTYPE>
<!ELEMENT XFERSRC       - o %BOOLTYPE>
<!ELEMENT XFERDEST      - o %BOOLTYPE>

<!--
	statement transaction data
-->
<!ELEMENT BANKTRANLIST    	- - (DTSTART , DTEND , STMTTRN*)>


<!--
	Ledger balance
-->
<!ELEMENT LEDGERBAL     - - (BALAMT , DTASOF)>


<!--
	Available balance
-->
<!ELEMENT AVAILBAL      - - (BALAMT , DTASOF)>




<!--
	credit card statement information
-->
<!ELEMENT CCCLOSING	- - (FITID , DTOPEN? , DTCLOSE , DTNEXT? ,
						 BALOPEN? , BALCLOSE ,
						 DTPMTDUE? , MINPMTDUE? ,
						 FINCHG? , PAYANDCREDIT? , PURANDADV? , DEBADJ? , CREDITLIMIT? ,
						 DTPOSTSTART , DTPOSTEND , MKTGINFO? ,
						 (CURRENCY | ORIGCURRENCY)? )>

<!--
	non-Credit Card account types
-->
<!ELEMENT CLOSING	- -	(FITID , DTOPEN? , DTCLOSE , DTNEXT? ,
						 BALOPEN? , BALCLOSE , BALMIN? ,
						 DEPANDCREDIT? , CHKANDDEB? , TOTALFEES? , TOTALINT? ,
						 DTPOSTSTART , DTPOSTEND , MKTGINFO? ,
						 (CURRENCY | ORIGCURRENCY)? )>


<!-- Opening statement date -->
<!ELEMENT DTOPEN	- o	%DTTMTYPE>


<!-- Closing statement date -->
<!ELEMENT DTCLOSE	- o	%DTTMTYPE>


<!-- Closing date of next statement -->
<!ELEMENT DTNEXT	- o	%DTTMTYPE>
	

<!-- Opening statement balance -->
<!ELEMENT BALOPEN	- o	%AMTTYPE>


<!-- Closing statement balance -->
<!ELEMENT BALCLOSE	- o %AMTTYPE>


<!-- Payment due date -->
<!ELEMENT DTPMTDUE	- o	%DTTMTYPE>

<!-- Minimum amount due -->
<!ELEMENT MINPMTDUE	- o	%AMTTYPE>


<!-- Finance charges -->
<!ELEMENT FINCHG	- o %AMTTYPE>


<!-- Total of payments and credits -->
<!ELEMENT PAYANDCREDIT	- o	%AMTTYPE>


<!-- Total of purchases and cash advance -->
<!ELEMENT PURANDADV	- o	%AMTTYPE>


<!-- Debit adjustments -->
<!ELEMENT DEBADJ	- o	%AMTTYPE>


<!-- Current credit limit -->
<!ELEMENT CREDITLIMIT		- o	%AMTTYPE>


<!-- Minimum balance in statement period -->
<!ELEMENT BALMIN	- o %AMTTYPE>


<!-- Total of deposits and credits -->
<!ELEMENT DEPANDCREDIT	- o %AMTTYPE>


<!-- Total of checks and debits	-->
<!ELEMENT CHKANDDEB	- o	%AMTTYPE>

<!-- Total fees	-->
<!ELEMENT TOTALFEES	- o	%AMTTYPE>

<!-- Total interest	-->
<!ELEMENT TOTALINT	- o	%AMTTYPE>

<!-- Start date for posted transactions -->
<!ELEMENT DTPOSTSTART - o %DTTMTYPE>

<!-- End date for posted transactions -->
<!ELEMENT DTPOSTEND - o %DTTMTYPE>

<!-- statement transaction aggregate -->
<!-- OFX 1.6: Added <SPNAME> and allowed it only when SRVRTID is there too.
     May be used in all OFX versions. -->
<!ELEMENT STMTTRN	- - (TRNTYPE , DTPOSTED , DTUSER? , DTAVAIL? , TRNAMT , FITID ,
			     (CORRECTFITID , CORRECTACTION)? ,
			     ( SPNAME?, SRVRTID )? , CHECKNUM? , REFNUM? , 
			     SIC? , PAYEEID? , (NAME | PAYEE)?,
			     (BANKACCTTO | CCACCTTO)?,
			     MEMO? , (CURRENCY | ORIGCURRENCY)?)>


<!-- Status of request - see section 5.5.1.4.1 for possible values -->
<!ELEMENT TRNTYPE	- o %STRTYPE>	<!--TODO: attribute candidate -->
	

<!-- Date transaction was posted to account -->
<!ELEMENT DTPOSTED	- o	%DTTMTYPE>


<!-- Date user initiated transaction, if known -->	
<!ELEMENT DTUSER	- o %DTTMTYPE>


<!-- 	Date funds are available -->
<!ELEMENT DTAVAIL	- o %DTTMTYPE>


<!-- Standard Industrial Code -->
<!ELEMENT SIC	- o	%INTTYPE>	


<!-- Check range aggregate. See section 5.6.1.2.1 -->
<!ELEMENT CHKRANGE	- -	(CHKNUMSTART , CHKNUMEND?)>


<!-- Check description aggregate.  See section 5.6.1.2.2 -->
<!ELEMENT CHKDESC	- - (NAME , CHECKNUM? , DTUSER? , TRNAMT?)>	


<!-- Start check number -->
<!ELEMENT CHKNUMSTART	- o %IDTYPE>


<!-- Ending check number to cancel -->
<!ELEMENT CHKNUMEND	- o %IDTYPE>

<!-- Reference number -->
<!ELEMENT REFNUM	- o	%STRTYPE>

<!-- stopped check item -->
<!ELEMENT STPCHKNUM	- -	(CHECKNUM , NAME? , DTUSER? , TRNAMT? , 
                         CHKSTATUS , CHKERROR? , (CURRENCY | ORIGCURRENCY)?)>

<!-- Status code for individual stop check request0 = OK1 = rejected100 = check not found101 = check already posted -->
<!ELEMENT CHKSTATUS	- o	%INTTYPE>	<!-- TODO: attribute? -->	

<!-- Further textual error explanation -->
<!ELEMENT CHKERROR	- o %STRTYPE>	

<!-- Transfer information aggregate -->
<!ELEMENT XFERINFO	- -	((BANKACCTFROM | CCACCTFROM) , (BANKACCTTO | CCACCTTO) , TRNAMT , MS.TRNCUR? , DTDUE?)>
	
<!-- Transfer processing status -->
<!ELEMENT XFERPRCSTS	- -	(XFERPRCCODE , DTXFERPRC)>

<!-- Special tag for Transaction level currency support -->
<!ELEMENT MS.TRNCUR	- o %STRTYPE>

<!--  Transfers processing date; enum for processing date interpretation -->
<!ELEMENT XFERPRCCODE	- o %STRTYPE>		

<!-- Date transfer is expected to be processed -->
<!ELEMENT DTXFERPRC - o	%DTTMTYPE>

<!-- Date transaction is projected for posting to account -->
<!ELEMENT DTXFERPRJ - o	%DTTMTYPE>

<!-- Beneficiary of a wire transfer -- >
<!ELEMENT WIREBENEFICIARY - - (NAME , BANKACCTTO , MEMO?)>

<!-- Beneficiary's bank for a wire transfer -- >
<!ELEMENT WIREDESTBANK - - (EXTBANKDESC)>

<!-- Extended description of a bank for a wire transfer -- >
<!ELEMENT EXTBANKDESC - - (NAME , BANKID , (ADDR1,(ADDR2,ADDR3?)?) , CITY , STATE , POSTALCODE , COUNTRY? , PHONE?)>

<!-- Payment instructions for a wire transfer -->
<!ELEMENT PAYINSTRUCT	- o	%STRTYPE>

<!-- Fee assessed for the transfer -->
<!ELEMENT FEE	- o	%AMTTYPE>

<!-- Description of fee -->
<!ELEMENT FEEMSG    - o %STRTYPE>

<!-- Transfer confirmation message -->
<!ELEMENT CONFMSG	- o	%STRTYPE>




<!--
    $Revision:   1.10  $
    $Date:   29 Jul 1999 11:08:10  $
    	
 Open Financial Exchange DTD - Payment module
 Copyright 1997, 1998, 1999 CheckFree Corp., Intuit Inc., Microsoft Corp.
 All rights reserved

-->


<!-- Message Set Wrappers and Profile -->

<!ELEMENT BILLPAYMSGSRQV1	- -	((PAYEETRNRQ | PAYEESYNCRQ)*,
							     ( PMTTRNRQ | RECPMTTRNRQ | PMTINQTRNRQ | PMTMAILTRNRQ |
								   PMTSYNCRQ | RECPMTSYNCRQ | PMTMAILSYNCRQ)*)>

<!ELEMENT BILLPAYMSGSRSV1	- -	((PAYEETRNRS | PAYEESYNCRS)*,
								 ( PMTTRNRS | RECPMTTRNRS | PMTINQTRNRS | PMTMAILTRNRS |
								   PMTSYNCRS | RECPMTSYNCRS | PMTMAILSYNCRS)*)>

<!-- -->
<!ELEMENT BILLPAYMSGSET		- -	(BILLPAYMSGSETV1)>

<!ELEMENT BILLPAYMSGSETV1	- -	(MSGSETCORE,
								 DAYSWITH, DFLTDAYSTOPAY,
                                 XFERDAYSWITH, XFERDFLTDAYSTOPAY, 
                                 PROCDAYSOFF*, PROCENDTM, 
                                 MODELWND, POSTPROCWND, STSVIAMODS,
								 PMTBYADDR, PMTBYXFER, PMTBYPAYEEID,
                                 CANADDPAYEE, HASEXTDPMT, 
                                 CANMODPMTS, CANMODMDLS, DIFFFIRSTPMT, 
                                 DIFFLASTPMT)>

<!ELEMENT DAYSWITH		- o	%INTTYPE>	<!--  number of days before the processing date that funds are withdrawn -->
<!ELEMENT DFLTDAYSTOPAY	- o %INTTYPE>	<!--  the default number of days to pay -->
<!ELEMENT XFERDAYSWITH		- o	%INTTYPE>	<!--  number of days before the processing date that funds are withdrawn for xfers-->
<!ELEMENT XFERDFLTDAYSTOPAY	- o %INTTYPE>	<!--  the default number of days to pay for transfers-->
<!ELEMENT POSTPROCWND	- o	%INTTYPE>	<!--  the number of days after a transaction is processed that it is acessible
											  for status inquiries -->
<!ELEMENT STSVIAMODS	- o	%BOOLTYPE>	<!--  server supports communication of server-initiated payment status changes
											  via the PMTMODRS -->
<!ELEMENT PMTBYADDR		- o	%BOOLTYPE>	<!--  the payment provider supports payments to payees identified by billing
											  address, i.e. the PAYEE aggregate -->
<!ELEMENT PMTBYXFER     - o %BOOLTYPE>  <!--  can pay by transfers -->
<!ELEMENT PMTBYPAYEEID  - o %BOOLTYPE>  <!--  can pay by user supplied payee IDs -->
<!ELEMENT CANADDPAYEE	- o	%BOOLTYPE>	<!--  user can add payees if no, the user is restricted to payees added to the
											  users payee list by the payment system -->
<!ELEMENT HASEXTDPMT	- o	%BOOLTYPE>	<!--  supports the EXTDPMT business payment aggregate -->
<!ELEMENT CANMODPMTS	- o	%BOOLTYPE>	<!--  permit modifications to payments, i.e. PMTMODRQ -->
<!ELEMENT DIFFFIRSTPMT	- o	%BOOLTYPE>	<!--  support for specifying a different amount for the first payment
											  generated by a model -->
<!ELEMENT DIFFLASTPMT	- o	%BOOLTYPE>	<!--  support for specifying a different amount for the last payment generated
											  by a model -->


<!-- Transactions -->


<!ELEMENT PMTTRNRQ      - - (%TRNRQMACRO, (PMTRQ | PMTMODRQ | PMTCANCRQ))>
<!ELEMENT RECPMTTRNRQ   - - (%TRNRQMACRO, (RECPMTRQ | RECPMTMODRQ | RECPMTCANCRQ))>
<!ELEMENT PAYEETRNRQ	- - (%TRNRQMACRO, (PAYEERQ | PAYEEMODRQ | PAYEEDELRQ))>
<!ELEMENT PMTINQTRNRQ	- -	(%TRNRQMACRO, PMTINQRQ)>
<!ELEMENT PMTMAILTRNRQ	- - (%TRNRQMACRO, PMTMAILRQ)>

<!ELEMENT PMTTRNRS      - - (%TRNRSMACRO, (PMTRS | PMTMODRS | PMTCANCRS)?)>
<!ELEMENT RECPMTTRNRS   - - (%TRNRSMACRO, (RECPMTRS | RECPMTMODRS | RECPMTCANCRS)?)>
<!ELEMENT PAYEETRNRS	- - (%TRNRSMACRO, (PAYEERS | PAYEEMODRS | PAYEEDELRS)?)>
<!ELEMENT PMTINQTRNRS	- -	(%TRNRSMACRO, PMTINQRS?)>
<!ELEMENT PMTMAILTRNRS	- - (%TRNRSMACRO, PMTMAILRS?)>


<!-- ============================================================================= -->
<!-- Requests                                                                      -->
<!-- ============================================================================= -->

<!--  payment request -->
<!ELEMENT PMTRQ	- -	(PMTINFO)>		
 

<!--  modification request -->
<!ELEMENT PMTMODRQ	- -	(SRVRTID, PMTINFO)>		
 

<!--  modification request -->
<!ELEMENT PMTCANCRQ	- - (SRVRTID)>


<!--  recurring payment request -->
<!ELEMENT RECPMTRQ	- -	(RECURRINST, PMTINFO, INITIALAMT?, FINALAMT?)>		


<!-- modification request -->
<!ELEMENT RECPMTMODRQ	- -	(RECSRVRTID, RECURRINST, PMTINFO, INITIALAMT?, FINALAMT?, MODPENDING)>		
 

<!--  cancellation request -->
<!ELEMENT RECPMTCANCRQ	- -	(RECSRVRTID, CANPENDING)>

<!-- payment status inquiry request -->
<!ELEMENT PMTINQRQ	- -	(SRVRTID)>
 

<!-- payee request : add a payee to the payee list -->
<!ELEMENT PAYEERQ	- -	((PAYEEID | (PAYEE , BANKACCTTO?)), PAYACCT*)>

<!-- payee modification request -->
<!ELEMENT PAYEEMODRQ	- - (PAYEELSTID, (PAYEE , BANKACCTTO?)?, PAYACCT*)>

<!-- payee deletion request -->
<!ELEMENT PAYEEDELRQ	- - (PAYEELSTID)>

<!-- ============================================================================= -->
<!-- Responses                                                                     -->
<!-- ============================================================================= -->

<!--  payment response -->
<!ELEMENT PMTRS		- - (SRVRTID, PAYEELSTID, CURDEF, PMTINFO, EXTDPAYEE?, 
                         CHECKNUM?, PMTPRCSTS, RECSRVRTID?)>
   

<!-- payment modification response -->
<!ELEMENT PMTMODRS	- -	(SRVRTID, PMTINFO, PMTPRCSTS?)>		


<!-- payment modification response -->
<!ELEMENT PMTCANCRS	- -	(SRVRTID)>		


<!--  recurring payment response -->
<!ELEMENT RECPMTRS	- -	(RECSRVRTID, PAYEELSTID, CURDEF, RECURRINST, PMTINFO, INITIALAMT?, FINALAMT?, EXTDPAYEE?)>
 

<!-- modification response -->
<!ELEMENT RECPMTMODRS	- -	(RECSRVRTID, RECURRINST, PMTINFO, INITIALAMT?, FINALAMT?, MODPENDING)>		


<!-- recurring payment modification response --> 
<!ELEMENT RECPMTCANCRS	- -	(RECSRVRTID, CANPENDING)>		

<!-- payment status inquiry response -->
<!ELEMENT PMTINQRS	- -	(SRVRTID, PMTPRCSTS, CHECKNUM?)>


<!-- payee response : add a payee to the payee list -->
<!ELEMENT PAYEERS	- -	(PAYEELSTID, (PAYEE , BANKACCTTO?)?, EXTDPAYEE?, PAYACCT*)>

<!-- payee modification response -->
<!ELEMENT PAYEEMODRS	- - (PAYEELSTID, (PAYEE , BANKACCTTO?)?, PAYACCT*, EXTDPAYEE?)>

<!-- payee deletion response -->
<!ELEMENT PAYEEDELRS	- - (PAYEELSTID)>
   
<!-- ============================================================================= -->
<!--			Aggregates                                                         -->
<!-- ============================================================================= -->


<!-- BPACCTINFO -->
<!ELEMENT BPACCTINFO  - - (BANKACCTFROM, SVCSTATUS)>

<!-- Payment information aggregate, see section 6.2.1.1 -->
<!ELEMENT PMTINFO	- - (BANKACCTFROM, TRNAMT, MS.TRNCUR?,
                         (PAYEEID|PAYEE), PAYEELSTID?, BANKACCTTO?,
                         EXTDPMT*, PAYACCT, 
                         DTDUE, MEMO?, BILLREFINFO?)>
 

<!--  Payment processing status -->
<!ELEMENT PMTPRCSTS	- -	(PMTPRCCODE, DTPMTPRC)>

<!--  Payment processing date; enum for processing date interpretation -->
<!ELEMENT PMTPRCCODE	- o %STRTYPE>		

<!--  Payment processing date; Interpretation depends on <PMTPRCCODE> -->
<!ELEMENT DTPMTPRC	- o %DTTMTYPE>		
 
<!-- billing reference info -->
<!ELEMENT BILLREFINFO - o %STRTYPE>
 
<!--  Extended Payment aggregate -->
<!--  Either extdpmtdsc or extdpmtinv, or both, but at least one required -->
<!ELEMENT EXTDPMT	    - -	(EXTDPMTFOR?, EXTDPMTCHK?, 
                             ((EXTDPMTDSC, EXTDPMTINV?) |
                             (EXTDPMTINV)))>
<!ELEMENT EXTDPMTINV    - - (INVOICE+)>
<!ELEMENT INVOICE       - - (INVNO, INVTOTALAMT, INVPAIDAMT,
                             INVDATE, INVDESC, DISCOUNT?,
                             ADJUSTMENT?, LINEITEM*)>
<!ELEMENT DISCOUNT      - - (DSCRATE, DSCAMT, DSCDATE?, DSCDESC)>
<!ELEMENT ADJUSTMENT    - - (ADJNO?, ADJDESC, ADJAMT, ADJDATE?)>
<!ELEMENT LINEITEM      - - (LITMAMT, LITMDESC)>

<!ELEMENT EXTDPMTFOR    - o %STRTYPE>
<!ELEMENT EXTDPMTCHK    - o %INTTYPE>
<!ELEMENT EXTDPMTDSC    - - %STRTYPE>
<!ELEMENT INVNO         - o %STRTYPE>
<!ELEMENT INVTOTALAMT   - o %AMTTYPE>
<!ELEMENT INVPAIDAMT    - o %AMTTYPE>
<!ELEMENT INVDATE       - o %DTTMTYPE>
<!ELEMENT INVDESC       - o %STRTYPE>
<!ELEMENT DSCRATE       - o %RATETYPE>
<!ELEMENT DSCAMT        - o %AMTTYPE>
<!ELEMENT DSCDATE       - o %DTTMTYPE>
<!ELEMENT DSCDESC       - o %STRTYPE>
<!ELEMENT ADJNO         - o %STRTYPE>
<!ELEMENT ADJDESC       - o %STRTYPE>	
<!ELEMENT ADJAMT        - o %AMTTYPE>
<!ELEMENT ADJDATE       - o %DTTMTYPE>
<!ELEMENT LITMAMT       - o %AMTTYPE>
<!ELEMENT LITMDESC      - o %STRTYPE>
 
<!--  Initial Amount -->
<!ELEMENT INITIALAMT	- o %AMTTYPE>		
 
<!--  Final Amount -->
<!ELEMENT FINALAMT	- o %AMTTYPE>		
 
<!--  standard payee -->
<!ELEMENT EXTDPAYEE	- - ( (PAYEEID, IDSCOPE, NAME)?, DAYSTOPAY)>

<!--  Server-assigned standard payee ID -->		
<!ELEMENT PAYEEID	- o %SRVRIDTYPE>		


<!--  Payee ID scope enumeration ; currently one of {GLOBAL,USER} -->
<!ELEMENT IDSCOPE	- o %STRTYPE>		

<!--  Minimum number of days needed to process -->   
<!ELEMENT DAYSTOPAY	- o %INTTYPE>		

<!-- Check number -->
<!ELEMENT CHECKNUM	- o %IDTYPE>

<!-- Payee aggregate -->
<!ELEMENT PAYEE	- -	(NAME, (ADDR1,(ADDR2,ADDR3?)?), CITY, STATE, POSTALCODE, COUNTRY?, PHONE)>	

<!--  Server-assigned payee list ID -->		
<!ELEMENT PAYEELSTID	- o %SRVRIDTYPE>		

<!--
	synchronization request messages
  -->

<!--  payment synchronization request -->
<!ELEMENT PMTSYNCRQ	- -	(%SYNCRQMACRO, BANKACCTFROM, PMTTRNRQ*)>		
 

<!--  recurring payment synchronization request -->
<!ELEMENT RECPMTSYNCRQ	- -	(%SYNCRQMACRO, BANKACCTFROM, RECPMTTRNRQ*)>
 
<!-- payee list synchronization request -->
<!ELEMENT PAYEESYNCRQ	- - (%SYNCRQMACRO, PAYEETRNRQ*)>


<!-- bill pay mail sync request -->
<!ELEMENT PMTMAILSYNCRQ	- -	(%SYNCRQMACRO, INCIMAGES, USEHTML, PMTMAILTRNRQ*)>


<!--
	synchronization response messages
  -->

<!-- payment synchronization response -->
<!ELEMENT PMTSYNCRS	- -	(%SYNCRSMACRO, BANKACCTFROM, PMTTRNRS*)>		
 

<!--  recurring payment synchronization response -->
<!ELEMENT RECPMTSYNCRS	- -	(%SYNCRSMACRO, BANKACCTFROM, RECPMTTRNRS*)>
 
<!-- payee list synchronization response -->
<!ELEMENT PAYEESYNCRS	- - (%SYNCRSMACRO, PAYEETRNRS*)>


<!-- bill pay mail sync response -->
<!ELEMENT PMTMAILSYNCRS	- -	(%SYNCRSMACRO, PMTMAILTRNRS*)>


<!--
 Payment mail messages
  --> 

<!-- payment inquiry mail message --> 
<!ELEMENT PMTMAILRQ	- -	(MAIL,(SRVRTID,PMTINFO)?)>

<!ELEMENT PMTMAILRS	- -	(MAIL,(SRVRTID,PMTINFO)?)>





<!--
    $Revision:   1.4  $
    $Date:   29 Jul 1999 11:05:28  $
    
 Open Financial Exchange DTD - activation module
 Copyright 1997, 1998, 1999 CheckFree Corp., Intuit Inc., Microsoft Corp.
 All rights reserved

-->

<!-- Message Sets -->

<!ELEMENT SIGNUPMSGSRQV1      - - ((ENROLLTRNRQ | ACCTINFOTRNRQ | 
                                    CHGUSERINFOTRNRQ | CHGUSERINFOSYNCRQ |
                                    ACCTTRNRQ | ACCTSYNCRQ)+ )> 
<!ELEMENT SIGNUPMSGSRSV1      - - ((ENROLLTRNRS | ACCTINFOTRNRS | 
                                    CHGUSERINFOTRNRS | CHGUSERINFOSYNCRS |
                                    ACCTTRNRS | ACCTSYNCRS)+ )>

<!-- Profile entry for message set -->
<!ELEMENT SIGNUPMSGSET        - - (SIGNUPMSGSETV1)>
<!ELEMENT SIGNUPMSGSETV1      - - (MSGSETCORE , 
                                   (CLIENTENROLL | WEBENROLL | OTHERENROLL),
                                   CHGUSERINFO, AVAILACCTS, CLIENTACTREQ)>

<!ELEMENT CLIENTENROLL          - - (ACCTREQUIRED)>
<!ELEMENT WEBENROLL             - - (URL)>
<!ELEMENT OTHERENROLL           - - (MESSAGE)>

<!ELEMENT ACCTREQUIRED          - o %BOOLTYPE>
<!ELEMENT CHGUSERINFO           - o %BOOLTYPE>
<!ELEMENT AVAILACCTS            - o %BOOLTYPE>
<!ELEMENT CLIENTACTREQ          - o %BOOLTYPE>

<!-- Transactions -->

<!ELEMENT ENROLLTRNRQ       - - (%TRNRQMACRO , ENROLLRQ)>
<!ELEMENT ENROLLTRNRS       - - (%TRNRSMACRO , ENROLLRS?)>
<!ELEMENT ACCTINFOTRNRQ     - - (%TRNRQMACRO , ACCTINFORQ)>
<!ELEMENT ACCTTRNRQ         - - (%TRNRQMACRO , ACCTRQ)>
<!ELEMENT ACCTINFOTRNRS     - - (%TRNRSMACRO , ACCTINFORS?)>
<!ELEMENT ACCTTRNRS         - - (%TRNRSMACRO , ACCTRS?)>
<!ELEMENT CHGUSERINFOTRNRQ  - - (%TRNRQMACRO, CHGUSERINFORQ)>
<!ELEMENT CHGUSERINFOTRNRS  - - (%TRNRSMACRO, CHGUSERINFORS?)>

<!-- ================== -->
<!-- Enrollment         -->
<!-- ==================  -->

<!ELEMENT ENROLLRQ       - - (FIRSTNAME , MIDDLENAME ,
                             LASTNAME , (ADDR1,(ADDR2,ADDR3?)?) ,
                             CITY , STATE , POSTALCODE ,
                             COUNTRY , DAYPHONE , EVEPHONE ,
                             EMAIL , USERID? , TAXID ,
                             SECURITYNAME , DATEBIRTH ,
                             (%ACCTFROMMACRO)? )>

<!-- most above name / addr elements in ofxmain.dtd -->
                             
<!ELEMENT TAXID         - o %STRTYPE>
<!ELEMENT SECURITYNAME  - o %STRTYPE>
<!ELEMENT DATEBIRTH     - o %DTTMTYPE>
  
<!ELEMENT ENROLLRS      - - (TEMPPASS? , USERID? , DTEXPIRE?)>
    <!-- NOTE: could constrain  DTEXPIRE -->

<!ELEMENT TEMPPASS      - o %STRTYPE>
<!ELEMENT DTEXPIRE      - o %DTTMTYPE>

<!-- Change User Info -->

<!ELEMENT CHGUSERINFORQ - - (FIRSTNAME?, MIDDLENAME?, LASTNAME?,
                             (ADDR1,(ADDR2,ADDR3?)?)?,
                             CITY?, STATE?, POSTALCODE?, COUNTRY?,
                             DAYPHONE?, EVEPHONE?, EMAIL?)>

<!ELEMENT CHGUSERINFORS - - (FIRSTNAME?, MIDDLENAME?, LASTNAME?,
                             (ADDR1,(ADDR2,ADDR3?)?)?,
                             CITY?, STATE?, POSTALCODE?, COUNTRY?,
                             DAYPHONE?, EVEPHONE?, EMAIL?,
                             DTINFOCHG)>
                             
<!ELEMENT DTINFOCHG     - o %DTTMTYPE>                             

<!ELEMENT CHGUSERINFOSYNCRQ    - - (%SYNCRQMACRO , CHGUSERINFOTRNRQ*)>
<!ELEMENT CHGUSERINFOSYNCRS    - - (%SYNCRSMACRO , CHGUSERINFOTRNRS*)>
  
<!-- Top level request and response -->
<!ELEMENT ACCTINFORQ    - - (DTACCTUP)>
<!ELEMENT ACCTINFORS    - - (DTACCTUP , ACCTINFO*)>

<!-- Account Info aggregate
     Note: this refers to a macro in ofxmain that
     list all of the account info aggregates
-->
<!ELEMENT ACCTINFO      - - (DESC? , PHONE? ,
                             (%ACCTINFOMACRO)+ )>

<!-- Service status - should be included as part of
     the ACCTINFOMACRO aggregates.  Values
     are AVAIL, PEND, ACTIVE -->
<!ELEMENT SVCSTATUS     - o %STRTYPE>      
<!-- -----------------
  Service Activation
  ----------------- -->

<!ELEMENT ACCTRQ        - - ((SVCADD | SVCCHG | SVCDEL) ,
                             SVC)>
<!ELEMENT ACCTRS        - -  ((SVCADD | SVCCHG | SVCDEL) ,
                             SVC, SVCSTATUS)>
<!ELEMENT SVCADD        - - (%ACCTTOMACRO)>
<!ELEMENT SVCDEL        - - (%ACCTFROMMACRO)>
<!ELEMENT SVCCHG        - - (%ACCTFROMMACRO , %ACCTTOMACRO)>

<!ELEMENT SVC           - o %STRTYPE>

<!-- Synchronization -->

<!ELEMENT ACCTSYNCRQ    - - (%SYNCRQMACRO , ACCTTRNRQ*)>
<!ELEMENT ACCTSYNCRS    - - (%SYNCRSMACRO , ACCTTRNRS*)>




<!--
    $Revision:   1.5  $
    $Date:   29 Jul 1999 11:07:40  $
    
 Open Financial Exchange DTD - investments module
 Copyright 1997, 1998, 1999 CheckFree Corp., Intuit Inc., Microsoft Corp.
 All rights reserved

-->


<!-- Investment Statement Messages -->
<!ELEMENT INVSTMTMSGSRQV1  - - ((INVSTMTTRNRQ |
                                 INVMAILTRNRQ | INVMAILSYNCRQ)+) >

<!ELEMENT INVSTMTMSGSRSV1  - - ((INVSTMTTRNRS |
                                 INVMAILTRNRS | INVMAILSYNCRS)+) >

<!-- Security List Messages -->
<!ELEMENT SECLISTMSGSRQV1  - - (SECLISTTRNRQ+) >

<!ELEMENT SECLISTMSGSRSV1  - - (SECLISTTRNRS* , SECLIST?) >

<!-- **** SECURITIES *** -->

<!-- Security List Transaction Request/Response -->
<!ELEMENT SECLISTTRNRQ  - - (%TRNRQMACRO , SECLISTRQ) >

<!ELEMENT SECLISTTRNRS  - - (%TRNRSMACRO , SECLISTRS?) >

<!-- Security List Request/Response -->
<!ELEMENT SECLISTRQ  - - (SECRQ+)>

<!ELEMENT SECRQ      - - (SECID | TICKER | FIID) >

<!ELEMENT SECLISTRS  - - %STRTYPE >
            
<!-- Security Ticker Symbol -->
<!ELEMENT TICKER  - O %STRTYPE >
                      
<!-- Financial Institution ID for the Security -->                      
<!ELEMENT FIID  - O %STRTYPE >

<!-- ** Security Identifier ** -->
<!ELEMENT SECID  - - (UNIQUEID , UNIQUEIDTYPE) >

<!-- Unique ID for the Security -->
<!ELEMENT UNIQUEID  - O %STRTYPE >

<!-- Standard used for Unique ID e.g. CUSIP -->
<!ELEMENT UNIQUEIDTYPE  - O %STRTYPE >

<!-- *** Security Information *** -->

<!-- Security List -->
<!ELEMENT SECLIST  - - ((MFINFO | STOCKINFO | OPTINFO | DEBTINFO | 
               OTHERINFO)*) >

<!-- ** Info all security types have in common ** -->
<!ELEMENT SECINFO  - - (SECID , SECNAME , TICKER? , FIID? ,
               RATING? , UNITPRICE? , DTASOF? ,
               CURRENCY? , MEMO?) >

<!ELEMENT SECNAME   - O %STRTYPE>
              
<!-- Rating for Security -->
<!ELEMENT RATING  - O %STRTYPE >

<!-- Unitprice for Security -->
<!ELEMENT UNITPRICE  - O %UNITPRICETYPE >

<!-- *** Debt Information *** -->
<!ELEMENT DEBTINFO  - - (SECINFO , PARVALUE , DEBTTYPE , DEBTCLASS? ,
               COUPONRT? , DTCOUPON? , COUPONFREQ? , CALLPRICE? , 
               YIELDTOCALL? , DTCALL? , CALLTYPE? , YIELDTOMAT? , 
               DTMAT? , ASSETCLASS? , FIASSETCLASS?) >

<!ELEMENT PARVALUE  - O %AMTTYPE >

<!ELEMENT DEBTTYPE  - O %STRTYPE >

<!ELEMENT DEBTCLASS  - O %STRTYPE >

<!ELEMENT COUPONRT  - O %AMTTYPE >

<!ELEMENT DTCOUPON  - O %DTTMTYPE >

<!ELEMENT COUPONFREQ  - O %STRTYPE >

<!ELEMENT CALLPRICE  - O %UNITPRICETYPE >

<!ELEMENT YIELDTOCALL  - O %AMTTYPE >

<!ELEMENT DTCALL  - O %DTTMTYPE >

<!ELEMENT CALLTYPE - O %STRTYPE >

<!ELEMENT YIELDTOMAT  - O %AMTTYPE >

<!ELEMENT DTMAT  - O %DTTMTYPE >

<!-- Asset Class for Security -->
<!ELEMENT ASSETCLASS  - O %STRTYPE >

<!-- FI's Asset Class for Security -->
<!ELEMENT FIASSETCLASS  - O %STRTYPE >

<!-- *** Mutual Fund Information *** -->
<!ELEMENT MFINFO  - - (SECINFO , MFTYPE? , YIELD? , DTYIELDASOF? , 
               MFASSETCLASS? , FIMFASSETCLASS?) >

<!ELEMENT MFTYPE  - O %STRTYPE >

<!ELEMENT YIELD  - O %AMTTYPE >

<!ELEMENT DTYIELDASOF  - O %DTTMTYPE >

<!-- Asset Class for Mutual Funds -->
<!ELEMENT MFASSETCLASS  - - (PORTION+) >

<!-- Asset Class Portion -->
<!ELEMENT PORTION  - - (ASSETCLASS , PERCENT) >

<!ELEMENT PERCENT  - O %AMTTYPE >

<!-- FI's Asset Class for Mutual Funds  -->
<!ELEMENT FIMFASSETCLASS  - - (FIPORTION+) >

<!-- FI's Asset Class Portion -->
<!ELEMENT FIPORTION  - - (FIASSETCLASS , PERCENT) >

<!-- *** Option Information *** -->
<!ELEMENT OPTINFO  - - (SECINFO , OPTTYPE , STRIKEPRICE , DTEXPIRE , 
               SHPERCTRCT , SECID? , ASSETCLASS? , FIASSETCLASS?) >

<!ELEMENT OPTTYPE  - O %STRTYPE >

<!ELEMENT STRIKEPRICE  - O %AMTTYPE >

<!-- Number of shares per contract -->
<!ELEMENT SHPERCTRCT  - O %INTTYPE >
          
<!-- *** Other Security Type Information *** -->
<!ELEMENT OTHERINFO  - - (SECINFO , TYPEDESC?, ASSETCLASS? , FIASSETCLASS?) >

<!ELEMENT TYPEDESC  - O %STRTYPE >


<!-- *** Stock Information *** -->
<!ELEMENT STOCKINFO  - - (SECINFO , STOCKTYPE? , YIELD? , DTYIELDASOF? , 
               ASSETCLASS? , FIASSETCLASS?) >

<!ELEMENT STOCKTYPE  - O %STRTYPE >


<!-- ***** Investment Accounts ****** -->

<!-- Investment Account From -->
<!ELEMENT INVACCTFROM  - - (BROKERID , ACCTID) >

<!-- Investment Account To -->
<!ELEMENT INVACCTTO  - - (BROKERID , ACCTID) >

<!ELEMENT BROKERID  - O %STRTYPE >

<!-- ** Investment Account Information ** -->
<!ELEMENT INVACCTINFO - - (INVACCTFROM , USPRODUCTTYPE , CHECKING , 
                           SVCSTATUS, INVACCTTYPE? , OPTIONLEVEL?) >

<!ELEMENT USPRODUCTTYPE - O %STRTYPE >

<!ELEMENT CHECKING - O %BOOLTYPE >

<!ELEMENT INVACCTTYPE - O %STRTYPE >

<!ELEMENT OPTIONLEVEL - O %STRTYPE >  


<!-- ****** INVESTMENT STATEMENT DOWNLOAD ****** -->

<!-- Investment Statement Transaction Request/Response -->
<!ELEMENT INVSTMTTRNRQ  - - (%TRNRQMACRO , INVSTMTRQ) >

<!ELEMENT INVSTMTTRNRS  - - (%TRNRSMACRO , INVSTMTRS?) >

<!-- *** Investment Statement Request *** -->
<!ELEMENT INVSTMTRQ  - - (INVACCTFROM , INCTRAN , INCOO , INCPOS ,
                          INCBAL) >

<!-- ** Include Transactions ** -->
<!ELEMENT INCTRAN  - - (DTSTART? , DTEND? , INCLUDE) >

<!-- ** Include Open Orders ** -->
<!ELEMENT INCOO  - O %BOOLTYPE >

<!-- ** Include Positions ** -->
<!ELEMENT INCPOS  - - (DTASOF? , INCLUDE) >

<!-- Include Balances -->
<!ELEMENT INCBAL  - O %BOOLTYPE >


<!-- *** Investment Statement Response *** -->
<!ELEMENT INVSTMTRS  - - (DTASOF , CURDEF , INVACCTFROM , INVTRANLIST? ,
               INVPOSLIST? , INVBAL? , INVOOLIST? ,  MKTGINFO?) >

<!-- Marketing Mesage -->
<!ELEMENT MKTVAL  - O %AMTTYPE >

<!-- ** Transaction List ** -->
<!ELEMENT INVTRANLIST  - - (DTSTART , DTEND , (BUYDEBT | BUYMF | BUYOPT | BUYOTHER |
               BUYSTOCK | CLOSUREOPT | INCOME | INVEXPENSE | JRNLFUND |
               JRNLSEC | MARGININTEREST | REINVEST | RETOFCAP| SELLDEBT |
               SELLMF | SELLOPT | SELLOTHER |  SELLSTOCK |
               SPLIT | TRANSFER)* , INVBANKTRAN*) >

<!-- ** Investment Banking Transaction ** -->
<!ELEMENT INVBANKTRAN  - - (STMTTRN , SUBACCTFUND) >

<!-- Microsoft Custom Tag used to identify special transactions M05 Fix #13569 -->
<!ELEMENT MSFT.INVTRNTYPE  - O %STRTYPE >

<!-- ** Transaction fields common to many types of transactions ** -->
<!ELEMENT INVTRAN  - - (FITID , SRVRTID? , DTTRADE , DTSETTLE? , MSFT.INVTRNTYPE? , MEMO?) >

<!-- Trade Date -->
<!ELEMENT DTTRADE  - O %DTTMTYPE >

<!-- Settlement Date -->
<!ELEMENT DTSETTLE  - O %DTTMTYPE >

<!-- ** Transaction fields common to BUY types of transactions ** -->
<!ELEMENT INVBUY  - - (INVTRAN , SECID , UNITS , UNITPRICE , MARKUP? , 
               COMMISSION? , TAXES? , FEES? , LOAD? , TOTAL , CURRENCY? ,
               ORIGCURRENCY? , SUBACCTSEC , SUBACCTFUND) >

<!ELEMENT UNITS  - O %AMTTYPE >

<!ELEMENT MARKUP  - O %AMTTYPE >

<!ELEMENT COMMISSION  - O %AMTTYPE >

<!ELEMENT TAXES  - O %AMTTYPE >

<!ELEMENT FEES  - O %AMTTYPE >

<!ELEMENT LOAD  - O %AMTTYPE >

<!ELEMENT TOTAL  - O %AMTTYPE >

<!-- Sub-account for the security -->
<!ELEMENT SUBACCTSEC  - O %STRTYPE >

<!-- Sub-account for the funds involved in the trade: CASH, SHORT, MARGIN, OTHER -->
<!ELEMENT SUBACCTFUND  - O (%STRTYPE) >

<!-- ** Transaction fields common to SELL types of transactions ** -->
<!ELEMENT INVSELL  - - (INVTRAN , SECID , UNITS , UNITPRICE , MARKDOWN? , 
               COMMISSION? , TAXES? , FEES? , LOAD? , WITHHOLDING? ,
               TAXEXEMPT? , TOTAL , GAIN? , CURRENCY? , ORIGCURRENCY? ,
               SUBACCTSEC , SUBACCTFUND) >

<!ELEMENT MARKDOWN  - O %AMTTYPE >

<!ELEMENT WITHHOLDING  - O %AMTTYPE >

<!ELEMENT GAIN  - O %AMTTYPE >

<!-- ** Buy Debt Transaction ** -->
<!ELEMENT BUYDEBT  - - (INVBUY , ACCRDINT?) >

<!ELEMENT ACCRDINT  - O %AMTTYPE >

<!-- ** Buy Mutual Fund Transaction ** -->
<!ELEMENT BUYMF  - - (INVBUY , BUYTYPE , RELFITID?) >

<!-- Buy Type: BUY or BUYTOCOVER -->
<!ELEMENT BUYTYPE  - O %STRTYPE >

<!-- Related Transaction ID -->
<!ELEMENT RELFITID  - O %UUIDTYPE >

<!-- ** Buy Option Transaction ** -->
<!ELEMENT BUYOPT  - - (INVBUY , OPTBUYTYPE , SHPERCTRCT) >

<!-- Option Buy Type -->
<!ELEMENT OPTBUYTYPE  - O %STRTYPE >

<!-- ** Buy Other Transaction ** -->
<!ELEMENT BUYOTHER  - - (INVBUY) >

<!-- ** Buy Stock Transaction ** -->
<!ELEMENT BUYSTOCK  - - (INVBUY , BUYTYPE) >

<!-- ** Closure of Option Transaction ** -->
<!ELEMENT CLOSUREOPT  - - (INVTRAN , SECID , OPTACTION , UNITS , SHPERCTRCT ,
               SUBACCTSEC , RELFITID? , GAIN?) >      
               
<!-- Closure of option action: EXPIRE,EXERCISE,ASSIGN -->
<!ELEMENT OPTACTION  - O %STRTYPE >

<!-- **Income Transaction ** -->
<!ELEMENT INCOME  - - (INVTRAN , SECID , INCOMETYPE , TOTAL , SUBACCTSEC ,
               SUBACCTFUND , TAXEXEMPT? , WITHHOLDING? ,CURRENCY? ,
               ORIGCURRENCY? ) >

<!-- Type of Income -->
<!ELEMENT INCOMETYPE  - O %STRTYPE >

<!ELEMENT TAXEXEMPT - O %BOOLTYPE >

<!-- ** Investment Related Expense Transaction ** -->
<!ELEMENT INVEXPENSE  - - (INVTRAN , SECID , TOTAL , SUBACCTSEC ,
               SUBACCTFUND , CURRENCY? , ORIGCURRENCY?) >

<!-- ** Journaling of Funds between sub-accounts Transaction ** -->
<!ELEMENT JRNLFUND - - (INVTRAN , SUBACCTTO , SUBACCTFROM , TOTAL) >

<!ELEMENT SUBACCTTO - O %STRTYPE >

<!ELEMENT SUBACCTFROM - O %STRTYPE >

<!-- ** Journaling of Security between sub-accounts Transaction ** -->
<!ELEMENT JRNLSEC - - (INVTRAN , SECID, SUBACCTTO , SUBACCTFROM , UNITS) >

<!-- ** Margin Interest Transaction ** -->
<!ELEMENT MARGININTEREST  - - (INVTRAN , TOTAL , SUBACCTFUND , CURRENCY? ,
               ORIGCURRENCY?) >

<!-- ** Reinvest Transaction ** -->
<!ELEMENT REINVEST  - - (INVTRAN , SECID , INCOMETYPE , TOTAL , SUBACCTSEC ,
               UNITS , UNITPRICE , COMMISSION? , TAXES? , FEES? , LOAD? ,
               TAXEXEMPT? , CURRENCY? , ORIGCURRENCY?) >

<!-- ** Return Of Capital Transaction ** -->
<!ELEMENT RETOFCAP - - (INVTRAN , SECID , TOTAL , SUBACCTSEC ,
                        SUBACCTFUND , CURRENCY? , ORIGCURRENCY?) >

<!-- ** Sell Debt Transaction ** -->
<!ELEMENT SELLDEBT  - - (INVSELL , SELLREASON , ACCRDINT?) >

<!-- Reason Sell of Debt generated: CALL, MATURITY, SELL -->
<!ELEMENT SELLREASON - O %STRTYPE >

<!-- ** Sell Mutual Fund Transaction ** -->
<!ELEMENT SELLMF  - - (INVSELL , SELLTYPE , AVGCOSTBASIS? , RELFITID?) >

<!-- Sell Type: SELL or SELLSHORT -->
<!ELEMENT SELLTYPE  - O %STRTYPE >

<!-- Average cost basis -->
<!ELEMENT AVGCOSTBASIS  - O %AMTTYPE >

<!-- ** Sell Option Transaction ** -->
<!ELEMENT SELLOPT  - - (INVSELL , OPTSELLTYPE , SHPERCTRCT ,
                        RELFITID? , RELTYPE?, SECURED?) >

<!-- Option Sell Type: SELLTOCLOSE or SELLTOOPEN -->
<!ELEMENT OPTSELLTYPE  - O %STRTYPE >

<!-- Related option transaction type: SPREAD, STRADDLE, NONE -->
<!ELEMENT RELTYPE  - O %STRTYPE >

<!-- How the option is secured: NAKED or COVERED -->          
<!ELEMENT SECURED  - O %STRTYPE >

<!-- ** Sell Other Transaction ** -->
<!ELEMENT SELLOTHER  - - (INVSELL) >

<!-- ** Sell Stock Transaction ** -->
<!ELEMENT SELLSTOCK  - - (INVSELL , SELLTYPE) >

<!-- ** Split Transaction ** -->
<!ELEMENT SPLIT  - - (INVTRAN , SECID , SUBACCTSEC ,
               OLDUNITS , NEWUNITS , NUMERATOR , DENOMINATOR ,
               CURRENCY? , ORIGCURRENCY? , FRACCASH? , SUBACCTFUND?) >

<!ELEMENT OLDUNITS  - O %INTTYPE >

<!ELEMENT NEWUNITS  - O %INTTYPE >

<!ELEMENT NUMERATOR  - O %INTTYPE >

<!ELEMENT DENOMINATOR  - O %INTTYPE >

<!-- Amount of cash recieved from fractional shares -->
<!ELEMENT FRACCASH  - O %AMTTYPE >

<!-- ** Transfer Transaction ** -->
<!ELEMENT TRANSFER  - - (INVTRAN, SECID , SUBACCTSEC , UNITS ,
                        TFERACTION , POSTYPE , INVACCTFROM?,
                        AVGCOSTBASIS?, UNITPRICE?, DTPURCHASE?) >
<!-- Transfer action:IN or OUT -->
<!ELEMENT TFERACTION  - O %STRTYPE >

<!ELEMENT DTPURCHASE  - o %DTTMTYPE>

<!-- ***** Open Orders List ***** -->
<!ELEMENT INVOOLIST  - - ((OOBUYDEBT | OOBUYMF | OOBUYOPT | OOBUYOTHER |
               OOBUYSTOCK | OOSELLDEBT | OOSELLMF | OOSELLOPT |
               OOSELLOTHER | OOSELLSTOCK | OOSWITCHMF)*) >

<!-- ** Open Order fields common to all open orders ** -->
<!ELEMENT OO  - - (FITID , SRVRTID? , SECID , DTPLACED , UNITS , SUBACCT ,
               DURATION , RESTRICTION , MINUNITS? , LIMITPRICE? ,
               STOPPRICE? , MEMO? , CURRENCY?) >

<!ELEMENT DTPLACED  - O %DTTMTYPE >

<!ELEMENT SUBACCT  - O %STRTYPE >

<!ELEMENT DURATION  - O %STRTYPE >

<!ELEMENT RESTRICTION  - O %STRTYPE >

<!ELEMENT MINUNITS  - O %AMTTYPE >

<!ELEMENT LIMITPRICE  - O %UNITPRICETYPE >

<!ELEMENT STOPPRICE  - O %UNITPRICETYPE >

<!-- ** Buy Debt Open Order ** -->
<!ELEMENT OOBUYDEBT  - - (OO , AUCTION , DTAUCTION?) >

<!ELEMENT AUCTION  - O %BOOLTYPE >

<!ELEMENT DTAUCTION  - O %DTTMTYPE >

<!-- ** Buy Mutual Fund Open Order ** -->
<!ELEMENT OOBUYMF  - - (OO , BUYTYPE , UNITTYPE) >

<!-- Type of units: SHARES or CURRENCY -->
<!ELEMENT UNITTYPE  - O %STRTYPE >

<!-- ** Buy Option Open Order ** -->
<!ELEMENT OOBUYOPT  - - (OO , OPTBUYTYPE) >

<!-- ** Buy Other Open Order ** -->
<!ELEMENT OOBUYOTHER  - - (OO , UNITTYPE) >

<!-- ** Buy Stock Open Order ** -->
<!ELEMENT OOBUYSTOCK  - - (OO , BUYTYPE) >

<!-- ** Sell Debt Open Order ** -->
<!ELEMENT OOSELLDEBT  - - (OO) >

<!-- ** Sell Mutual Fund Open Order ** -->
<!ELEMENT OOSELLMF  - - (OO , SELLTYPE , UNITTYPE , SELLALL) >

<!ELEMENT SELLALL  - O %BOOLTYPE >

<!-- ** Sell Option Open Order ** -->
<!ELEMENT OOSELLOPT  - - (OO , OPTSELLTYPE) >

<!-- ** Sell Other Security Type Open Order ** -->
<!ELEMENT OOSELLOTHER  - - (OO , UNITTYPE) >

<!-- ** Sell Stock Open Order ** -->
<!ELEMENT OOSELLSTOCK  - - (OO , SELLTYPE) >

<!-- ** Switch Mutual Fund Open Order ** -->
<!ELEMENT OOSWITCHMF  - - (OO , SECID , UNITTYPE , SWITCHALL) >

<!ELEMENT SWITCHALL  - O %BOOLTYPE >


<!-- ***** Position List ***** -->
<!ELEMENT INVPOSLIST  - - ((POSMF | POSSTOCK | POSDEBT| POSOPT |
                           POSOTHER)*) >

<!-- Position fields common to and types of positions -->
<!ELEMENT INVPOS  - - (SECID , HELDINACCT , POSTYPE , UNITS , UNITPRICE , 
               MKTVAL , DTPRICEASOF , CURRENCY? , MEMO?) >

<!-- Which sub-account the position is held in: CASH, MARGIN, SHORT, OTHER -->
<!ELEMENT HELDINACCT  - O %STRTYPE >

<!-- Position Type: SHORT, LONG -->
<!ELEMENT POSTYPE  - O %STRTYPE >

<!ELEMENT DTPRICEASOF  - O %DTTMTYPE >

<!-- ** Debt Position ** -->
<!ELEMENT POSDEBT  - - (INVPOS) >

<!-- ** Mutual Fund Position ** -->
<!ELEMENT POSMF  - - (INVPOS , UNITSSTREET? , UNITSUSER? , REINVDIV? ,
               REINVCG?) >

<!ELEMENT UNITSSTREET  - O %INTTYPE >

<!ELEMENT UNITSUSER  - O %INTTYPE >

<!ELEMENT REINVDIV  - O %BOOLTYPE >

<!ELEMENT REINVCG  - O %BOOLTYPE >

<!-- ** Option Position ** -->
<!ELEMENT POSOPT  - - (INVPOS , SECURED?) >

<!-- ** Other Security Type Position ** -->
<!ELEMENT POSOTHER  - - (INVPOS) >

<!-- ** Stock Position ** -->
<!ELEMENT POSSTOCK  - - (INVPOS , UNITSSTREET? , UNITSUSER? , REINVDIV?) >


<!-- ** Balances ** -->
<!ELEMENT INVBAL  - - (AVAILCASH , MARGINBALANCE , SHORTBALANCE ,
                       BUYPOWER? , BALLIST?) >

<!ELEMENT MARGINBALANCE  - O %AMTTYPE >

<!ELEMENT SHORTBALANCE  - O %AMTTYPE >

<!ELEMENT AVAILCASH  - O %AMTTYPE >

<!ELEMENT BUYPOWER  - O %AMTTYPE >

<!ELEMENT BALLIST  - - (BAL*) >

<!-- **** Investment Statement Message Set *** -->

<!-- Investment Message Set -->
<!ELEMENT INVSTMTMSGSET  - - (INVSTMTMSGSETV1) >

<!-- Investment Message Set: Version 1 -->
<!ELEMENT INVSTMTMSGSETV1  - - (MSGSETCORE , TRANDNLD , OODNLD , POSDNLD , BALDNLD, CANEMAIL) >

<!-- FI supports download of transactions -->
<!ELEMENT TRANDNLD  - O %BOOLTYPE >

<!-- FI supports download of open orders -->
<!ELEMENT OODNLD  - O %BOOLTYPE >

<!-- FI supports download of positions -->
<!ELEMENT POSDNLD  - O %BOOLTYPE >

<!-- FI supports download of balances -->
<!ELEMENT BALDNLD  - O %BOOLTYPE >

<!-- **** Security List Message Set *** -->

<!-- Security List message Set -->
<!ELEMENT SECLISTMSGSET  - - (SECLISTMSGSETV1) >

<!-- Investment Message Set: Version 1 -->
<!ELEMENT SECLISTMSGSETV1  - - (MSGSETCORE , SECLISTRQDNLD) >

<!-- FI supports SECLISTRQ -->
<!ELEMENT SECLISTRQDNLD  - O %BOOLTYPE >

<!-- INVESTMENT EMAIL -->
<!ELEMENT INVMAILTRNRQ      - - (%TRNRQMACRO, INVMAILRQ)>
<!ELEMENT INVMAILTRNRS      - - (%TRNRSMACRO, INVMAILRS?)>
<!ELEMENT INVMAILSYNCRQ     - - (%SYNCRQMACRO, INCIMAGES, USEHTML, INVACCTFROM, INVMAILTRNRQ*)>
<!ELEMENT INVMAILSYNCRS     - - (%SYNCRSMACRO, INVACCTFROM, INVMAILTRNRS*)>

<!ELEMENT INVMAILRQ         - - (INVACCTFROM, MAIL)>
<!ELEMENT INVMAILRS         - - (INVACCTFROM, MAIL)>



<!--
    $Revision:   1.3  $
    $Date:   29 Jul 1999 11:06:46  $
    
 Open Financial Exchange DTD - mail module
 Copyright 1997, 1998, 1999 CheckFree Corp., Intuit Inc., Microsoft Corp.
 All rights reserved

-->

<!-- Message sets -->
<!ELEMENT EMAILMSGSRQV1     - - ((MAILTRNRQ | MAILSYNCRQ | GETMIMETRNRQ)+ )>
<!ELEMENT EMAILMSGSRSV1     - - ((MAILTRNRS | MAILSYNCRS | GETMIMETRNRS)+ )>

<!-- Profile entry for message set -->
<!ELEMENT EMAILMSGSET       - - (EMAILMSGSETV1)>
<!ELEMENT EMAILMSGSETV1     - - (MSGSETCORE , MAILSUP , GETMIMESUP)>
<!ELEMENT MAILSUP           - o %BOOLTYPE>
<!ELEMENT GETMIMESUP        - o %BOOLTYPE>

<!-- Email Transactions -->

<!ELEMENT MAILTRNRQ     - - (%TRNRQMACRO , MAILRQ)>
<!ELEMENT MAILTRNRS     - - (%TRNRSMACRO , MAILRS?)>
<!ELEMENT GETMIMETRNRQ  - - (%TRNRQMACRO , GETMIMERQ)>
<!ELEMENT GETMIMETRNRS  - - (%TRNRSMACRO , GETMIMERS?)>

<!-- Email Request -->

<!ELEMENT MAILRQ        - - (MAIL)>
<!ELEMENT MAIL          - - (USERID , DTCREATED , FROM , TO ,
                             SUBJECT , MSGBODY , INCIMAGES ,
                             USEHTML)>

<!ELEMENT DTCREATED     - o %DTTMTYPE>
<!ELEMENT FROM          - o %STRTYPE>
<!ELEMENT TO            - o %STRTYPE>
<!ELEMENT SUBJECT       - o %STRTYPE>
<!ELEMENT USEHTML       - o %BOOLTYPE>

<!ELEMENT MSGBODY       - - %STRTYPE>

<!-- Email Response -->

<!ELEMENT MAILRS        - - (MAIL)>

<!-- Email sync -->

<!ELEMENT MAILSYNCRQ    - - (%SYNCRQMACRO , INCIMAGES, USEHTML, MAILTRNRQ*)>
<!ELEMENT MAILSYNCRS    - - (%SYNCRSMACRO , MAILTRNRS*)>

<!-- HTML GET -->

<!ELEMENT GETMIMERQ     - - (URL)>
<!ELEMENT GETMIMERS     - - (URL)>




<!--
    $Revision:   1.6  $
    $Date:   24 Sep 1999 13:42:50  $
    
 Open Financial Exchange DTD - profile module
 Copyright 1997, 1998, 1999 CheckFree Corp., Intuit Inc., Microsoft Corp.
 All rights reserved

-->

<!-- Profile message set -->
<!ELEMENT PROFMSGSRQV1        - - ((PROFTRNRQ)+ )>
<!ELEMENT PROFMSGSRSV1        - - ((PROFTRNRS)+ )>

<!-- Profile entry for message set -->
<!ELEMENT PROFMSGSET        - - (PROFMSGSETV1)>
<!ELEMENT PROFMSGSETV1      - - (MSGSETCORE)>

<!-- No synchronization in this module -->

<!-- Transactions -->
<!ELEMENT PROFTRNRQ     - - (%TRNRQMACRO , PROFRQ)>
<!ELEMENT PROFTRNRS     - - (%TRNRSMACRO , PROFRS?)>

<!-- Messages -->

<!ELEMENT PROFRQ    - - (CLIENTROUTING , DTPROFUP)>
<!ELEMENT CLIENTROUTING - o %STRTYPE>

<!ELEMENT PROFRS    - - (MSGSETLIST , SIGNONINFOLIST , DTPROFUP,
                        FINAME, (ADDR1,(ADDR2,ADDR3?)?), CITY, STATE, POSTALCODE, COUNTRY,
                        CSPHONE?, TSPHONE?, FAXPHONE?, URL?, EMAIL? )>
                        
<!ELEMENT FINAME        - o %STRTYPE>
<!ELEMENT CSPHONE       - o %STRTYPE>
<!ELEMENT TSPHONE       - o %STRTYPE>
<!ELEMENT FAXPHONE      - o %STRTYPE>


<!-- Message List -->
<!-- Defined in terms of macro in ofxmain -->
<!-- OFX 1.6 correction: Disallow an empty <MSGSETLIST> by requiring one or
     more occurances of the %MSGSETMACRO contents.
     Also, make <SIGNONMSGSET> and <PROFMSGSET> required. -->
<!ELEMENT MSGSETLIST    - - (
    ((( SIGNONMSGSET, PROFMSGSET ) | ( PROFMSGSET, SIGNONMSGSET )),
     (%MSGSETMACRO)+ ) |
    ((( SIGNONMSGSET, (%MSGSETMACRO)+, PROFMSGSET ) |
     ( PROFMSGSET, (%MSGSETMACRO)+, SIGNONMSGSET )), (%MSGSETMACRO)* ) |
    ( (%MSGSETMACRO)+,
     (( SIGNONMSGSET, (%MSGSETMACRO)*, PROFMSGSET ) |
      ( PROFMSGSET, (%MSGSETMACRO)*, SIGNONMSGSET )), (%MSGSETMACRO)* )
    )>

<!-- Message set core info - used by all XXXMSGSETVn -->
<!-- OFX 1.6: Add <REFRESHSUPT> element.  May be used in all OFX versions. -->
<!ELEMENT MSGSETCORE    - - (VER , URL , OFXSEC ,
                             TRANSPSEC , SIGNONREALM ,
                             LANGUAGE+, SYNCMODE, REFRESHSUPT?,
			     RESPFILEER, SPNAME? )>

<!ELEMENT VER           - o %INTTYPE>
<!ELEMENT OFXSEC        - o %INTTYPE>
<!ELEMENT TRANSPSEC     - o %BOOLTYPE> 
<!ELEMENT SYNCMODE      - o %STRTYPE>
<!ELEMENT REFRESHSUPT	- o %BOOLTYPE>
<!ELEMENT RESPFILEER    - o %BOOLTYPE>
<!ELEMENT SPNAME	- o %STRTYPE>
                            

<!-- Signon realm -->
<!ELEMENT SIGNONINFOLIST    - - (SIGNONINFO*)>
<!ELEMENT SIGNONINFO        - - (SIGNONREALM , MIN , MAX ,
                                 CHARTYPE , CASESEN ,
                                 SPECIAL , SPACES, PINCH, CHGPINFIRST)>

<!ELEMENT SIGNONREALM       - o %STRTYPE>
<!ELEMENT MIN               - o %INTTYPE>
<!ELEMENT MAX               - o %INTTYPE>
<!ELEMENT CHARTYPE          - o %STRTYPE>
<!ELEMENT CASESEN           - o %BOOLTYPE>
<!ELEMENT SPECIAL           - o %BOOLTYPE>
<!ELEMENT SPACES            - o %BOOLTYPE>
<!ELEMENT PINCH             - o %BOOLTYPE>
<!ELEMENT CHGPINFIRST       - o %BOOLTYPE>




<!-- ============================================================================= -->
<!--
    OpenExchange Element Structure
    This file defines common and high-level elements.
    New requests and responses need to be added to the TRNRQ/TRNRS elements here
-->
<!-- ============================================================================= -->

<!-- Top-level -->
<!-- Add the 'meta-token' for sync requests from each
     service module here -->

<!ENTITY % OFXRQMSGSETS 
                     "SIGNONMSGSRQV1,
                      SIGNUPMSGSRQV1?,
                      BANKMSGSRQV1?,
                      CREDITCARDMSGSRQV1?,
                      INVSTMTMSGSRQV1?,
                      INTERXFERMSGSRQV1?,
                      WIREXFERMSGSRQV1?,
                      BILLPAYMSGSRQV1?,
                      EMAILMSGSRQV1?,
                      SECLISTMSGSRQV1?,
                      PROFMSGSRQV1?
                      %EXTRARQMSGSETS">

<!ENTITY % OFXRSMSGSETS                      
                     "SIGNONMSGSRSV1,
                      SIGNUPMSGSRSV1?,
                      BANKMSGSRSV1?,
                      CREDITCARDMSGSRSV1?,
                      INVSTMTMSGSRSV1?,
                      INTERXFERMSGSRSV1?,
                      WIREXFERMSGSRSV1?,
                      BILLPAYMSGSRSV1?,
                      EMAILMSGSRSV1?,
                      SECLISTMSGSRSV1?,
                      PROFMSGSRSV1?
                      %EXTRARSMSGSETS">                
                      
<!ELEMENT OFX   - - ((%OFXRQMSGSETS) | (%OFXRSMSGSETS))>


<!-- Generic Elements and Common Aggregates -->

<!ELEMENT DTCLIENT	- o	%DTTMTYPE>
<!ELEMENT USERID	- o %IDTYPE>
<!ELEMENT USERPASS	- o %STRTYPE>
<!ELEMENT USERKEY	- o %STRTYPE>
<!ELEMENT GENUSERKEY	- o %BOOLTYPE>
<!ELEMENT APPID	- o %IDTYPE>
<!ELEMENT APPVER	- o %INTTYPE>
<!ELEMENT DTSERVER	- o	%DTTMTYPE>
<!ELEMENT TSKEYEXPIRE	- o	%DTTMTYPE>
<!ELEMENT CLTCOOKIE     - o %STRTYPE>
<!ELEMENT TAN           - o %STRTYPE>

<!ELEMENT DESC          - o %STRTYPE>
<!ELEMENT PHONE         - o %STRTYPE>

<!-- CLIENTUID - a UUID that uniquely identifies OFX client -->
<!ELEMENT CLIENTUID		- o	%UUIDTYPE>

<!-- Multi-Factor Authentication extensions -->

<!ELEMENT USERCRED1		- o %STRTYPE>
<!ELEMENT USERCRED2		- o %STRTYPE>
<!ELEMENT ACCESSKEY		- o %STRTYPE>

<!-- general error reporting aggregate -->
<!ELEMENT STATUS	- -	(CODE , SEVERITY , MESSAGE?)>

<!ELEMENT CODE		- o	%INTTYPE>
<!ELEMENT SEVERITY	- o	%STRTYPE>	<!-- TODO: enum? -->
<!ELEMENT MESSAGE	- o	%STRTYPE>


<!-- Balance record -->
<!ELEMENT BAL		- -	(NAME , DESC , BALTYPE , VALUE , 
                         DTASOF? , CURRENCY?)>
<!ELEMENT BALTYPE	- o %STRTYPE>	<!-- TODO: enum? -->
<!ELEMENT VALUE		- o %AMTTYPE>


<!--
	TRNUID - a UUID that uniquely identifies transactions
-->
<!ELEMENT TRNUID			- o	%UUIDTYPE>


<!-- Server ID -->
<!ELEMENT SRVRTID	- o %SRVRIDTYPE>

<!-- Transaction ID issued by financial institution.This ID is used to detect duplicate downloads -->
<!ELEMENT FITID		- o	%IDTYPE>

<!-- starting date -->
<!ELEMENT DTSTART		- o	%DTTMTYPE>

<!-- ending date -->
<!ELEMENT DTEND			- o	%DTTMTYPE>

<!ELEMENT DTPROFUP      - o %DTTMTYPE>
<!ELEMENT DTACCTUP      - o %DTTMTYPE>

<!-- Sync-related -->
<!ELEMENT TOKENONLY         - o %BOOLTYPE>
<!ELEMENT TOKEN	            - o	%SRVRIDTYPE>
<!ELEMENT REFRESH           - o %BOOLTYPE>
<!ELEMENT REJECTIFMISSING   - o %BOOLTYPE>
<!ELEMENT LOSTSYNC          - o %BOOLTYPE>

<!ELEMENT URL               - o %URLTYPE>
<!ELEMENT INCIMAGES     - o %BOOLTYPE>


<!-- Name & Address-related fields used in several messages -->

<!ELEMENT FIRSTNAME     - o %STRTYPE>
<!ELEMENT MIDDLENAME    - o %STRTYPE>
<!ELEMENT LASTNAME      - o %STRTYPE>

<!--  Payees address lines (1 or more) -->
<!ELEMENT ADDR1	- o %STRTYPE>		
<!ELEMENT ADDR2	- o %STRTYPE>		
<!ELEMENT ADDR3	- o %STRTYPE>		

<!--  Payees city  -->
<!ELEMENT CITY	- o %STRTYPE>		

<!--  Payees state -->
<!ELEMENT STATE	- o %STRTYPE>		

<!--  Zip code -->
<!ELEMENT POSTALCODE	- o %STRTYPE>		

<!--  Payees country -->
<!ELEMENT COUNTRY	- o %STRTYPE>	
	
<!ELEMENT DAYPHONE      - o %STRTYPE>
<!ELEMENT EVEPHONE      - o %STRTYPE>
<!ELEMENT EMAIL         - o %STRTYPE>


<!-- ============================================================================= -->
<!--            Common between banking, billpay and/or investments                 -->
<!-- ============================================================================= -->

<!-- Bank account -->

<!ELEMENT (BANKACCTFROM,BANKACCTTO) - - (BANKID , BRANCHID? , ACCTID ,
                                        ACCTTYPE , ACCTKEY?)>

<!-- Credit card account -->

<!ELEMENT (CCACCTFROM,CCACCTTO) - - (ACCTID , ACCTKEY?)>


<!-- Routing & transit number -->
<!ELEMENT BANKID		- o	%IDTYPE>

<!-- Bank identifier for international banks -->
<!ELEMENT BRANCHID		- o	%IDTYPE>

<!-- Account number -->
<!ELEMENT ACCTID		- o %IDTYPE>

<!-- Type of account.  -->
<!ELEMENT ACCTTYPE		- o %IDTYPE>

<!-- Checksum for international banks -->
<!ELEMENT ACCTKEY		- o %IDTYPE>

<!-- User account number for a merchant -->
<!ELEMENT PAYACCT		- o %IDTYPE>

<!--
	 If present, this is the FITID of a previously sent transaction that is corrected by this record.
	 This transaction replaces or deletes the transaction that it corrects.
-->
<!ELEMENT CORRECTFITID	- o %IDTYPE>


<!--
	Actions can be REPLACE or DELETE.
	REPLACE replaces the transaction referenced by CORRECTFITID; DELETE deletes it.
-->
<!ELEMENT CORRECTACTION	- o	%STRTYPE>	<!-- TODO: attribute? -->

<!-- Payee name or description -->
<!ELEMENT NAME		- o %STRTYPE>

<!-- Extra information (not in <NAME>), A-255 -->
<!ELEMENT MEMO	- o	%STRTYPE>	

<!-- Marketing information -->
<!ELEMENT MKTGINFO	- o %STRTYPE>

<!-- Include flag -->
<!ELEMENT INCLUDE  - o (%BOOLTYPE;) >


<!-- ============================================================================= -->
<!--            Common amounts                                                     -->
<!-- ============================================================================= -->

<!-- Balance amount -->
<!ELEMENT BALAMT - o	%AMTTYPE>

<!-- Amount of transaction -->
<!ELEMENT TRNAMT	- o	%AMTTYPE>

<!-- ============================================================================= -->
<!--            Common dates                                                       -->
<!-- ============================================================================= -->

<!-- 	Date funds are available -->
<!ELEMENT DTDUE	- o %DTTMTYPE>

<!-- Balance date -->
<!ELEMENT DTASOF	- o	%DTTMTYPE>

<!-- ============================================================================= -->
<!--        Recurring models and instances                                         -->
<!-- ============================================================================= -->

<!-- If the response is generated by a recurring model, this ID references it -->
<!ELEMENT RECSRVRTID	- o	%SRVRIDTYPE>	

<!-- Recurring Instructions aggregate -->
<!ELEMENT RECURRINST - - (NINSTS? , FREQ)>

<!-- Number of instructions. If this tag is omitted, the schedule is open-ended -->
<!ELEMENT NINSTS	- o	%INTTYPE>

<!-- Frequency -->
<!ELEMENT FREQ	- o	%STRTYPE>	<!-- TODO: attribute?? -->

<!--
	Modify pending flag, boolean
	Note: if this flag is set, the server should modify pending as well as future transfers.
-->
<!ELEMENT MODPENDING	- o	%BOOLTYPE>


<!--
	Cancel pending flag, boolean
	Note: if this flag is set, the server should cancel pending as well as future transfers.
-->
<!ELEMENT CANPENDING	- o	%BOOLTYPE>


<!-- International -->
<!ELEMENT LANGUAGE	- o %STRTYPE>	<!-- TODO: enum? -->

<!ELEMENT (CURRENCY, ORIGCURRENCY)  - - (CURRATE , CURSYM)>
<!ELEMENT CURSYM        - o %STRTYPE>
<!ELEMENT CURRATE       - o %RATETYPE>
<!ELEMENT CURDEF        - o %STRTYPE>

<!-- ============================================================================= -->
<!--            Common Profile Stuff                                               -->
<!-- ============================================================================= -->

<!--    Recurring transfers and payments -->

<!--    Supports recurring -->
<!ELEMENT CANRECUR	- o %BOOLTYPE>

<!--    Can modify recurring models -->
<!ELEMENT CANMODMDLS	- o %BOOLTYPE>

<!-- Number of days prior to processing that server makes a recurring transaction available to the client -->
<!ELEMENT MODELWND	- o	%INTTYPE>	


<!-- Day where processing is unavailable (MONDAY, TUESDAY, etc) -->
<!ELEMENT PROCDAYSOFF	- o	%STRTYPE>	

<!-- Cut off time for days's processing TODO: should just be time -->
<!ELEMENT PROCENDTM 	- o	%DTTMTYPE>	

]>
