<!DOCTYPE OFX [



<!-- Set the OFX parser version number (yes, it is supposed to be in a comment) -->
<!-- #version 151 -->
<!-- old version was 9152, but I think was not related to the special version we use for marble -->

<!--
    $Revision: 1.77 $
    $Date: 2002/09/17 19:41:58 $

 Open Financial Exchange DTD
 Copyright 1997, 1998 CheckFree Corp., Intuit Inc., Microsoft Corp.  All rights reserved

 CSAPI Extensions copyright 1998, 1999, 2000 CheckFree Corp.
-->

<!-- ============================================================================= -->
<!-- ENTITIES - Extensions
    This entity allows users of this DTD to add new message sets
    to the DTD.

    Note:  Since these entities are currently empty placeholders, they appear at the end
    of lists without a preceding comma.  Once these entities assume real values, a comma
    should be added before each occurrence in a list.
-->
<!-- ============================================================================= -->

<!-- Add extra xxxMSGSETRQVn here -->
<!ENTITY % EXTRARQMSGSETS ",CKFR.SVCVERIFYMSGSRQV1?">

<!-- Add extra xxxMSGSETRSVn here -->
<!ENTITY % EXTRARSMSGSETS ",CKFR.SVCVERIFYMSGSRSV1?">

<!-- 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 and #Datatype should appear.
-->
<!-- ============================================================================= -->


<!-- Server ID : encoding for <TOKEN>s, <SERVERTID>s, etc -->
<!ENTITY % SRVRIDTYPE "(#PCDATA)" >
<!--#ENTITY % SRVRIDTYPE			#Datatype(A-10)-->

<!-- UUID : a universal ID , up to 36 char hexadecimal -->
<!-- OFX 1.5 -->
<!-- Also encoding for <TOKEN2>s, <SERVERTID2>s, etc -->
<!ENTITY % UUIDTYPE "(#PCDATA)" >
<!--#ENTITY % UUIDTYPE			#Datatype(A-36)-->

<!-- Single character data -->
<!ENTITY % CHARTYPE "(#PCDATA)">
<!--#ENTITY % CHARTYPE			#Datatype(A-1)-->

<!-- URL -->
<!ENTITY % URLTYPE  "(#PCDATA)">
<!--#ENTITY % URLTYPE			#Datatype(A-255)-->

<!-- URL2 was added to OFX 1.5 to handle longer URLs -->
<!ENTITY % URL2TYPE  "(#PCDATA)">
<!--#ENTITY % URL2TYPE			#Datatype(A-4096)-->

<!-- Integer -->
<!ENTITY % INTTYPE  "(#PCDATA)">
<!--#ENTITY % INTTYPE			#Datatype(I-4)-->

<!-- Rate, percentage -->
<!ENTITY % RATETYPE "(#PCDATA)">
<!--#ENTITY % RATETYPE			#DataType(N-32)-->

<!-- Current Amount: Used for specifying an amount.
 may be signed; comma or period for decimal point
-->
<!ENTITY % AMTTYPE  "(#PCDATA)">
<!--#ENTITY % AMTTYPE			#DataType(N-32)-->

<!--  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)">
<!--#ENTITY % DTTMTYPE			#DataType(DATE)-->

<!-- Datatype with time only, no date -->
<!ENTITY % TMTYPE "(#PCDATA)">
<!--#ENTITY % TMTYPE 			#DataType(TIME)-->

<!-- Boolean : Y/N -->
<!ENTITY % BOOLTYPE "(#PCDATA)">
<!--#ENTITY % BOOLTYPE			#DataType(BOOL)-->

<!-- a general purpose identifier type -->
<!ENTITY % IDTYPE   "(#PCDATA)">
<!--#ENTITY % IDTYPE			#DataType(A-32)-->

<!-- a general purpose name type -->
<!ENTITY % GENNAMETYPE   "(#PCDATA)">
<!--#ENTITY % GENNAMETYPE		#DataType(A-32)-->

<!-- Profile data types brought from MIFST 1.0 -->
<!ENTITY % EMPTYTYPE "(#PCDATA)">
<!--#ENTITY % EMPTYTYPE 		#DataType(A0-0)-->
<!ENTITY % STATETYPE "(#PCDATA)">
<!--#ENTITY % STATETYPE 		#DataType(A-5)-->
<!ENTITY % APPIDTYPE "(#PCDATA)">
<!--#ENTITY % APPIDTYPE			#DataType(A-5)-->
<!ENTITY % BANKIDTYPE "(#PCDATA)">
<!--#ENTITY % BANKIDTYPE		#DataType(A-9)-->
<!ENTITY % RATINGTYPE "(#PCDATA)">
<!--#ENTITY % RATINGTYPE		#DataType(A-10)-->
<!ENTITY % COUNTRYTYPE "(#PCDATA)">
<!--#ENTITY % COUNTRYTYPE		#DataType(A-3)-->
<!ENTITY % ZIPTYPE "(#PCDATA)">
<!--#ENTITY % ZIPTYPE			#DataType(A-11)-->
<!ENTITY % PAYEEIDTYPE "(#PCDATA)">
<!--#ENTITY % PAYEEIDTYPE	    	#DataType(A-12)-->
<!ENTITY % CHECKNUMTYPE "(#PCDATA)">
<!--#ENTITY % CHECKNUMTYPE		#DataType(A-12)-->
<!ENTITY % NONCETYPE "(#PCDATA)">
<!--#ENTITY % NONCETYPE	    		#DataType(A-16)-->
<!ENTITY % BROKERIDTYPE "(#PCDATA)">
<!--#ENTITY % BROKERIDTYPE 		#DataType(A-22)-->
<!ENTITY % ACCTIDTYPE "(#PCDATA)">
<!--#ENTITY % ACCTIDTYPE		#DataType(A-32)-->
<!ENTITY % TICKERTYPE "(#PCDATA)">
<!--#ENTITY % TICKERTYPE		#DataType(A-32)-->
<!ENTITY % FIIDTYPE "(#PCDATA)">
<!--#ENTITY % FIIDTYPE			#DataType(A-32)-->
<!ENTITY % TYPEDESCTYPE "(#PCDATA)">
<!--#ENTITY % TYPEDESCTYPE		#DataType(A-32)-->
<!ENTITY % PHONETYPE "(#PCDATA)">
<!--#ENTITY % PHONETYPE			#DataType(A-32)-->
<!ENTITY % ADDRESSTYPE "(#PCDATA)">
<!--#ENTITY % ADDRESSTYPE		#DataType(A-32)-->
<!ENTITY % OPTIONLEVELTYPE "(#PCDATA)">
<!--#ENTITY % OPTIONLEVELTYPE		#DataType(A-40)-->
<!ENTITY % SUBJECTTYPE "(#PCDATA)">
<!--#ENTITY % SUBJECTTYPE		#DataType(A-60)-->
<!ENTITY % FICERTIDTYPE "(#PCDATA)">
<!--#ENTITY % FICERTIDTYPE		#DataType(A-64)-->
<!ENTITY % USERKEYTYPE "(#PCDATA)">
<!--#ENTITY % USERKEYTYPE		#DataType(A-64)-->
<!ENTITY % SHORTMSGTYPE "(#PCDATA)">
<!--#ENTITY % SHORTMSGTYPE		#DataType(A-80)-->
<!ENTITY % SECNAMETYPE "(#PCDATA)">
<!--#ENTITY % SECNAMETYPE		#DataType(A-120)-->
<!ENTITY % PASSWORDTYPE "(#PCDATA)">
<!--#ENTITY % PASSWORDTYPE		#DataType(A-171)-->
<!ENTITY % FITIDTYPE "(#PCDATA)">
<!--#ENTITY % FITIDTYPE			#DataType(A-255)-->
<!ENTITY % MSGTYPE "(#PCDATA)">
<!--#ENTITY % MSGTYPE			#DataType(A-255)-->
<!ENTITY % LONGMSGTYPE "(#PCDATA)">
<!--#ENTITY % LONGMSGTYPE		#DataType(A-2000)-->
<!ENTITY % MEMO2TYPE "(#PCDATA)">
<!--#ENTITY % MEMO2TYPE			#DataType(A-390)-->
<!ENTITY % INFOTYPE "(#PCDATA)">
<!--#ENTITY % INFOTYPE			#DataType(A-360)-->
<!ENTITY % SESSCOOKIETYPE "(#PCDATA)">
<!--#ENTITY % SESSCOOKIETYPE		#DataType(A-1000)-->
<!ENTITY % MSGBODYTYPE "(#PCDATA)">
<!--#ENTITY % MSGBODYTYPE		#DataType(R-10000)-->
<!ENTITY % INVNOTYPE "(#PCDATA)">
<!--#ENTITY % INVNOTYPE			#DataType(A-32)-->
<!ENTITY % NINSTSTYPE "(#PCDATA)">
<!--#ENTITY % NINSTSTYPE		#DataType(I-3)-->
<!ENTITY % TEMPPASSTYPE "(#PCDATA)">
<!--#ENTITY % TEMPPASSTYPE		#DataType(A-32)-->
<!ENTITY % DAYSPANTYPE "(#PCDATA)">
<!--#ENTITY % DAYSPANTYPE		#DataType(I-3)-->
<!ENTITY % REFNUMTYPE "(#PCDATA)">
<!--#ENTITY % REFNUMTYPE		#DataType(A-32)-->
<!ENTITY % MAXMINTYPE "(#PCDATA)">
<!--#ENTITY % MAXMINTYPE		#DataType(I-2)-->
<!ENTITY % VERTYPE "(#PCDATA)">
<!--#ENTITY % VERTYPE			#DataType(I-5)-->
<!ENTITY % SHARESPERTYPE "(#PCDATA)">
<!--#ENTITY % SHARESPERTYPE		#DataType(I-5)-->
<!ENTITY % ERRORTYPE "(#PCDATA)">
<!--#ENTITY % ERRORTYPE  		#DataType(I-6)-->
<!ENTITY % SICTYPE "(#PCDATA)">
<!--#ENTITY % SICTYPE    		#DataType(I-6)-->
<!ENTITY % CUSIPTYPE "(#PCDATA)">
<!--#ENTITY % CUSIPTYPE			#DataType(A-32)-->
<!ENTITY % EXTTYPE "(#PCDATA)">
<!--#ENTITY % EXTTYPE			#DataType(I-10)-->
<!ENTITY % BILLREFINFOTYPE "(#PCDATA)">
<!--#ENTITY % BILLREFINFOTYPE		#DataType(A-80)-->
<!ENTITY % BOOKINGTEXTTYPE "(#PCDATA)">
<!--#ENTITY % BOOKINGTEXTTYPE		#DataType(A-40)-->
<!ENTITY % NAMEACCTHELDTYPE "(#PCDATA)">
<!--#ENTITY % NAMEACCTHELDTYPE	#DataType(A-96)-->
<!ENTITY % COLUMNTYPE "(#PCDATA)">
<!--#ENTITY % COLUMNTYPE		#DataType(A-8)-->
<!ENTITY % TANTYPE "(#PCDATA)">
<!--#ENTITY % TANTYPE			#DataType(A-80)-->
<!ENTITY % SECUIDTYPE "(#PCDATA)">
<!--#ENTITY % SECUIDTYPE 		#DataType(A-10)-->

<!-- Country-specific data types follow -->

<!ENTITY % ITACAUSALETYPE "(#PCDATA)">
<!--#ENTITY % ITACAUSALETYPE		#DataType(I-2)-->


<!-- Enumerated data types follow-->

<!ENTITY % ASSETCLASSENUM "(#PCDATA)">
<!--#ENTITY % ASSETCLASSENUM		#Enum("DOMESTICBOND", "INTLBOND","LARGESTOCK","SMALLSTOCK",
							  "INTLSTOCK","MONEYMRKT","OTHER")-->
<!ENTITY % CALLTYPEENUM "(#PCDATA)">
<!--#ENTITY % CALLTYPEENUM		#Enum("CALL", "PUT","PREFUND","MATURITY")-->
<!ENTITY % STOCKENUM "(#PCDATA)">
<!--#ENTITY % STOCKENUM			#Enum("COMMON", "PREFERRED","CONVERTIBLE","OTHER")-->
<!ENTITY % BUYENUM "(#PCDATA)">
<!--#ENTITY % BUYENUM			#Enum("BUY", "BUYTOCOVER")-->
<!ENTITY % INCOMEENUM "(#PCDATA)">
<!--#ENTITY % INCOMEENUM		#Enum("CGLONG", "CGSHORT","DIV","INTEREST", "MISC")-->
<!ENTITY % OPTACTIONENUM "(#PCDATA)">
<!--#ENTITY % OPTACTIONENUM		#Enum("EXERCISE", "ASSIGN","EXPIRE")-->
<!ENTITY % OPTBUYENUM "(#PCDATA)">
<!--#ENTITY % OPTBUYENUM		#Enum("BUYTOOPEN", "BUYTOCLOSE")-->
<!ENTITY % OPTSELLENUM "(#PCDATA)">
<!--#ENTITY % OPTSELLENUM		#Enum("SELLTOOPEN", "SELLTOCLOSE")-->
<!ENTITY % POSTYPEENUM "(#PCDATA)">
<!--#ENTITY % POSTYPEENUM		#Enum("LONG", "SHORT")-->
<!ENTITY % RELATEDENUM "(#PCDATA)">
<!--#ENTITY % RELATEDENUM		#Enum("SPREAD", "STRADDLE","NONE","OTHER")-->
<!ENTITY % SECUREDENUM "(#PCDATA)">
<!--#ENTITY % SECUREDENUM		#Enum("NAKED", "COVERED")-->
<!ENTITY % SELLREASONENUM "(#PCDATA)">
<!--#ENTITY % SELLREASONENUM		#Enum("CALL", "MATURITY", "SELL")-->
<!ENTITY % SELLTYPEENUM "(#PCDATA)">
<!--#ENTITY % SELLTYPEENUM		#Enum("SELL", "SELLSHORT")-->
<!ENTITY % DURATIONENUM "(#PCDATA)">
<!--#ENTITY % DURATIONENUM		#Enum("DAY", "GOODTILCANCEL","IMMEDIATE")-->
<!ENTITY % RESTRICTIONENUM "(#PCDATA)">
<!--#ENTITY % RESTRICTIONENUM		#Enum("ALLORNONE", "MINUNITS","NONE")-->
<!ENTITY % INOUTENUM "(#PCDATA)">
<!--#ENTITY % INOUTENUM			#Enum("IN", "OUT")-->
<!ENTITY % UNITTYPEENUM "(#PCDATA)">
<!--#ENTITY % UNITTYPEENUM		#Enum("SHARES", "CURRENCY")-->
<!ENTITY % SUBACCTENUM "(#PCDATA)">
<!--#ENTITY % SUBACCTENUM		#Enum("CASH", "MARGIN","SHORT","OTHER")-->
<!ENTITY % OPTTYPEENUM "(#PCDATA)">
<!--#ENTITY % OPTTYPEENUM		#Enum("CALL", "PUT")-->
<!ENTITY % MFTENUM "(#PCDATA)">
<!--#ENTITY % MFTENUM			#Enum("OPENEND", "CLOSEEND","OTHER")-->
<!ENTITY % DEBTENUM "(#PCDATA)">
<!--#ENTITY % DEBTENUM			#Enum("COUPON","ZERO")-->
<!ENTITY % DEBTCLASSENUM "(#PCDATA)">
<!--#ENTITY % DEBTCLASSENUM		#Enum("TREASURY", "MUNICIPAL","CORPORATE","OTHER")-->
<!ENTITY % EXTDPMTFORENUM "(#PCDATA)">
<!--#ENTITY % EXTDPMTFORENUM		#Enum("INDIVIDUAL","BUSINESS")-->
<!ENTITY % COUPONFREQENUM "(#PCDATA)">
<!--#ENTITY % COUPONFREQENUM		#Enum("MONTHLY","QUARTERLY","SEMIANNUALLY","ANNUALLY","OTHER")-->
<!ENTITY % CHARTYPEENUM "(#PCDATA)">
<!--#ENTITY % CHARTYPEENUM		#Enum("ALPHAONLY","NUMERICONLY","ALPHAORNUMERIC","ALPHAANDNUMERIC")-->
<!ENTITY % BALANCEENUM "(#PCDATA)">
<!--#ENTITY % BALANCEENUM		#Enum("DOLLAR","PERCENT","NUMBER")-->
<!ENTITY % ACCOUNTENUM "(#PCDATA)">
<!--#ENTITY % ACCOUNTENUM		#Enum("CHECKING","SAVINGS","MONEYMRKT","CREDITLINE")-->
<!ENTITY % ACCOUNTENUM2 "(#PCDATA)">
<!--#ENTITY % ACCOUNTENUM2		#Enum("CHECKING","SAVINGS","MONEYMRKT","CREDITLINE","CMA","CREDITCARD")-->
<!ENTITY % FREQENUM "(#PCDATA)">
<!--#ENTITY % FREQENUM			#Enum("WEEKLY","BIWEEKLY","TWICEMONTHLY","MONTHLY","FOURWEEKS","BIMONTHLY",
							"QUARTERLY","SEMIANNUALLY","TRIANNUALLY","ANNUALLY")-->
<!ENTITY % DAYSENUM "(#PCDATA)">
<!--#ENTITY % DAYSENUM			#Enum("MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY",
							"SATURDAY","SUNDAY")-->
<!ENTITY % CLIENTROUTINGENUM "(#PCDATA)">
<!--#ENTITY % CLIENTROUTINGENUM	#Enum("NONE","SERVICE","MSGSET")-->
<!ENTITY % XFERSTATUSENUM "(#PCDATA)">
<!--#ENTITY % XFERSTATUSENUM		#Enum("WILLPROCESSON","POSTEDON","NOFUNDSON", "CANCELEDON", "FAILEDON")-->
<!ENTITY % TRANSACTIONENUM "(#PCDATA)">
<!--#ENTITY % TRANSACTIONENUM		#Enum("CREDIT","DEBIT","INT","DIV","FEE","SRVCHG","DEP","ATM",
			       			"POS","XFER","CHECK","PAYMENT","CASH","DIRECTDEP","DIRECTDEBIT",
			       			"REPEATPMT","OTHER")-->
<!ENTITY % PMTPROCESSSTATUSENUM "(#PCDATA)">
<!--#ENTITY % PMTPROCESSSTATUSENUM	#Enum("WILLPROCESSON","PROCESSEDON","NOFUNDSON","FAILEDON",
							"CANCELEDON")-->
<!ENTITY % USPRODUCTENUM "(#PCDATA)">
<!--#ENTITY % USPRODUCTENUM		#Enum("401K","403B","IRA","KEOGH","OTHER","SARSEP","SIMPLE","NORMAL",
				   			"TDA","TRUST","UGMA")-->
<!ENTITY % SEVERITYENUM "(#PCDATA)">
<!--#ENTITY % SEVERITYENUM		#Enum("INFO","WARN","ERROR")-->
<!ENTITY % SECURITYENUM "(#PCDATA)">
<!--#ENTITY % SECURITYENUM		#Enum("NONE","TYPE1")-->
<!ENTITY % SYNCENUM "(#PCDATA)">
<!--#ENTITY % SYNCENUM			#Enum("FULL","LITE")-->
<!ENTITY % SERVICESTATUSENUM "(#PCDATA)">
<!--#ENTITY % SERVICESTATUSENUM	#Enum("AVAIL","PEND", "ACTIVE", "REJECTED")-->
<!ENTITY % SERVICEENUM "(#PCDATA)">
<!--#ENTITY % SERVICEENUM		#Enum("BANKSVC","BPSVC", "INVSVC")-->
<!ENTITY % SERVICEENUM2 "(#PCDATA)">
<!--#ENTITY % SERVICEENUM2		#Enum("BANKSVC","BPSVC", "INVSVC", "PRESSVC")-->
<!ENTITY % CORRECTIVEACTENUM "(#PCDATA)">
<!--#ENTITY % CORRECTIVEACTENUM	#Enum("REPLACE","DELETE")-->
<!ENTITY % CHECKSTATUSENUM "(#PCDATA)">
<!--#ENTITY % CHECKSTATUSENUM		#Enum("0","1","100","101")-->
<!ENTITY % IDSCOPEENUM "(#PCDATA)">
<!--#ENTITY % IDSCOPEENUM		#Enum("GLOBAL","USER")-->
<!ENTITY % INVESTMENTACCOUNTENUM "(#PCDATA)">
<!--#ENTITY % INVESTMENTACCOUNTENUM	#Enum("INDIVIDUAL","JOINT", "TRUST", "CORPORATE")-->
<!ENTITY % PWTYPEENUM "(#PCDATA)">
<!--#ENTITY % PWTYPEENUM 		#Enum("FIXED","ONETIME","HWTOKEN")-->
<!ENTITY % PMTINSTRUMENTENUM "(#PCDATA)">
<!--#ENTITY % PMTINSTRUMENTENUM 	#Enum("CONCENTRATOR","CHECKINGACCOUNT","CREDITCARD","ECOIN")-->

<!ENTITY % LANGUAGEENUM "(#PCDATA)">
<!--#ENTITY % LANGUAGEENUM		#Enum("AAR","ABK","ACE","ACH","ADA","AFA","AFH","AFR",
 							"AJM","AKA","AKK","ALB","ALE","ALG","AMH","ANG",
							"APA","ARA","ARC","ARM","ARN","ARP","ART","ARW",
							"ASM","ATH","AVA","AVE","AWA","AYM","AZE","BAD",
							"BAI","BAK","BAL","BAM","BAN","BAQ","BAS","BAT",
 							"BEJ","BEL","BEM","BEN","BER","BHO","BIH","BIK",
							"BIN","BIS","BLA","BOD","BRA","BRE","BUG","BUL",
 							"BUR","CAD","CAI","CAR","CAT","CAU","CEB","CEL",
 							"CES","CHA","CHB","CHE","CHG","CHI","CHN","CHO",
							"CHR","CHU","CHV","CHY","COP","COR","COS","CPE",
							"CPF","CPP","CRE","CRP","CUS","CYM","CZE","DAK",
							"DAN","DEL","DEU","DIN","DOI","DRA","DUA","DUM",
							"DUT","DYU","DZO","EFI","EGY","EKA","ELL","ELX",
							"ENG","ENM","EPO","ESK","ESL","EST","ETH","EUS",
							"EWE","EWO","FAN","FAO","FAS","FAT","FIJ","FIN",
							"FIU","FON","FRA","FRE","FRM","FRO","FRY","FUL",
							"GAA","GAE","GAI","GAY","GDH","GEM","GEO","GER",
							"GIL","GLG","GMH","GOH","GON","GOT","GRB","GRC",
							"GRE","GRN","GUJ","HAI","HAU","HAW","HEB","HER",
							"HIL","HIM","HIN","HMO","HUN","HUP","HYE","IBA",
							"IBO","ICE","IJO","IKU","ILE","ILO","INA","INC",
							"IND","INE","IPK","IRA","IRI","IRO","ISL","ITA",
							"JAV","JAW","JPN","JPR","JRB","KAA","KAB","KAC",
							"KAL","KAM","KAN","KAR","KAS","KAT","KAU","KAW",
							"KAZ","KHA","KHI","KHM","KHO","KIK","KIN","KIR",
							"KOK","KON","KOR","KPE","KRO","KRU","KUA","KUR",
							"KUS","KUT","LAD","LAH","LAM","LAO","LAP","LAT",
							"LAV","LIN","LIT","LOL","LOZ","LUB","LUG","LUI",
							"LUN","LUO","MAC","MAD","MAG","MAH","MAI","MAK",
							"MAL","MAN","MAO","MAP","MAR","MAS","MAX","MAY",
							"MEN","MIC","MIN","MIS","MKE","MKH","MLG","MLT",
							"MNI","MNO","MOH","MOL","MON","MOS","MRI","MSA",
 							"MUL","MUN","MUS","MWR","MYA","MYN","NAH","NAI",
							"NAU","NAV","NDE","NLD","NDO","NEP","NEW","NIC",
							"NIU","NON","NOR","NSO","NUB","NYA","NYM","NYN",
							"NYO","NZI","OCI","OJI","ORI","ORM","OSA","OSS",
							"OTA","OTO","PAA","PAG","PAL","PAM","PAN","PAP",
							"PAU","PEO","PER","PLI","POL","PON","POR","PRA",
							"PRO","PUS","QUE","RAJ","RAR","ROA","ROH","ROM",
							"RON","RUM","RUN","RUS","SAD","SAG","SAI","SAL",
							"SAM","SAN","SCO","SCR","SEL","SEM","SHN","SID",
							"SIN","SIO","SIT","SLA","SLK","SLO","SLV","SMO",
							"SNA","SND","SOG","SOM","SON","SOT","SPA","SQI",
 							"SRR","SSA","SSW","SUK","SUN","SUS","SUX","SVE",
							"SWA","SWE","SYR","TAH","TAM","TAT","TEL","TEM",
							"TER","TGK","TGL","THA","TIB","TIG","TIR","TIV",
							"TLI","TOG","TON","TRU","TSI","TSN","TSO","TUK",
							"TUM","TUR","TUT","TWI","UGA","UIG","UKR","UMB",
							"UND","URD","UZB","VAI","VEN","VIE","VOL","VOT",
							"WAK","WAL","WAR","WAS","WEL","WEN","WOL","XHO",
							"YAO","YAP","YID","YOR","ZAP","ZEN","ZHA","ZHO",
							"ZUL","ZUN")-->

<!ENTITY % CURRENCYENUM "(#PCDATA)">
<!--#ENTITY % CURRENCYENUM		#Enum("ADP","AED","AFA","ALL","ANG","AOK","ARA","ATS","AUD",
							"AWG","BBD","BDT","BEF","BGL","BHD","BIF","BMD","BND",
							"BOB","BRC","BSD","BTN","BUK","BWP","BZD","CAD","CHF",
							"CLF","CLP","CNY","COP","CRC","CSK","CUP","CVE","CYP",
							"DDM","DEM","DJF","DKK","DOP","DZD","ECS","EGP","ESP",
							"ETB","EUR","FIM","FJD","FKP","FRF","GBP","GHC","GIP",
							"GMD","GNF","GRD","GTQ","GWP","GYD","HKD","HNL","HTG",
							"HUF","IDR","IEP","ILS","INR","IQD","IRR","ISK","ITL",
							"JMD","JOD","JPY","KES","KHR","KMF","KPW","KRW","KWD",
							"KYD","LAK","LBP","LKR","LRD","LSL","LUF","LYD","MAD",
							"MGF","MNT","MOP","MRO","MTL","MUR","MVR","MWK","MXP",
							"MYR","MZM","NGN","NIC","NLG","NOK","NPR","NZD","OMR",
							"PAB","PEI","PGK","PHP","PKR","PLZ","PTE","PYG","QAR",
							"ROL","RWF","SAR","SBD","SCR","SDP","SEK","SGD","SHP",
							"SLL","SOS","SRG","STD","SUR","SVC","SYP","SZL","THB",
							"TND","TOP","TPE","TRL","TTD","TWD","TZS","UGS","USD",
							"UYP","VEB","VND","VUV","WST","YDD","YER","YUD","ZAR",
							"ZMK","ZRZ","ZWD")-->




<!-- ============================================================================= -->
<!-- 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 -->

<!-- OFX 1.5 -->
<!-- ADDED TOKEN2 -->
<!ENTITY % SYNCRQMACRO "((TOKEN | TOKEN2 | TOKENONLY | REFRESH )
    , REJECTIFMISSING, CKFR.RECCTRLIN?)" >

<!-- OFX 1.5 -->
<!-- ADDED SYNCERROR -->
<!-- ADDED TOKEN2 -->
<!ENTITY % SYNCRSMACRO "((TOKEN | TOKEN2), LOSTSYNC?, SYNCERROR?, CKFR.RECCTRLOUT?)">

<!-- 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 -->
<!-- OFX 1.5 -->
<!-- ADDED PRESACCTFROM -->
<!ENTITY % ACCTFROMMACRO "(BANKACCTFROM | CCACCTFROM | INVACCTFROM| PRESACCTFROM)">

<!-- OFX 1.5 -->
<!-- ADDED PRESACCTTO -->
<!ENTITY % ACCTTOMACRO "(BANKACCTTO | CCACCTTO | INVACCTTO | PRESACCTTO)">

<!-- OFX 1.5 -->
<!-- ADDED PRESACCTINFO -->
<!ENTITY % ACCTINFOMACRO "(BANKACCTINFO | CCACCTINFO | BPACCTINFO | INVACCTINFO | PRESACCTINFO)">

<!-- CheckFree Extensions: added new entities -->
<!ENTITY % CKFR_IDTYPE "(#PCDATA)" >
<!--#ENTITY % CKFR_IDTYPE  		#DataType(A-48)-->
<!ENTITY % CKFR_CERTTYPE "(#PCDATA)">
<!--#ENTITY % CKFR_CERTTYPE  		#DataType(A-2048)-->
<!ENTITY % CKFR_AUTHTYPE "(#PCDATA)">
<!--#ENTITY % CKFR_AUTHTYPE  		#DataType(A-512)-->
<!ENTITY % CKFR_ENTITYENUM "(#PCDATA)">
<!--#ENTITY % CKFR_ENTITYENUM		#Enum("SPONSOR","BPC","CKFR")-->
<!ENTITY % CKFR_AUTHTYPEENUM "(#PCDATA)">
<!--#ENTITY % CKFR_AUTHTYPEENUM 	#Enum("INTEGRITY","VOUCHER","RELATIONSHIPID")-->
<!ENTITY % CKFR_AUTHERRENUM  "(#PCDATA)">
<!--#ENTITY % CKFR_AUTHERRENUM 	#Enum("SUCCESS","SIGNATUREINVALID","CONTENTINVALID")-->
<!ENTITY % CKFR_CHECKNUMTYPE "(#PCDATA)">
<!--#ENTITY % CKFR_CHECKNUMTYPE  	#DataType(A-6)-->
<!ENTITY % CKFR_NAMETYPE "(#PCDATA)">
<!--#ENTITY % CKFR_NAMETYPE  		#DataType(A-35)-->
<!ENTITY % CKFR_CATTYPE "(#PCDATA)">
<!--#ENTITY % CKFR_CATTYPE  		#DataType(A-40)-->
<!ENTITY % CKFR_PROVINCETYPE "(#PCDATA)">
<!--#ENTITY % CKFR_PROVINCETYPE	#DataType(A-30)-->
<!ENTITY % CKFR_PMTHISTENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PMTHISTENUM	#Enum("PENDINGPMTS","HISTPMTS")-->
<!ENTITY  % CKFR_NICKNAMETYPE "(#PCDATA)">
<!--#ENTITY % CKFR_NICKNAMETYPE	#DataType(A-30)-->
<!ENTITY % CKFR_BILLSTATENUM "(#PCDATA)">
<!--#ENTITY % CKFR_BILLSTATENUM 	#Enum("INACTIVE","ACTIVE", "RETIRED")-->
<!ENTITY % CKFR_BILLPROCSTATENUM "(#PCDATA)">
<!--#ENTITY % CKFR_BILLPROCSTATENUM #Enum("NEW","DELIVERED", "VIEWED", "PAID", "PAIDOUTOFBAND")-->
<!ENTITY % CKFR_CUSTMAGNETENUM "(#PCDATA)">
<!--#ENTITY % CKFR_CUSTMAGNETENUM #Enum("MAGNETIZED", "DEMAGNETIZED")-->
<!ENTITY % CKFR_BILLEVENTENUM "(#PCDATA)">
<!--#ENTITY % CKFR_BILLEVENTENUM #Enum("DELIVERED", "VIEWED","DETAILVIEWED","PAID","PAIDOUTOFBAND", "RETIRED", "INACTIVE")-->
<!ENTITY % CKFR_BILLENUM "(#PCDATA)">
<!--#ENTITY % CKFR_BILLENUM		#Enum("BILL","STATEMENT", "INVOICE", "DISCLOSURE")-->
<!ENTITY % CKFR_EBILLIDTYPE "(#PCDATA)">
<!--#ENTITY % CKFR_EBILLIDTYPE	#DataType(A-36)-->
<!ENTITY % CKFR_TEASERTYPE "(#PCDATA)">
<!--#ENTITY % CKFR_TEASERTYPE		#DataType(A-80)-->
<!ENTITY % CKFR_URLTYPE  "(#PCDATA)">
<!--#ENTITY % CKFR_URLTYPE		#Datatype(A-4096)-->

<!ENTITY % CKFR_SBSRPFXTYPE "(#PCDATA)">
<!--#ENTITY % CKFR_SBSRPFXTYPE	#DataType(A-6)-->
<!ENTITY % CKFR_SBSRENUM "(#PCDATA)">
<!--#ENTITY % CKFR_SBSRENUM 		#Enum("I","B")-->

<!ENTITY % CKFR_ENRLCODETYPE "(#PCDATA)">
<!--#ENTITY % CKFR_ENRLCODETYPE 	#DataType(A-3)-->
<!ENTITY % CKFR_FULFILLCODETYPE "(#PCDATA)">
<!--#ENTITY % CKFR_FULFILLCODETYPE 	#DataType(A-10)-->
<!ENTITY % CKFR_ENRLMRKTSRCCODETYPE "(#PCDATA)">
<!--#ENTITY % CKFR_ENRLMRKTSRCCODETYPE #DataType(A-10)-->
<!ENTITY % CKFR_ZONEENUM "(#PCDATA)">
<!--#ENTITY % CKFR_ZONEENUM 		#Enum("-12","-11","-10","-9","-8","-7","-6","-5","-4","-3","-2","-1","0","+1","+2","+3",
							"+4","+5","+6","+7","+8","+9","+10","+11","+12")-->
<!ENTITY % CKFR_SBSRCATTYPE "(#PCDATA)">
<!--#ENTITY % CKFR_SBSRCATTYPE 	#DataType(A-50)-->
<!ENTITY % CKFR_BILLCLASSTYPE "(#PCDATA)">
<!--#ENTITY % CKFR_BILLCLASSTYPE 	#DataType(A-5)-->
<!ENTITY % CKFR_BUSNAMETYPE "(#PCDATA)">
<!--#ENTITY % CKFR_BUSNAMETYPE 	#DataType(A-40)-->
<!ENTITY % CKFR_PRIORITYCODEENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PRIORITYCODEENUM	#Enum("PRIMARY", "RELATED")-->
<!ENTITY % CKFR_POSTEDENUM "(#PCDATA)">
<!--#ENTITY % CKFR_POSTEDENUM		#Enum("NOTSUPPORTED","NOTAPPLICABLE","POSTED","NOTPOSTED")-->
<!ENTITY % CKFR_COSBSRNUMBERTYPE "(#PCDATA)" >
<!--#ENTITY % CKFR_COSBSRNUMBERTYPE	#DataType(I-6)-->
<!ENTITY % CKFR_SPSRBILLINGCATEGORYENUM "(#PCDATA)" >
<!--#ENTITY % CKFR_SPSRBILLINGCATEGORYENUM	#Enum("CUSTOMER", "BUSINESS")-->

<!ENTITY % CKFR_PACSTATUSENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PACSTATUSENUM 		#Enum("ACTIVE","INACTIVENEW","INACTIVEREVOKED")-->
<!ENTITY % CKFR_PACTYPE "(#PCDATA)" >
<!--#ENTITY % CKFR_PACTYPE 	#DataType(A-8)-->

<!ENTITY % CKFR_PRESSVCSTATUSENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PRESSVCSTATUSENUM	#Enum("ACTIVE","INACTIVE","PENDING", "NOSERVICE")-->

<!-- New CheckFree email entities -->
<!ENTITY % CKFR_MAILSTATUSENUM "(#PCDATA)">
<!--#ENTITY % CKFR_MAILSTATUSENUM	#Enum("SENT","NEW","VIEWED")-->
<!ENTITY % CKFR_MAILTYPEENUM "(#PCDATA)">
<!--#ENTITY % CKFR_MAILTYPEENUM	#Enum("GENERAL","PAYMENT")-->

<!-- New Checkfree Pre-enrollment entities -->
<!ENTITY % CKFR_PREENROLLKNAPSACKTYPE "(#PCDATA)">
<!--#ENTITY % CKFR_PREENROLLKNAPSACKTYPE	#DataType(A-3000)-->
<!ENTITY % CKFR_PREENROLLNAMESUFFIXENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PREENROLLNAMESUFFIXENUM #Enum("JR","SR","I","II","III","IV","V","VI","VII","VIII","IX")-->
<!ENTITY % CKFR_PREENROLLLICADDRINDENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PREENROLLLICADDRINDENUM #Enum("CURRENT","FORMER","DIFFERENT")-->
<!ENTITY % CKFR_PREENROLLPHONETYPE "(#PCDATA)" >
<!--#ENTITY % CKFR_PREENROLLPHONETYPE 	#DataType(A-32)-->
<!ENTITY % CKFR_PREENROLLLICNUMTYPE "(#PCDATA)" >
<!--#ENTITY % CKFR_PREENROLLLICNUMTYPE 	#DataType(A-30)-->
<!ENTITY % CKFR_PREENROLLNAMETYPE "(#PCDATA)" >
<!--#ENTITY % CKFR_PREENROLLNAMETYPE 	#DataType(A-25)-->
<!ENTITY % CKFR_PREENROLLADDRTYPE1 "(#PCDATA)" >
<!--#ENTITY % CKFR_PREENROLLADDRTYPE1 	#DataType(A-30)-->
<!ENTITY % CKFR_PREENROLLADDRTYPE2 "(#PCDATA)" >
<!--#ENTITY % CKFR_PREENROLLADDRTYPE2 	#DataType(A-29)-->
<!ENTITY % CKFR_PREENROLLACTIONENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PREENROLLACTIONENUM #Enum("NEW","UPGRADE")-->
<!ENTITY % CKFR_PREENROLLVERIFICATIONENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PREENROLLVERIFICATIONENUM #Enum("FULL","LITE","PASSTHRU")-->

<!ENTITY % CKFR_CODETYPE "(#PCDATA)" >
<!--#ENTITY % CKFR_CODETYPE 			#DataType(A-2)-->

<!-- CheckFree Extension: added new type for ASAP/Express payments -->
<!ENTITY % CKFR_PMTTYPEENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PMTTYPEENUM	#Enum("ELECTRONIC","PAPER","DRAFT","INTERNAL")-->

<!ENTITY % CKFR_REASONCATEGORYIDTYPE "(#PCDATA)" >
<!--#ENTITY % CKFR_REASONCATEGORYIDTYPE #DataType(I-6)-->

<!ENTITY % CKFR_SVCENUM "(#PCDATA)">
<!--#ENTITY % CKFR_SVCENUM #Enum("UPLSVC","P2PSVC","EBLSVC", "RPLSVC")-->

<!ENTITY % CKFR_EMAILUSAGEENUM "(#PCDATA)">
<!--#ENTITY % CKFR_EMAILUSAGEENUM #Enum("PRIMARY","P2P")-->
<!ENTITY % CKFR_EMAILSTATUSENUM "(#PCDATA)">
<!--#ENTITY % CKFR_EMAILSTATUSENUM #Enum("ACTIVE","INACTIVE")-->
<!ENTITY % CKFR_EMAILAUTHSTATUSENUM "(#PCDATA)">
<!--#ENTITY % CKFR_EMAILAUTHSTATUSENUM #Enum("AUTH","NOTAUTH","REVOKED","PENDING")-->

<!ENTITY % CKFR_EFTTYPEENUM "(#PCDATA)">
<!--#ENTITY % CKFR_EFTTYPEENUM #Enum("ELECTRONIC","PAPER","BOTH")-->
<!ENTITY % CKFR_CONFMSTATUSENUM "(#PCDATA)">
<!--#ENTITY % CKFR_CONFMSTATUSENUM #Enum("CONFIRMED","PENDING","MAXED","STALE","RETURNS")-->

<!ENTITY % CKFR_DUEDATETEXTTYPE "(#PCDATA)" >
<!--#ENTITY % CKFR_DUEDATETEXTTYPE #DataType(A-20)-->

<!ENTITY % CKFR_SBSRSTATUSENUM "(#PCDATA)">
<!--#ENTITY % CKFR_SBSRSTATUSENUM #Enum("ACTIVE","INACTIVE","CANCELLED","FROZEN","VERIFY")-->

<!ENTITY % CKFR_EMAILEBILLSENUM "(#PCDATA)">
<!--#ENTITY % CKFR_EMAILEBILLSENUM #Enum("NOTALLOWED","SUMMARY","SUMMARYANDDETAIL")-->

<!ENTITY % CKFR_ACCTUSAGEENUM "(#PCDATA)">
<!--#ENTITY % CKFR_ACCTUSAGEENUM #Enum("PERSONAL", "BUSINESS")-->

<!ENTITY % CKFR_EMAILPREAUTHTOKENENUM "(#PCDATA)">
<!--#ENTITY % CKFR_EMAILPREAUTHTOKENENUM  #Enum("NONE","FIRSTPREAUTHTOKEN","SECONDPREAUTHTOKEN","THIRDPREAUTHTOKEN")-->

<!ENTITY % CKFR_PREAUTHTOKENTEXTATTRIBUTEENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PREAUTHTOKENTEXTATTRIBUTEENUM  #Enum("CLEAR","MASKED")-->

<!-- Added for Spring 2003 release -->
<!ENTITY % CKFR_PREAUTHTOKENTYPEENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PREAUTHTOKENTYPEENUM  #Enum("DATEOFBIRTH","EMAILADDRESS","HOMEPHONENUMBER",
						"LASTNAME","MOTHERSMAIDENNAME","OTHER",
						"SOCIALSECURITYNUMBER","ZIPCODE")-->

<!-- Added for Spring 2003 release -->
<!ENTITY % CKFR_PROCESSINGMODELENUM "(#PCDATA)">
<!--#ENTITY % CKFR_PROCESSINGMODELENUM  #Enum("DUEDATE","PROCESSDATE")-->

<!-- Added for Spring 2003 release -->
<!ENTITY % CKFR_FREEPERIODTYPE "(#PCDATA)" >
<!--#ENTITY % CKFR_FREEPERIODTYPE #DataType(I-2)-->

<!-- CheckFree Extension: added some general SGML entities for special characters. -->
<!---  
	<!ENTITY amp "&" >
	<!ENTITY lt "<" >
	<!ENTITY gt ">" >
	<!ENTITY nbsp " " >
--->

<!-- ============================================================================= -->

<!-- Signon Message set -->
<!-- Different from most: only one sonrq and at most one
     pin change allowed -->
<!-- CheckFree Extension: Added CKFR. extensions to message set version 2.  Needed to break up multiple element syntax to do this -->
<!ELEMENT SIGNONMSGSRQV1    - - (SONRQ , PINCHTRNRQ?, CHALLENGETRNRQ?)>
<!ELEMENT SIGNONMSGSRSV1    - - (SONRS , PINCHTRNRS?, CHALLENGETRNRS?)>
<!ELEMENT SIGNONMSGSRQV2    - - (SONRQ , PINCHTRNRQ?, CHALLENGETRNRQ?, CKFR.CERTTRNRQ?, CKFR.CERTINQTRNRQ?, CKFR.AUTHNOTIFYTRNRQ? )>
<!ELEMENT SIGNONMSGSRSV2    - - (SONRS , PINCHTRNRS?, CHALLENGETRNRS?, CKFR.CERTTRNRS?, CKFR.CERTINQTRNRS?, CKFR.AUTHNOTIFYTRNRS? )>

<!-- Signon message set profile entry -->
<!ELEMENT SIGNONMSGSET      - - (SIGNONMSGSETV1?, SIGNONMSGSETV2?)>
<!ELEMENT (SIGNONMSGSETV1, SIGNONMSGSETV2)    - - (MSGSETCORE)>


<!-- Transactions -->
<!ELEMENT PINCHTRNRQ    - - (%TRNRQMACRO , PINCHRQ)>
<!ELEMENT CHALLENGETRNRQ    - - (%TRNRQMACRO , CHALLENGERQ)>
<!ELEMENT PINCHTRNRS    - - (%TRNRSMACRO , PINCHRS?)>
<!ELEMENT CHALLENGETRNRS    - - (%TRNRSMACRO , CHALLENGERS?)>
<!-- CheckFree Extensions -->
<!ELEMENT CKFR.CERTINQTRNRQ - - (%TRNRQMACRO , CKFR.CERTINQRQ)>
<!ELEMENT CKFR.CERTINQTRNRS - - (%TRNRSMACRO , CKFR.CERTINQRS?)>
<!ELEMENT CKFR.CERTTRNRQ - - (%TRNRQMACRO , CKFR.CERTRQ)>
<!ELEMENT CKFR.CERTTRNRS - - (%TRNRSMACRO , CKFR.CERTRS?)>
<!ELEMENT CKFR.AUTHNOTIFYTRNRQ - - (%TRNRQMACRO ,CKFR.AUTHNOTIFYRQ)>
<!ELEMENT CKFR.AUTHNOTIFYTRNRS - - (%TRNRSMACRO ,CKFR.AUTHNOTIFYRS?)>
<!ELEMENT CKFR.CERTINQRQ - - (CKFR.ENTITYID,CKFR.ENTITYTYPE)>
<!ELEMENT CKFR.CERTINQRS - - (CKFR.ENTITYID,CKFR.ENTITYTYPE,CKFR.CERTINFO*)>
<!ELEMENT (CKFR.CERTRQ,CKFR.CERTRS) - - (CKFR.CERTIFICATE)>
<!ELEMENT (CKFR.AUTHNOTIFYRQ,CKFR.AUTHNOTIFYRS) - - (FID?,USERID?,CKFR.AUTHTYPE,CKFR.AUTHERRCODE,CKFR.DTEVENT,CKFR.IMAGEURL)>

<!ELEMENT CKFR.CERTINFO - - (CKFR.CERTIFICATE)>

<!ELEMENT CKFR.AUTHTYPE - o %CKFR_AUTHTYPEENUM>
<!ELEMENT CKFR.AUTHERRCODE - o %CKFR_AUTHERRENUM>
<!ELEMENT CKFR.DTEVENT - o %DTTMTYPE>
<!ELEMENT CKFR.CERTIFICATE  - o %CKFR_CERTTYPE>
<!ELEMENT CKFR.AUTHREC  - o %CKFR_AUTHTYPE>
<!ELEMENT CKFR.ENTITYID - o %IDTYPE>
<!ELEMENT CKFR.ENTITYTYPE - o %CKFR_ENTITYENUM>
<!ELEMENT CKFR.EXTUSERID  - o %CKFR_IDTYPE>

<!-- Signon Request and Response -->

<!-- Signon Request version 2 adds country and onetimepass for non-US -->
<!-- OFX 1.5 -->
<!-- ADDED ONETIMEPASS, COUNTRY -->
<!-- COUNTRY was originally named COUNTSYS, until it was noticed that its data type is
     the same as that for country names in addresses. Since both are based on the ISO
     code for countries and regions, the element name was changed in the signon -->
<!-- CheckFree Extension: added CKFR.AUTHREC, CKFR.CERTIFICATE, CKFR.EXTUSERID, CKFR.INTEROPAPPID, CKFR.INTEROPAPPVER, CKFR.THRDPRTYEXTUSERID -->
<!ELEMENT SONRQ 	- - (DTCLIENT , (CKFR.AUTHREC | USERKEY | ((USERID|CKFR.EXTUSERID|CKFR.THRDPRTYEXTUSERID) , USERPASS, ONETIMEPASS?)),
                         GENUSERKEY? , LANGUAGE, COUNTRY? , FI? , SESSCOOKIE? , APPID , APPVER, CKFR.CERTIFICATE?,
				 (CKFR.INTEROPAPPID, CKFR.INTEROPAPPVER)?)>
<!--#ELEMENT SONRQ #Link(ONETIMEPASS,SIGNONMSGSRQV2)-->
<!--#ELEMENT SONRQ #Link(COUNTRY,SIGNONMSGSRQV2)-->
<!--#ELEMENT SONRQ #Link(CKFR.AUTHREC,SIGNONMSGSRQV2)-->
<!--#ELEMENT SONRQ #Link(CKFR.CERTIFICATE,SIGNONMSGSRQV2)-->
<!--#ELEMENT SONRQ #Link(CKFR.EXTUSERID,SIGNONMSGSRQV2)-->
<!--#ELEMENT SONRQ #Link(CKFR.INTEROPAPPID,SIGNONMSGSRQV2)-->
<!--#ELEMENT SONRQ #Link(CKFR.INTEROPAPPVER,SIGNONMSGSRQV2)-->



<!ELEMENT FI            - - (ORG , FID?)>
<!ELEMENT ORG           - o %GENNAMETYPE>
<!ELEMENT FID           - o %FIIDTYPE>

<!-- OFX 1.5 -->
<!-- ONETIMEPASS, A-32 -->
<!ELEMENT ONETIMEPASS   - o %TEMPPASSTYPE>
<!ELEMENT SESSCOOKIE    - o %SESSCOOKIETYPE>

<!-- Signon Response version 2 adds country for non-US -->
<!-- OFX 1.5 -->
<!-- ADDED COUNTRY -->
<!-- CheckFree Extension: added USERID -->
<!ELEMENT SONRS		- - (STATUS , DTSERVER , (USERKEY|USERID)? ,
                         TSKEYEXPIRE? , LANGUAGE, COUNTRY? ,
                        DTPROFUP? , DTACCTUP? , FI?, SESSCOOKIE?)>
<!--#ELEMENT SONRS #Link(COUNTRY,SIGNONMSGSRSV2)-->
<!--#ELEMENT SONRS #Link(USERID,SIGNONMSGSRSV2)-->


<!-- PIN Change request and response -->

<!ELEMENT PINCHRQ   - - (USERID , NEWUSERPASS)>

<!ELEMENT PINCHRS   - - (USERID , DTCHANGED?)>

<!ELEMENT NEWUSERPASS	- o %PASSWORDTYPE>
<!ELEMENT DTCHANGED     - o %DTTMTYPE>

<!-- Challenge request and response -->

<!ELEMENT CHALLENGERQ   - - (USERID, FICERTID?)>

<!ELEMENT CHALLENGERS   - - (USERID , NONCE, FICERTID)>

<!ELEMENT NONCE 	- o %NONCETYPE>
<!ELEMENT FICERTID 	- o %FICERTIDTYPE>


<!-- ============================================================================= -->
<!--            Message Entries for Message Sets                                    -->
<!-- ============================================================================= -->

<!ELEMENT BANKMSGSET        - - (BANKMSGSETV1?, BANKMSGSETV2?)>
<!ELEMENT CREDITCARDMSGSET  - - (CREDITCARDMSGSETV1?, CREDITCARDMSGSETV2?)>
<!ELEMENT INTERXFERMSGSET   - - (INTERXFERMSGSETV1?, INTERXFERMSGSETV2?)>
<!ELEMENT WIREXFERMSGSET    - - (WIREXFERMSGSETV1?, WIREXFERMSGSETV2?)>


<!-- ============================================================================= -->
<!--            Message Set Profile Data                                           -->
<!-- ============================================================================= -->

<!-- Banking Message Set -->
<!ELEMENT BANKMSGSETV1 - -
                                  (MSGSETCORE , INVALIDACCTTYPE* , CLOSINGAVAIL , XFERPROF? ,
                                   STPCHKPROF? , EMAILPROF)>

<!ELEMENT BANKMSGSETV2 - -
                                  (MSGSETCORE , INVALIDACCTTYPE2* , CLOSINGAVAIL , XFERPROF? ,
                                   STPCHKPROF? , EMAILPROF)>

<!-- Credit Card Message Set -->
<!ELEMENT (CREDITCARDMSGSETV1, CREDITCARDMSGSETV2)  - - (MSGSETCORE , CLOSINGAVAIL)>

<!-- Interbank Transfer Message Set -->
<!ELEMENT INTERXFERMSGSETV1  - -
                                 (MSGSETCORE , XFERPROF, CANBILLPAY, CANCELWND , DOMXFERFEE ,
                                  INTLXFERFEE)>
<!-- OFX 1.5 -->
<!-- ADDED CANMULTI -->
<!ELEMENT INTERXFERMSGSETV2  - -
                                 (MSGSETCORE , XFERPROF, CANBILLPAY, CANCELWND , DOMXFERFEE ,
                                  INTLXFERFEE, CANMULTI)>

<!-- Wire Transfer Message Set -->
<!ELEMENT (WIREXFERMSGSETV1, WIREXFERMSGSETV2)  - -
                                 (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 %ACCOUNTENUM>

<!--    Unsupported account types -->
<!--    OFX 1.5 -->
<!--    Use INVALIDACCTTYPE2 -->
<!ELEMENT INVALIDACCTTYPE2 - o %ACCOUNTENUM2>

<!-- 	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	%DAYSPANTYPE>

<!-- Fee for sending a domestic transfer transfer -->
<!ELEMENT DOMXFERFEE	- o	%AMTTYPE>

<!-- Fee for sending an international transfer -->
<!ELEMENT INTLXFERFEE	- o	%AMTTYPE>

<!-- Can Provider do MULTIINTER -->
<!ELEMENT CANMULTI	- o	%BOOLTYPE>

<!-- If Y, TAN is required for funds xfer -->
<!ELEMENT NEEDTANTRANSFER - o %BOOLTYPE>


<!-- ============================================================================= -->
<!--             Message Sets                                                      -->
<!-- ============================================================================= -->


<!-- Banking Messages Request Sets and their contained TRN requests -->
<!ELEMENT (BANKMSGSRQV1, BANKMSGSRQV2) - -
                                  ((STMTTRNRQ   | STMTENDTRNRQ  | INTRATRNRQ | RECINTRATRNRQ |
                                   STPCHKTRNRQ  | BANKMAILTRNRQ | BANKMAILSYNCRQ |
                                   STPCHKSYNCRQ | INTRASYNCRQ   | RECINTRASYNCRQ)+) >
<!ELEMENT (CREDITCARDMSGSRQV1, CREDITCARDMSGSRQV2)  - -
                                  ((CCSTMTTRNRQ | CCSTMTENDTRNRQ)+)>
<!ELEMENT (WIREXFERMSGSRQV1, WIREXFERMSGSRQV2)  - -
                                  ((WIRETRNRQ   | WIRESYNCRQ)+)>
<!ELEMENT INTERXFERMSGSRQV1   - - ((INTERTRNRQ  | RECINTERTRNRQ | INTERSYNCRQ |
 RECINTERSYNCRQ)+)>
<!-- OFX 1.5 -->
<!-- ADDED MULTIINTERTRNRQ -->
<!ELEMENT INTERXFERMSGSRQV2   - - ((INTERTRNRQ  | RECINTERTRNRQ | INTERSYNCRQ |
 RECINTERSYNCRQ | MULTIINTERTRNRQ)+)>

<!-- 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))>
<!-- OFX 1.5 -->
<!-- New Aggregate -->
<!ELEMENT MULTIINTERTRNRQ - - (%TRNRQMACRO , INTERRQ+)>

<!-- Wire Transfer Message Set -->
<!ELEMENT WIRETRNRQ     - - (%TRNRQMACRO , (WIRERQ | WIRECANRQ))>

<!-- Banking Messages Response Sets and their contained TRN responses -->
<!ELEMENT (BANKMSGSRSV1, BANKMSGSRSV2)  - -
                                  ((STMTTRNRS   | STMTENDTRNRS  | INTRATRNRS |
 RECINTRATRNRS |
                                   STPCHKTRNRS  | BANKMAILTRNRS | BANKMAILSYNCRS |
                                   STPCHKSYNCRS | INTRASYNCRS   | RECINTRASYNCRS)+)>
<!ELEMENT (CREDITCARDMSGSRSV1, CREDITCARDMSGSRSV2)  - -
                                  ((CCSTMTTRNRS | CCSTMTENDTRNRS)+)>
<!ELEMENT (WIREXFERMSGSRSV1, WIREXFERMSGSRSV2)  - -
                                  ((WIRETRNRS   | WIRESYNCRS)+)>
<!ELEMENT INTERXFERMSGSRSV1   - - ((INTERTRNRS  | RECINTERTRNRS | INTERSYNCRS
 | RECINTERSYNCRS)+)>
<!-- OFX 1.5 -->
<!-- ADDED MULTIINTERTRNRS -->
<!ELEMENT INTERXFERMSGSRSV2   - - ((INTERTRNRS  | RECINTERTRNRS | INTERSYNCRS
 | RECINTERSYNCRS | MULTIINTERTRNRS)+)>

<!-- 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)?)>
<!ELEMENT MULTIINTERTRNRS - - (%TRNRSMACRO , INTERRS+)>

<!-- 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 -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT INTRAMODRQ - - ((SRVRTID|SRVRTID2), XFERINFO)>
<!--#ELEMENT INTRAMODRQ #Link(SRVRTID,BANKMSGSRQV1)-->
<!--#ELEMENT INTRAMODRQ #Link(SRVRTID2,BANKMSGSRQV2)-->


<!-- intrabank transfer cancellation request -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT INTRACANRQ - - (SRVRTID|SRVRTID2)>
<!--#ELEMENT INTRACANRQ #Link(SRVRTID,BANKMSGSRQV1)-->
<!--#ELEMENT INTRACANRQ #Link(SRVRTID2,BANKMSGSRQV2)-->


<!-- interbank transfer request -->
<!ELEMENT INTERRQ - - (XFERINFO)>


<!-- interbank transfer modification request -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT INTERMODRQ - - ((SRVRTID|SRVRTID2) , XFERINFO )>
<!--#ELEMENT INTERMODRQ #Link(SRVRTID,INTERXFERMSGSRQV1)-->
<!--#ELEMENT INTERMODRQ #Link(SRVRTID2,INTERXFERMSGSRQV2)-->


<!-- interbank transfer cancellation request -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT INTERCANRQ - - (SRVRTID|SRVRTID2)>
<!--#ELEMENT INTERCANRQ #Link(SRVRTID,INTERXFERMSGSRQV1)-->
<!--#ELEMENT INTERCANRQ #Link(SRVRTID2,INTERXFERMSGSRQV2)-->


<!-- wire transfer request -->
<!ELEMENT WIRERQ - - (BANKACCTFROM , WIREBENEFICIARY , WIREDESTBANK? ,
 TRNAMT , DTDUE? , PAYINSTRUCT?)>


<!-- wire transfer cancellation request -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT WIRECANRQ - - (SRVRTID|SRVRTID2)>
<!--#ELEMENT WIRECANRQ #Link(SRVRTID,WIREXFERMSGSRQV1)-->
<!--#ELEMENT WIRECANRQ #Link(SRVRTID2,WIREXFERMSGSRQV2)-->


<!-- recurring intra transfer request -->
<!ELEMENT RECINTRARQ - - (RECURRINST ,  (INTRARQ | XFERINFO) )>
<!--#ELEMENT RECINTRARQ #Link(INTRARQ,BANKMSGSRQV1)-->
<!--#ELEMENT RECINTRARQ #Link(XFERINFO,BANKMSGSRQV2)-->

<!-- recurring intra transfer modification request -->
<!ELEMENT RECINTRAMODRQ - - ((RECSRVRTID | RECSRVRTID2), RECURRINST ,
  (INTRARQ | XFERINFO), MODPENDING)>
<!--#ELEMENT RECINTRAMODRQ #Link(RECSRVRTID,BANKMSGSRQV1)-->
<!--#ELEMENT RECINTRAMODRQ #Link(RECSRVRTID2,BANKMSGSRQV2)-->
<!--#ELEMENT RECINTRAMODRQ #Link(INTRARQ,BANKMSGSRQV1)-->
<!--#ELEMENT RECINTRAMODRQ #Link(XFERINFO,BANKMSGSRQV2)-->

<!-- recurring intra transfer cancellation request -->
<!ELEMENT RECINTRACANRQ - - ((RECSRVRTID | RECSRVRTID2), CANPENDING)>
<!--#ELEMENT RECINTRACANRQ #Link(RECSRVRTID,BANKMSGSRQV1)-->
<!--#ELEMENT RECINTRACANRQ #Link(RECSRVRTID2,BANKMSGSRQV2)-->


<!-- recurring inter transfer request -->
<!ELEMENT RECINTERRQ - - (RECURRINST , (INTERRQ | XFERINFO) )>
<!--#ELEMENT RECINTERRQ #Link(INTERRQ,INTERXFERMSGSRQV1)-->
<!--#ELEMENT RECINTERRQ #Link(XFERINFO, INTERXFERMSGSRQV2)-->

<!-- recurring inter transfer modification request -->
<!ELEMENT RECINTERMODRQ - - ((RECSRVRTID | RECSRVRTID2), RECURRINST ,
 (INTERRQ | XFERINFO), MODPENDING)>
<!--#ELEMENT RECINTERMODRQ #Link(RECSRVRTID, INTERXFERMSGSRQV1)-->
<!--#ELEMENT RECINTERMODRQ #Link(RECSRVRTID2, INTERXFERMSGSRQV2)-->
<!--#ELEMENT RECINTERMODRQ #Link(INTERRQ,INTERXFERMSGSRQV1)-->
<!--#ELEMENT RECINTERMODRQ #Link(XFERINFO, INTERXFERMSGSRQV2)-->

<!-- recurring inter transfer cancellation request -->
<!ELEMENT RECINTERCANRQ - - ((RECSRVRTID | RECSRVRTID2), CANPENDING)>
<!--#ELEMENT RECINTERCANRQ #Link(RECSRVRTID, INTERXFERMSGSRQV1)-->
<!--#ELEMENT RECINTERCANRQ #Link(RECSRVRTID2, INTERXFERMSGSRQV2)-->




<!-- bank mail request -->
<!ELEMENT BANKMAILRQ - - ((BANKACCTFROM | CCACCTFROM) , MAIL)>



<!-- ============================================================================= -->
<!--            Synchronization                                                    -->
<!-- ============================================================================= -->

<!-- stop check synchronization request -->
<!ELEMENT STPCHKSYNCRQ - - (%SYNCRQMACRO , BANKACCTFROM, STPCHKTRNRQ*)>
<!--#ELEMENT STPCHKSYNCRQ #Link(TOKEN,BANKMSGSRQV1)-->
<!--#ELEMENT STPCHKSYNCRQ #Link(TOKEN2,BANKMSGSRQV2)-->


<!-- intrabank transfer sychronization request, v2 adds ccacctfrom -->
<!-- OFX 1.5 -->
<!-- FROM BANKACCTFROM to (BANKACCTFROM | CCACCTFROM) -->
<!ELEMENT INTRASYNCRQ - - (%SYNCRQMACRO , (BANKACCTFROM | CCACCTFROM), INTRATRNRQ*)>
<!--#ELEMENT INTRASYNCRQ #Link(CCACCTFROM,BANKMSGSRQV2)-->
<!--#ELEMENT INTRASYNCRQ #Link(TOKEN,BANKMSGSRQV1)-->
<!--#ELEMENT INTRASYNCRQ #Link(TOKEN2,BANKMSGSRQV2)-->


<!-- interbank transfer synchronization request, v2 adds ccacctfrom -->
<!-- OFX 1.5 -->
<!-- FROM BANKACCTFROM to (BANKACCTFROM | CCACCTFROM) -->
<!-- FROM INTERTRNRQ to (INTERTRNRQ | MULTIINTERTRNRQ) -->
<!ELEMENT INTERSYNCRQ - - (%SYNCRQMACRO , (BANKACCTFROM | CCACCTFROM),
 (INTERTRNRQ | MULTIINTERTRNRQ)*)>
<!--#ELEMENT INTERSYNCRQ #Link(CCACCTFROM,INTERXFERMSGSRQV2)-->
<!--#ELEMENT INTERSYNCRQ #Link(MULTIINTERTRNRQ,INTERXFERMSGSRQV2)-->
<!--#ELEMENT INTERSYNCRQ #Link(TOKEN,INTERXFERMSGSRQV1)-->
<!--#ELEMENT INTERSYNCRQ #Link(TOKEN2,INTERXFERMSGSRQV2)-->

<!-- wire transfer synchronization request -->
<!ELEMENT WIRESYNCRQ - - (%SYNCRQMACRO , BANKACCTFROM, WIRETRNRQ*)>
<!--#ELEMENT WIRESYNCRQ #Link(TOKEN,WIREXFERMSGSRQV1)-->
<!--#ELEMENT WIRESYNCRQ #Link(TOKEN2,WIREXFERMSGSRQV2)-->


<!--
  recurring intra transfer synchronization request,
  for transactions <RECINTRARQ>,<RECINTRAMODRQ>, and/or <RECINTRACANRQ>
  v2 adds ccacctfrom
-->
<!-- OFX 1.5 -->
<!-- FROM BANKACCTFROM to (BANKACCTFROM | CCACCTFROM) -->
<!ELEMENT RECINTRASYNCRQ - - (%SYNCRQMACRO, (BANKACCTFROM | CCACCTFROM),
 RECINTRATRNRQ*)>
<!--#ELEMENT RECINTRASYNCRQ #Link(CCACCTFROM,BANKMSGSRQV2)-->
<!--#ELEMENT RECINTRASYNCRQ #Link(TOKEN,BANKMSGSRQV1)-->
<!--#ELEMENT RECINTRASYNCRQ #Link(TOKEN2,BANKMSGSRQV2)-->

<!--
  recurring inter transfer synchronization request,
  for transactions <RECINTERRQ>,<RECINTERMODRQ>, and/or <RECINTERCANRQ>
  v2 adds ccacctfrom
-->
<!-- OFX 1.5 -->
<!-- FROM BANKACCTFROM to (BANKACCTFROM | CCACCTFROM) -->
<!ELEMENT RECINTERSYNCRQ - - (%SYNCRQMACRO, (BANKACCTFROM | CCACCTFROM),
 RECINTERTRNRQ*)>
<!--#ELEMENT RECINTERSYNCRQ #Link(CCACCTFROM,INTERXFERMSGSRQV2)-->
<!--#ELEMENT RECINTERSYNCRQ #Link(TOKEN,INTERXFERMSGSRQV1)-->
<!--#ELEMENT RECINTERSYNCRQ #Link(TOKEN2,INTERXFERMSGSRQV2)-->

<!-- bank mail synchronization request -->
<!ELEMENT BANKMAILSYNCRQ - - (%SYNCRQMACRO , INCIMAGES, USEHTML,
 (BANKACCTFROM | CCACCTFROM), BANKMAILTRNRQ*)>
<!--#ELEMENT BANKMAILSYNCRQ #Link(TOKEN,BANKMSGSRQV1)-->
<!--#ELEMENT BANKMAILSYNCRQ #Link(TOKEN2,BANKMSGSRQV2)-->

<!-- ============================================================================= -->
<!--            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 -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT INTRARS - - (CURDEF , (SRVRTID | SRVRTID2), XFERINFO , (DTXFERPRJ|DTPOSTED)? ,
 (RECSRVRTID | RECSRVRTID2)?, XFERPRCSTS?)>
<!--#ELEMENT INTRARS #Link(SRVRTID,BANKMSGSRSV1)-->
<!--#ELEMENT INTRARS #Link(SRVRTID2,BANKMSGSRSV2)-->
<!--#ELEMENT INTRARS #Link(RECSRVRTID,BANKMSGSRSV1)-->
<!--#ELEMENT INTRARS #Link(RECSRVRTID2,BANKMSGSRSV2)-->

<!-- intrabank transfer modification response -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT INTRAMODRS - - ((SRVRTID | SRVRTID2), XFERINFO , XFERPRCSTS?)>
<!--#ELEMENT INTRAMODRS #Link(SRVRTID,BANKMSGSRSV1)-->
<!--#ELEMENT INTRAMODRS #Link(SRVRTID2,BANKMSGSRSV2)-->

<!-- intrabank transfer transfer cancellation response -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT INTRACANRS - - (SRVRTID|SRVRTID2)>
<!--#ELEMENT INTRACANRS #Link(SRVRTID,BANKMSGSRSV1)-->
<!--#ELEMENT INTRACANRS #Link(SRVRTID2,BANKMSGSRSV2)-->


<!-- interbank transfer response -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT INTERRS - - (CURDEF , (SRVRTID | SRVRTID2), XFERINFO,
                      (DTXFERPRJ|DTPOSTED)? , REFNUM? ,
                      (RECSRVRTID | RECSRVRTID2)?, XFERPRCSTS?)>
<!--#ELEMENT INTERRS #Link(SRVRTID,INTERXFERMSGSRSV1)-->
<!--#ELEMENT INTERRS #Link(SRVRTID2,INTERXFERMSGSRSV2)-->
<!--#ELEMENT INTERRS #Link(RECSRVRTID,INTERXFERMSGSRSV1)-->
<!--#ELEMENT INTERRS #Link(RECSRVRTID2,INTERXFERMSGSRSV2)-->

<!-- interbank transfer modification response -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT INTERMODRS - - ((SRVRTID | SRVRTID2), XFERINFO, XFERPRCSTS?)>
<!--#ELEMENT INTERMODRS #Link(SRVRTID,INTERXFERMSGSRSV1)-->
<!--#ELEMENT INTERMODRS #Link(SRVRTID2,INTERXFERMSGSRSV2)-->


<!-- interbank transfer cancellation request -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT INTERCANRS - - (SRVRTID|SRVRTID2)>
<!--#ELEMENT INTERCANRS #Link(SRVRTID,INTERXFERMSGSRSV1)-->
<!--#ELEMENT INTERCANRS #Link(SRVRTID2,INTERXFERMSGSRSV2)-->


<!-- wire transfer response -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT WIRERS - - (CURDEF , (SRVRTID | SRVRTID2), BANKACCTFROM , WIREBENEFICIARY ,
                      WIREDESTBANK? , TRNAMT , DTDUE? , PAYINSTRUCT? ,
                     (DTXFERPRJ|DTPOSTED)? , FEE? , CONFMSG?)>
<!--#ELEMENT WIRERS #Link(SRVRTID,WIREXFERMSGSRSV1)-->
<!--#ELEMENT WIRERS #Link(SRVRTID2,WIREXFERMSGSRSV2)-->


<!-- wire transfer cancellation request -->
<!-- version 2 uses SRVRTID2, version 1 SRVRTID -->
<!-- OFX 1.5 -->
<!ELEMENT WIRECANRS	- - (SRVRTID|SRVRTID2)>
<!--#ELEMENT WIRECANRS #Link(SRVRTID,WIREXFERMSGSRSV1)-->
<!--#ELEMENT WIRECANRS #Link(SRVRTID2,WIREXFERMSGSRSV2)-->


<!-- recurring intra transfer response -->
<!ELEMENT RECINTRARS - - ((RECSRVRTID | RECSRVRTID2), RECURRINST ,
                          (INTRARS | XFERINFO) )>
<!--#ELEMENT RECINTRARS #Link(RECSRVRTID,BANKMSGSRSV1)-->
<!--#ELEMENT RECINTRARS #Link(RECSRVRTID2,BANKMSGSRSV2)-->
<!--#ELEMENT RECINTRARS #Link(INTRARS,BANKMSGSRSV1)-->
<!--#ELEMENT RECINTRARS #Link(XFERINFO,BANKMSGSRSV2)-->

<!-- recurring intra transfer modification request -->
<!ELEMENT RECINTRAMODRS - - ((RECSRVRTID | RECSRVRTID2), RECURRINST ,
                             (INTRARS | XFERINFO) , MODPENDING)>
<!--#ELEMENT RECINTRAMODRS #Link(RECSRVRTID,BANKMSGSRSV1)-->
<!--#ELEMENT RECINTRAMODRS #Link(RECSRVRTID2,BANKMSGSRSV2)-->
<!--#ELEMENT RECINTRAMODRS #Link(INTRARS,BANKMSGSRSV1)-->
<!--#ELEMENT RECINTRAMODRS #Link(XFERINFO,BANKMSGSRSV2)-->

<!-- recurring intra transfer cancellation response -->
<!ELEMENT RECINTRACANRS	- - ((RECSRVRTID | RECSRVRTID2), CANPENDING)>
<!--#ELEMENT RECINTRACANRS #Link(RECSRVRTID,BANKMSGSRSV1)-->
<!--#ELEMENT RECINTRACANRS #Link(RECSRVRTID2,BANKMSGSRSV2)-->


<!-- recurring inter transfer response -->
<!ELEMENT RECINTERRS - - ((RECSRVRTID | RECSRVRTID2), RECURRINST ,
                          (INTERRS | XFERINFO) )>
<!--#ELEMENT RECINTERRS #Link(RECSRVRTID,INTERXFERMSGSRSV1)-->
<!--#ELEMENT RECINTERRS #Link(RECSRVRTID2,INTERXFERMSGSRSV2)-->
<!--#ELEMENT RECINTERRS #Link(INTERRS,INTERXFERMSGSRSV1)-->
<!--#ELEMENT RECINTERRS #Link(XFERINFO,INTERXFERMSGSRSV2)-->

<!-- recurring inter transfer modification request -->
<!ELEMENT RECINTERMODRS	- - ((RECSRVRTID | RECSRVRTID2), RECURRINST ,
                             (INTERRS | XFERINFO) , MODPENDING)>
<!--#ELEMENT RECINTERMODRS #Link(RECSRVRTID,INTERXFERMSGSRSV1)-->
<!--#ELEMENT RECINTERMODRS #Link(RECSRVRTID2,INTERXFERMSGSRSV2)-->
<!--#ELEMENT RECINTERMODRS #Link(INTERRS,INTERXFERMSGSRSV1)-->
<!--#ELEMENT RECINTERMODRS #Link(XFERINFO,INTERXFERMSGSRSV2)-->

<!-- recurring inter transfer cancellation response -->
<!ELEMENT RECINTERCANRS	- - ((RECSRVRTID | RECSRVRTID2), CANPENDING)>
<!--#ELEMENT RECINTERCANRS #Link(RECSRVRTID,INTERXFERMSGSRSV1)-->
<!--#ELEMENT RECINTERCANRS #Link(RECSRVRTID2,INTERXFERMSGSRSV2)-->


<!-- 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*)>
<!--#ELEMENT STPCHKSYNCRS #Link(TOKEN,BANKMSGSRSV1)-->
<!--#ELEMENT STPCHKSYNCRS #Link(TOKEN2,BANKMSGSRSV2)-->
<!--#ELEMENT STPCHKSYNCRS #Link(SYNCERROR,BANKMSGSRSV2)-->

<!-- intrabank transfer synchronization request, v2 adds ccacctfrom -->
<!-- OFX 1.5 -->
<!-- FROM BANKACCTFROM to (BANKACCTFROM | CCACCTFROM) -->
<!ELEMENT INTRASYNCRS - - (%SYNCRSMACRO , (BANKACCTFROM | CCACCTFROM), INTRATRNRS*)>
<!--#ELEMENT INTRASYNCRS #Link(CCACCTFROM,BANKMSGSRSV2)-->
<!--#ELEMENT INTRASYNCRS #Link(TOKEN,BANKMSGSRSV1)-->
<!--#ELEMENT INTRASYNCRS #Link(TOKEN2,BANKMSGSRSV2)-->
<!--#ELEMENT INTRASYNCRS #Link(SYNCERROR,BANKMSGSRSV2)-->

<!-- interbank transfer synchronization request, v2 adds ccacctfrom -->
<!-- OFX 1.5 -->
<!-- FROM BANKACCTFROM to (BANKACCTFROM | CCACCTFROM) -->
<!-- FROM INTERTRNRS to (INTERTRNRS | MULTIINTERTRNRS) -->
<!ELEMENT INTERSYNCRS - - (%SYNCRSMACRO , (BANKACCTFROM | CCACCTFROM),
                          (INTERTRNRS | MULTIINTERTRNRS)*)>
<!--#ELEMENT INTERSYNCRS #Link(CCACCTFROM,INTERXFERMSGSRSV2)-->
<!--#ELEMENT INTERSYNCRS #Link(TOKEN,INTERXFERMSGSRSV1)-->
<!--#ELEMENT INTERSYNCRS #Link(TOKEN2,INTERXFERMSGSRSV2)-->
<!--#ELEMENT INTERSYNCRS #Link(SYNCERROR,INTERXFERMSGSRSV2)-->

<!-- wire transfer synchronization request -->
<!-- OFX 1.5 -->
<!-- FROM BANKACCTFROM to (BANKACCTFROM | CCACCTFROM) -->
<!ELEMENT WIRESYNCRS - - (%SYNCRSMACRO , (BANKACCTFROM | CCACCTFROM), WIRETRNRS*)>
<!--#ELEMENT WIRESYNCRS #Link(CCACCTFROM,WIREXFERMSGSRSV2)-->
<!--#ELEMENT WIRESYNCRS #Link(TOKEN,WIREXFERMSGSRSV1)-->
<!--#ELEMENT WIRESYNCRS #Link(TOKEN2,WIREXFERMSGSRSV2)-->
<!--#ELEMENT WIRESYNCRS #Link(SYNCERROR,WIREXFERMSGSRSV2)-->

<!--
  recurring intra transfer synchronization request,
  for transactions <RECINTRARS>,<RECINTRARS>, and/or <RECINTRACANRS>
  v2 adds ccacctfrom
-->
<!-- OFX 1.5 -->
<!-- FROM BANKACCTFROM to (BANKACCTFROM | CCACCTFROM) -->
<!ELEMENT RECINTRASYNCRS	- - (%SYNCRSMACRO , (BANKACCTFROM | CCACCTFROM), RECINTRATRNRS*)>
<!--#ELEMENT RECINTRASYNCRS #Link(CCACCTFROM,BANKMSGSRSV2)-->
<!--#ELEMENT RECINTRASYNCRS #Link(TOKEN,BANKMSGSRSV1)-->
<!--#ELEMENT RECINTRASYNCRS #Link(TOKEN2,BANKMSGSRSV2)-->
<!--#ELEMENT RECINTRASYNCRS #Link(SYNCERROR,BANKMSGSRSV2)-->

<!--
  recurring inter transfer synchronization request,
  for transactions <RECINTERRS>,<RECINTERRS>, and/or <RECINTERCANRS>
  v2 adds ccacctfrom
-->
<!-- OFX 1.5 -->
<!-- FROM BANKACCTFROM to (BANKACCTFROM | CCACCTFROM) -->
<!ELEMENT RECINTERSYNCRS	- - (%SYNCRSMACRO , (BANKACCTFROM | CCACCTFROM),
                                     RECINTERTRNRS*)>
<!--#ELEMENT RECINTERSYNCRS #Link(CCACCTFROM,INTERXFERMSGSRSV2)-->
<!--#ELEMENT RECINTERSYNCRS #Link(TOKEN,INTERXFERMSGSRSV1)-->
<!--#ELEMENT RECINTERSYNCRS #Link(TOKEN2,INTERXFERMSGSRSV2)-->
<!--#ELEMENT RECINTERSYNCRS #Link(SYNCERROR,INTERXFERMSGSRSV2)-->

<!-- BANK MAIL synchronization request -->
<!ELEMENT BANKMAILSYNCRS - - (%SYNCRSMACRO , (BANKACCTFROM | CCACCTFROM),
                              BANKMAILTRNRS*)>
<!--#ELEMENT BANKMAILSYNCRS #Link(TOKEN,BANKMSGSRSV1)-->
<!--#ELEMENT BANKMAILSYNCRS #Link(TOKEN2,BANKMSGSRSV2)-->
<!--#ELEMENT BANKMAILSYNCRS #Link(SYNCERROR,BANKMSGSRSV2)-->

<!-- ============================================================================= -->
<!--            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.5 -->
<!-- CHANGE PAYEE to (PAYEE | PAYEE2) -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!-- CHANGE MEMO to (MEMO | MEMO2) -->
<!-- CHANGE PAYEEID to (PAYEEID | PAYEEID2) -->
<!ELEMENT STMTTRN	- - (TRNTYPE , DTPOSTED , DTUSER? , DTAVAIL? , TRNAMT , FITID ,
						 (CORRECTFITID , CORRECTACTION)? ,
						 (SRVRTID | SRVRTID2)?, CHECKNUM? , REFNUM? ,
						 SIC? , (PAYEEID | PAYEEID2)? ,
                                                 (NAME | (PAYEE | PAYEE2))?,
                                                 (BANKACCTTO | CCACCTTO)?,
						 (MEMO | MEMO2)? , (CURRENCY | ORIGCURRENCY)?)>
<!--#ELEMENT STMTTRN #Link(SRVRTID,(BANKMSGSRQV1|BANKMSGSRSV1))-->
<!--#ELEMENT STMTTRN #Link(SRVRTID2,(BANKMSGSRQV2|BANKMSGSRSV2))-->
<!--#ELEMENT STMTTRN #Link(PAYEE,(BANKMSGSRQV1|BANKMSGSRSV1))-->
<!--#ELEMENT STMTTRN #Link(PAYEE2,(BANKMSGSRQV2|BANKMSGSRSV2))-->
<!--#ELEMENT STMTTRN #Link(MEMO,(BANKMSGSRQV1|BANKMSGSRSV1))-->
<!--#ELEMENT STMTTRN #Link(MEMO2,(BANKMSGSRQV2|BANKMSGSRSV2))-->
<!--#ELEMENT STMTTRN #Link(PAYEEID,(BANKMSGSRQV1|BANKMSGSRSV1))-->
<!--#ELEMENT STMTTRN #Link(PAYEEID2,(BANKMSGSRQV2|BANKMSGSRSV2))-->

<!-- Status of request -->
<!ELEMENT TRNTYPE	- o %TRANSACTIONENUM>


<!-- Date transaction was posted to account -->
<!ELEMENT DTPOSTED	- o	%DTTMTYPE>


<!-- Date user initiated transaction, if known -->
<!ELEMENT DTUSER	- o %DTTMTYPE>

<!-- Standard Industrial Code -->
<!ELEMENT SIC	- o	%SICTYPE>


<!-- Check range aggregate. -->
<!ELEMENT CHKRANGE	- -	(CHKNUMSTART , CHKNUMEND?)>


<!-- Check description aggregate. -->
<!ELEMENT CHKDESC	- - (NAME , CHECKNUM? , DTUSER? , TRNAMT?)>


<!-- Start check number -->
<!ELEMENT CHKNUMSTART	- o %CHECKNUMTYPE>


<!-- Ending check number to cancel -->
<!ELEMENT CHKNUMEND	- o %CHECKNUMTYPE>

<!-- Reference number -->
<!ELEMENT REFNUM	- o	%REFNUMTYPE>

<!-- stopped check item -->
<!ELEMENT STPCHKNUM	- -	(CHECKNUM , NAME? , DTUSER? , TRNAMT? ,
                         CHKSTATUS , CHKERROR? , (CURRENCY | ORIGCURRENCY)?)>

<!-- Status code for individual stop check request -->
<!ELEMENT CHKSTATUS	- o	%CHECKSTATUSENUM>

<!-- Further textual error explanation -->
<!ELEMENT CHKERROR	- o %MSGTYPE>

<!-- Transfer information aggregate -->
<!-- OFX 1.5 -->
<!-- ADDED DTAVAIL -->
<!ELEMENT XFERINFO	- -	((BANKACCTFROM | CCACCTFROM) , (BANKACCTTO | CCACCTTO) ,
                                  TRNAMT , DTDUE?, DTAVAIL?, MEMO2?)>
<!--#ELEMENT XFERINFO #Link(DTAVAIL,(BANKMSGSRQV2|BANKMSGSRSV2|CREDITCARDMSGSRQV2|CREDITCARDMSGSRSV2))-->
<!--#ELEMENT XFERINFO #Link(MEMO2,(BANKMSGSRQV2|BANKMSGSRSV2|CREDITCARDMSGSRQV2|CREDITCARDMSGSRSV2))-->

<!-- Transfer processing status -->
<!ELEMENT XFERPRCSTS	- -	(XFERPRCCODE , DTXFERPRC)>

<!--  Transfers processing date; enum for processing date interpretation -->
<!ELEMENT XFERPRCCODE	- o %XFERSTATUSENUM>

<!-- 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 -->
<!-- OFX 1.5 -->
<!-- CHANGE MEMO to (MEMO | MEMO2) -->
<!ELEMENT WIREBENEFICIARY - - (NAME , BANKACCTTO , (MEMO | MEMO2)?)>
<!--#ELEMENT WIREBENEFICIARY #Link(MEMO,(WIREXFERMSGSRQV1|WIREXFERMSGSRSV1))-->
<!--#ELEMENT WIREBENEFICIARY #Link(MEMO2,(WIREXFERMSGSRQV2|WIREXFERMSGSRSV2))-->

<!-- 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	%MSGTYPE>

<!-- Fee assessed for the transfer -->
<!ELEMENT FEE	- o	%AMTTYPE>

<!-- Description of fee -->
<!ELEMENT FEEMSG    - o %SHORTMSGTYPE>

<!-- Transfer confirmation message -->
<!ELEMENT CONFMSG	- o	%MSGTYPE>


<!-- Message Set Wrappers and Profile -->
<!-- CheckFree Extension: added CKFR.PMTLSTINQTRNRQ, CKFR.PMTLSTINQTRNRS,
					  CKFR.PAYEELSTTRNRQ, CKFR.PAYEELSTTRNRS,
					  CKFR.CATEGORYTRNRQ, CKFR.CATEGORYTRNRS,
                                CKFR.CATEGORYLSTTRNRQ, CKFR.CATEGORYLSTTRNRS, CKFR.MERCHANTINQTRNRx
- version 2 only so had to break up multi-element syntax -->

<!ELEMENT BILLPAYMSGSRQV1			        - -     ((PAYEETRNRQ | PAYEESYNCRQ)*,
                                                             ( PMTTRNRQ | RECPMTTRNRQ | PMTINQTRNRQ | PMTMAILTRNRQ |
                                                                   PMTSYNCRQ | RECPMTSYNCRQ | PMTMAILSYNCRQ)*)>
<!ELEMENT BILLPAYMSGSRQV2			        - -     ((PAYEETRNRQ | PAYEESYNCRQ)*,
                                                             ( PMTTRNRQ | RECPMTTRNRQ | PMTINQTRNRQ | PMTMAILTRNRQ |
                                                               PMTSYNCRQ | RECPMTSYNCRQ | PMTMAILSYNCRQ | CKFR.PMTLSTINQTRNRQ |
										   CKFR.PAYEELSTTRNRQ | CKFR.CATEGORYTRNRQ | CKFR.CATEGORYLSTTRNRQ |
										   CKFR.MERCHANTINQTRNRQ | CKFR.P2PPAYEETRNRQ | CKFR.P2PPMTTRNRQ |
										CKFR.P2PINVITETRNRQ | CKFR.P2PSBSRRISKINQTRNRQ | CKFR.P2PPAYEELSTTRNRQ | 
										CKFR.P2PPMTLSTTRNRQ | CKFR.AGENTPMTTRNRQ | CKFR.XFERFEEINQTRNRQ)*)>



<!ELEMENT BILLPAYMSGSRSV1			        - -     ((PAYEETRNRS | PAYEESYNCRS)*,
                                                                 ( PMTTRNRS | RECPMTTRNRS | PMTINQTRNRS | PMTMAILTRNRS |
                                                                   PMTSYNCRS | RECPMTSYNCRS | PMTMAILSYNCRS)*)>
<!ELEMENT BILLPAYMSGSRSV2			        - -     ((PAYEETRNRS | PAYEESYNCRS)*,
                                                                 ( PMTTRNRS | RECPMTTRNRS | PMTINQTRNRS | PMTMAILTRNRS |
                                                                  PMTSYNCRS | RECPMTSYNCRS | PMTMAILSYNCRS | CKFR.PMTLSTINQTRNRS |
											CKFR.PAYEELSTTRNRS | CKFR.CATEGORYTRNRS | CKFR.CATEGORYLSTTRNRS |
											CKFR.MERCHANTINQTRNRS | CKFR.P2PPAYEETRNRS | CKFR.P2PPMTTRNRS |
										CKFR.P2PINVITETRNRS | CKFR.P2PSBSRRISKINQTRNRS | CKFR.P2PPAYEELSTTRNRS | 
										CKFR.P2PPMTLSTTRNRS | CKFR.AGENTPMTTRNRS | CKFR.XFERFEEINQTRNRS)*)>



<!ELEMENT BILLPAYMSGSET         - -     (BILLPAYMSGSETV1?, BILLPAYMSGSETV2?)>

<!ELEMENT BILLPAYMSGSETV1       - -     (MSGSETCORE,
                                        DAYSWITH, DFLTDAYSTOPAY,
                                        XFERDAYSWITH, XFERDFLTDAYSTOPAY,
                                        PROCDAYSOFF*, PROCENDTM,
                                        MODELWND, POSTPROCWND, STSVIAMODS,
                                        PMTBYADDR, PMTBYXFER, PMTBYPAYEEID,
                                        CANADDPAYEE, HASEXTDPMT,
                                        CANMODPMTS, CANMODMDLS, DIFFFIRSTPMT,
                                        DIFFLASTPMT)>

<!ELEMENT BILLPAYMSGSETV2       - -     (MSGSETCORE,
                                        DAYSWITH, DFLTDAYSTOPAY,
                                        XFERDAYSWITH, XFERDFLTDAYSTOPAY,
                                        PROCDAYSOFF*, PROCENDTM,
                                        MODELWND, POSTPROCWND, STSVIAMODS,
                                        PMTBYADDR, PMTBYXFER, PMTBYPAYEEID,
                                        CANADDPAYEE, HASEXTDPMT,
                                        CANMODPMTS, CANMODMDLS, DIFFFIRSTPMT,
                                        DIFFLASTPMT, NEEDTANPMT, NEEDTANPAYEE, SUPPORTDTAVAIL)>

<!ELEMENT DAYSWITH      - o     %DAYSPANTYPE>       <!--  number of days before the processing date that funds are withdrawn -->
<!ELEMENT DFLTDAYSTOPAY - o     %DAYSPANTYPE> 		  <!--  the default number of days to pay -->
<!ELEMENT XFERDAYSWITH  - o     %DAYSPANTYPE>       <!--  number of days before the processing date that funds are withdrawn for xfers-->
<!ELEMENT XFERDFLTDAYSTOPAY - o %DAYSPANTYPE>   <!--  the default number of days to pay for transfers-->
<!ELEMENT POSTPROCWND   - o     %DAYSPANTYPE>       <!--  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 -->
<!ELEMENT NEEDTANPMT    - o     %BOOLTYPE>      <!-- need TAN for payment requests (should be N in US) -->
<!ELEMENT NEEDTANPAYEE  - o     %BOOLTYPE>      <!-- need TAN for payee requests (should be N in US) -->


<!-- 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?)>

<!-- CheckFree Extension: added CKFR.PMTLSTINQTRNRQ, CKFR.PMTLSTINQTRNRS,
                                CKFR.PAYEELSTRQ, CKFR.PAYEELSTRS, CKFR.CATEGORYTRNRQ, CKFR.CATEGORYTRNRS,
					  CKFR.CATEGORYLSTTRNRQ, CKFR.CATEGORYLSTTRNRS,
					  CKFR.PMTNOTIFYRQ, CKFR.PMTNOTIFYRS -->

<!ELEMENT CKFR.PMTLSTINQTRNRQ - - (%TRNRQMACRO, CKFR.RECCTRLIN?, CKFR.PMTLSTINQRQ)>
<!ELEMENT CKFR.PMTLSTINQTRNRS - - (%TRNRSMACRO, CKFR.RECCTRLOUT?, CKFR.PMTLSTINQRS?)>

<!ELEMENT CKFR.PAYEELSTTRNRQ - -  (%TRNRQMACRO, CKFR.RECCTRLIN?, CKFR.PAYEELSTRQ)>
<!ELEMENT CKFR.PAYEELSTTRNRS - -  (%TRNRSMACRO, CKFR.RECCTRLOUT?, CKFR.PAYEELSTRS?)>

<!ELEMENT CKFR.CATEGORYTRNRQ - -  (%TRNRQMACRO, (CKFR.CATEGORYRQ|CKFR.CATEGORYMODRQ|CKFR.CATEGORYDELRQ))>
<!ELEMENT CKFR.CATEGORYTRNRS - -  (%TRNRSMACRO, (CKFR.CATEGORYRS|CKFR.CATEGORYMODRS|CKFR.CATEGORYDELRS)?)>
<!ELEMENT CKFR.CATEGORYLSTTRNRQ - -  (%TRNRQMACRO, CKFR.CATEGORYLSTRQ)>
<!ELEMENT CKFR.CATEGORYLSTTRNRS - -  (%TRNRSMACRO, CKFR.CATEGORYLSTRS?)>

<!ELEMENT CKFR.MERCHANTINQTRNRQ - - (%TRNRQMACRO, CKFR.MERCHANTINQRQ)>
<!ELEMENT CKFR.MERCHANTINQTRNRS - - (%TRNRSMACRO, CKFR.MERCHANTINQRS?)>

<!-- future
<!ELEMENT CKFR.PMTNOTIFYTRNRQ - -  (%TRNRQMACRO, CKFR.PMTNOTIFYRQ)>
<!ELEMENT CKFR.PMTNOTIFYTRNRS - -  (%TRNRSMACRO, CKFR.PMTNOTIFYRS?)>
-->
<!-- ============================================================================= -->
<!-- Requests                                                                      -->
<!-- ============================================================================= -->

<!--  payment request -->
<!-- OFX 1.5 -->
<!-- CHANGE PMTINFO to (PMTINFO | PMTINFO2) -->
<!ELEMENT PMTRQ - -     (PMTINFO | PMTINFO2)>
<!--#ELEMENT PMTRQ #Link(PMTINFO,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PMTRQ #Link(PMTINFO2,BILLPAYMSGSRQV2)-->

<!--  modification request -->
<!-- OFX 1.5 -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!-- CHANGE PMTINFO to (PMTINFO | PMTINFO2) -->
<!ELEMENT PMTMODRQ      - -     ((SRVRTID | SRVRTID2), (PMTINFO | PMTINFO2))>
<!--#ELEMENT PMTMODRQ #Link(SRVRTID,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PMTMODRQ #Link(SRVRTID2,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PMTMODRQ #Link(PMTINFO,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PMTMODRQ #Link(PMTINFO2,BILLPAYMSGSRQV2)-->


<!--  cancellation request -->
<!-- OFX 1.5 -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!ELEMENT PMTCANCRQ     - - ((SRVRTID | SRVRTID2))>
<!--#ELEMENT PMTCANCRQ #Link(SRVRTID,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PMTCANCRQ #Link(SRVRTID2,BILLPAYMSGSRQV2)-->


<!--  recurring payment request -->
<!-- OFX 1.5 -->
<!-- CHANGE PMTINFO to (PMTINFO | PMTINFO2) -->
<!ELEMENT RECPMTRQ      - -     (RECURRINST, (PMTINFO | PMTINFO2), INITIALAMT?, FINALAMT?)>
<!--#ELEMENT RECPMTRQ #Link(PMTINFO,BILLPAYMSGSRQV1)-->
<!--#ELEMENT RECPMTRQ #Link(PMTINFO2,BILLPAYMSGSRQV2)-->


<!-- modification request -->
<!-- OFX 1.5 -->
<!-- CHANGE RECSRVRTID to (RECSRVRTID | RECSRVRTID2) -->
<!-- CHANGE PMTINFO to (PMTINFO | PMTINFO2) -->
<!-- CheckFree Extension: added CKFR.NPMTSTOSKIP -->

<!ELEMENT RECPMTMODRQ   - -     ((RECSRVRTID | RECSRVRTID2), RECURRINST, (PMTINFO | PMTINFO2),
					  INITIALAMT?, FINALAMT?, MODPENDING, CKFR.NPMTSTOSKIP?)>
<!ELEMENT CKFR.NPMTSTOSKIP - o %INTTYPE>

<!--#ELEMENT RECPMTMODRQ #Link(RECSRVRTID,BILLPAYMSGSRQV1)-->
<!--#ELEMENT RECPMTMODRQ #Link(RECSRVRTID2,BILLPAYMSGSRQV2)-->
<!--#ELEMENT RECPMTMODRQ #Link(PMTINFO,BILLPAYMSGSRQV1)-->
<!--#ELEMENT RECPMTMODRQ #Link(PMTINFO2,BILLPAYMSGSRQV2)-->
<!--#ELEMENT RECPMTMODRQ #Link(CKFR.NPMTSTOSKIP,BILLPAYMSGSRQV2)-->


<!--  cancellation request -->
<!-- OFX 1.5 -->
<!-- CHANGE RECSRVRTID to (RECSRVRTID | RECSRVRTID2) -->
<!ELEMENT RECPMTCANCRQ  - -     ((RECSRVRTID | RECSRVRTID2), CANPENDING)>
<!--#ELEMENT RECPMTCANCRQ #Link(RECSRVRTID,BILLPAYMSGSRQV1)-->
<!--#ELEMENT RECPMTCANCRQ #Link(RECSRVRTID2,BILLPAYMSGSRQV2)-->

<!-- payment status inquiry request -->
<!-- OFX 1.5 -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!ELEMENT PMTINQRQ      - -     ((SRVRTID | SRVRTID2))>
<!--#ELEMENT PMTINQRQ #Link(SRVRTID,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PMTINQRQ #Link(SRVRTID2,BILLPAYMSGSRQV2)-->


<!-- payee request : add a payee to the payee list -->
<!-- OFX 1.5 -->
<!-- CHANGE PAYEE to (PAYEE | PAYEE2) -->
<!-- CHANGE PAYEE to (PAYEEID | PAYEEID2) -->
<!-- CheckFree Extension: added CKFR.CATEGORY, CKFR.MERCHANTID,CKFR.REMITZIPPLUSFOUR-->

<!ELEMENT PAYEERQ       - -     ((PAYEEID | PAYEEID2 | (CKFR.MERCHANTID,CKFR.REMITZIPPLUSFOUR?,PAYEE2?) |
						((PAYEE | PAYEE2),BANKACCTTO?)), PAYACCT*, CKFR.CATEGORY?)>

<!--#ELEMENT PAYEERQ #Link(PAYEE,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PAYEERQ #Link(PAYEE2,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PAYEERQ #Link(PAYEEID,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PAYEERQ #Link(PAYEEID2,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PAYEERQ #Link(CKFR.CATEGORY,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PAYEERQ #Link(CKFR.MERCHANTID,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PAYEERQ #Link(CKFR.REMITZIPPLUSFOUR,BILLPAYMSGSRQV2)-->

<!-- payee modification request -->
<!-- OFX 1.5 -->
<!-- CHANGE PAYEE to (PAYEE | PAYEE2) -->
<!-- CHANGE PAYEELSTID to (PAYEELSTID | PAYEELSTID2) -->
<!-- CheckFree Extension: added MODPENDING -->
<!ELEMENT PAYEEMODRQ    - - ((PAYEELSTID | PAYEELSTID2), MODPENDING?,
                            ((PAYEE | PAYEE2), BANKACCTTO?)?,
                              PAYACCT*, CKFR.CATEGORY?,CKFR.PRESSVCSTATUS?)>
<!--#ELEMENT PAYEEMODRQ #Link(PAYEELSTID,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PAYEEMODRQ #Link(PAYEELSTID2,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PAYEEMODRQ #Link(PAYEE,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PAYEEMODRQ #Link(PAYEE2,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PAYEEMODRQ #Link(CKFR.CATEGORY,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PAYEEMODRQ #Link(MODPENDING,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PAYEEMODRQ #Link(CKFR.PRESSVCSTATUS,BILLPAYMSGSRQV2)-->


<!-- payee deletion request -->
<!-- OFX 1.5 -->
<!-- CHANGE PAYEELSTID to (PAYEELSTID | PAYEELSTID2) -->
<!-- CheckFree Extension: added CKFR.DELPENDINGFLAG -->
<!ELEMENT PAYEEDELRQ    - - ((PAYEELSTID | PAYEELSTID2),CKFR.DELPENDINGFLAG?)>
<!--#ELEMENT PAYEEDELRQ #Link(PAYEELSTID,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PAYEEDELRQ #Link(PAYEELSTID2,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PAYEEDELRQ #Link(CKFR.DELPENDINGFLAG,BILLPAYMSGSRQV2)-->

<!-- CheckFree Extension: added CKFR.PMTLSTINQRQ, CKFR.PAYEELSTRQ -->
<!ELEMENT CKFR.PMTLSTINQRQ - - (SRVRTID2 | (BILLID?, (PMTPRCCODE | CKFR.PMTHISTIND)?,
				PAYEELSTID2?, NAME?, CKFR.NICKNAME?, PAYACCT?, ACCTID?,
				CKFR.PMTAMTLOW?, CKFR.PMTAMTHIGH?, DTSTART?, DTEND?))>
<!ELEMENT CKFR.PAYEELSTRQ - - ( (PAYEEID2 | PAYEELSTID2 | CKFR.NICKNAME | NAME )? )>

<!-- CheckFree Extension: added CKFR.CATEGORYRQ,CKFR.CATEGORYMODRQ,CKFR.CATEGORYDELRQ,CKFR.CATEGORYLSTRQ
-->
<!ELEMENT CKFR.CATEGORYRQ - - (CKFR.CATEGORY)>
<!ELEMENT CKFR.CATEGORYMODRQ - - (CKFR.CATEGORYID,CKFR.CATEGORY,MODPENDING)>
<!ELEMENT CKFR.CATEGORYDELRQ - - (CKFR.CATEGORYID,MODPENDING)>
<!ELEMENT CKFR.CATEGORYLSTRQ - - %EMPTYTYPE>

<!ELEMENT CKFR.MERCHANTINQRQ - - (CKFR.MERCHANTLISTTYPE,CKFR.BILLERSONLY)>

<!-- future extension
<!ELEMENT (CKFR.PMTNOTIFYRQ|CKFR.PMTNOTIFYRS) - - (CKFR.PMTPOSTEDID?)>
-->

<!ELEMENT CKFR.PMTHISTIND	- o %CKFR_PMTHISTENUM>
<!ELEMENT CKFR.NICKNAME 	- o %CKFR_NICKNAMETYPE>
<!ELEMENT CKFR.PMTAMTLOW	- o %AMTTYPE>
<!ELEMENT CKFR.PMTAMTHIGH	- o %AMTTYPE>
<!ELEMENT CKFR.CATEGORY		- o %CKFR_CATTYPE>
<!ELEMENT CKFR.DELPENDINGFLAG - o %BOOLTYPE>
<!ELEMENT CKFR.REMITZIPPLUSFOUR - o %ZIPTYPE>
<!ELEMENT CKFR.CATEGORYID 	- o %IDTYPE>
<!ELEMENT CKFR.BILLERSONLY    - o %BOOLTYPE>
<!ELEMENT CKFR.MERCHANTLISTTYPE - o %IDTYPE>
<!-- ============================================================================= -->
<!-- Responses                                                                     -->
<!-- ============================================================================= -->

<!--  payment response -->
<!-- OFX 1.5 -->
<!-- CHANGE PAYEELSTID to (PAYEELSTID | PAYEELSTID2) -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!-- CHANGE PMTINFO to (PMTINFO | PMTINFO2) -->
<!-- CheckFree extension - (PAYEELSTID | PAYEELSTID2) made optional for ebill -->
<!ELEMENT PMTRS         - - ((SRVRTID | SRVRTID2), (PAYEELSTID | PAYEELSTID2)?,
                              CURDEF, (PMTINFO | PMTINFO2), EXTDPAYEE?,
                              CHECKNUM?, PMTPRCSTS, (RECSRVRTID | RECSRVRTID2)?)>
<!--#ELEMENT PMTRS #Link(SRVRTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTRS #Link(SRVRTID2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PMTRS #Link(PMTINFO,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTRS #Link(PMTINFO2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PMTRS #Link(PAYEELSTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTRS #Link(PAYEELSTID2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PMTRS #Link(RECSRVRTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTRS #Link(RECSRVRTID2,BILLPAYMSGSRSV2)-->


<!-- payment modification response -->
<!-- OFX 1.5 -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!-- CHANGE PMTINFO to (PMTINFO | PMTINFO2) -->
<!ELEMENT PMTMODRS      - -     ((SRVRTID | SRVRTID2),
                                 (PMTINFO | PMTINFO2), PMTPRCSTS?)>
<!--#ELEMENT PMTMODRS #Link(SRVRTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTMODRS #Link(SRVRTID2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PMTMODRS #Link(PMTINFO,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTMODRS #Link(PMTINFO2,BILLPAYMSGSRSV2)-->


<!-- payment cancellation response -->
<!-- OFX 1.5 -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!ELEMENT PMTCANCRS     - -     (SRVRTID | SRVRTID2)>
<!--#ELEMENT PMTCANCRS #Link(SRVRTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTCANCRS #Link(SRVRTID2,BILLPAYMSGSRSV2)-->


<!--  recurring payment response -->
<!-- OFX 1.5 -->
<!-- CHANGE RECSRVRTID to (RECSRVRTID | RECSRVRTID2) -->
<!-- CHANGE PAYEELSTID to (PAYEELSTID | PAYEELSTID2) -->
<!-- CHANGE PMTINFO to (PMTINFO | PMTINFO2) -->

<!-- CheckFree Extension: added CKFR.DTADJFIRSTPMT, CKFR.NADJPMTS, CKFR.DTADJLASTPMT -->
<!ELEMENT RECPMTRS      - -     ((RECSRVRTID | RECSRVRTID2), (PAYEELSTID | PAYEELSTID2),
                                  CURDEF, RECURRINST, (PMTINFO | PMTINFO2),
                                  INITIALAMT?, FINALAMT?, EXTDPAYEE?, CKFR.DTADJFIRSTPMT?,
                                  CKFR.NADJPMTS?, CKFR.DTADJLASTPMT?)>

<!--#ELEMENT RECPMTRS #Link(RECSRVRTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT RECPMTRS #Link(RECSRVRTID2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT RECPMTRS #Link(PAYEELSTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT RECPMTRS #Link(PAYEELSTID2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT RECPMTRS #Link(PMTINFO,BILLPAYMSGSRSV1)-->
<!--#ELEMENT RECPMTRS #Link(PMTINFO2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT RECPMTRS #Link(CKFR.DTADJFIRSTPMT,BILLPAYMSGSRSV2)-->
<!--#ELEMENT RECPMTRS #Link(CKFR.NADJPMTS,BILLPAYMSGSRSV2)-->
<!--#ELEMENT RECPMTRS #Link(CKFR.DTADJLASTPMT,BILLPAYMSGSRSV2)-->

<!-- modification response -->
<!-- OFX 1.5 -->
<!-- CHANGE RECSRVRTID to (RECSRVRTID | RECSRVRTID2) -->
<!-- CHANGE PMTINFO to (PMTINFO | PMTINFO2) -->
<!-- CheckFree Extension: added CKFR.DTADJFIRSTPMT, CKFR.NADJPMTS, CKFR.DTADJLASTPMT -->
<!ELEMENT RECPMTMODRS   - -     ((RECSRVRTID | RECSRVRTID2), RECURRINST, (PMTINFO | PMTINFO2),
				 INITIALAMT?, FINALAMT?, MODPENDING, CKFR.DTADJFIRSTPMT?,
                                 CKFR.NADJPMTS?, CKFR.DTADJLASTPMT?)>

<!ELEMENT CKFR.DTADJFIRSTPMT		- o %DTTMTYPE>
<!ELEMENT CKFR.NADJPMTS			- o %INTTYPE>
<!ELEMENT CKFR.DTADJLASTPMT		- o %DTTMTYPE>

<!--#ELEMENT RECPMTMODRS #Link(RECSRVRTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT RECPMTMODRS #Link(RECSRVRTID2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT RECPMTMODRS #Link(PMTINFO,BILLPAYMSGSRSV1)-->
<!--#ELEMENT RECPMTMODRS #Link(PMTINFO2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT RECPMTMODRS #Link(CKFR.DTADJFIRSTPMT,BILLPAYMSGSRSV2)-->
<!--#ELEMENT RECPMTMODRS #Link(CKFR.NADJPMTS,BILLPAYMSGSRSV2)-->
<!--#ELEMENT RECPMTMODRS #Link(CKFR.DTADJLASTPMT,BILLPAYMSGSRSV2)-->


<!-- recurring payment modification response -->
<!-- OFX 1.5 -->
<!-- CHANGE RECSRVRTID to (RECSRVRTID | RECSRVRTID2) -->
<!ELEMENT RECPMTCANCRS  - -     ((RECSRVRTID | RECSRVRTID2), CANPENDING)>
<!--#ELEMENT RECPMTCANCRS #Link(RECSRVRTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT RECPMTCANCRS #Link(RECSRVRTID2,BILLPAYMSGSRSV2)-->

<!-- payment status inquiry response -->
<!-- OFX 1.5 -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!ELEMENT PMTINQRS      - -     ((SRVRTID | SRVRTID2), PMTPRCSTS, CHECKNUM?)>
<!--#ELEMENT PMTINQRS #Link(SRVRTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTINQRS #Link(SRVRTID2,BILLPAYMSGSRSV2)-->


<!-- payee response : add a payee to the payee list -->
<!-- OFX 1.5 -->
<!-- CHANGE PAYEE to (PAYEELSTID | PAYEELSTID2) -->
<!-- CHANGE PAYEE to (PAYEE | PAYEE2) -->
<!-- CheckFree Extension: added CKFR.CATEGORY -->
<!ELEMENT PAYEERS       - -     ((PAYEELSTID | PAYEELSTID2), ((PAYEE | PAYEE2), BANKACCTTO?)?,
                                  EXTDPAYEE?, PAYACCT*, CKFR.CATEGORY?)>
<!--#ELEMENT PAYEERS #Link(PAYEELSTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PAYEERS #Link(PAYEELSTID2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PAYEERS #Link(PAYEE,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PAYEERS #Link(PAYEE2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PAYEERS #Link(CKFR.CATEGORY,BILLPAYMSGSRSV2)-->

<!-- payee modification response -->
<!-- OFX 1.5 -->
<!-- CHANGE PAYEE to (PAYEELSTID | PAYEELSTID2) -->
<!-- CHANGE PAYEE to (PAYEE | PAYEE2) -->
<!-- CheckFree Extension: added MODPENDING, CKFR.CATEGORY -->
<!ELEMENT PAYEEMODRS    - - ((PAYEELSTID | PAYEELSTID2), MODPENDING?, ((PAYEE | PAYEE2), BANKACCTTO?)?,
                              PAYACCT*, EXTDPAYEE?, CKFR.CATEGORY?)>
<!--#ELEMENT PAYEEMODRS #Link(PAYEELSTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PAYEEMODRS #Link(PAYEELSTID2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PAYEEMODRS #Link(PAYEE,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PAYEEMODRS #Link(PAYEE2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PAYEEMODRS #Link(CKFR.CATEGORY,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PAYEEMODRS #Link(MODPENDING,BILLPAYMSGSRSV2)-->


<!-- payee deletion response -->
<!-- OFX 1.5 -->
<!-- CHANGE PAYEE to (PAYEELSTID | PAYEELSTID2) -->
<!ELEMENT PAYEEDELRS    - - ((PAYEELSTID | PAYEELSTID2))>
<!--#ELEMENT PAYEEDELRS #Link(PAYEELSTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PAYEEDELRS #Link(PAYEELSTID2,BILLPAYMSGSRSV2)-->

<!-- CheckFree Extension: added CKFR.PMTLSTINQRS, CKFR.PAYEELSTRS -->
<!ELEMENT CKFR.PMTLSTINQRS - - ( (SRVRTID2? | (BILLID?, (PMTPRCCODE? | CKFR.PMTHISTIND?),
				PAYEELSTID2?, NAME?, CKFR.NICKNAME?, PAYACCT?, ACCTID?,
				CKFR.PMTAMTLOW?, CKFR.PMTAMTHIGH?, DTSTART?, DTEND?)), PMTRS*)>

<!ELEMENT CKFR.PAYEELSTRS - - ( (PAYEEID2? | PAYEELSTID2? | (CKFR.NICKNAME?, NAME?)), PAYEERS*)>

<!ELEMENT (CKFR.CATEGORYRS,CKFR.CATEGORYMODRS) - - (CKFR.CATEGORYINFO)>
<!ELEMENT CKFR.CATEGORYDELRS - - (CKFR.CATEGORYID)>
<!ELEMENT CKFR.CATEGORYLSTRS - - (CKFR.CATEGORYINFO*)>

<!ELEMENT CKFR.MERCHANTINQRS - - (CKFR.MERCHANTINFO*)>
<!-- ============================================================================= -->
<!--                    Aggregates                                                         -->
<!-- ============================================================================= -->

<!-- CheckFree Extension: added CKFR.PMTPOSTEDID
<!ELEMENT CKFR.PMTPOSTEDID - - (SRVRTID2|(CKFR.REMITACCTID,DTDUE,TRNAMT),CKFR.DTPOSTED)>
<!ELEMENT CKFR.DTPOSTED - o %DTTMTYPE>
-->

<!ELEMENT CKFR.MERCHANTINFO - - (CKFR.MERCHANTID,NAME,BILLERID?,CKFR.ZIPPLUSFOURREQD,SIC,HELPMESSAGE?)>

<!-- CheckFree Extension: added CKFR.CATEGORYINFO -->
<!ELEMENT CKFR.CATEGORYINFO - - (CKFR.CATEGORY,CKFR.CATEGORYID)>

<!-- BPACCTINFO -->
<!ELEMENT BPACCTINFO  - - (BANKACCTFROM, SVCSTATUS)>

<!-- Payment information aggregate -->
<!ELEMENT PMTINFO  - - (BANKACCTFROM, TRNAMT,
                        (PAYEEID|PAYEE), PAYEELSTID?, BANKACCTTO?,
                        EXTDPMT*, PAYACCT, DTDUE,
                        MEMO?, BILLREFINFO?)>
<!-- OFX 1.5 -->
<!-- ADDED PMTTYPE -->
<!-- CHANGE PAYEEID | PAYEE to being optional -->
<!-- CHANGE PAYACCT to being optional -->
<!-- ADD DTAVAIL, ITA.CAUSALE, PMTFOR, BOOKINGTEXT -->
<!-- CHANGE PAYEE to PAYEE2 -->
<!-- CHANGE MEMO to MEMO2 -->
<!-- CHANGE PAYEEID to PAYEEID2 -->
<!-- CHANGE PAYEELSTID to PAYEELSTID2 -->
<!-- CheckFree Extension: added SPNAME, CKFR.CATEGORY, CKFR.POSTEDSTATUS, DTPOSTED, CKFR.DTADJDUE,
                          CKFR.DTPAID CKFR.EXPENSECODE, CKFR.PMTTYPE  to PMTINFO2
-->
<!-- CheckFree Extension: Altered the (PAYEELSTID2 | ((PAYEEID2 | PAYEE2), PAYEELSTID2?)) combination
			to be optional (MSB) -->
<!ELEMENT PMTINFO2  - - (PMTTYPE?, BANKACCTFROM, TRNAMT,
                         (PAYEELSTID2 | ((PAYEEID2 | PAYEE2), PAYEELSTID2?))?, BANKACCTTO?,
                         EXTDPMT*, PAYACCT?, DTDUE,
                         DTAVAIL?, ITA.CAUSALE?, PMTFOR?, BOOKINGTEXT?,
                         MEMO2?, BILLREFINFO?, CKFR.CATEGORY?, (SPNAME, BILLID)?,
                         CKFR.POSTEDSTATUS?, DTPOSTED?,
                         CKFR.DTADJDUE?, CKFR.DTPAID?, CKFR.EXPENSECODE?, CKFR.PMTTYPE? )>

<!ELEMENT CKFR.POSTEDSTATUS - o %CKFR_POSTEDENUM>
<!ELEMENT CKFR.DTADJDUE - o %DTTMTYPE>
<!ELEMENT CKFR.DTPAID - o %DTTMTYPE>
<!ELEMENT CKFR.EXPENSECODE - o %CKFR_CODETYPE>
<!ELEMENT CKFR.PMTTYPE - o %CKFR_PMTTYPEENUM>

<!--  Some non-US fields from pmtinfo -->
<!ELEMENT PMTTYPE       - o %TYPEDESCTYPE>
<!ELEMENT PMTFOR        - o %GENNAMETYPE>
<!ELEMENT ITA.CAUSALE   - o %ITACAUSALETYPE>
<!ELEMENT BOOKINGTEXT   - o %BOOKINGTEXTTYPE>

<!--  Payment processing status -->
<!ELEMENT PMTPRCSTS     - -     (PMTPRCCODE, DTPMTPRC)>

<!--  Payment processing date; enum for processing date interpretation -->
<!ELEMENT PMTPRCCODE    - o %PMTPROCESSSTATUSENUM>

<!--  Payment processing date; Interpretation depends on <PMTPRCCODE> -->
<!ELEMENT DTPMTPRC      - o %DTTMTYPE>

<!-- billing reference info -->
<!ELEMENT BILLREFINFO - o %BILLREFINFOTYPE>

<!--  Extended Payment aggregate -->
<!--  Either extdpmtdsc or extdpmtinv, or both, but at least one required -->
<!-- OFX 1.5 -->
<!-- CHANGE EXTDPMTCHK to (EXTDPMTCHK | EXTPMTCHK2) -->
<!ELEMENT EXTDPMT           - - (EXTDPMTFOR?, (EXTDPMTCHK|EXTDPMTCHK2)?,
                             ((EXTDPMTDSC, EXTDPMTINV?) |
                             (EXTDPMTINV)))>
<!--#ELEMENT EXTDPMT #Link(EXTDPMTCHK,(BILLPAYMSGSRQV1|BILLPAYMSGSRSV1))-->
<!--#ELEMENT EXTDPMT #Link(EXTDPMTCHK2,(BILLPAYMSGSRQV2|BILLPAYMSGSRSV2))-->


<!ELEMENT EXTDPMTINV    - - (INVOICE+)>

<!ELEMENT INVOICE       - - (INVNO, INVTOTALAMT, INVPAIDAMT,
                             INVDATE, INVDESC, (DISCOUNT | DISCOUNT2)?,
                             ADJUSTMENT?, LINEITEM*)>
<!--#ELEMENT INVOICE #Link(DISCOUNT,(BILLPAYMSGSRQV1|BILLPAYMSGSRSV1))-->
<!--#ELEMENT INVOICE #Link(DISCOUNT2,(BILLPAYMSGSRQV2|BILLPAYMSGSRSV2))-->

<!ELEMENT DISCOUNT      - - (DSCRATE, DSCAMT, DSCDATE?, DSCDESC)>
<!-- OFX 1.5 -->
<!-- CHANGE DSCRATE, DSCAMT to (DSCRATE | DSCAMT) -->
<!ELEMENT DISCOUNT2      - - ((DSCRATE | DSCAMT), DSCDATE?, DSCDESC)>

<!ELEMENT ADJUSTMENT    - - (ADJNO?, ADJDESC, ADJAMT, ADJDATE?)>
<!-- OFX 1.5 -->
<!-- ADDED LITMCODE -->
<!ELEMENT LINEITEM      - - (LITMAMT, LITMDESC, LITMCODE?)>
<!--#ELEMENT LINEITEM #Link(LITMCODE,(BILLPAYMSGSRQV2|BILLPAYMSGSRSV2))-->

<!ELEMENT EXTDPMTFOR    - o %EXTDPMTFORENUM>
<!ELEMENT EXTDPMTCHK    - o %EXTTYPE>
<!ELEMENT EXTDPMTCHK2   - o %CHECKNUMTYPE>
<!ELEMENT EXTDPMTDSC    - o %MSGTYPE>
<!ELEMENT INVNO         - o %INVNOTYPE>
<!ELEMENT INVTOTALAMT   - o %AMTTYPE>
<!ELEMENT INVPAIDAMT    - o %AMTTYPE>
<!ELEMENT INVDATE       - o %DTTMTYPE>
<!ELEMENT INVDESC       - o %SHORTMSGTYPE>
<!ELEMENT DSCRATE       - o %RATETYPE>
<!ELEMENT DSCAMT        - o %AMTTYPE>
<!ELEMENT DSCDATE       - o %DTTMTYPE>
<!ELEMENT DSCDESC       - o %SHORTMSGTYPE>
<!ELEMENT ADJNO         - o %INVNOTYPE>
<!ELEMENT ADJDESC       - o %SHORTMSGTYPE>
<!ELEMENT ADJAMT        - o %AMTTYPE>
<!ELEMENT ADJDATE       - o %DTTMTYPE>
<!ELEMENT LITMCODE      - o %IDTYPE>
<!ELEMENT LITMAMT       - o %AMTTYPE>
<!ELEMENT LITMDESC      - o %SHORTMSGTYPE>

<!--  Initial Amount -->
<!ELEMENT INITIALAMT    - o %AMTTYPE>

<!--  Final Amount -->
<!ELEMENT FINALAMT      - o %AMTTYPE>

<!--  standard payee -->
<!-- OFX 1.5 -->
<!-- Changed PAYEEID to (PAYEEID | PAYEEID2) -->
<!-- CheckFree Extension: added CKFR.PRESSVCSTATUS,CKFR.PRESSVCIND,CKFR.MERCHANTID -->
<!ELEMENT EXTDPAYEE     - - ( (((PAYEEID | PAYEEID2), IDSCOPE, NAME) | CKFR.MERCHANTID)?, DAYSTOPAY,
						(CKFR.PRESSVCSTATUS,CKFR.PRESSVCIND)?, BILLERID?, CKFR.ELECTRONICPAYEE? )>
<!-- #ELEMENT EXTDPAYEE #Link (PAYEEID, (BILLPAYMSGSRQV1|BILLPAYMSGSRSV1)) -->
<!-- #ELEMENT EXTDPAYEE #Link (PAYEEID2, (BILLPAYMSGSRQV2|BILLPAYMSGSRSV2)) -->
<!-- #ELEMENT EXTDPAYEE #Link (CKFR.MERCHANTID, (BILLPAYMSGSRQV2|BILLPAYMSGSRSV2)) -->
<!-- #ELEMENT EXTDPAYEE #Link (CKFR.PRESSVCSTATUS, (BILLPAYMSGSRQV2|BILLPAYMSGSRSV2)) -->
<!-- #ELEMENT EXTDPAYEE #Link (CKFR.PRESSVCIND, (BILLPAYMSGSRQV2|BILLPAYMSGSRSV2)) -->
<!-- #ELEMENT EXTDPAYEE #Link (CKFR.ELECTRONICPAYEE, (BILLPAYMSGSRQV2|BILLPAYMSGSRSV2)) -->
<!-- #ELEMENT EXTDPAYEE #Link (BILLERID, (BILLPAYMSGSRQV2|BILLPAYMSGSRSV2)) -->

<!-- Indicates if payee has ebill service activated -->
<!ELEMENT CKFR.PRESSVCSTATUS - o %CKFR_PRESSVCSTATUSENUM>

<!-- Indicates if payee can accept electronic payments -->
<!ELEMENT CKFR.ELECTRONICPAYEE - o %BOOLTYPE>

<!-- Indicates if payee supports bill presentment service -->
<!ELEMENT CKFR.PRESSVCIND - o %BOOLTYPE>

<!--  Server-assigned standard payee ID -->
<!ELEMENT PAYEEID       - o %PAYEEIDTYPE>

<!-- OFX 1.5 -->
<!--  Server-assigned standard payee ID -->
<!ELEMENT PAYEEID2       - o %UUIDTYPE>

<!--  Payee ID scope enumeration ; currently one of {GLOBAL,USER} -->
<!ELEMENT IDSCOPE       - o %IDSCOPEENUM>

<!--  Minimum number of days needed to process -->
<!ELEMENT DAYSTOPAY     - o %DAYSPANTYPE>

<!-- Check number -->
<!ELEMENT CHECKNUM      - o %CHECKNUMTYPE>

<!-- Payee aggregate, version 2 makes things optional for non-usa, still required in usa -->
<!ELEMENT PAYEE - -     (NAME, (ADDR1,(ADDR2,ADDR3?)?), CITY, STATE, POSTALCODE, COUNTRY?, PHONE)>
<!-- OFX 1.5 -->
<!-- CHANGE all required tags except NAME to being optional -->
<!-- CheckFree Extension: added  CKFR.NICKNAME -->
<!ELEMENT PAYEE2 - -     (NAME, CKFR.NICKNAME?, (ADDR1,(ADDR2,ADDR3?)?)?,
                          CITY?, STATE?, POSTALCODE?, COUNTRY?, PHONE?)>

<!--  Server-assigned payee list ID -->
<!ELEMENT PAYEELSTID    - o %PAYEEIDTYPE>

<!-- OFX 1.5 -->
<!--  Server-assigned payee list ID -->
<!ELEMENT PAYEELSTID2   - o %UUIDTYPE>

<!--
        synchronization request messages
  -->

<!--  payment synchronization request -->
<!ELEMENT PMTSYNCRQ     - -     (%SYNCRQMACRO, BANKACCTFROM, PMTTRNRQ*)>
<!--#ELEMENT PMTSYNCRQ #Link(TOKEN,	BILLPAYMSGSRQV1)-->
<!--#ELEMENT PMTSYNCRQ #Link(TOKEN2,BILLPAYMSGSRQV2)-->

<!--  recurring payment synchronization request -->
<!ELEMENT RECPMTSYNCRQ  - -     (%SYNCRQMACRO, BANKACCTFROM, RECPMTTRNRQ*)>
<!--#ELEMENT RECPMTSYNCRQ #Link(TOKEN,BILLPAYMSGSRQV1)-->
<!--#ELEMENT RECPMTSYNCRQ #Link(TOKEN2,BILLPAYMSGSRQV2)-->

<!-- payee list synchronization request -->
<!ELEMENT PAYEESYNCRQ   - - (%SYNCRQMACRO, PAYEETRNRQ*)>
<!--#ELEMENT PAYEESYNCRQ #Link(TOKEN,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PAYEESYNCRQ #Link(TOKEN2,BILLPAYMSGSRQV2)-->

<!-- bill pay mail sync request -->
<!ELEMENT PMTMAILSYNCRQ - -     (%SYNCRQMACRO, INCIMAGES, USEHTML, PMTMAILTRNRQ*)>
<!--#ELEMENT PMTMAILSYNCRQ #Link(TOKEN,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PMTMAILSYNCRQ #Link(TOKEN2,BILLPAYMSGSRQV2)-->


<!--
        synchronization response messages
  -->

<!-- payment synchronization response -->
<!ELEMENT PMTSYNCRS     - -     (%SYNCRSMACRO, BANKACCTFROM, PMTTRNRS*)>
<!--#ELEMENT PMTSYNCRS #Link(TOKEN,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTSYNCRS #Link(TOKEN2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PMTSYNCRS #Link(SYNCERROR,BILLPAYMSGSRSV2)-->


<!--  recurring payment synchronization response -->
<!ELEMENT RECPMTSYNCRS  - -     (%SYNCRSMACRO, BANKACCTFROM, RECPMTTRNRS*)>
<!--#ELEMENT RECPMTSYNCRS #Link(TOKEN,BILLPAYMSGSRSV1)-->
<!--#ELEMENT RECPMTSYNCRS #Link(TOKEN2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT RECPMTSYNCRS #Link(SYNCERROR,BILLPAYMSGSRSV2)-->

<!-- payee list synchronization response -->
<!ELEMENT PAYEESYNCRS   - - (%SYNCRSMACRO, PAYEETRNRS*)>
<!--#ELEMENT PAYEESYNCRS #Link(TOKEN,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PAYEESYNCRS #Link(TOKEN2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PAYEESYNCRS #Link(SYNCERROR,BILLPAYMSGSRSV2)-->


<!-- bill pay mail sync response -->
<!ELEMENT PMTMAILSYNCRS - -     (%SYNCRSMACRO, PMTMAILTRNRS*)>
<!--#ELEMENT PMTMAILSYNCRS #Link(TOKEN,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTMAILSYNCRS #Link(TOKEN2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PMTMAILSYNCRS #Link(SYNCERROR,BILLPAYMSGSRSV2)-->


<!--
 Payment mail messages
  -->

<!-- payment inquiry mail message -->
<!-- OFX 1.5 -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!-- CHANGE PMTINFO to (PMTINFO | PMTINFO2) -->
<!ELEMENT PMTMAILRQ     - -     (MAIL,((SRVRTID | SRVRTID2),(PMTINFO | PMTINFO2))?)>
<!--#ELEMENT PMTMAILRQ #Link(SRVRTID,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PMTMAILRQ #Link(SRVRTID2,BILLPAYMSGSRQV2)-->
<!--#ELEMENT PMTMAILRQ #Link(PMTINFO,BILLPAYMSGSRQV1)-->
<!--#ELEMENT PMTMAILRQ #Link(PMTINFO2,BILLPAYMSGSRQV2)-->

<!-- OFX 1.5 -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!-- CHANGE PMTINFO to (PMTINFO | PMTINFO2) -->
<!ELEMENT PMTMAILRS     - -     (MAIL,((SRVRTID | SRVRTID2),(PMTINFO | PMTINFO2))?)>
<!--#ELEMENT PMTMAILRS #Link(PMTINFO,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTMAILRS #Link(PMTINFO2,BILLPAYMSGSRSV2)-->
<!--#ELEMENT PMTMAILRS #Link(SRVRTID,BILLPAYMSGSRSV1)-->
<!--#ELEMENT PMTMAILRS #Link(SRVRTID2,BILLPAYMSGSRSV2)-->


<!-- Message Sets -->
<!-- CheckFree Extension: added new enrollment tags to version 2 so had to split multi-element syntax -->

<!ELEMENT SIGNUPMSGSRQV1	- -
                                   ((ENROLLTRNRQ | ACCTINFOTRNRQ |
                                    CHGUSERINFOTRNRQ | CHGUSERINFOSYNCRQ |
                                    ACCTTRNRQ | ACCTSYNCRQ)+ )>
<!ELEMENT SIGNUPMSGSRQV2	- -
                                   ((CKFR.SUBSCRIBERTRNRQ |
						CKFR.COSUBSCRIBERTRNRQ | CKFR.FINDSPONSORTRNRQ | CKFR.PREENROLLTRNRQ | 
						CKFR.PREENROLLINQTRNRQ | CKFR.ENROLLTRNRQ | ENROLLTRNRQ | CKFR.PRODUCTTRNRQ | CKFR.SVCTRNRQ | 
						ACCTTRNRQ | CHGUSERINFOTRNRQ | CHGUSERINFOSYNCRQ |
                                    ACCTINFOTRNRQ | ACCTSYNCRQ | CKFR.GETPRESSVCORDERSTRNRQ | CKFR.PRESBILLERSVCTRNRQ |
						CKFR.PACTRNRQ | CKFR.PRODUCTINQTRNRQ | 
						CKFR.SVCINQTRNRQ | CKFR.EMAILTRNRQ | CKFR.EMAILSENDAUTHTRNRQ | CKFR.EMAILAUTHTRNRQ |
						CKFR.EMAILINFOTRNRQ
						)+ )>

<!ELEMENT SIGNUPMSGSRSV1	- -
                                   ((ENROLLTRNRS | ACCTINFOTRNRS |
                                    CHGUSERINFOTRNRS | CHGUSERINFOSYNCRS |
                                    ACCTTRNRS | ACCTSYNCRS)+ )>

<!ELEMENT SIGNUPMSGSRSV2	- -
                                   ((CKFR.SUBSCRIBERTRNRS |
						CKFR.COSUBSCRIBERTRNRS | CKFR.FINDSPONSORTRNRS | CKFR.PREENROLLTRNRS | 									CKFR.PREENROLLINQTRNRS | CKFR.ENROLLTRNRS | ENROLLTRNRS | ACCTTRNRS |
                                    CHGUSERINFOTRNRS | CHGUSERINFOSYNCRS |
                                    ACCTINFOTRNRS | ACCTSYNCRS | CKFR.GETPRESSVCORDERSTRNRS | CKFR.PRESBILLERSVCTRNRS |
						CKFR.PACTRNRS| CKFR.PRODUCTTRNRS | CKFR.PRODUCTINQTRNRS | CKFR.SVCTRNRS |
						CKFR.SVCINQTRNRS | CKFR.EMAILTRNRS | CKFR.EMAILSENDAUTHTRNRS | CKFR.EMAILAUTHTRNRS |
						CKFR.EMAILINFOTRNRS
						)+ )>


<!-- Profile entry for message set -->
<!ELEMENT SIGNUPMSGSET        - - (SIGNUPMSGSETV1?, SIGNUPMSGSETV2?)>
<!ELEMENT SIGNUPMSGSETV1  - -
                                  (MSGSETCORE ,
                                   (CLIENTENROLL | WEBENROLL | OTHERENROLL),
                                   CHGUSERINFO, AVAILACCTS, CLIENTACTREQ)>
<!-- OFX 1.5 -->
<!-- ADDED PREAUTH -->
<!ELEMENT SIGNUPMSGSETV2  - -
                                  (MSGSETCORE ,
                                   (CLIENTENROLL | WEBENROLL | OTHERENROLL),
                                   CHGUSERINFO, AVAILACCTS, CLIENTACTREQ, PREAUTH)>

<!ELEMENT CLIENTENROLL          - - (ACCTREQUIRED)>

<!-- OFX 1.5 -->
<!-- CHANGE URL TO (URL|URL2) -->
<!ELEMENT WEBENROLL             - - ((URL|URL2))>
<!--#ELEMENT WEBENROLL #Link(URL,(SIGNUPMSGSRQV1|SIGNUPMSGSRSV1))-->
<!--#ELEMENT WEBENROLL #Link(URL2,(SIGNUPMSGSRQV2|SIGNUPMSGSRSV2))-->

<!-- OFX 1.5 -->
<!-- CHANGE MESSAGE TO (MESSAGE|MESSAGE2) -->
<!ELEMENT OTHERENROLL             - - ((MESSAGE|MESSAGE2))>
<!--#ELEMENT OTHERENROLL #Link(MESSAGE,(SIGNUPMSGSRQV1|SIGNUPMSGSRSV1))-->
<!--#ELEMENT OTHERENROLL #Link(MESSAGE2,(SIGNUPMSGSRQV2|SIGNUPMSGSRSV2))-->

<!ELEMENT ACCTREQUIRED          - o %BOOLTYPE>
<!ELEMENT CHGUSERINFO           - o %BOOLTYPE>
<!ELEMENT AVAILACCTS            - o %BOOLTYPE>
<!ELEMENT CLIENTACTREQ          - o %BOOLTYPE>
<!ELEMENT PREAUTH		        - 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?)>

<!-- CheckFree Extension: new txns to support subscriber-level service add/del/inq -->
<!ELEMENT CKFR.SVCTRNRQ  - - (%TRNRQMACRO, (CKFR.SVCADDRQ|CKFR.SVCDELRQ))>
<!ELEMENT CKFR.SVCTRNRS  - - (%TRNRSMACRO, (CKFR.SVCADDRS|CKFR.SVCDELRS)?)>
<!ELEMENT CKFR.SVCINQTRNRQ  - - (%TRNRQMACRO, CKFR.SVCINQRQ)>
<!ELEMENT CKFR.SVCINQTRNRS  - - (%TRNRSMACRO, CKFR.SVCINQRS?)>

<!ELEMENT CKFR.FINDSPONSORTRNRQ - - (%TRNRQMACRO,CKFR.RECCTRLIN?,CKFR.FINDSPONSORRQ)>
<!ELEMENT CKFR.FINDSPONSORTRNRS - - (%TRNRSMACRO,CKFR.RECCTRLOUT?,CKFR.FINDSPONSORRS?)>

<!ELEMENT CKFR.SUBSCRIBERTRNRQ - - 	(%TRNRQMACRO,(CKFR.SUBSCRIBERADDRQ|CKFR.SUBSCRIBERMODRQ|CKFR.SUBSCRIBERDELRQ|CKFR.SUBSCRIBERINQRQ))>
<!ELEMENT CKFR.SUBSCRIBERTRNRS - - 	(%TRNRSMACRO,(CKFR.SUBSCRIBERADDRS|CKFR.SUBSCRIBERMODRS|CKFR.SUBSCRIBERDELRS|CKFR.SUBSCRIBERINQRS)?)>

<!ELEMENT CKFR.COSUBSCRIBERTRNRQ - - (%TRNRQMACRO,(CKFR.COSUBSCRIBERADDRQ|CKFR.COSUBSCRIBERMODRQ|CKFR.COSUBSCRIBERDELRQ|CKFR.COSUBSCRIBERINQRQ))>
<!ELEMENT CKFR.COSUBSCRIBERTRNRS - - (%TRNRSMACRO,(CKFR.COSUBSCRIBERADDRS|CKFR.COSUBSCRIBERMODRS|CKFR.COSUBSCRIBERDELRS|CKFR.COSUBSCRIBERINQRS)?)>

<!ELEMENT CKFR.PACTRNRQ  - -     (%TRNRQMACRO,(CKFR.PACSETRQ|CKFR.PACINQRQ))>
<!ELEMENT CKFR.PACTRNRS  - -     (%TRNRSMACRO,(CKFR.PACSETRS|CKFR.PACINQRS)?)>

<!-- CheckFree Extension: new txns to support pre-enrollment -->
<!ELEMENT CKFR.PREENROLLTRNRQ - - (%TRNRQMACRO,CKFR.PREENROLLRQ)>
<!ELEMENT CKFR.PREENROLLTRNRS - - (%TRNRSMACRO,CKFR.PREENROLLRS?)>
<!ELEMENT CKFR.PREENROLLINQTRNRQ - - (%TRNRQMACRO,CKFR.PREENROLLINQRQ)>
<!ELEMENT CKFR.PREENROLLINQTRNRS - - (%TRNRSMACRO,CKFR.PREENROLLINQRS?)>
<!ELEMENT CKFR.ENROLLTRNRQ - - (%TRNRQMACRO,CKFR.ENROLLRQ)>
<!ELEMENT CKFR.ENROLLTRNRS - - (%TRNRSMACRO,CKFR.ENROLLRS?)>

<!-- CheckFree Extension: new txns to support subscriber enablement -->
<!ELEMENT CKFR.PRODUCTTRNRQ - - (%TRNRQMACRO,(CKFR.PRODUCTADDRQ|CKFR.PRODUCTDELRQ))>
<!ELEMENT CKFR.PRODUCTTRNRS - - (%TRNRSMACRO,(CKFR.PRODUCTADDRS|CKFR.PRODUCTDELRS)?)>
<!ELEMENT CKFR.PRODUCTINQTRNRQ - - (%TRNRQMACRO,CKFR.PRODUCTINQRQ)>
<!ELEMENT CKFR.PRODUCTINQTRNRS - - (%TRNRSMACRO,CKFR.PRODUCTINQRS?)>

<!-- CheckFree Extension: new txns to support subscriber email addresses as part of enrollment/activation -->
<!ELEMENT CKFR.EMAILTRNRQ  - - (%TRNRQMACRO,(CKFR.EMAILADDRQ|CKFR.EMAILDELRQ))>
<!ELEMENT CKFR.EMAILTRNRS  - - (%TRNRSMACRO,(CKFR.EMAILADDRS|CKFR.EMAILDELRS)?)>
<!ELEMENT CKFR.EMAILSENDAUTHTRNRQ  - - (%TRNRQMACRO,CKFR.EMAILSENDAUTHRQ)>
<!ELEMENT CKFR.EMAILSENDAUTHTRNRS  - - (%TRNRSMACRO,CKFR.EMAILSENDAUTHRS?)>
<!ELEMENT CKFR.EMAILAUTHTRNRQ  - - (%TRNRQMACRO,CKFR.EMAILAUTHRQ)>
<!ELEMENT CKFR.EMAILAUTHTRNRS  - - (%TRNRSMACRO,CKFR.EMAILAUTHRS?)>
<!ELEMENT CKFR.EMAILINFOTRNRQ  - - (%TRNRQMACRO,CKFR.EMAILINFORQ)>
<!ELEMENT CKFR.EMAILINFOTRNRS  - - (%TRNRSMACRO,CKFR.EMAILINFORS?)>

<!-- ================== -->
<!-- Enrollment         -->
<!-- ==================  -->



<!ELEMENT ENROLLRQ       - - (FIRSTNAME , MIDDLENAME ,
                             LASTNAME , (ADDR1,(ADDR2,ADDR3?)?) ,
                             CITY , STATE , POSTALCODE ,
                             COUNTRY , DAYPHONE , EVEPHONE ,
                             EMAIL , USERID? , TAXID ,
                             SECURITYNAME , DATEBIRTH ,
                             (%ACCTFROMMACRO)? )>


<!-- CheckFree extension: added new pre-enrollment tags -->

<!ELEMENT CKFR.PREENROLLRQ - - (CKFR.PREENROLLINFO,CKFR.PREENROLLVERIFICATION?)>
<!ELEMENT CKFR.PREENROLLRS - - (CKFR.PREENROLLORDERNUM, CKFR.PREENROLLDECISIONCODE?, CKFR.PREENROLLDECISIONTEXT?,
					  CKFR.PREENROLLPAPERCODES?,CKFR.PREENROLLFIELDSINERROR?,
					  CKFR.PREENROLLERROR*,CKFR.PREENROLLKNAPSACK?)>

<!ELEMENT CKFR.PREENROLLINQRQ - - (CKFR.PREENROLLORDERNUM)>
<!ELEMENT CKFR.PREENROLLINQRS - - (CKFR.PREENROLLORDERNUM,CKFR.PREENROLLPAPER,CKFR.PREENROLLINFO)>

<!ELEMENT CKFR.PREENROLLINFO - -
	(CKFR.SUBSCRIBERID?,CKFR.PREENROLLFIRSTNAME,CKFR.PREENROLLMIDDLENAME?,CKFR.PREENROLLLASTNAME,
	CKFR.PREENROLLNAMESUFFIX?,
	 CKFR.PREENROLLADDR,CKFR.PREENROLLFORMERADDR?,
	 CKFR.PREENROLLPHONE,CKFR.PREENROLLNEWPHONE,CKFR.PREENROLLUNLISTEDPHONE,CKFR.PREENROLLWORKPHONE?,
	 TAXID,DATEBIRTH,CKFR.PREENROLLLICINFO?,USERPASS?,SECURITYNAME?,CKFR.FULFILLMENTCODE?,
	 CKFR.BILLINGCLASS?,CKFR.THRDPRTYEXTUSERID?,CKFR.EXTUSERID?,EMAIL?,CKFR.ENRLMRKTSRCCODE?,BANKACCTFROM?,
	CKFR.COSUBSCRIBERINFO?, CKFR.PREENROLLRETURNURL?, CKFR.PREENROLLACTION?, CKFR.SVC? )>


<!ELEMENT (CKFR.PREENROLLADDR,CKFR.PREENROLLLICADDR,CKFR.PREENROLLFORMERADDR) - -
	(CKFR.PREENROLLSTREET1, CKFR.PREENROLLSTREET2?, CKFR.PREENROLLCITY, STATE, POSTALCODE )>

<!ELEMENT CKFR.PREENROLLLICINFO - - (CKFR.PREENROLLLICNUM,CKFR.PREENROLLLICSTATE,CKFR.PREENROLLLICADDRIND,
								CKFR.PREENROLLLICADDR?)>

<!ELEMENT CKFR.PREENROLLERROR - - (CODE,MESSAGE,CKFR.PREENROLLFIELDID)>

<!ELEMENT (CKFR.PREENROLLFIRSTNAME,CKFR.PREENROLLMIDDLENAME,CKFR.PREENROLLLASTNAME,CKFR.PREENROLLCITY)
										- o %CKFR_PREENROLLNAMETYPE>
<!ELEMENT CKFR.PREENROLLSTREET1					- o %CKFR_PREENROLLADDRTYPE1>
<!ELEMENT CKFR.PREENROLLSTREET2					- o %CKFR_PREENROLLADDRTYPE2>

<!ELEMENT (CKFR.PREENROLLNEWPHONE,CKFR.PREENROLLUNLISTEDPHONE,CKFR.PREENROLLPAPER)
										- o %BOOLTYPE>
<!ELEMENT (CKFR.PREENROLLPHONE,CKFR.PREENROLLWORKPHONE)	- o %CKFR_PREENROLLPHONETYPE>
<!ELEMENT CKFR.PREENROLLLICNUM					- o %CKFR_PREENROLLLICNUMTYPE>
<!ELEMENT CKFR.PREENROLLLICSTATE					- o %STATETYPE>
<!ELEMENT CKFR.PREENROLLLICADDRIND					- o %CKFR_PREENROLLLICADDRINDENUM>
<!ELEMENT CKFR.PREENROLLNAMESUFFIX					- o %CKFR_PREENROLLNAMESUFFIXENUM>

<!ELEMENT CKFR.PREENROLLORDERNUM					- o %IDTYPE>
<!ELEMENT CKFR.PREENROLLDECISIONTEXT				- o %SHORTMSGTYPE>
<!ELEMENT CKFR.PREENROLLKNAPSACK					- o %CKFR_PREENROLLKNAPSACKTYPE>
<!ELEMENT (CKFR.PREENROLLFIELDID,CKFR.PREENROLLDECISIONCODE)  	- o %CKFR_CODETYPE>
<!ELEMENT CKFR.THRDPRTYEXTUSERID 					- o %CKFR_IDTYPE>
<!ELEMENT (CKFR.PREENROLLPAPERCODES,CKFR.PREENROLLFIELDSINERROR)	- o %SHORTMSGTYPE>
<!ELEMENT CKFR.PREENROLLRETURNURL					- o %URLTYPE>
<!ELEMENT CKFR.PREENROLLACTION					- o %CKFR_PREENROLLACTIONENUM>
<!ELEMENT CKFR.PREENROLLVERIFICATION				- o %CKFR_PREENROLLVERIFICATIONENUM>

<!-- CheckFree extension: added new enrollment tags which supplant std OFX enrollment -->

<!ELEMENT CKFR.ENROLLRQ - - ( CKFR.PREENROLLVERIFICATION?,
					((CKFR.PREENROLLKNAPSACK,CKFR.PREENROLLORDERNUM?) | CKFR.PREENROLLORDERNUM) )>
<!ELEMENT CKFR.ENROLLRS - - (CKFR.PREENROLLORDERNUM, CKFR.PREENROLLFIELDSINERROR?, CKFR.PREENROLLDECISIONCODE?, CKFR.PREENROLLDECISIONTEXT?, CKFR.PREENROLLPAPERCODES?)>

<!ELEMENT CKFR.SUBSCRIBERADDRQ - - (CKFR.SUBSCRIBERID,CKFR.SUBSCRIBERINFO,CKFR.INFORMSPONSOR?)>
<!ELEMENT CKFR.SUBSCRIBERMODRQ - - (CKFR.SUBSCRIBERID?,CKFR.SUBSCRIBERINFO,CKFR.INFORMSPONSOR?)>
<!ELEMENT CKFR.SUBSCRIBERINQRQ - - (CKFR.SUBSCRIBERID?)>
<!ELEMENT CKFR.SUBSCRIBERDELRQ - - (CKFR.SUBSCRIBERID?,CKFR.INFORMSPONSOR?)>

<!ELEMENT (CKFR.SUBSCRIBERADDRS,CKFR.SUBSCRIBERINQRS,CKFR.SUBSCRIBERMODRS) - - (CKFR.SUBSCRIBERID,CKFR.SUBSCRIBERINFO)>
<!ELEMENT CKFR.SUBSCRIBERDELRS - - (CKFR.SUBSCRIBERID)>

<!ELEMENT CKFR.SUBSCRIBERINFO - - (CKFR.SUBSCRIBERTYPE,CKFR.BUSINESSNAME?,FIRSTNAME?,MIDDLENAME?,LASTNAME?,
                                   CKFR.NICKNAME?,CKFR.SBSRNAMEPREFIX?, TAXID, SECURITYNAME?, DATEBIRTH?,
                                   USERPASS?, ADDR1, ADDR2?, ADDR3?, CITY, STATE, POSTALCODE, COUNTRY,
                                   DAYPHONE?, EVEPHONE?, FAXPHONE?, EMAIL?, CKFR.ENRLFORMCODE?,
                                   CKFR.ENRLMRKTSRCCODE?,CKFR.TIMEZONE?, CKFR.SBSRCAT?, CKFR.EMPLOYEEIND?,
				   	     CKFR.FULFILLMENTCODE?, CKFR.BILLINGCLASS?,CKFR.SPSRBILLINGCATEGORY?,
				           CKFR.SOLICITATIONFLAG?,CKFR.EXTUSERID?,CKFR.THRDPRTYEXTUSERID?,
				           CKFR.ENROLLMENTORIGIN?,
				           CKFR.FREEDTEND?,CKFR.SUBSCRIBERSTATUS?,
           				   CKFR.FREEMONTHS?,CKFR.AVAILFREEMONTHS?,CKFR.INCRFREEMONTHS?)>

<!ELEMENT CKFR.COSUBSCRIBERADDRQ - - (CKFR.SUBSCRIBERID,CKFR.COSUBSCRIBERINFO,CKFR.INFORMSPONSOR?)>
<!ELEMENT CKFR.COSUBSCRIBERDELRQ - - (CKFR.SUBSCRIBERID,CKFR.COSBSRNUMBER,CKFR.INFORMSPONSOR?)>
<!ELEMENT CKFR.COSUBSCRIBERMODRQ - - (CKFR.SUBSCRIBERID,CKFR.COSBSRNUMBER,CKFR.COSUBSCRIBERINFO,CKFR.INFORMSPONSOR?)>
<!ELEMENT CKFR.COSUBSCRIBERINQRQ - - (CKFR.SUBSCRIBERID,CKFR.COSBSRNUMBER?)>

<!ELEMENT (CKFR.COSUBSCRIBERADDRS,CKFR.COSUBSCRIBERMODRS)
					   - - (CKFR.SUBSCRIBERID,CKFR.COSBSRNUMBER,CKFR.COSUBSCRIBERINFO)>
<!ELEMENT CKFR.COSUBSCRIBERINQRS
					   - - (CKFR.SUBSCRIBERID,CKFR.COSBSRNUMBER?,CKFR.COSUBSCRIBERINFO*)>

<!ELEMENT CKFR.COSUBSCRIBERDELRS - - (CKFR.SUBSCRIBERID,CKFR.COSBSRNUMBER)>

<!ELEMENT CKFR.COSUBSCRIBERINFO - - (CKFR.COSBSRNUMBER?,FIRSTNAME,MIDDLENAME?,LASTNAME,TAXID,SECURITYNAME,
					DATEBIRTH?,DAYPHONE?,EVEPHONE?,FAXPHONE?,EMAIL?)>

<!ELEMENT CKFR.FINDSPONSORRQ	- - %EMPTYTYPE>
<!ELEMENT CKFR.FINDSPONSORRS	- - (CKFR.SPONSORINFO?)>

<!ELEMENT CKFR.SPONSORINFO	- - (FID,CKFR.ONLINENAME,CKFR.SPONSORINFOURL?,
						CKFR.P2PPMTTYPE*,CKFR.UNCFMSENDMAX?,CKFR.UNCFMRECVMAX?)>


<!-- CheckFree Extension: new requests to support subscriber email addresses as part of enrollment/activation -->
<!ELEMENT CKFR.EMAILADDRQ  - - (EMAIL,CKFR.EMAILUSAGE,CKFR.SENDEMAILAUTHREQ)>
<!ELEMENT CKFR.EMAILADDRS  - - %EMPTYTYPE>
<!ELEMENT CKFR.EMAILDELRQ  - - (EMAIL?,CKFR.EMAILUSAGE?)>
<!ELEMENT CKFR.EMAILDELRS  - - %EMPTYTYPE>
<!ELEMENT CKFR.EMAILSENDAUTHRQ  - - (EMAIL)>
<!ELEMENT CKFR.EMAILSENDAUTHRS  - - %EMPTYTYPE>
<!ELEMENT CKFR.EMAILAUTHRQ  - - (EMAIL,CKFR.EMAILAUTHCODE)>
<!ELEMENT CKFR.EMAILAUTHRS  - - (CKFR.P2PMONEYRELEASED)>
<!ELEMENT CKFR.EMAILINFORQ  - - %EMPTYTYPE>
<!ELEMENT CKFR.EMAILINFORS  - - (CKFR.EMAILINFO*)>

<!ELEMENT CKFR.EMAILUSAGE - o %CKFR_EMAILUSAGEENUM>
<!ELEMENT CKFR.SENDEMAILAUTHREQ - o %BOOLTYPE>
<!ELEMENT CKFR.P2PMONEYRELEASED - o %BOOLTYPE>
<!ELEMENT CKFR.EMAILAUTHCODE - o %IDTYPE>
<!ELEMENT CKFR.EMAILSTATUS - o %CKFR_EMAILSTATUSENUM>
<!ELEMENT CKFR.EMAILAUTHSTATUS - o %CKFR_EMAILAUTHSTATUSENUM>
<!ELEMENT CKFR.EMAILINFO - - (EMAIL,CKFR.EMAILUSAGE?,CKFR.EMAILSTATUS,CKFR.EMAILAUTHSTATUS)>

<!ELEMENT CKFR.SUBSCRIBERID     - o %IDTYPE>
<!ELEMENT CKFR.INFORMSPONSOR 	- o %BOOLTYPE>
<!ELEMENT CKFR.SUBSCRIBERTYPE	- o %CKFR_SBSRENUM>
<!ELEMENT CKFR.BUSINESSNAME 	- o %CKFR_BUSNAMETYPE>
<!ELEMENT CKFR.SBSRNAMEPREFIX   - o %CKFR_SBSRPFXTYPE>
<!ELEMENT CKFR.ENRLFORMCODE	- o %CKFR_ENRLCODETYPE>
<!ELEMENT CKFR.ENRLMRKTSRCCODE  - o %CKFR_ENRLMRKTSRCCODETYPE>
<!ELEMENT CKFR.TIMEZONE 	- o %CKFR_ZONEENUM>
<!ELEMENT CKFR.SBSRCAT	 	- o %CKFR_SBSRCATTYPE>
<!ELEMENT CKFR.EMPLOYEEIND 	- o %BOOLTYPE>
<!ELEMENT CKFR.FULFILLMENTCODE  - o %CKFR_FULFILLCODETYPE>
<!ELEMENT CKFR.BILLINGCLASS 	- o %CKFR_BILLCLASSTYPE>
<!ELEMENT CKFR.SOLICITATIONFLAG - o %BOOLTYPE>
<!ELEMENT CKFR.ONLINENAME	- o %GENNAMETYPE>
<!ELEMENT CKFR.SPONSORINFOURL	- o %URL2TYPE>
<!ELEMENT CKFR.COSBSRNUMBER	- o %CKFR_COSBSRNUMBERTYPE>
<!ELEMENT CKFR.SPSRBILLINGCATEGORY - o %CKFR_SPSRBILLINGCATEGORYENUM>
<!ELEMENT CKFR.ENROLLMENTORIGIN - o %CKFR_CODETYPE>
<!ELEMENT CKFR.FREEDTEND - o %DTTMTYPE>
<!ELEMENT CKFR.SUBSCRIBERSTATUS - o %CKFR_SBSRSTATUSENUM>

<!-- Added the 2 tags below for Spring 2003 release -->
<!ELEMENT CKFR.FREEMONTHS      - o %CKFR_FREEPERIODTYPE>
<!ELEMENT CKFR.AVAILFREEMONTHS - o %CKFR_FREEPERIODTYPE>
<!ELEMENT CKFR.INCRFREEMONTHS  - o %CKFR_FREEPERIODTYPE>

<!-- most above name / addr elements in ofxmain.dtd -->

<!ELEMENT TAXID         - o %IDTYPE>
<!ELEMENT SECURITYNAME  - o %GENNAMETYPE>
<!ELEMENT DATEBIRTH     - o %DTTMTYPE>

<!ELEMENT ENROLLRS      - - (TEMPPASS? , USERID? , DTEXPIRE?)>

    <!-- NOTE: could constrain  DTEXPIRE -->

<!ELEMENT TEMPPASS      - o %TEMPPASSTYPE>
<!ELEMENT DTEXPIRE      - o %DTTMTYPE>

<!-- Change User Info -->

<!-- CHGUSERINFORQ/RS Version 2 adds userid -->
<!-- OFX 1.5 -->
<!-- ADDED USERID -->

<!ELEMENT CHGUSERINFORQ - - (USERID?, FIRSTNAME?, MIDDLENAME?, LASTNAME?,
                             (ADDR1,(ADDR2,ADDR3?)?)?,
                             CITY?, STATE?, POSTALCODE?, COUNTRY?,
                             DAYPHONE?, EVEPHONE?, EMAIL?)>
<!--#ELEMENT CHGUSERINFORQ #Link(USERID,(SIGNUPMSGSRQV2|SIGNUPMSGSRSV2))-->

<!-- OFX 1.5 -->
<!-- ADDED USERID -->
<!ELEMENT CHGUSERINFORS - - (USERID?, FIRSTNAME?, MIDDLENAME?, LASTNAME?,
                             (ADDR1,(ADDR2,ADDR3?)?)?,
                             CITY?, STATE?, POSTALCODE?, COUNTRY?,
                             DAYPHONE?, EVEPHONE?, EMAIL?,
                             DTINFOCHG)>
<!--#ELEMENT CHGUSERINFORS #Link(USERID,(SIGNUPMSGSRQV2|SIGNUPMSGSRSV2))-->


<!ELEMENT DTINFOCHG     - o %DTTMTYPE>

<!ELEMENT CHGUSERINFOSYNCRQ    - - (%SYNCRQMACRO , CHGUSERINFOTRNRQ*)>
<!--#ELEMENT CHGUSERINFOSYNCRQ #Link(TOKEN,SIGNUPMSGSRQV1)-->
<!--#ELEMENT CHGUSERINFOSYNCRQ #Link(TOKEN2,SIGNUPMSGSRQV2)-->
<!ELEMENT CHGUSERINFOSYNCRS    - - (%SYNCRSMACRO , CHGUSERINFOTRNRS*)>
<!--#ELEMENT CHGUSERINFOSYNCRS #Link(TOKEN,SIGNUPMSGSRSV1)-->
<!--#ELEMENT CHGUSERINFOSYNCRS #Link(TOKEN2,SIGNUPMSGSRSV2)-->
<!--#ELEMENT CHGUSERINFOSYNCRS #Link(SYNCERROR,SIGNUPMSGSRSV2)-->

<!-- Top level request and response -->
<!-- CheckFree Extension:  Added SVC2 for additional filtering capability -->
<!ELEMENT ACCTINFORQ    - - (DTACCTUP, SVC2*)>
<!--#ELEMENT ACCTINFORQ #Link(SVC2,SIGNUPMSGSRQV2)-->
<!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 %SERVICESTATUSENUM>

<!-- ------------------
   Subscriber Enablement
   -------------------- -->
<!ELEMENT CKFR.PRODUCTADDRQ - - (APPID,APPVER,CKFR.SUBSCRIBERID?)>
<!ELEMENT CKFR.PRODUCTDELRQ - - ((CKFR.PRODUCTID|(APPID,APPVER)),CKFR.SUBSCRIBERID?)>
<!ELEMENT CKFR.PRODUCTADDRS - - %EMPTYTYPE>
<!ELEMENT CKFR.PRODUCTDELRS - - %EMPTYTYPE>
<!ELEMENT CKFR.PRODUCTINQRQ - - (CKFR.PRODUCTID?,CKFR.SUBSCRIBERID?)>
<!ELEMENT CKFR.PRODUCTINQRS - - (CKFR.PRODUCTINFO*)>
<!ELEMENT CKFR.PRODUCTID - o %IDTYPE>
<!ELEMENT CKFR.PRODUCTACTIVE - o %BOOLTYPE>
<!ELEMENT CKFR.DTLASTUSED - o %DTTMTYPE>
<!ELEMENT CKFR.PRODUCTINFO - - (CKFR.PRODUCTID,DESC,CKFR.PRODUCTACTIVE,CKFR.DTLASTUSED)>


<!-- -----------------
  Service Activation
  ----------------- -->

<!-- CheckFree Extension: new requests to support subscriber-level service add/del/inq -->
<!ELEMENT CKFR.SVCADDRQ  - - (CKFR.SVC, BANKACCTFROM?, EMAIL?, CKFR.ACCTUSAGE?)>
<!ELEMENT CKFR.SVCADDRS  - - %EMPTYTYPE>
<!ELEMENT CKFR.SVCDELRQ  - - (CKFR.SVC)>
<!ELEMENT CKFR.SVCDELRS  - - %EMPTYTYPE>
<!ELEMENT CKFR.SVCINQRQ  - - (CKFR.SVC?)>
<!ELEMENT CKFR.SVCINQRS  - - (CKFR.SVCINFO*)>
<!ELEMENT CKFR.SVCINFO - -   (CKFR.SVC,CKFR.SVCACTIVE,URL2?)>
<!ELEMENT CKFR.SVCACTIVE - o %BOOLTYPE>
<!ELEMENT CKFR.SVC - o %CKFR_SVCENUM>


<!-- version 2 ACCTRQ/ACCTRS uses SVC2, version 1 uses SVC -->
<!-- OFX 1.5 -->
<!ELEMENT ACCTRQ        - - ((SVCADD | SVCCHG | SVCDEL) ,
                             (SVC | (SVC2, CKFR.INFORMSPONSOR?) ))>
<!--#ELEMENT ACCTRQ #Link(SVC,SIGNUPMSGSRQV1)-->
<!--#ELEMENT ACCTRQ #Link(SVC2,SIGNUPMSGSRQV2)-->
<!ELEMENT ACCTRS        - -  ((SVCADD | SVCCHG | SVCDEL) ,
                             (SVC | SVC2), SVCSTATUS)>
<!--#ELEMENT ACCTRS #Link(SVC,SIGNUPMSGSRSV1)-->
<!--#ELEMENT ACCTRS #Link(SVC2,SIGNUPMSGSRSV2)-->

<!-- SVCADD Version 1 has no preauthtoken, version 2 does have preauthtoken -->
<!-- OFX 1.5 -->
<!-- ADDED PREAUTHTOKEN -->
<!-- CheckFree extension: added add'l preauthtokens  -->
<!ELEMENT SVCADD        - - (%ACCTTOMACRO ,  PREAUTHTOKEN?, CKFR.SECONDPREAUTHTOKEN?, CKFR.THIRDPREAUTHTOKEN?,
					CKFR.ACCTUSAGE?)>
<!--#ELEMENT SVCADD #Link(PREAUTHTOKEN,(SIGNUPMSGSRQV2|SIGNUPMSGSRSV2))-->
<!--#ELEMENT SVCADD #Link(CKFR.SECONDPREAUTHTOKEN,(SIGNUPMSGSRQV2|SIGNUPMSGSRSV2))-->
<!--#ELEMENT SVCADD #Link(CKFR.THIRDPREAUTHTOKEN,(SIGNUPMSGSRQV2|SIGNUPMSGSRSV2))-->
<!--#ELEMENT SVCADD #Link(CKFR.ACCTUSAGE,(SIGNUPMSGSRQV2|SIGNUPMSGSRSV2))-->


<!-- CheckFree extension: added CKFR.PRESACCTFROM/CKFR.PRESACCTTO  -->
<!ELEMENT SVCDEL        - - (%ACCTFROMMACRO | CKFR.PRESACCTFROM)>
<!ELEMENT SVCCHG        - - ((%ACCTFROMMACRO | CKFR.PRESACCTFROM), (%ACCTTOMACRO | CKFR.PRESACCTTO))>

<!ELEMENT SVC           - o %SERVICEENUM>
<!-- OFX 1.5 -->
<!-- ADDED SVC2 to support bill presentment -->
<!ELEMENT SVC2          - o %SERVICEENUM2>

<!ELEMENT CKFR.ACCTUSAGE - o %CKFR_ACCTUSAGEENUM>

<!-- Payment Activation -->
<!ELEMENT (CKFR.PACSETRQ,CKFR.PACSETRS)  - -     (CKFR.PAC)>
<!ELEMENT CKFR.PACINQRQ  - -     (CKFR.PACAUTHREQ)>
<!ELEMENT CKFR.PACINQRS  - -     (CKFR.PACSTATUS)>
<!ELEMENT CKFR.PACSTATUS - o %CKFR_PACSTATUSENUM>
<!ELEMENT CKFR.PACAUTHREQ - o %BOOLTYPE>
<!ELEMENT CKFR.PAC - o %CKFR_PACTYPE>


<!-- Synchronization -->

<!ELEMENT ACCTSYNCRQ    - - (%SYNCRQMACRO , ACCTTRNRQ*)>
<!--#ELEMENT ACCTSYNCRQ #Link(TOKEN,SIGNUPMSGSRQV1)-->
<!--#ELEMENT ACCTSYNCRQ #Link(TOKEN2,SIGNUPMSGSRQV2)-->
<!ELEMENT ACCTSYNCRS    - - (%SYNCRSMACRO , ACCTTRNRS*)>
<!--#ELEMENT ACCTSYNCRS #Link(TOKEN,SIGNUPMSGSRSV1)-->
<!--#ELEMENT ACCTSYNCRS #Link(TOKEN2,SIGNUPMSGSRSV2)-->
<!--#ELEMENT ACCTSYNCRS #Link(SYNCERROR,SIGNUPMSGSRSV2)-->

<!ELEMENT (PREAUTHTOKEN,CKFR.SECONDPREAUTHTOKEN,CKFR.THIRDPREAUTHTOKEN) - o %IDTYPE>


<!-- Investment Message Set -->
<!ELEMENT INVSTMTMSGSET  - - (INVSTMTMSGSETV1?, INVSTMTMSGSETV2?) >

<!-- Investment Message Set: Version 1 and 2-->
<!ELEMENT (INVSTMTMSGSETV1, INVSTMTMSGSETV2)  - - (MSGSETCORE , TRANDNLD , OODNLD ,
                                                   POSDNLD , BALDNLD, CANEMAIL) >

<!-- Investment Statement Messages -->

<!ELEMENT (INVSTMTMSGSRQV1, INVSTMTMSGSRQV2)  - -
           ((INVSTMTTRNRQ | INVMAILTRNRQ | INVMAILSYNCRQ)+) >

<!ELEMENT (INVSTMTMSGSRSV1, INVSTMTMSGSRSV2)  - -
           ((INVSTMTTRNRS | INVMAILTRNRS | INVMAILSYNCRS)+) >

<!-- Security List Messages -->
<!ELEMENT (SECLISTMSGSRQV1, SECLISTMSGSRQV2)  - - (SECLISTTRNRQ+) >

<!ELEMENT (SECLISTMSGSRSV1, SECLISTMSGSRSV2)  - - (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  - - %EMPTYTYPE >

<!-- Security Ticker Symbol -->
<!ELEMENT TICKER  - O %TICKERTYPE >

<!-- Financial Institution ID for the Security -->
<!ELEMENT FIID  - O %FIIDTYPE >

<!-- ** Security Identifier ** -->
<!ELEMENT SECID  - - (UNIQUEID , UNIQUEIDTYPE) >

<!-- Unique ID for the Security -->
<!ELEMENT UNIQUEID  - O %CUSIPTYPE >

<!-- Standard used for Unique ID currently only CUSIP -->
<!ELEMENT UNIQUEIDTYPE  - O %SECUIDTYPE >

<!-- *** Security Information *** -->

<!-- Security List -->
<!ELEMENT SECLIST  - - ((MFINFO | STOCKINFO | OPTINFO | DEBTINFO |
               OTHERINFO)*) >

<!-- ** Info all security types have in common ** -->
<!-- OFX 1.5 -->
<!-- CHANGE MEMO to (MEMO | MEMO2) -->
<!ELEMENT SECINFO  - - (SECID , SECNAME , TICKER? , FIID? ,
               RATING? , UNITPRICE? , DTASOF? ,
               CURRENCY? , (MEMO | MEMO2)?) >
<!--#ELEMENT SECINFO #Link(MEMO,(INVSTMTMSGSRQV1|INVSTMTMSGSRSV1))-->
<!--#ELEMENT SECINFO #Link(MEMO2,(INVSTMTMSGSRQV2|INVSTMTMSGSRSV2))-->

<!ELEMENT SECNAME   - O %SECNAMETYPE>

<!-- Rating for Security -->
<!ELEMENT RATING  - O %RATINGTYPE >

<!-- Unitprice for Security -->
<!ELEMENT UNITPRICE  - O %AMTTYPE >

<!-- *** 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 %DEBTENUM >

<!ELEMENT DEBTCLASS  - O %DEBTCLASSENUM >

<!ELEMENT COUPONRT  - O %RATETYPE >

<!ELEMENT DTCOUPON  - O %DTTMTYPE >

<!ELEMENT COUPONFREQ  - O %COUPONFREQENUM >

<!ELEMENT CALLPRICE  - O %AMTTYPE >

<!ELEMENT YIELDTOCALL  - O %RATETYPE >

<!ELEMENT DTCALL  - O %DTTMTYPE >

<!ELEMENT CALLTYPE - O %CALLTYPEENUM >

<!ELEMENT YIELDTOMAT  - O %RATETYPE >

<!ELEMENT DTMAT  - O %DTTMTYPE >

<!-- Asset Class for Security -->
<!ELEMENT ASSETCLASS  - O %ASSETCLASSENUM >

<!-- FI's Asset Class for Security -->
<!ELEMENT FIASSETCLASS  - O %GENNAMETYPE >

<!-- *** Mutual Fund Information *** -->
<!ELEMENT MFINFO  - - (SECINFO , MFTYPE? , YIELD? , DTYIELDASOF? ,
               MFASSETCLASS? , FIMFASSETCLASS?) >

<!ELEMENT MFTYPE  - O %MFTENUM >

<!ELEMENT YIELD  - O %RATETYPE >

<!ELEMENT DTYIELDASOF  - O %DTTMTYPE >

<!-- Asset Class for Mutual Funds -->
<!ELEMENT MFASSETCLASS  - - (PORTION+) >

<!-- Asset Class Portion -->
<!ELEMENT PORTION  - - (ASSETCLASS , PERCENT) >

<!ELEMENT PERCENT  - O %RATETYPE >

<!-- 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 %OPTTYPEENUM >

<!ELEMENT STRIKEPRICE  - O %AMTTYPE >

<!-- Number of shares per contract -->
<!ELEMENT SHPERCTRCT  - O %SHARESPERTYPE >

<!-- *** Other Security Type Information *** -->
<!ELEMENT OTHERINFO  - - (SECINFO , TYPEDESC?, ASSETCLASS? , FIASSETCLASS?) >

<!ELEMENT TYPEDESC  - O %TYPEDESCTYPE >


<!-- *** Stock Information *** -->
<!ELEMENT STOCKINFO  - - (SECINFO , STOCKTYPE? , YIELD? , DTYIELDASOF? ,
               ASSETCLASS? , FIASSETCLASS?) >

<!ELEMENT STOCKTYPE  - O %STOCKENUM >


<!-- ***** Investment Accounts ****** -->

<!-- Investment Account From -->
<!ELEMENT INVACCTFROM  - - (BROKERID , ACCTID) >

<!-- Investment Account To -->
<!ELEMENT INVACCTTO  - - (BROKERID , ACCTID) >

<!ELEMENT BROKERID  - O %BROKERIDTYPE >

<!-- ** Investment Account Information ** -->
<!ELEMENT INVACCTINFO - - (INVACCTFROM , USPRODUCTTYPE , CHECKING ,
                           SVCSTATUS, INVACCTTYPE? , OPTIONLEVEL?) >

<!ELEMENT USPRODUCTTYPE - O %USPRODUCTENUM >

<!ELEMENT CHECKING - O %BOOLTYPE >

<!ELEMENT INVACCTTYPE - O %INVESTMENTACCOUNTENUM >

<!ELEMENT OPTIONLEVEL - O %OPTIONLEVELTYPE >


<!-- ****** 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) >

<!-- ** Transaction fields common to many types of transactions ** -->
<!-- OFX 1.5 -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!-- CHANGE MEMO to (MEMO | MEMO2) -->
<!ELEMENT INVTRAN  - - (FITID , (SRVRTID | SRVRTID2)? , DTTRADE , DTSETTLE? , (MEMO | MEMO2)?) >
<!--#ELEMENT INVTRAN #Link(SRVRTID,(INVSTMTMSGSRQV1|INVSTMTMSGSRSV1))-->
<!--#ELEMENT INVTRAN #Link(SRVRTID2,(INVSTMTMSGSRQV2|INVSTMTMSGSRSV2))-->
<!--#ELEMENT INVTRAN #Link(MEMO,(INVSTMTMSGSRQV1|INVSTMTMSGSRSV1))-->
<!--#ELEMENT INVTRAN #Link(MEMO2,(INVSTMTMSGSRQV2|INVSTMTMSGSRSV2))-->

<!-- Trade Date -->
<!ELEMENT DTTRADE  - O %DTTMTYPE >

<!-- Settlement Date -->
<!ELEMENT DTSETTLE  - O %DTTMTYPE >

<!-- ** Transaction fields common to BUY types of transactions ** -->
<!-- version 2 adds reversalfees, reversalfitid -->
<!-- OFX 1.5 -->
<!-- ADDED REVERSALFEES, REVERSALFITID -->
<!ELEMENT INVBUY  - - (INVTRAN , SECID , UNITS , UNITPRICE , MARKUP? ,
               COMMISSION? , TAXES? , FEES? , LOAD? , TOTAL , REVERSALFEES?, REVERSALFITID?, CURRENCY? ,
               ORIGCURRENCY? , SUBACCTSEC , SUBACCTFUND) >
<!--#ELEMENT INVBUY #Link(REVERSALFEES,(INVSTMTMSGSRQV2|INVSTMTMSGSRSV2))-->
<!--#ELEMENT INVBUY #Link(REVERSALFITID,(INVSTMTMSGSRQV2|INVSTMTMSGSRSV2))-->

<!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 %SUBACCTENUM >

<!-- Sub-account for the funds involved in the trade: CASH, SHORT, MARGIN, OTHER -->
<!ELEMENT SUBACCTFUND  - O %SUBACCTENUM >

<!-- ** Transaction fields common to SELL types of transactions ** -->
<!-- version 2 adds reversalfees, reversalfitid -->
<!-- OFX 1.5 -->
<!-- ADDED REVERSALFEES, REVERSALFITID -->
<!ELEMENT INVSELL  - - (INVTRAN , SECID , UNITS , UNITPRICE , MARKDOWN? ,
               COMMISSION? , TAXES? , FEES? , LOAD? , WITHHOLDING? ,
               TAXEXEMPT? , TOTAL , REVERSALFEES?, REVERSALFITID?, GAIN? , CURRENCY? , ORIGCURRENCY? ,
               SUBACCTSEC , SUBACCTFUND) >
<!--#ELEMENT INVSELL #Link(REVERSALFEES,(INVSTMTMSGSRQV2|INVSTMTMSGSRSV2))-->
<!--#ELEMENT INVSELL #Link(REVERSALFITID,(INVSTMTMSGSRQV2|INVSTMTMSGSRSV2))-->

<!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 -->
<!ELEMENT BUYTYPE  - O %BUYENUM >

<!-- Related Transaction ID -->
<!ELEMENT RELFITID  - O %FITIDTYPE >

<!-- ** Buy Option Transaction ** -->
<!ELEMENT BUYOPT  - - (INVBUY , OPTBUYTYPE , SHPERCTRCT) >

<!-- Option Buy Type -->
<!ELEMENT OPTBUYTYPE  - O %OPTBUYENUM >

<!-- ** Buy Other Transaction ** -->
<!ELEMENT BUYOTHER  - - (INVBUY, BUYTYPE?) >
<!--#ELEMENT BUYOTHER #Link(BUYTYPE, INVSTMTMSGSRSV2)-->

<!-- ** 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 -->
<!ELEMENT OPTACTION  - O %OPTACTIONENUM >

<!-- **Income Transaction ** -->
<!ELEMENT INCOME  - - (INVTRAN , SECID , INCOMETYPE , TOTAL , SUBACCTSEC ,
               SUBACCTFUND , TAXEXEMPT? , WITHHOLDING? ,CURRENCY? ,
               ORIGCURRENCY? ) >

<!-- Type of Income -->
<!ELEMENT INCOMETYPE  - O %INCOMEENUM >

<!ELEMENT TAXEXEMPT - O %BOOLTYPE >

<!-- ** Investment Related Expense Transaction ** -->
<!ELEMENT INVEXPENSE  - - (INVTRAN , SECID , TOTAL , SUBACCTSEC ,
               SUBACCTFUND , CURRENCY? , ORIGCURRENCY?) >

<!-- OFX 1.5 -->
<!-- Added REVERSALFEES -->
<!-- Fees charged for investment reversal -->
<!ELEMENT REVERSALFEES   - O %AMTTYPE >

<!-- OFX 1.5 -->
<!-- Added REVERSALFITID -->
<!-- FITID of transaction to be reversed -->
<!ELEMENT REVERSALFITID	 - O %FITIDTYPE >

<!-- ** Journaling of Funds between sub-accounts Transaction ** -->
<!ELEMENT JRNLFUND - - (INVTRAN , SUBACCTTO , SUBACCTFROM , TOTAL) >

<!ELEMENT SUBACCTTO - O %SUBACCTENUM >

<!ELEMENT SUBACCTFROM - O %SUBACCTENUM >

<!-- ** 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 -->
<!ELEMENT SELLREASON - O %SELLREASONENUM >

<!-- ** Sell Mutual Fund Transaction ** -->
<!ELEMENT SELLMF  - - (INVSELL , SELLTYPE , AVGCOSTBASIS? , RELFITID?) >

<!-- Sell Type -->
<!ELEMENT SELLTYPE  - O %SELLTYPEENUM >

<!-- Average cost basis -->
<!ELEMENT AVGCOSTBASIS  - O %AMTTYPE >

<!-- ** Sell Option Transaction ** -->
<!ELEMENT SELLOPT  - - (INVSELL , OPTSELLTYPE , SHPERCTRCT ,
                        RELFITID? , RELTYPE?, SECURED?) >

<!-- Option Sell Type -->
<!ELEMENT OPTSELLTYPE  - O %OPTSELLENUM >

<!-- Related option transaction type -->
<!ELEMENT RELTYPE  - O %RELATEDENUM >

<!-- How the option is secured -->
<!ELEMENT SECURED  - O %SECUREDENUM >

<!-- ** Sell Other Transaction ** -->
<!ELEMENT SELLOTHER  - - (INVSELL, SELLTYPE?) >
<!--#ELEMENT SELLOTHER #Link(SELLTYPE, INVSTMTMSGSRSV2)-->

<!-- ** 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 %AMTTYPE >

<!ELEMENT NEWUNITS  - O %AMTTYPE >

<!ELEMENT NUMERATOR  - O %AMTTYPE >

<!ELEMENT DENOMINATOR  - O %AMTTYPE >

<!-- 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 -->
<!ELEMENT TFERACTION  - O %INOUTENUM >

<!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 ** -->
<!-- OFX 1.5 -->
<!-- CHANGE SRVRTID to (SRVRTID | SRVRTID2) -->
<!-- CHANGE MEMO to (MEMO | MEMO2) -->
<!ELEMENT OO  - - (FITID , (SRVRTID | SRVRTID2)? , SECID , DTPLACED , UNITS , SUBACCT ,
               DURATION , RESTRICTION , MINUNITS? , LIMITPRICE? ,
               STOPPRICE? , (MEMO | MEMO2)? , CURRENCY?) >
<!--#ELEMENT OO #Link(SRVRTID,(INVSTMTMSGSRQV1|INVSTMTMSGSRSV1))-->
<!--#ELEMENT OO #Link(SRVRTID2,(INVSTMTMSGSRQV2|INVSTMTMSGSRSV2))-->
<!--#ELEMENT OO #Link(MEMO,(INVSTMTMSGSRQV1|INVSTMTMSGSRSV1))-->
<!--#ELEMENT OO #Link(MEMO2,(INVSTMTMSGSRQV2|INVSTMTMSGSRSV2))-->

<!ELEMENT DTPLACED  - O %DTTMTYPE >

<!ELEMENT SUBACCT  - O %SUBACCTENUM >

<!ELEMENT DURATION  - O %DURATIONENUM >

<!ELEMENT RESTRICTION  - O %RESTRICTIONENUM >

<!ELEMENT MINUNITS  - O %AMTTYPE >

<!ELEMENT LIMITPRICE  - O %AMTTYPE >

<!ELEMENT STOPPRICE  - O %AMTTYPE >

<!-- ** 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 %UNITTYPEENUM >

<!-- ** 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 -->
<!-- OFX 1.5 -->
<!-- CHANGE MEMO to (MEMO | MEMO2) -->
<!ELEMENT INVPOS  - - (SECID , HELDINACCT , POSTYPE , UNITS , UNITPRICE ,
               MKTVAL , DTPRICEASOF , CURRENCY? , (MEMO | MEMO2)?) >
<!--#ELEMENT INVPOS #Link(MEMO,(INVSTMTMSGSRQV1|INVSTMTMSGSRSV1))-->
<!--#ELEMENT INVPOS #Link(MEMO2,(INVSTMTMSGSRQV2|INVSTMTMSGSRSV2))-->

<!-- Which sub-account the position is held in: CASH, MARGIN, SHORT, OTHER -->
<!ELEMENT HELDINACCT  - O %SUBACCTENUM >

<!-- Position Type: SHORT, LONG -->
<!ELEMENT POSTYPE  - O %POSTYPEENUM >

<!ELEMENT DTPRICEASOF  - O %DTTMTYPE >

<!-- ** Debt Position ** -->
<!ELEMENT POSDEBT  - - (INVPOS) >

<!-- ** Mutual Fund Position ** -->
<!ELEMENT POSMF  - - (INVPOS , UNITSSTREET? , UNITSUSER? , REINVDIV? ,
               REINVCG?) >

<!ELEMENT UNITSSTREET  - O %AMTTYPE >

<!ELEMENT UNITSUSER  - O %AMTTYPE >

<!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 *** -->

<!-- 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?, SECLISTMSGSETV2?) >

<!-- Investment Message Set: Version 1 and 2 -->
<!ELEMENT (SECLISTMSGSETV1, SECLISTMSGSETV2)  - - (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 INVMAILSYNCRQ #Link(TOKEN,INVSTMTMSGSRQV1)-->
<!--#ELEMENT INVMAILSYNCRQ #Link(TOKEN2,INVSTMTMSGSRQV2)-->
<!ELEMENT INVMAILSYNCRS     - - (%SYNCRSMACRO, INVACCTFROM, INVMAILTRNRS*)>
<!--#ELEMENT INVMAILSYNCRS #Link(TOKEN,INVSTMTMSGSRSV1)-->
<!--#ELEMENT INVMAILSYNCRS #Link(TOKEN2,INVSTMTMSGSRSV2)-->
<!--#ELEMENT INVMAILSYNCRS #Link(SYNCERROR,INVSTMTMSGSRSV2)-->

<!ELEMENT INVMAILRQ         - - (INVACCTFROM, MAIL)>
<!ELEMENT INVMAILRS         - - (INVACCTFROM, MAIL)>

<!-- Message sets -->
<!ELEMENT EMAILMSGSRQV1     - - ((MAILTRNRQ | MAILSYNCRQ | GETMIMETRNRQ)+ )>
<!ELEMENT EMAILMSGSRSV1     - - ((MAILTRNRS | MAILSYNCRS | GETMIMETRNRS)+ )>

<!-- Message sets: Add CKFR.MAILTRNRQ/RS to existing V2 OFX email message set. -->
<!ELEMENT EMAILMSGSRQV2     - -
	( (CKFR.MAILTRNRQ | CKFR.MAILLSTTRNRQ)+ | (MAILTRNRQ | MAILSYNCRQ | GETMIMETRNRQ)+ )>

<!ELEMENT EMAILMSGSRSV2     - -
	( (CKFR.MAILTRNRS | CKFR.MAILLSTTRNRS)+ | (MAILTRNRS | MAILSYNCRS | GETMIMETRNRS)+ )>


<!-- Profile entry for message set -->
<!ELEMENT EMAILMSGSET       - - (EMAILMSGSETV1?, EMAILMSGSETV2?)>
<!ELEMENT (EMAILMSGSETV1, EMAILMSGSETV2)     - - (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 %GENNAMETYPE>
<!ELEMENT TO            - o %GENNAMETYPE>
<!ELEMENT SUBJECT       - o %SUBJECTTYPE>
<!ELEMENT USEHTML       - o %BOOLTYPE>

<!ELEMENT MSGBODY       - - %MSGBODYTYPE>

<!-- Email Response -->

<!ELEMENT MAILRS        - - (MAIL)>

<!-- Email sync -->

<!ELEMENT MAILSYNCRQ    - - (%SYNCRQMACRO , INCIMAGES, USEHTML, MAILTRNRQ*)>
<!--#ELEMENT MAILSYNCRQ #Link(TOKEN,EMAILMSGSRQV1)-->
<!--#ELEMENT MAILSYNCRQ #Link(TOKEN2,EMAILMSGSRQV2)-->
<!ELEMENT MAILSYNCRS    - - (%SYNCRSMACRO , MAILTRNRS*)>
<!--#ELEMENT MAILSYNCRS #Link(TOKEN,EMAILMSGSRSV1)-->
<!--#ELEMENT MAILSYNCRS #Link(TOKEN2,EMAILMSGSRSV2)-->
<!--#ELEMENT MAILSYNCRS #Link(SYNCERROR,EMAILMSGSRSV2)-->

<!--

CheckFree extensions to the EMail message set.

The current OFX EMail facility assumes a 'fat' client and has no mail states.  These extensions attempt
to combine aspects of bill pay email with general email.  Where
possible, elements of the original OFX email spec. have been used so that these extensions
can co-exist in a 'vanilla' OFX environment.

Here are the functions that the email extensions provide:
1) The ability for a subscriber to create an email message and optionally
attach information concerning a payment.
2) The ability for a subscriber to modify the state of a particular email ( NEW to VIEWED )
3) The ability for a subscriber to delete an email.
4) The ability for a subscriber to retrieve email or a count of email, both sent and received,
using simple selection criteria.

-->

<!-- Email Transactions: New CheckFree tags -->

<!ELEMENT CKFR.MAILTRNRQ     - - (%TRNRQMACRO , (CKFR.MAILRQ | CKFR.MAILMODRQ | CKFR.MAILDELRQ) )>
<!ELEMENT CKFR.MAILTRNRS     - - (%TRNRSMACRO , (CKFR.MAILRS | CKFR.MAILMODRS | CKFR.MAILDELRS)?)>
<!ELEMENT CKFR.MAILLSTTRNRQ     - - (%TRNRQMACRO , CKFR.RECCTRLIN?, CKFR.MAILLSTRQ)>
<!ELEMENT CKFR.MAILLSTTRNRS     - - (%TRNRSMACRO , CKFR.RECCTRLOUT?, CKFR.MAILLSTRS?)>

<!-- Email Request: New CheckFree tags -->

<!ELEMENT CKFR.MAILRQ        - - (CKFR.MAILHDR,CKFR.MAIL)>
<!ELEMENT CKFR.MAILMODRQ     - - (CKFR.MAILID,CKFR.MAILSTATUS)>
<!ELEMENT CKFR.MAILDELRQ     - - (CKFR.MAILID)>

<!-- Email Response: New CheckFree tags -->

<!ELEMENT CKFR.MAILRS  - - (CKFR.MAILID,CKFR.MAILHDR,CKFR.MAIL)>
<!ELEMENT CKFR.MAILMODRS     - - (CKFR.MAILID,CKFR.MAILSTATUS)>
<!ELEMENT CKFR.MAILDELRS     - - (CKFR.MAILID)>

<!-- Email Retrieval: CKFR.MARKASVIEWED ignored if CKFR.COUNTONLY is "Y"  -->
<!ELEMENT CKFR.MAILLSTRQ - -
		( (CKFR.MAILID | (CKFR.MAILSTATUS?, CKFR.INCLUDEMAILDETAIL, CKFR.COUNTONLY, CKFR.MAILTYPE?)), 		CKFR.MARKASVIEWED )>
<!ELEMENT CKFR.MAILLSTRS - - ( (CKFR.MAILCOUNT, CKFR.MAILVIEWEDCOUNT) | CKFR.MAILSUMMARY* )>

<!-- Email Aggregates: New CheckFree tags -->

<!-- CKFR.MAIL:
	1) 	mail 'type' in response determined by presence/absence of aggregate
		( e.g. CKFR.PMTMAIL means it's a PAYMENT mail )
	2)	USEHTML/INCIMAGES must always be set to "N" for now but are included for later enhancement.
-->
<!ELEMENT CKFR.MAIL  - - ( ((CKFR.PMTMAIL, MSGBODY?) | MSGBODY) , CKFR.REASONCATEGORYID?, USEHTML?, INCIMAGES? )>

<!ELEMENT CKFR.MAILHDR - - (DTCREATED,USERID?,TO?,FROM,SUBJECT)>
<!ELEMENT CKFR.PMTMAIL - - (SRVRTID2,CKFR.FEESWAIVED?, CKFR.FINCHGAPPLIED?, FINCHG?, CKFR.LATEFEEAPPLIED?,
                            CKFR.LATEFEE?, CKFR.DTCONTACT?, NAME?, DAYPHONE?  )>
<!-- deferred <!ELEMENT CKFR.PRESMAIL - - (PRESACCTFROM | CKFR.PRESBILLINFO)> -->
<!-- deferred <!ELEMENT CKFR.BANKMAIL - - (BANKACCTFROM | CCACCTFROM)> -->
<!ELEMENT CKFR.MAILSTATUS  - o %CKFR_MAILSTATUSENUM>  <!-- SENT, NEW, VIEWED -->
<!ELEMENT CKFR.MAILTYPE  - o %CKFR_MAILTYPEENUM>  <!-- GENERAL, PAYMENT -->

<!ELEMENT CKFR.MAILID   - o %IDTYPE>
<!ELEMENT CKFR.MAILCOUNT - o %INTTYPE>
<!ELEMENT CKFR.MAILVIEWEDCOUNT - o %INTTYPE>

<!ELEMENT CKFR.INCLUDEMAILDETAIL - o %BOOLTYPE>
<!ELEMENT CKFR.MARKASVIEWED - o %BOOLTYPE>
<!ELEMENT CKFR.FEESWAIVED - o %BOOLTYPE>
<!ELEMENT CKFR.FINCHGAPPLIED - o %BOOLTYPE>
<!ELEMENT CKFR.LATEFEEAPPLIED - o %BOOLTYPE>
<!ELEMENT CKFR.LATEFEE - o %AMTTYPE>
<!ELEMENT CKFR.DTCONTACT - o %DTTMTYPE>
<!ELEMENT CKFR.REASONCATEGORYID - o %CKFR_REASONCATEGORYIDTYPE>

<!-- For mail summary, CKFR.MAIL is only included if CKFR.INCLUDEMAILDETAIL is set to Y -->
<!ELEMENT CKFR.MAILSUMMARY - - (CKFR.MAILID,CKFR.MAILSTATUS,CKFR.MAILHDR,CKFR.MAIL?)>



<!-- HTML GET -->

<!-- OFX 1.5 -->
<!-- CHANGE URL TO (URL|URL2) -->
<!ELEMENT GETMIMERQ     - - ((URL|URL2))>
<!--#ELEMENT GETMIMERQ #Link(URL,EMAILMSGSRQV1)-->
<!--#ELEMENT GETMIMERQ #Link(URL2,EMAILMSGSRQV2)-->
<!ELEMENT GETMIMERS     - - ((URL|URL2))>
<!--#ELEMENT GETMIMERS #Link(URL,EMAILMSGSRSV1)-->
<!--#ELEMENT GETMIMERS #Link(URL2,EMAILMSGSRSV2)-->

    <!-- BILL PRESENTMENT   -->

    <!-- Profile entry for message set -->
    <!ELEMENT PRESDIRMSGSET        - - (PRESDIRMSGSETV1)>
    <!ELEMENT PRESDIRMSGSETV1      - - (MSGSETCORE, PRESDIRPROF?)>

    <!ELEMENT PRESDIRPROF      - - (PROCDAYSOFF?, CANSUPPORTIMAGES, PROCENDTM)>


    <!-- No synchronization in this module -->

    <!-- ================== -->
    <!-- DIRECTORY MESSAGES -->
    <!-- ================== -->

    <!-- FIND BILLER -->

    <!-- Find Biller Message set -->
    <!ELEMENT PRESDIRMSGSRQV1    - - (FINDBILLERTRNRQ)>
    <!ELEMENT PRESDIRMSGSRSV1    - - (FINDBILLERTRNRS)>

    <!-- Find Biller Transactions -->

    <!ELEMENT FINDBILLERTRNRQ    - - (%TRNRQMACRO, CKFR.RECCTRLIN?, FINDBILLERRQ)>
    <!ELEMENT FINDBILLERTRNRS    - - (%TRNRSMACRO, CKFR.RECCTRLOUT?, FINDBILLERRS?)>



    <!-- Find Biller Request and Response -->
    <!-- CheckFree Extension: added  CKFR.NEWBILLERFLAG -->
    <!ELEMENT FINDBILLERRQ  - - (DTUPDATE? , BILLERID?, NAME?, ADDR1?,
                                    ADDR2? , ADDR3? , CITY?, STATE?,
                                    POSTALCODE?, COUNTRY? , SIC? ,
                                    CONSUPOSTALCODE?,INCIMAGES, CKFR.NEWBILLERFLAG?)>


    <!ELEMENT FINDBILLERRS  - - (DTUPDATE ,BILLERINFO*)>

    <!ELEMENT BILLERINFO    - - (BILLPUB, BILLERID, NAME, ADDR1,ADDR2? , ADDR3? , CITY, STATE,POSTALCODE ,COUNTRY ,
                                    SIC ,PHONE , PAYMENTINSTRUMENTS?, 
                                    ACCTFORMAT?, ACCTEDITMASK?, 
                                    HELPMESSAGE?, RESTRICT?, 
                                    (LOGO, CKFR.LOGOINFO?)?, 
                                    (VALIDATE, CKFR.VALIDATEINFO?)?, 
                                    (BILLERINFOURL, CKFR.BILLERINFOURLINFO?)?,
                                    (CKFR.PREAUTHTOKENLABEL,      
                                    CKFR.PREAUTHTOKENFORMAT?,      
                                    CKFR.PREAUTHTOKENTEXTATTRIBUTE?      )?,
									CKFR.PREAUTHTOKENTYPE?,
				    (CKFR.SECONDPREAUTHTOKENLABEL,
				    CKFR.SECONDPREAUTHTOKENFORMAT?,
				    CKFR.SECONDPREAUTHTOKENTEXTATTRIBUTE?)?,
                                    CKFR.SECONDPREAUTHTOKENTYPE?,
				    (CKFR.THIRDPREAUTHTOKENLABEL, 
				    CKFR.THIRDPREAUTHTOKENFORMAT?, 
				    CKFR.THIRDPREAUTHTOKENTEXTATTRIBUTE? )?,
                                    CKFR.THIRDPREAUTHTOKENTYPE?,
                                    CKFR.NEWBILLERFLAG?, (SPNAME,PAYEEID2)?,
                                    (CKFR.MERCHANTID,CKFR.ZIPPLUSFOURREQD)?,
				    CKFR.AUTOPAYCAPABLE?, CKFR.EMAILEBILLS?, CKFR.EMAILPREAUTHTOKEN?,
				    (CKFR.ADIMAGEURL, CKFR.ADIMAGEURLINFO?)?, (CKFR.ADLINKURL, CKFR.ADLINKURLINFO?)?, 
                                    (CKFR.TERMSCONDITIONSURL, CKFR.TERMSCONDITIONSURLINFO?)?,
                                    CKFR.PAPERSUPPRESSTERMSCONDITIONS?)>

    <!ELEMENT CKFR.NEWBILLERFLAG	- o %BOOLTYPE>
    <!ELEMENT CKFR.MERCHANTID 	        - o %IDTYPE>
    <!ELEMENT CKFR.AUTOPAYCAPABLE 	- o %BOOLTYPE>
    <!ELEMENT CKFR.ZIPPLUSFOURREQD 	- o %BOOLTYPE>

    <!ELEMENT PAYMENTINSTRUMENTS      - - (PAYMENTINSTRUMENT+)>
    <!ELEMENT PAYMENTINSTRUMENT       - - (PMTINSTRUMENTTYPE, BRAND?)>
    <!ELEMENT DTUPDATE      - o %DTTMTYPE>
    <!ELEMENT CONSUPOSTALCODE - o %ZIPTYPE>
    <!ELEMENT BILLPUB       - o %GENNAMETYPE>
    <!ELEMENT BILLERID      - o %IDTYPE>
    <!ELEMENT ACCTEDITMASK  - o %MSGTYPE>
    <!ELEMENT HELPMESSAGE   - o %MSGTYPE>
    <!ELEMENT RESTRICT      - o %MSGTYPE>
    <!ELEMENT VALIDATE      - o %URL2TYPE>
    <!ELEMENT BILLERINFOURL - o %URL2TYPE>
    <!ELEMENT LOGO          - o %URL2TYPE>

    <!ELEMENT CKFR.ADIMAGEURL         - o %URL2TYPE>
    <!ELEMENT CKFR.ADLINKURL          - o %URL2TYPE>
    <!ELEMENT CKFR.TERMSCONDITIONSURL - o %URL2TYPE>

    <!-- Added tag below for Spring 2003 release -->
    <!ELEMENT CKFR.PAPERSUPPRESSTERMSCONDITIONS - o %MSGTYPE>

    <!ELEMENT (ACCTFORMAT,CKFR.PREAUTHTOKENFORMAT,CKFR.SECONDPREAUTHTOKENFORMAT,CKFR.THIRDPREAUTHTOKENFORMAT) - o %MSGTYPE>
    <!ELEMENT CKFR.EMAILEBILLS - o %CKFR_EMAILEBILLSENUM>

    <!ELEMENT (CKFR.LOGOINFO,CKFR.VALIDATEINFO,CKFR.BILLERINFOURLINFO,CKFR.ADIMAGEURLINFO,CKFR.ADLINKURLINFO,CKFR.TERMSCONDITIONSURLINFO) 
               - o %MSGTYPE>
    <!ELEMENT CKFR.EMAILPREAUTHTOKEN - o %CKFR_EMAILPREAUTHTOKENENUM>
    <!ELEMENT (CKFR.PREAUTHTOKENTEXTATTRIBUTE,CKFR.SECONDPREAUTHTOKENTEXTATTRIBUTE,CKFR.THIRDPREAUTHTOKENTEXTATTRIBUTE) 
               - o %CKFR_PREAUTHTOKENTEXTATTRIBUTEENUM>

    <!-- Added 3 tags below for Spring 2003 release -->
    <!ELEMENT (CKFR.PREAUTHTOKENTYPE,CKFR.SECONDPREAUTHTOKENTYPE,CKFR.THIRDPREAUTHTOKENTYPE) 
               - o %CKFR_PREAUTHTOKENTYPEENUM>

    <!-- ================== -->
    <!-- SIGNUP MESSAGES    -->
    <!-- ================== -->

    <!-- ENROLL SAME AS STANDARD OFX ENROLL-->

    <!-- ACTIVATION SAME AS STANDARD OFX -->

    <!ELEMENT PRESNAMEADDRESS - - (NAMEACCTHELD?, ADDR1?, ADDR2?, ADDR3?, CITY?,
				    STATE?, POSTALCODE?, COUNTRY?, DAYPHONE?, EVEPHONE?)>

    <!-- CheckFree Extension: added new CKFR.PRESNAMEADDRESS aggregate -->
    <!ELEMENT CKFR.PRESNAMEADDRESS - - (
					((CKFR.BUSNAMEACCTHELD,FIRSTNAME,LASTNAME)|(FIRSTNAME,MIDDLENAME?,LASTNAME))?,
					ADDR1?, ADDR2?, ADDR3?, CITY?,
				    	STATE?, POSTALCODE?, COUNTRY?, DAYPHONE?, EVEPHONE?, EMAIL?)>

    <!-- ACCOUNT INFO SAME AS STANDARD OFX EXCEPT FOR GROUP Messages-->

    <!ELEMENT NAMEACCTHELD - o %NAMEACCTHELDTYPE>


    <!-- ====================== -->
    <!-- BILL DELIVERY MESSAGES -->
    <!-- ====================== -->

    <!-- Bill Delivery -->

    <!-- Bill Delivery Message set -->
    <!-- Profile entry for message set -->
    <!ELEMENT PRESDLVMSGSET        - - (PRESDLVMSGSETV1)>
    <!ELEMENT PRESDLVMSGSETV1      - - (MSGSETCORE, PRESDLVPROF?, EMAILPROF)>

    <!ELEMENT PRESDLVPROF     - - (GROUPID, PROCDAYSOFF?, CANSUPPORTIMAGES, PROCENDTM)>


    <!-- CheckFree Extension: added CKFR.PRESBILLAVAILTRNRQ/RS CKFR.PRESTRANSMITBILLTRNRQ/RS
					  CKFR.GROUPTRNRQ/RS CKFR.GROUPDELTRNRQ/RS CKFR.GROUPADDUSERTRNRQ/RS
                                CKFR.PRESBILLSTATUSINQTRNRQ/RS CKFR.MODIFYBILLTRNRQ/RS-->


   <!ELEMENT PRESDLVMSGSRQV1  - - ((PRESLISTTRNRQ
                                |PRESGRPACCTINFOTRNRQ
                                |PRESDETAILTRNRQ
                                |BILLTBLSTRUCTTRNRQ
                                |PRESNOTIFYTRNRQ
                                |PRESMAILSYNCRQ
                                |PRESMAILTRNRQ
					  |CKFR.PRESBILLAVAILTRNRQ
                                |CKFR.PRESTRANSMITBILLTRNRQ
					  |CKFR.GROUPTRNRQ | CKFR.GROUPDELTRNRQ | CKFR.GROUPADDUSERTRNRQ
                                |CKFR.PRESBILLSTATUSINQTRNRQ | CKFR.MODIFYBILLTRNRQ )+
                                )>
    <!ELEMENT PRESDLVMSGSRSV1  - - ((PRESLISTTRNRS
                                |PRESGRPACCTINFOTRNRS
                                |PRESDETAILTRNRS
                                |BILLTBLSTRUCTTRNRS
                                |PRESNOTIFYTRNRS
                                |PRESMAILSYNCRS
                                |PRESMAILTRNRS
                                |CKFR.PRESBILLAVAILTRNRS
                                |CKFR.PRESTRANSMITBILLTRNRS
					  |CKFR.GROUPTRNRS | CKFR.GROUPDELTRNRS | CKFR.GROUPADDUSERTRNRS
					  |CKFR.PRESBILLSTATUSINQTRNRS | CKFR.MODIFYBILLTRNRS )+
                                )>

    <!-- Account Info Group Transactions -->
    <!ELEMENT PRESGRPACCTINFOTRNRQ    - - (%TRNRQMACRO, CKFR.RECCTRLIN?, (USERID | GROUPID)?, ACCTINFORQ)>
    <!ELEMENT PRESGRPACCTINFOTRNRS    - - (%TRNRSMACRO, CKFR.RECCTRLOUT?, ACCTINFORS?)>

<!-- CheckFree Extension: added new presentment service transactions - These are part of svc activation message set
     but are listed here because they are ebill specific -->
    <!ELEMENT CKFR.GETPRESSVCORDERSTRNRQ - - (%TRNRQMACRO,CKFR.RECCTRLIN?,CKFR.GETPRESSVCORDERSRQ)>
    <!ELEMENT CKFR.GETPRESSVCORDERSTRNRS - - (%TRNRSMACRO,CKFR.RECCTRLOUT?,CKFR.GETPRESSVCORDERSRS?)>

    <!ELEMENT CKFR.PRESBILLERSVCTRNRQ - - (%TRNRQMACRO,CKFR.PRESBILLERSVCRQ)>
    <!ELEMENT CKFR.PRESBILLERSVCTRNRS - - (%TRNRSMACRO,CKFR.PRESBILLERSVCRS?)>

    <!ELEMENT CKFR.GETPRESSVCORDERSRQ - - (BILLPUB,BILLERID)>
    <!ELEMENT CKFR.GETPRESSVCORDERSRS - - (BILLPUB,BILLERID,CKFR.PRESSVCORDERINFO*)>
    <!ELEMENT (CKFR.PRESBILLERSVCRQ,CKFR.PRESBILLERSVCRS) - - (CKFR.BILLPROCID?,CKFR.PRESSVCORDERINFO)>

    <!ELEMENT CKFR.PRESSVCORDERINFO - - (SRVRTID2?, FID?, (CKFR.PRESSVCCONF|SVCADD|SVCCHG|SVCDEL))>
    <!ELEMENT CKFR.PRESSVCCONF - - (CKFR.PRESACCTTO,SVCSTATUS,REASON?)>

    <!ELEMENT PRESACCTINFO              - - (PRESACCTFROM, SVCSTATUS, REASON?)>


    <!ELEMENT (PRESACCTTO , PRESACCTFROM)   - -
		(BILLPUB,BILLERID,CKFR.BILLERACCTID?,CKFR.REMITACCTID?,ACCTID,(PRESNAMEADDRESS|CKFR.PRESNAMEADDRESS)?,USERID,
		CKFR.REMDREMAIL?,SPNAME?,PAYEELSTID2?,PAYACCT?,CKFR.AUTOPAY?,CKFR.EMAILEBILLS?, CKFR.SENDEMAILADDR?,
		PREAUTHTOKEN?,CKFR.SECONDPREAUTHTOKEN?,CKFR.THIRDPREAUTHTOKEN?,
		CKFR.ASKPAPERSUPPRESSION?,CKFR.PAPERSUPPRESSED?)>

<!-- CheckFree Extension: defined new aggregates to allow optional USERID and ACCTID-->
    <!ELEMENT (CKFR.PRESACCTTO , CKFR.PRESACCTFROM)   - -
		(BILLPUB,BILLERID,CKFR.BILLERACCTID?,CKFR.REMITACCTID?,ACCTID?,(PRESNAMEADDRESS|CKFR.PRESNAMEADDRESS)?,USERID?,
		CKFR.REMDREMAIL?,SPNAME?,PAYEELSTID2?,PAYACCT?,CKFR.AUTOPAY?,CKFR.EMAILEBILLS?,CKFR.SENDEMAILADDR?,
		PREAUTHTOKEN?,CKFR.SECONDPREAUTHTOKEN?,CKFR.THIRDPREAUTHTOKEN?,
		CKFR.ASKPAPERSUPPRESSION?,CKFR.PAPERSUPPRESSED?)>

    <!ELEMENT GROUPID                 - o %IDTYPE>
    <!ELEMENT REASON                  - o %MSGTYPE>
    <!ELEMENT PMTINSTRUMENTTYPE       - o %PMTINSTRUMENTENUM>
    <!ELEMENT BRAND                   - o %GENNAMETYPE>

    <!ELEMENT CKFR.SENDEMAILADDR - o %BOOLTYPE>

<!-- Added the 2 tags below for Spring 2003 Release -->
    <!ELEMENT CKFR.ASKPAPERSUPPRESSION - o %BOOLTYPE>
    <!ELEMENT CKFR.PAPERSUPPRESSED - o %BOOLTYPE>

<!-- CheckFree Extension: added CKFR.AUTOPAY -->
    <!ELEMENT CKFR.AUTOPAY - - (CKFR.AUTOPAYALWAYS,TRNAMT,BANKACCTFROM)>
    <!ELEMENT CKFR.AUTOPAYALWAYS - o %BOOLTYPE>

    <!-- Bill Delivery Transactions -->
<!-- CheckFree Extension: added CKFR.PRESLISTRQ, CKFR.PRESLISTRS -->
    <!ELEMENT PRESLISTTRNRQ    - - (%TRNRQMACRO, CKFR.RECCTRLIN?, (USERID|GROUPID)?, (PRESLISTRQ|CKFR.PRESLISTRQ))>
    <!ELEMENT PRESLISTTRNRS    - - (%TRNRSMACRO, CKFR.RECCTRLOUT?, (PRESLISTRS*|CKFR.PRESLISTRS*) )>


    <!ELEMENT PRESNOTIFYTRNRQ    - - (%TRNRQMACRO, PRESNOTIFYRQ)>
    <!ELEMENT PRESNOTIFYTRNRS    - - (%TRNRSMACRO, PRESNOTIFYRS?)>

<!-- CheckFree Extension: added notification inquiry -->
    <!ELEMENT CKFR.PRESBILLSTATUSINQTRNRQ - - (%TRNRQMACRO,CKFR.RECCTRLIN?,CKFR.PRESBILLSTATUSINQRQ)>
    <!ELEMENT CKFR.PRESBILLSTATUSINQTRNRS - - (%TRNRSMACRO,CKFR.RECCTRLOUT?,CKFR.PRESBILLSTATUSINQRS?)>

<!-- CheckFree Extension: added group maintenance requests -->
    <!ELEMENT CKFR.GROUPTRNRQ    - - (%TRNRQMACRO, CKFR.GROUPRQ)>
    <!ELEMENT CKFR.GROUPTRNRS    - - (%TRNRSMACRO, CKFR.GROUPRS?)>
    <!ELEMENT CKFR.GROUPDELTRNRQ    - - (%TRNRQMACRO, CKFR.GROUPDELRQ)>
    <!ELEMENT CKFR.GROUPDELTRNRS    - - (%TRNRSMACRO, CKFR.GROUPDELRS?)>
    <!ELEMENT CKFR.GROUPADDUSERTRNRQ    - - (%TRNRQMACRO, CKFR.GROUPADDUSERRQ)>
    <!ELEMENT CKFR.GROUPADDUSERTRNRS    - - (%TRNRSMACRO, CKFR.GROUPADDUSERRS?)>
    <!ELEMENT (CKFR.GROUPRQ,CKFR.GROUPRS,CKFR.GROUPDELRQ,CKFR.GROUPDELRS)	- - (GROUPID)>
    <!ELEMENT (CKFR.GROUPADDUSERRQ,CKFR.GROUPADDUSERRS) - - (GROUPID,USERID)>


<!-- CheckFree Extension: defined new requests to allow modification of an ebill summary-->
    <!ELEMENT CKFR.MODIFYBILLTRNRQ - - (%TRNRQMACRO,CKFR.MODIFYBILLRQ)>
    <!ELEMENT CKFR.MODIFYBILLTRNRS - - (%TRNRSMACRO,CKFR.MODIFYBILLRS?)>
    <!ELEMENT (CKFR.MODIFYBILLRQ,CKFR.MODIFYBILLRS) - -
	(BILLERID,CKFR.BILLERBILLID,CKFR.BILLERACCTID,AMTDUE?,MINAMTDUE?,PREVBAL?, ACTIVITY?, ACCTBAL?)>

    <!ELEMENT PRESLISTRQ       - - (BILLPUB, DTSTART?, DTEND?, BILLID?, NOTIFYWILLING, INCLUDEDETAIL)>

    <!ELEMENT CKFR.PRESLISTRQ  - - (BILLPUB, DTSTART?, DTEND?, BILLERID?, BILLID?, CKFR.RETRANSMITFLAG?,
                                    NOTIFYWILLING, INCLUDEDETAIL, CKFR.BILLSTATUS?, CKFR.BILLPROCSTATUS?,
                                    CKFR.INCLUDEBILLERINFO?, CKFR.COUNTONLY?)>

    <!ELEMENT PRESLISTRS       - - (BILLPUB, USERID, DTSTART, DTEND, PRESLIST?)>

    <!ELEMENT CKFR.PRESLISTRS  - - (BILLPUB, USERID, DTSTART, DTEND, BILLERID?, BILLID?, CKFR.RETRANSMITFLAG?,
                                    CKFR.BILLSTATUS?, CKFR.BILLPROCSTATUS?, (PRESLIST|CKFR.BILLCOUNT)?)>

<!-- CheckFree Extension: added CKFR.PRESBILLINFO -->
    <!ELEMENT PRESLIST         - - (PRESBILLINFO*|CKFR.PRESBILLINFO*)>

    <!ELEMENT PRESBILLINFO     - - (BILLID, PRESACCTFROM, PAYEEID2?, BILLREFINFO?, AMTDUE,
                                    MINAMTDUE?, DTPMTDUE, DTBILL, DTOPEN?, DTCLOSE?,
                                    PREVBAL?, ACTIVITY?, ACCTBAL?, INVOICE?, NOTIFYDESIRED,
                                    STMNTIMAGE?, (DETAILAVAILABLE|PRESDETAIL))>

    <!ELEMENT CKFR.PRESBILLINFO - - (BILLID?, CKFR.PRESACCTFROM, (PAYEEID2,SPNAME)?, BILLREFINFO?,
                                    CKFR.BILLSTATUS?, CKFR.BILLPROCSTATUS?, CKFR.RETRANSMITFLAG?, AMTDUE?,
                                    MINAMTDUE?, DTPMTDUE, DTBILL, DTOPEN?, DTCLOSE?,
                                    PREVBAL?, ACTIVITY?, ACCTBAL?, INVOICE?, NOTIFYDESIRED,
                                    STMNTIMAGE?, (DETAILAVAILABLE|PRESDETAIL),
                                    CKFR.BILLTYPE?, CKFR.BILLERLOGOURL?, CKFR.BILLERNAME?, CKFR.BILLERBILLID?,
                                    CKFR.TEASERADTEXT?, CKFR.TEASERADIMAGEURL?,
                                    CKFR.TEASERADURL?, CKFR.CUSTMAGNET?, CKFR.DUEDATETEXT?, CKFR.USEDUEDATETEXT?)>


    <!ELEMENT CKFR.DUEDATETEXT - o %CKFR_DUEDATETEXTTYPE>
    <!ELEMENT CKFR.USEDUEDATETEXT - o %BOOLTYPE>

    <!ELEMENT CKFR.CUSTMAGNET - - ( CKFR.CMSTATE, CKFR.ATTRACTURL?)>

    <!ELEMENT STMNTIMAGE     - - (IMAGEURL,PREFETCHURL?,DTEXPIRE?)>

    <!ELEMENT PRESDETAILTRNRQ  - - (%TRNRQMACRO, PRESDETAILRQ)>
    <!ELEMENT PRESDETAILRQ     - - (BILLID, BILLDETAILTABLETYPE?)>
    <!ELEMENT PRESDETAILTRNRS  - - (%TRNRSMACRO, PRESDETAILRS)>
    <!ELEMENT PRESDETAILRS   - - (PRESDETAIL*)>

    <!ELEMENT PRESDETAIL       - - (BILLID, PRESACCTFROM?, BILLDETAILTABLE*)>

    <!ELEMENT BILLDETAILTABLE        - - (TABLENAME, BILLDETAILTABLETYPE, BILLDETAILROW*)>

    <!ELEMENT BILLDETAILROW          - - (C|N)*>

    <!ELEMENT BILLTBLSTRUCTTRNRQ    - - (%TRNRQMACRO, BILLTBLSTRUCTRQ)>
    <!ELEMENT BILLTBLSTRUCTTRNRS    - - (%TRNRSMACRO, BILLTBLSTRUCTRS)>

    <!ELEMENT BILLTBLSTRUCTRQ  - - (BILLID, BILLDETAILTABLETYPE)>

    <!ELEMENT BILLTBLSTRUCTRS  - - (BILLID, BILLDETAILTABLETYPE, COLDEF*)>

    <!ELEMENT COLDEF                 - - (COLNAME, COLTYPE)>

<!-- CheckFree Extension: added new bill presentment notifications -->

    <!ELEMENT PRESNOTIFYRQ     - - (PRESDELIVERYID | CKFR.PRESVIEWEDID | CKFR.PRESVIEWEDDETAILID |
               CKFR.PRESPAIDID | CKFR.PRESPAIDOUTOFBANDID | CKFR.PRESRETIREDID | CKFR.PRESINACTIVEID |
		   CKFR.PRESDEMAGNETIZED)>

    <!ELEMENT PRESNOTIFYRS     - - (PRESDELIVERYID | CKFR.PRESVIEWEDID | CKFR.PRESVIEWEDDETAILID |
               CKFR.PRESPAIDID | CKFR.PRESPAIDOUTOFBANDID | CKFR.PRESRETIREDID | CKFR.PRESINACTIVEID |
               CKFR.PRESDEMAGNETIZED)>

    <!ELEMENT (PRESDELIVERYID , CKFR.PRESVIEWEDID ,
               CKFR.PRESPAIDID , CKFR.PRESPAIDOUTOFBANDID , CKFR.PRESRETIREDID ,
		   CKFR.PRESDEMAGNETIZED) - - (PRESACCTFROM?, (CKFR.BILLERBILLID | BILLID), DTSEEN)>

    <!ELEMENT (CKFR.PRESVIEWEDDETAILID , CKFR.PRESINACTIVEID) - - (CKFR.PRESACCTFROM?, (CKFR.BILLERBILLID | BILLID), DTSEEN)>

<!-- CheckFree Extension: added bill notification inquiry request/response -->
    <!ELEMENT CKFR.PRESBILLSTATUSINQRQ - - (GROUPID?,USERID?,BILLERID?,DTUPDATE?)>
    <!ELEMENT CKFR.PRESBILLSTATUSINQRS - - (GROUPID?,USERID?,BILLERID?,DTUPDATE?,CKFR.PRESBILLSTATUSINFO*)>


    <!ELEMENT NOTIFYWILLING   - o %BOOLTYPE>
    <!ELEMENT INCLUDEDETAIL   - o %BOOLTYPE>
    <!ELEMENT AMTDUE          - o %AMTTYPE>
    <!ELEMENT MINAMTDUE       - o %AMTTYPE>
    <!ELEMENT DTBILL          - o %DTTMTYPE>
    <!ELEMENT PREVBAL         - o %AMTTYPE>
    <!ELEMENT ACTIVITY        - o %AMTTYPE>
    <!ELEMENT ACCTBAL         - o %AMTTYPE>
    <!ELEMENT NOTIFYDESIRED   - o %BOOLTYPE>
    <!ELEMENT DETAILAVAILABLE - o %BOOLTYPE>
    <!ELEMENT IMAGEURL        - o %URL2TYPE>
    <!ELEMENT PREFETCHURL     - o %URL2TYPE>
    <!ELEMENT TABLENAME       - o %GENNAMETYPE>
    <!ELEMENT BILLDETAILTABLETYPE  - o %GENNAMETYPE>
    <!ELEMENT C               - o %MSGTYPE>
    <!ELEMENT N               - o %CHARTYPE>
    <!ELEMENT COLNAME         - o %GENNAMETYPE>
    <!ELEMENT COLTYPE         - o %COLUMNTYPE>
    <!ELEMENT DTSEEN          - o %DTTMTYPE>
    <!ELEMENT BILLID          - o %IDTYPE>

    <!ELEMENT CKFR.RETRANSMITFLAG    - o %BOOLTYPE>
    <!ELEMENT CKFR.BILLSTATUS        - o %CKFR_BILLSTATENUM>
    <!ELEMENT CKFR.BILLPROCSTATUS    - o %CKFR_BILLPROCSTATENUM>
    <!ELEMENT CKFR.BILLEVENT         - o %CKFR_BILLEVENTENUM>
    <!ELEMENT CKFR.INCLUDEBILLERINFO - o %BOOLTYPE>
    <!ELEMENT CKFR.COUNTONLY         - o %BOOLTYPE>
    <!ELEMENT CKFR.BILLCOUNT         - o %INTTYPE>
    <!ELEMENT CKFR.BILLTYPE          - o %CKFR_BILLENUM>
    <!ELEMENT CKFR.BILLERLOGOURL     - o %URL2TYPE>
    <!ELEMENT CKFR.BILLERNAME        - o %GENNAMETYPE>
    <!ELEMENT CKFR.BILLERBILLID      - o %CKFR_EBILLIDTYPE>

    <!ELEMENT CKFR.TEASERADTEXT      - o %CKFR_TEASERTYPE>
    <!ELEMENT CKFR.TEASERADIMAGEURL  - o %URL2TYPE>
    <!ELEMENT CKFR.TEASERADURL       - o %URL2TYPE>
    <!ELEMENT CKFR.REMDREMAIL        - o %BOOLTYPE>
    <!ELEMENT CKFR.BUSNAMEACCTHELD   - o %CKFR_BUSNAMETYPE>

    <!ELEMENT (CKFR.PREAUTHTOKENLABEL,CKFR.SECONDPREAUTHTOKENLABEL,CKFR.THIRDPREAUTHTOKENLABEL) - o %IDTYPE>
    <!ELEMENT (CKFR.BILLERACCTID , CKFR.REMITACCTID) - o %IDTYPE>
    <!ELEMENT CKFR.PRESBILLSTATUSINFO - - (PRESACCTFROM,BILLID,CKFR.BILLERBILLID,DTSEEN,CKFR.BILLEVENT)>

    <!ELEMENT CKFR.CMSTATE     - o %CKFR_CUSTMAGNETENUM>
    <!ELEMENT CKFR.ATTRACTURL  - o %URL2TYPE>
    <!ELEMENT CKFR.IMAGEURL - o %CKFR_URLTYPE>

    <!-- =============================== -->
    <!-- BILL PRESENTMENT EMAIL MESSAGES -->
    <!-- =============================== -->

    <!-- Synchronization -->
    <!ELEMENT PRESMAILSYNCRQ   - - (%SYNCRQMACRO , PRESMAILTRNRQ*)>
<!--#ELEMENT PRESMAILSYNCRQ #Link(TOKEN2, PRESDLVMSGSRQV1)-->

    <!ELEMENT PRESMAILSYNCRS   - - (%SYNCRSMACRO , PRESMAILTRNRS*)>
<!--#ELEMENT PRESMAILSYNCRS #Link(TOKEN2,PRESDLVMSGSRSV1)-->
<!--#ELEMENT PRESMAILSYNCRS #Link(SYNCERROR, PRESDLVMSGSRSV1)-->


    <!-- Bill Presentment Mail -->
    <!ELEMENT PRESMAILTRNRQ    - - (%TRNRQMACRO, PRESMAILRQ)>
    <!ELEMENT PRESMAILTRNRS    - - (%TRNRSMACRO, PRESMAILRS)>

    <!ELEMENT PRESMAILRQ       - - (PRESACCTFROM, MAIL)>
    <!ELEMENT PRESMAILRS       - - (PRESACCTFROM, MAIL)>

<!-- CheckFree Extension:  Added new notifications -->
<!ELEMENT CKFR.PRESBILLAVAILTRNRQ - - (%TRNRQMACRO,CKFR.RECCTRLIN?,CKFR.PRESBILLAVAILRQ)>
<!ELEMENT CKFR.PRESBILLAVAILTRNRS - - (%TRNRSMACRO,CKFR.RECCTRLOUT?,CKFR.PRESBILLAVAILRS?)>

<!ELEMENT CKFR.PRESTRANSMITBILLTRNRQ - - (%TRNRQMACRO,CKFR.PRESTRANSMITBILLRQ)>
<!ELEMENT CKFR.PRESTRANSMITBILLTRNRS - - (%TRNRSMACRO,CKFR.PRESTRANSMITBILLRS?)>

<!ELEMENT CKFR.PRESBILLAVAILRQ - - (GROUPID,DTSTART?)>
<!ELEMENT CKFR.PRESBILLAVAILRS - - (GROUPID,DTSTART?,CKFR.PRESEMAILINFO*)>
<!ELEMENT CKFR.PRESTRANSMITBILLRQ - - (CKFR.PRESBILLINFO?)>
<!ELEMENT CKFR.PRESTRANSMITBILLRS - - (SRVRTID2,CKFR.PRESBILLINFO?)>

<!ELEMENT CKFR.PRESEMAILINFO - - (USERID,FIRSTNAME,MIDDLENAME?,LASTNAME,CKFR.SBSRNAMEPREFIX?,EMAIL?)>
<!ELEMENT CKFR.BILLPROCID - o %IDTYPE>


<!-- Profile message set -->
<!ELEMENT (PROFMSGSRQV1, PROFMSGSRQV2)        - - ((PROFTRNRQ)+ )>
<!ELEMENT (PROFMSGSRSV1, PROFMSGSRSV2)        - - ((PROFTRNRS)+ )>

<!-- Profile entry for message set -->
<!ELEMENT PROFMSGSET        - - (PROFMSGSETV1?, PROFMSGSETV2?)>
<!ELEMENT (PROFMSGSETV1, PROFMSGSETV2)      - - (MSGSETCORE)>

<!-- No synchronization in this module -->

<!-- Transactions -->
<!ELEMENT PROFTRNRQ     - - (%TRNRQMACRO , PROFRQ)>
<!ELEMENT PROFTRNRS     - - (%TRNRSMACRO , PROFRS?)>

<!-- Messages -->

<!-- Message List -->
<!-- OFX 1.5 -->
<!-- Moved message set list from entity section to here -->
<!-- ADDED PRESDIRMSGSET, PRESDLVMSGSET -->
<!ENTITY % MSGSETMACRO "
                 (SIGNONMSGSET,
                  SIGNUPMSGSET?,
                  BANKMSGSET?,
                  CREDITCARDMSGSET?,
                  INVSTMTMSGSET?,
                  INTERXFERMSGSET?,
                  WIREXFERMSGSET?,
                  BILLPAYMSGSET?,
                  EMAILMSGSET?,
                  SECLISTMSGSET?,
                  PRESDIRMSGSET?,
                  PRESDLVMSGSET?,
                  PROFMSGSET?
                  %EXTRAMSGSETS
                  )">

<!ELEMENT MSGSETLIST    - - ( (%MSGSETMACRO)* )>


<!ELEMENT PROFRQ    - - (CLIENTROUTING , DTPROFUP)>
<!ELEMENT CLIENTROUTING - o %CLIENTROUTINGENUM>

<!-- version 2 adds URLGETREDIRECT -->
<!-- OFX 1.5 -->
<!-- ADDED URLGETREDIRECT -->
<!-- CHANGE URL TO (URL|URL2) -->
<!ELEMENT PROFRS    - - (MSGSETLIST , SIGNONINFOLIST , DTPROFUP,
                        FINAME, (ADDR1,(ADDR2,ADDR3?)?), CITY, STATE, POSTALCODE, COUNTRY,
                        CSPHONE?, TSPHONE?, FAXPHONE?, (URL|URL2)?, URLGETREDIRECT?, EMAIL? )>
<!--#ELEMENT PROFRS #Link(URL,PROFMSGSRSV1)-->
<!--#ELEMENT PROFRS #Link(URL2,PROFMSGSRSV2)-->
<!--#ELEMENT PROFRS #Link(URLGETREDIRECT,PROFMSGSRSV2)-->

<!ELEMENT FINAME        - o %GENNAMETYPE>
<!ELEMENT CSPHONE       - o %PHONETYPE>
<!ELEMENT TSPHONE       - o %PHONETYPE>
<!ELEMENT FAXPHONE      - o %PHONETYPE>

<!-- OFX 1.5 -->
<!-- ADDED URLGETREDIRECT -->
<!ELEMENT URLGETREDIRECT	- o %BOOLTYPE>

<!-- Signon realm info - version 2 adds pwtype for intl use -->
<!ELEMENT SIGNONINFOLIST    - - (SIGNONINFO*)>
<!-- OFX 1.5 -->
<!-- ADDED PWTYPE -->
<!ELEMENT SIGNONINFO        - - (SIGNONREALM , MIN , MAX ,
                                 CHARTYPE , CASESEN ,
                                 SPECIAL , SPACES, PINCH, CHGPINFIRST, PWTYPE?)>
<!--#ELEMENT SIGNONINFO #Link(PWTYPE, PROFMSGSETV2)-->

<!ELEMENT SIGNONREALM       - o %GENNAMETYPE>
<!ELEMENT MIN               - o %MAXMINTYPE>
<!ELEMENT MAX               - o %MAXMINTYPE>
<!ELEMENT CHARTYPE          - o %CHARTYPEENUM>
<!ELEMENT CASESEN           - o %BOOLTYPE>
<!ELEMENT SPECIAL           - o %BOOLTYPE>
<!ELEMENT SPACES            - o %BOOLTYPE>
<!ELEMENT PINCH             - o %BOOLTYPE>
<!ELEMENT CHGPINFIRST       - o %BOOLTYPE>
<!-- OFX 1.5 -->
<!ELEMENT PWTYPE            - o %PWTYPEENUM>

<!-- Message set core info - used by all XXXMSGSETVn -->
<!-- version 2 adds COUNTRY -->
<!-- OFX 1.5 -->
<!-- ADDED COUNTRY -->
<!-- CHANGE URL to URL+ -->
<!-- CHANGE URL TO (URL|URL2) -->
<!ELEMENT MSGSETCORE    - - (VER , (URL|URL2) , OFXSEC ,
                             TRANSPSEC , SIGNONREALM ,
                             LANGUAGE+, COUNTRY*, SYNCMODE, RESPFILEER, SPNAME? )>
<!--#ELEMENT MSGSETCORE #Link(URL,(SIGNONMSGSETV1 | SIGNUPMSGSETV1 | EMAILMSGSETV1 |
					BANKMSGSETV1 | CREDITCARDMSGSETV1 | INTERXFERMSGSETV1 | WIREXFERMSGSETV1 |
					SECLISTMSGSETV1 | PROFMSGSETV1 | BILLPAYMSGSETV1 | INVSTMTMSGSETV1))-->
<!--#ELEMENT MSGSETCORE #Link(URL2,(SIGNONMSGSETV2 | SIGNUPMSGSETV2 | EMAILMSGSETV2 |
					BANKMSGSETV2 | CREDITCARDMSGSETV2 | INTERXFERMSGSETV2 | WIREXFERMSGSETV2 |
					SECLISTMSGSETV2 | PROFMSGSETV2 | BILLPAYMSGSETV2 | INVSTMTMSGSETV2 |
					PRESDIRMSGSETV1 | PRESDLVMSGSETV1))-->
<!--#ELEMENT MSGSETCORE #Link(COUNTRY,(SIGNONMSGSETV2 | SIGNUPMSGSETV2 | EMAILMSGSETV2 |
					BANKMSGSETV2 | CREDITCARDMSGSETV2 | INTERXFERMSGSETV2 | WIREXFERMSGSETV2 |
					SECLISTMSGSETV2 | PROFMSGSETV2 | BILLPAYMSGSETV2 | INVSTMTMSGSETV2 |
					PRESDIRMSGSETV1 | PRESDLVMSGSETV1))-->

<!ELEMENT VER           - o %VERTYPE>
<!ELEMENT OFXSEC        - o %SECURITYENUM>
<!ELEMENT TRANSPSEC     - o %BOOLTYPE>
<!ELEMENT SYNCMODE      - o %SYNCENUM>
<!ELEMENT RESPFILEER    - o %BOOLTYPE>
<!ELEMENT SPNAME        - o %GENNAMETYPE>


<!--	============================================================================
	CheckFree Extension:  New Service Verification Message Set
	============================================================================
-->
<!ELEMENT CKFR.SVCVERIFYMSGSRQV1  - -     ((CKFR.ACCTVERIFYTRNRQ)+) >
<!ELEMENT CKFR.SVCVERIFYMSGSRSV1  - -     ((CKFR.ACCTVERIFYTRNRS)+)>

<!-- transactions -->
<!ELEMENT CKFR.ACCTVERIFYTRNRQ  - -     (%TRNRQMACRO, CKFR.ACCTVERIFYRQ)>
<!ELEMENT CKFR.ACCTVERIFYTRNRS  - -     (%TRNRSMACRO, CKFR.ACCTVERIFYRS?)>

<!-- request/response -->
<!ELEMENT CKFR.ACCTVERIFYRQ  - -     (BANKACCTFROM, ((CKFR.FIRSTTRNAMT,CKFR.SECONDTRNAMT)|CKFR.ELECTRONICREQD)  )>
<!ELEMENT CKFR.ACCTVERIFYRS  - -     (BANKACCTFROM)>

<!-- elements -->
<!ELEMENT CKFR.ELECTRONICREQD - o %BOOLTYPE>
<!ELEMENT (CKFR.FIRSTTRNAMT,CKFR.SECONDTRNAMT) - o %AMTTYPE>


<!-- ============================================================================= -->
<!--
    Open Financial Exchange Element Structure
    This section 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     | SIGNONMSGSRQV2),
                      (SIGNUPMSGSRQV1     | SIGNUPMSGSRQV2)?,
                      (BANKMSGSRQV1       | BANKMSGSRQV2)?,
                      (CREDITCARDMSGSRQV1 | CREDITCARDMSGSRQV2)?,
                      (INVSTMTMSGSRQV1    | INVSTMTMSGSRQV2)?,
                      (INTERXFERMSGSRQV1  | INTERXFERMSGSRQV2)?,
                      (WIREXFERMSGSRQV1   | WIREXFERMSGSRQV2)?,
                      (BILLPAYMSGSRQV1    | BILLPAYMSGSRQV2)?,
                      (EMAILMSGSRQV1      | EMAILMSGSRQV2)?,
                      (SECLISTMSGSRQV1    | SECLISTMSGSRQV2)?,
						PRESDIRMSGSRQV1?,
                        PRESDLVMSGSRQV1?,
                      (PROFMSGSRQV1       | PROFMSGSRQV2)?
						%EXTRARQMSGSETS">

<!ENTITY % OFXRSMSGSETS
                     "(SIGNONMSGSRSV1     | SIGNONMSGSRSV2),
                      (SIGNUPMSGSRSV1     | SIGNUPMSGSRSV2)?,
                      (BANKMSGSRSV1       | BANKMSGSRSV2)?,
                      (CREDITCARDMSGSRSV1 | CREDITCARDMSGSRSV2)?,
                      (INVSTMTMSGSRSV1    | INVSTMTMSGSRSV2)?,
                      (INTERXFERMSGSRSV1  | INTERXFERMSGSRSV2)?,
                      (WIREXFERMSGSRSV1   | WIREXFERMSGSRSV2)?,
                      (BILLPAYMSGSRSV1    | BILLPAYMSGSRSV2)?,
                      (EMAILMSGSRSV1      | EMAILMSGSRSV2)?,
                      (SECLISTMSGSRSV1    | SECLISTMSGSRSV2)?,
						PRESDIRMSGSRSV1?,
                        PRESDLVMSGSRSV1?,
                      (PROFMSGSRSV1       | PROFMSGSRSV2)?
						%EXTRARSMSGSETS">

<!ELEMENT OFX   - - ((%OFXRQMSGSETS) | (%OFXRSMSGSETS))>


<!-- Generic Elements and Common Aggregates -->

<!ELEMENT DTCLIENT  - o %DTTMTYPE>
<!ELEMENT USERID    - o %IDTYPE>
<!ELEMENT USERPASS  - o %PASSWORDTYPE>
<!ELEMENT USERKEY   - o %USERKEYTYPE>
<!ELEMENT GENUSERKEY        - o %BOOLTYPE>
<!ELEMENT (APPID,CKFR.INTEROPAPPID)     - o %APPIDTYPE>
<!ELEMENT (APPVER,CKFR.INTEROPAPPVER)    - o %INTTYPE>
<!ELEMENT DTSERVER  - o %DTTMTYPE>
<!ELEMENT TSKEYEXPIRE       - o     %DTTMTYPE>
<!ELEMENT CLTCOOKIE - o %IDTYPE>
<!ELEMENT TAN       - o %TANTYPE>

<!ELEMENT DESC      - o %SHORTMSGTYPE>
<!ELEMENT PHONE     - o %PHONETYPE>


<!-- general error reporting aggregate -->
<!-- OFX 1.5 -->
<!-- CHANGED MESSAGE TO (MESSAGE | MESSAGE2) -->
<!ELEMENT STATUS    - -     (CODE , SEVERITY , (MESSAGE | MESSAGE2)? )>
<!-- CheckFree extension: modified the constraint on MESSAGEx tag to allow either MESSAGE or MESSAGE2
     tag within the bill presentment message sets to alleviate confusion -->

<!--#ELEMENT STATUS #Link(MESSAGE,(SIGNONMSGSRQV1 | SIGNUPMSGSRQV1 | EMAILMSGSRQV1 |
					BANKMSGSRQV1 | INTERXFERMSGSRQV1 | WIREXFERMSGSRQV1 |
					BILLPAYMSGSRQV1 | INVSTMTMSGSRQV1 | PRESDIRMSGSRQV1 | PRESDLVMSGSRQV1 |
					SIGNONMSGSRSV1 | SIGNUPMSGSRSV1 | EMAILMSGSRSV1 |
					BANKMSGSRSV1 | INTERXFERMSGSRSV1 | WIREXFERMSGSRSV1 |
					BILLPAYMSGSRSV1 | INVSTMTMSGSRSV1 | PRESDIRMSGSRSV1 | PRESDLVMSGSRSV1 |
					CKFR.SVCVERIFYMSGSRSV1 ))-->
<!--#ELEMENT STATUS #Link(MESSAGE2,(SIGNONMSGSRQV2 | SIGNUPMSGSRQV2 | EMAILMSGSRQV2 |
					BANKMSGSRQV2 | INTERXFERMSGSRQV2 | WIREXFERMSGSRQV2 |
					BILLPAYMSGSRQV2 | INVSTMTMSGSRQV2 | PRESDIRMSGSRQV1 | PRESDLVMSGSRQV1 |
					SIGNONMSGSRSV2 | SIGNUPMSGSRSV2 | EMAILMSGSRSV2 |
					BANKMSGSRSV2 | INTERXFERMSGSRSV2 | WIREXFERMSGSRSV2 |
					BILLPAYMSGSRSV2 | INVSTMTMSGSRSV2 | PRESDIRMSGSRSV1 | PRESDLVMSGSRSV1 |
					CKFR.SVCVERIFYMSGSRSV1 ))-->


<!ELEMENT CODE              - o     %ERRORTYPE>
<!ELEMENT SEVERITY  - o     %SEVERITYENUM>

<!-- OFX 1.02 A-255 -->
<!ELEMENT MESSAGE   - o     %MSGTYPE>

<!-- OFX 1.5 -->
<!-- ADDED MESSAGE2, A-2000 -->
<!ELEMENT MESSAGE2   - o     %LONGMSGTYPE>

<!-- Balance record -->
<!ELEMENT BAL               - -     (NAME , DESC , BALTYPE , VALUE ,
                         DTASOF? , CURRENCY?)>
<!ELEMENT BALTYPE   - o %BALANCEENUM>
<!ELEMENT VALUE             - o %AMTTYPE>


<!--
    TRNUID - a UUID that uniquely identifies transactions
-->
<!ELEMENT TRNUID                    - o     %UUIDTYPE>


<!-- Server ID -->
<!ELEMENT SRVRTID   - o %SRVRIDTYPE>

<!-- OFX 1.5 -->
<!-- Server ID -->
<!ELEMENT SRVRTID2   - o %UUIDTYPE>

<!-- Transaction ID issued by financial institution.This ID is used to detect duplicate downloads -->
<!ELEMENT FITID             - o     %FITIDTYPE>

<!-- 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>
<!-- OFX 1.5 -->
<!ELEMENT TOKEN2            - o %UUIDTYPE>
<!ELEMENT REFRESH           - o %BOOLTYPE>
<!ELEMENT REJECTIFMISSING   - o %BOOLTYPE>
<!ELEMENT LOSTSYNC          - o %BOOLTYPE>
<!ELEMENT SYNCERROR         - o %ERRORTYPE>

<!ELEMENT URL               - o %URLTYPE>
<!ELEMENT URL2              - o %URL2TYPE>
<!ELEMENT INCIMAGES     - o %BOOLTYPE>


<!-- Name & Address-related fields used in several messages -->

<!ELEMENT FIRSTNAME     - o %GENNAMETYPE>
<!ELEMENT MIDDLENAME    - o %GENNAMETYPE>
<!ELEMENT LASTNAME      - o %GENNAMETYPE>

<!--  Payees address lines (1 or more) -->
<!ELEMENT ADDR1     - o %ADDRESSTYPE>
<!ELEMENT ADDR2     - o %ADDRESSTYPE>
<!ELEMENT ADDR3     - o %ADDRESSTYPE>

<!--  Payees city  -->
<!ELEMENT CITY      - o %ADDRESSTYPE>

<!--  Payees state -->
<!ELEMENT STATE     - o %STATETYPE>

<!--  Zip code -->
<!ELEMENT POSTALCODE        - o %ZIPTYPE>

<!--  Payees country -->
<!ELEMENT COUNTRY   - o %COUNTRYTYPE>

<!ELEMENT DAYPHONE      - o %PHONETYPE>
<!ELEMENT EVEPHONE      - o %PHONETYPE>
<!ELEMENT EMAIL         - o %SHORTMSGTYPE>


<!-- ============================================================================= -->
<!--            Common between banking, billpay and/or investments                 -->
<!-- ============================================================================= -->

<!-- Bank account -->
<!-- OFX 1.5 -->
<!-- CHANGED ACCTTYPE TO (ACCTTYPE|ACCTTYPE2) -->
<!-- CheckFree Extension: added CKFR.EXTBANKACCTXXX -->

<!ELEMENT (CKFR.EXTBANKACCTFROM , CKFR.EXTBANKACCTTO) - - (DESC?,CKFR.NICKNAME?,PHONE?,CKFR.PAPERRTN?,
                                                CKFR.PAPERACCTID?, CKFR.ELECRTN?, CKFR.ELECACCTID?,
                                                CKFR.STARTCHECKNUMBER?,CKFR.PAN?,CKFR.DTPANEXPIRATION?,
						CKFR.PRIORITYCODE?,SUPTXDL?,XFERSRC?,XFERDEST?,
						NAME?, CKFR.NAME2?, ADDR1?, ADDR2?, ADDR3?, CITY?, STATE?,
                                   POSTALCODE?, COUNTRY?, CKFR.BILLINGACCT?, CKFR.P2PRECVACCT?,
                                   CKFR.EFTTYPE?,CKFR.CONFMSTATUS?,CKFR.PREFERREDFUNDACCT?)>

<!ELEMENT CKFR.PAPERRTN 	- o %BANKIDTYPE>
<!ELEMENT (CKFR.PAPERACCTID,CKFR.PAN) 	- o %ACCTIDTYPE>
<!ELEMENT CKFR.BILLINGACCT - o %BOOLTYPE>
<!ELEMENT CKFR.DTPANEXPIRATION 	- o %DTTMTYPE>
<!ELEMENT CKFR.ELECRTN 		- o %BANKIDTYPE>
<!ELEMENT CKFR.ELECACCTID 	- o %ACCTIDTYPE>
<!ELEMENT CKFR.STARTCHECKNUMBER	- o %CKFR_CHECKNUMTYPE>
<!ELEMENT CKFR.PRIORITYCODE 	- o %CKFR_PRIORITYCODEENUM>
<!ELEMENT CKFR.NAME2 		- o %CKFR_NAMETYPE>
<!ELEMENT CKFR.P2PRECVACCT    - o %BOOLTYPE>
<!ELEMENT CKFR.EFTTYPE    - o %CKFR_EFTTYPEENUM>
<!ELEMENT (CKFR.UNCFMSENDMAX,CKFR.UNCFMRECVMAX)	- o %AMTTYPE>
<!ELEMENT CKFR.CONFMSTATUS - o %CKFR_CONFMSTATUSENUM>
<!ELEMENT CKFR.PREFERREDFUNDACCT - o %BOOLTYPE>

<!ELEMENT BANKACCTFROM - - (BANKID , BRANCHID? , ACCTID ,
                                        (ACCTTYPE|ACCTTYPE2) , ACCTKEY?, CKFR.EXTBANKACCTFROM?)>
<!--#ELEMENT BANKACCTFROM #Link(ACCTTYPE,(SIGNUPMSGSRQV1 | BANKMSGSRQV1 | INTERXFERMSGSRQV1 |
					WIREXFERMSGSRQV1 | BILLPAYMSGSRQV1 | INVSTMTMSGSRQV1 |
					SIGNUPMSGSRSV1 | BANKMSGSRSV1 | INTERXFERMSGSRSV1 | WIREXFERMSGSRSV1 |
					BILLPAYMSGSRSV1 | INVSTMTMSGSRSV1))-->

<!--#ELEMENT BANKACCTFROM #Link(ACCTTYPE2,(SIGNUPMSGSRQV2 | BANKMSGSRQV2 | INTERXFERMSGSRQV2 |
					WIREXFERMSGSRQV2 | BILLPAYMSGSRQV2 | INVSTMTMSGSRQV2 | PRESDIRMSGSRQV1 | PRESDLVMSGSRQV1 |
					SIGNUPMSGSRSV2 | BANKMSGSRSV2 | INTERXFERMSGSRSV2 | WIREXFERMSGSRSV2 |
					BILLPAYMSGSRSV2 | INVSTMTMSGSRSV2 | PRESDIRMSGSRSV1 | PRESDLVMSGSRSV1 |
					CKFR.SVCVERIFYMSGSRQV1 | CKFR.SVCVERIFYMSGSRSV1))-->

<!--#ELEMENT BANKACCTFROM #Link(CKFR.EXTBANKACCTFROM,(SIGNUPMSGSRQV2 | BANKMSGSRQV2 | INTERXFERMSGSRQV2 |
					WIREXFERMSGSRQV2 | BILLPAYMSGSRQV2 | INVSTMTMSGSRQV2 | PRESDIRMSGSRQV1 | PRESDLVMSGSRQV1 |
					SIGNUPMSGSRSV2 | BANKMSGSRSV2 | INTERXFERMSGSRSV2 | WIREXFERMSGSRSV2 |
					BILLPAYMSGSRSV2 | INVSTMTMSGSRSV2 | PRESDIRMSGSRSV1 | PRESDLVMSGSRSV1 |
					CKFR.SVCVERIFYMSGSRQV1 | CKFR.SVCVERIFYMSGSRSV1))-->

<!-- V2 adds extbankacctto for international only -->
<!-- OFX 1.5 -->
<!-- ADDED EXTBANKACCTTO -->
<!-- CHANGED ACCTTYPE TO (ACCTTYPE|ACCTTYPE2) -->
<!ELEMENT BANKACCTTO - - (BANKID , BRANCHID? , ACCTID ,
                                        (ACCTTYPE|ACCTTYPE2) , ACCTKEY?, EXTBANKACCTTO?, CKFR.EXTBANKACCTTO?)>
<!--#ELEMENT BANKACCTTO #Link(ACCTTYPE,(SIGNUPMSGSRQV1 | BANKMSGSRQV1 | INTERXFERMSGSRQV1 |
					WIREXFERMSGSRQV1 | BILLPAYMSGSRQV1 | INVSTMTMSGSRQV1 |
					SIGNUPMSGSRSV1 | BANKMSGSRSV1 | INTERXFERMSGSRSV1 | WIREXFERMSGSRSV1 |
					BILLPAYMSGSRSV1 | INVSTMTMSGSRSV1))-->
<!--#ELEMENT BANKACCTTO #Link(ACCTTYPE2,(SIGNUPMSGSRQV2 | BANKMSGSRQV2 | INTERXFERMSGSRQV2 |
					WIREXFERMSGSRQV2 | BILLPAYMSGSRQV2 | INVSTMTMSGSRQV2 | PRESDIRMSGSRQV1 | PRESDLVMSGSRQV1 |
					SIGNUPMSGSRSV2 | BANKMSGSRSV2 | INTERXFERMSGSRSV2 | WIREXFERMSGSRSV2 |
					BILLPAYMSGSRSV2 | INVSTMTMSGSRSV2 | PRESDIRMSGSRSV1 | PRESDLVMSGSRSV1))-->
<!--#ELEMENT BANKACCTTO #Link(EXTBANKACCTTO,(SIGNUPMSGSRQV2 | BANKMSGSRQV2 | INTERXFERMSGSRQV2 |
					WIREXFERMSGSRQV2 | BILLPAYMSGSRQV2 | INVSTMTMSGSRQV2 | PRESDIRMSGSRQV1 | PRESDLVMSGSRQV1 |
					SIGNUPMSGSRSV2 | BANKMSGSRSV2 | INTERXFERMSGSRSV2 | WIREXFERMSGSRSV2 |
					BILLPAYMSGSRSV2 | INVSTMTMSGSRSV2 | PRESDIRMSGSRSV1 | PRESDLVMSGSRSV1))-->
<!--#ELEMENT BANKACCTTO #Link(CKFR.EXTBANKACCTTO,(SIGNUPMSGSRQV2 | BANKMSGSRQV2 | INTERXFERMSGSRQV2 |
					WIREXFERMSGSRQV2 | BILLPAYMSGSRQV2 | INVSTMTMSGSRQV2 | PRESDIRMSGSRQV1 | PRESDLVMSGSRQV1 |
					SIGNUPMSGSRSV2 | BANKMSGSRSV2 | INTERXFERMSGSRSV2 | WIREXFERMSGSRSV2 |
					BILLPAYMSGSRSV2 | INVSTMTMSGSRSV2 | PRESDIRMSGSRSV1 | PRESDLVMSGSRSV1))-->

<!-- Credit card account -->

<!ELEMENT (CCACCTFROM,CCACCTTO) - - (ACCTID , ACCTKEY?)>

<!-- extbankacctto for international only, v2 only, CHE, DEU or ITA only -->
<!-- OFX 1.5 -->
<!-- NEW Aggregate -->
<!ELEMENT EXTBANKACCTTO - - (BANKNAME?, BANKBRANCH?, BANKCITY?, BANKPOSTALCODE?, CHE.PTTACCTID?)>
<!ELEMENT BANKNAME          - o     %GENNAMETYPE>
<!ELEMENT BANKBRANCH        - o     %GENNAMETYPE>
<!ELEMENT BANKCITY          - o     %ADDRESSTYPE>
<!ELEMENT BANKPOSTALCODE    - o     %ZIPTYPE>
<!ELEMENT CHE.PTTACCTID     - o     %BANKIDTYPE>

<!-- Routing & transit number -->
<!ELEMENT BANKID            - o     %BANKIDTYPE>

<!-- Bank identifier for international banks -->
<!ELEMENT BRANCHID          - o     %ACCTIDTYPE>

<!-- Account number -->
<!ELEMENT ACCTID            - o %ACCTIDTYPE>

<!-- Type of account.  -->
<!ELEMENT ACCTTYPE          - o %ACCOUNTENUM>
<!-- OFX 1.5 -->
<!-- ADDED ACCTTYPE2 -->
<!ELEMENT ACCTTYPE2         - o %ACCOUNTENUM2>

<!-- Checksum for international banks -->
<!ELEMENT ACCTKEY           - o %ACCTIDTYPE>

<!-- 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 %FITIDTYPE>


<!--
 Actions can be REPLACE or DELETE.
 REPLACE replaces the transaction referenced by CORRECTFITID; DELETE deletes it.
-->
<!ELEMENT CORRECTACTION     - o     %CORRECTIVEACTENUM>

<!-- Payee name or description -->
<!ELEMENT NAME              - o %GENNAMETYPE>

<!-- Extra information (not in <NAME>), A-255 -->
<!ELEMENT MEMO      - o     %MSGTYPE>

<!-- OFX 1.5 -->
<!-- NEW Type, Only used in V2 message sets -->
<!-- Extra information (not in <NAME>), A-390 -->
<!ELEMENT MEMO2     - o     %MEMO2TYPE>

<!-- Marketing information -->
<!ELEMENT MKTGINFO  - o %INFOTYPE>

<!-- 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>

<!-- Value date, not used in US -->
<!ELEMENT DTAVAIL   - o     %DTTMTYPE>


<!-- ============================================================================= -->
<!--        Recurring models and instances                                         -->
<!-- ============================================================================= -->

<!-- If the response is generated by a recurring model, this ID references it -->
<!ELEMENT RECSRVRTID        - o     %SRVRIDTYPE>
<!-- OFX 1.5 -->
<!-- ADDED RECSRVRTID2 OF UUIDTYPE -->
<!ELEMENT RECSRVRTID2       - o     %UUIDTYPE>



<!-- Recurring Instructions aggregate -->
<!-- CheckFree Extension: add DTEND to RECURRINST -->
<!ELEMENT RECURRINST - - (NINSTS?, DTEND?, FREQ)>
<!--#ELEMENT RECURRINST #Link (DTEND,(BANKMSGSRQV2 | INTERXFERMSGSRQV2 |
					WIREXFERMSGSRQV2 | BILLPAYMSGSRQV2 | INVSTMTMSGSRQV2 |
					BANKMSGSRSV2 | INTERXFERMSGSRSV2 | WIREXFERMSGSRSV2 |
					BILLPAYMSGSRSV2 | INVSTMTMSGSRSV2 )) -->

<!-- Number of instances. If this tag is omitted, the schedule is open-ended -->
<!ELEMENT NINSTS    - o     %NINSTSTYPE>

<!-- Frequency -->
<!ELEMENT FREQ      - o     %FREQENUM>

<!--
 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 %LANGUAGEENUM>

<!ELEMENT (CURRENCY, ORIGCURRENCY)  - - (CURRATE , CURSYM)>
<!ELEMENT CURSYM        - o %CURRENCYENUM>
<!ELEMENT CURRATE       - o %RATETYPE>
<!ELEMENT CURDEF        - o %CURRENCYENUM>

<!-- ============================================================================= -->
<!--            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     %DAYSPANTYPE>

<!-- supports value date, dtavail (should be N in US) -->
<!ELEMENT SUPPORTDTAVAIL - o    %BOOLTYPE>

<!-- Day where processing is unavailable (MONDAY, TUESDAY, etc) -->
<!ELEMENT PROCDAYSOFF       - o     %DAYSENUM>

<!-- Cut off time for day's processing -->
<!ELEMENT PROCENDTM         - o     %TMTYPE>

<!-- supports delivery of images as multi-part MIME -->
<!ELEMENT CANSUPPORTIMAGES    - o   %BOOLTYPE>

<!-- ================================================================== -->
<!--	Record Control Aggregates					            -->
<!-- ================================================================== -->

<!ELEMENT CKFR.RECCTRLIN - - (CKFR.MAXREC,CKFR.CURSOR?)>
<!ELEMENT CKFR.RECCTRLOUT - - (CKFR.SENTREC,CKFR.CURSOR?)>
<!ELEMENT (CKFR.MAXREC,CKFR.SENTREC) - o %INTTYPE>
<!ELEMENT CKFR.CURSOR - o %LONGMSGTYPE>

<!-- ========================================================================================= -->
<!-- This is the start of the P2P DTD module. For readability, we put all the P2P definitions  -->
<!-- here.                                                                                     -->
<!-- ========================================================================================= -->

<!--============================================================-->
<!-- P2P Macros and enums                                       -->
<!--============================================================-->
<!ENTITY % CKFR_P2PPMTENUM "(#PCDATA)">

<!ENTITY % CKFR_P2PPMTSTATUSENUM "(#PCDATA)">

<!ENTITY % CKFR_P2PDIRECTIONINDENUM "(#PCDATA)">

<!ENTITY % CKFR_P2PSVCSTATUSENUM "(#PCDATA)">

<!ENTITY % CKFR.P2PDELIVERSRCENUM "(#PCDATA)">

<!ENTITY % CKFR_P2PPMTSTATUSREASONENUM "(#PCDATA)">


<!--============================================================-->
<!-- P2P Transaction Requests                                   -->
<!-- P2P txns are grouped under the BILLPAYMSGSRQV2 message set -->
<!--============================================================-->

<!ELEMENT CKFR.P2PPMTTRNRQ 		- - (%TRNRQMACRO, (CKFR.P2PPMTRQ|CKFR.P2PPMTCANCRQ|CKFR.P2PPMTFEEINQRQ))>
<!ELEMENT CKFR.P2PINVITETRNRQ 	- - (%TRNRQMACRO, CKFR.P2PINVITERQ)>
<!ELEMENT CKFR.P2PPMTLSTTRNRQ 	- - (%TRNRQMACRO, CKFR.P2PPMTLSTRQ)>
<!ELEMENT CKFR.P2PPAYEETRNRQ 		- - (%TRNRQMACRO, (CKFR.P2PPAYEERQ|CKFR.P2PPAYEEMODRQ|CKFR.P2PPAYEEDELRQ))>
<!ELEMENT CKFR.P2PPAYEELSTTRNRQ 	- - (%TRNRQMACRO, CKFR.P2PPAYEELSTRQ)>
<!ELEMENT CKFR.P2PSBSRRISKINQTRNRQ 	- - (%TRNRQMACRO, CKFR.P2PSBSRRISKINQRQ)>

<!--============================================================-->
<!-- P2P Transaction Responses                                  -->
<!-- P2P txns are grouped under the BILLPAYMSGSRSV2 message set -->
<!--============================================================-->
<!ELEMENT CKFR.P2PPMTTRNRS 		- - (%TRNRSMACRO, (CKFR.P2PPMTRS|CKFR.P2PPMTCANCRS|CKFR.P2PPMTFEEINQRS)?)>
<!ELEMENT CKFR.P2PINVITETRNRS 	- - (%TRNRSMACRO, CKFR.P2PINVITERS?)>
<!ELEMENT CKFR.P2PPMTLSTTRNRS 	- - (%TRNRSMACRO, CKFR.P2PPMTLSTRS?)>

<!ELEMENT CKFR.P2PPAYEETRNRS 		- - (%TRNRSMACRO, (CKFR.P2PPAYEERS|CKFR.P2PPAYEEMODRS|CKFR.P2PPAYEEDELRS)?)>
<!ELEMENT CKFR.P2PPAYEELSTTRNRS 	- - (%TRNRSMACRO, CKFR.P2PPAYEELSTRS?)>

<!ELEMENT CKFR.P2PSBSRRISKINQTRNRS 	- - (%TRNRSMACRO, CKFR.P2PSBSRRISKINQRS?)>

<!--============================================================-->
<!-- P2P Requests                                               -->
<!--============================================================-->

<!ELEMENT (CKFR.P2PPMTRQ,CKFR.P2PPMTFEEINQRQ) - - (CKFR.P2PPMTTYPE,TRNAMT,BANKACCTFROM,CKFR.P2PMESSAGE?,
					((EMAIL,LASTNAME)|(PAYEELSTID2,CKFR.PODADDRTO?)|BANKACCTTO),
					CKFR.P2PPMTHOLDDAYS?)>
<!ELEMENT CKFR.P2PINVITERQ - - (EMAIL,CKFR.P2PMESSAGE?)>
<!ELEMENT CKFR.P2PPMTCANCRQ - - (SRVRTID2,(CKFR.SUBSCRIBERID,FID)?)>
<!ELEMENT CKFR.P2PPMTLSTRQ - - (SRVRTID2|(CKFR.P2PPMTSTATUS?,CKFR.P2PPMTTYPE?,PAYEELSTID2?,BANKACCTFROM?,
						DTSTART?,DTEND?))>

<!ELEMENT CKFR.P2PPAYEERQ - - (EMAIL,LASTNAME,CKFR.NICKNAME?)>
<!ELEMENT CKFR.P2PPAYEEMODRQ - - (PAYEELSTID2,CKFR.NICKNAME)>
<!ELEMENT CKFR.P2PPAYEEDELRQ - - (PAYEELSTID2)>
<!ELEMENT CKFR.P2PPAYEELSTRQ - - ((PAYEELSTID2|CKFR.NICKNAME|EMAIL)?)>

<!ELEMENT CKFR.P2PSBSRRISKINQRQ - - %EMPTYTYPE>

<!--============================================================-->
<!-- P2P Responses                                              -->
<!--============================================================-->
<!ELEMENT CKFR.P2PPMTRS - - (CKFR.P2PPMTINFO)>
<!ELEMENT CKFR.P2PINVITERS - - %EMPTYTYPE>
<!ELEMENT CKFR.P2PPMTCANCRS - - %EMPTYTYPE>
<!ELEMENT CKFR.P2PPMTFEEINQRS - - (DTDUE,CKFR.P2PDAYSTOHOLD,CKFR.P2PPMTDTRELEASE?,FEE)>
<!ELEMENT CKFR.P2PPMTLSTRS - - (CKFR.P2PPMTINFO*)>

<!ELEMENT CKFR.P2PPAYEERS - - (CKFR.P2PPAYEE)>
<!ELEMENT CKFR.P2PPAYEEMODRS - - %EMPTYTYPE>
<!ELEMENT CKFR.P2PPAYEEDELRS - - %EMPTYTYPE>
<!ELEMENT CKFR.P2PPAYEELSTRS - - (CKFR.P2PPAYEE*)>
<!ELEMENT CKFR.P2PSBSRRISKINQRS - - (CKFR.P2PSBSRRISKINFO)>

<!--============================================================-->
<!-- P2P Aggregates and Elements                                -->
<!--============================================================-->

<!ELEMENT CKFR.P2PPMTINFO - - (SRVRTID2,CKFR.P2PPMTTYPE,CKFR.P2PPMTSTATUS,TRNAMT,DTDUE,CKFR.P2PPMTDTRELEASE?,
					 CKFR.P2PMESSAGE?,BANKACCTFROM?,BANKACCTTO?,CKFR.P2PDIRECTIONIND,EMAIL?,
					 PAYEELSTID2?,CKFR.NICKNAME?,(CKFR.SUBSCRIBERID,FID)?,LASTNAME?,FIRSTNAME?,CKFR.P2PSVCSTATUS?,
					 (CKFR.P2PDTDELIVER,CKFR.P2PDELIVERCONFM?,CKFR.P2PDELIVERSRC,CKFR.PODADDRTO,CKFR.PODADDRFROM?)?,
					 CKFR.P2PPMTSTATUSREASON?,FEE,DESC?,CKFR.P2PEPM)>

<!ELEMENT CKFR.P2PPAYEE - - (PAYEELSTID2,CKFR.NICKNAME?,CKFR.SUBSCRIBERID,FID,LASTNAME,FIRSTNAME,CKFR.P2PSVCSTATUS)>

<!ELEMENT CKFR.P2PSBSRRISKINFO - -  (CKFR.P2PAMTLIMIT,CKFR.P2PDLYAMTLIMIT,CKFR.P2PDLYAMTAVAIL,CKFR.P2PWKLYAMTLIMIT,
						 CKFR.P2PWKLYAMTAVAIL,CKFR.P2PXFERAMTLIMIT,CKFR.P2PXFERDLYAMTLIMIT,
						 CKFR.P2PXFERDLYAMTAVAIL,CKFR.P2PXFERDLYAMTTOTAL,CKFR.P2PDLYTXNLIMIT,
						 CKFR.P2PDLYTXNAVAIL,CKFR.P2PWKLYTXNLIMIT,CKFR.P2PWKLYTXNAVAIL,CKFR.P2PXFERDLYTXNLIMIT,
						 CKFR.P2PXFERDLYTXNAVAIL,CKFR.P2PXFERDLYTXNTOTAL,CKFR.P2PPMTHOLDDAYS,CKFR.P2PXFERHOLDDAYS,
						 CKFR.P2PXFERWKLYAMTLIMIT,CKFR.P2PXFERWKLYTXNLIMIT,CKFR.P2PXFERWKLYAMTAVAIL,CKFR.P2PXFERWKLYTXNAVAIL)>

<!ELEMENT CKFR.P2PMESSAGE 		- o %MSGTYPE>
<!ELEMENT CKFR.P2PPMTTYPE		- o %CKFR_P2PPMTENUM>
<!ELEMENT CKFR.P2PPMTSTATUS 		- o %CKFR_P2PPMTSTATUSENUM>
<!ELEMENT (CKFR.P2PPMTDTRELEASE,CKFR.P2PDTDELIVER)
						- o %DTTMTYPE>
<!ELEMENT CKFR.P2PDIRECTIONIND 	- o %CKFR_P2PDIRECTIONINDENUM>
<!ELEMENT CKFR.P2PSVCSTATUS 		- o %CKFR_P2PSVCSTATUSENUM>
<!ELEMENT CKFR.P2PDELIVERCONFM 	- o %IDTYPE>
<!ELEMENT CKFR.P2PDELIVERSRC 		- o %CKFR.P2PDELIVERSRCENUM>
<!ELEMENT CKFR.P2PPMTSTATUSREASON	- o %CKFR_P2PPMTSTATUSREASONENUM>
<!ELEMENT CKFR.P2PEPM			- o %BOOLTYPE>
<!ELEMENT (CKFR.P2PAMTLIMIT,CKFR.P2PDLYAMTLIMIT,CKFR.P2PDLYAMTAVAIL,CKFR.P2PWKLYAMTLIMIT,CKFR.P2PWKLYAMTAVAIL,
           CKFR.P2PXFERAMTLIMIT,CKFR.P2PXFERDLYAMTLIMIT,CKFR.P2PXFERDLYAMTAVAIL,CKFR.P2PXFERDLYAMTTOTAL,
	     CKFR.P2PXFERWKLYAMTLIMIT,CKFR.P2PXFERWKLYAMTAVAIL)
						- o %AMTTYPE>
<!ELEMENT (CKFR.P2PDAYSTOHOLD,CKFR.P2PDLYTXNLIMIT,CKFR.P2PDLYTXNAVAIL,CKFR.P2PWKLYTXNLIMIT,CKFR.P2PWKLYTXNAVAIL,CKFR.P2PXFERDLYTXNLIMIT,
	     CKFR.P2PXFERDLYTXNAVAIL,CKFR.P2PXFERDLYTXNTOTAL,CKFR.P2PPMTHOLDDAYS,CKFR.P2PXFERHOLDDAYS,
           CKFR.P2PXFERWKLYTXNLIMIT,CKFR.P2PXFERWKLYTXNAVAIL)
						- o %INTTYPE>

<!ELEMENT (CKFR.PODADDRFROM,CKFR.PODADDRTO) - - (NAME,ADDR1,ADDR2?,CITY,STATE,POSTALCODE)>

<!-- Agent Payments -->
<!ELEMENT CKFR.AGENTPMTTRNRQ 		- - (%TRNRQMACRO,CKFR.AGENTPMTRQ)>
<!ELEMENT CKFR.AGENTPMTRQ - - (CKFR.MERCHANTID,NAME,PAYACCT,POSTALCODE,FIRSTNAME,MIDDLENAME?,
					 LASTNAME,PHONE?,TRNAMT,CKFR.CHKDUPPMT,CKFR.SKIPPROC)>
<!ELEMENT CKFR.AGENTPMTTRNRS 		- - (%TRNRSMACRO,CKFR.AGENTPMTRS?)>
<!ELEMENT CKFR.AGENTPMTRS - - (SRVRTID2,CKFR.MERCHANTID,NAME,PAYACCT,POSTALCODE,FIRSTNAME,MIDDLENAME?,
					 LASTNAME,TRNAMT,DTDUE,CKFR.EXPECTEDPOSTDT)>
<!ELEMENT (CKFR.CHKDUPPMT,CKFR.SKIPPROC) - o %BOOLTYPE>

<!ELEMENT CKFR.EXPECTEDPOSTDT - o %DTTMTYPE>


<!-- FEE INQUIRY -->

<!-- ============================================================================= -->
<!-- Requests                                                                      -->
<!-- ============================================================================= -->

<!ELEMENT CKFR.XFERFEEINQTRNRQ 		- - (%TRNRQMACRO,CKFR.XFERFEEINQRQ)>

<!-- CheckFree Extension: added CKFR.XFERFEEINQRQ -->
<!ELEMENT CKFR.XFERFEEINQRQ - - (CKFR.XFERPMTINFO+)>



<!-- ============================================================================= -->
<!-- Responses                                                                     -->
<!-- ============================================================================= -->

<!ELEMENT CKFR.XFERFEEINQTRNRS 		- - (%TRNRSMACRO,CKFR.XFERFEEINQRS?)>

<!-- CheckFree Extension: added CKFR.XFERFEEINQRS -->
<!ELEMENT CKFR.XFERFEEINQRS - - (CKFR.XFERFEEINFO+)>



<!-- ============================================================================= -->
<!--                    Aggregates                                                 -->
<!-- ============================================================================= -->

<!-- CheckFree Extension: added CKFR.XFERFEEINFO -->
<!ELEMENT CKFR.XFERPMTINFO - - (PAYEELSTID2, DTDUE, TRNAMT)>
<!ELEMENT CKFR.XFERFEEINFO - - (PAYEELSTID2, DTDUE, TRNAMT, ((CKFR.PMTDTRELEASE, CKFR.DAYSTOHOLD, FEE) | (CODE, MESSAGE2)))>

<!ELEMENT CKFR.DAYSTOHOLD - o %INTTYPE>
<!ELEMENT CKFR.PMTDTRELEASE - o %DTTMTYPE>


]>


