<!--
==============================================================================
                              paymentService DTD
                     All rights reserved, subject to change

                                   Version 1.4.2

==============================================================================
-->

<!-- ROOT ELEMENT -->
<!-- ============ -->
<!--
The root element paymentService needs two attributes :
- version : The DTD version.
- merchantCode : The code that identifies the merchantApmPaymentMethodConfigServiceTest

The paymentService can have the following child elements:
- submit : merchants submit information to the payment service like orders or batches
- modify : merchants send modify requests to modify orders or batches
- inquiry: merchants can inquire the status of orders or batches
- reply  : the payment service will always respond with a reply message. Only the payment service can send
           reply messages
- notify : when the payment service sends merchants information about the status of an order, or order- or
           transfer reports, the notify element is used
-->
<!ELEMENT paymentService  ( submit | modify | inquiry | reply | notify | verify)>
<!ATTLIST paymentService  version       ( 1.4 | 1.3 | 1.2 | 1.1 | 1.0 )  #REQUIRED
                          merchantCode NMTOKEN  #IMPLIED >


<!-- CHILD ELEMENTS OF PAYMENTSERVICE ELEMENT -->
<!-- ======================================== -->
<!-- This describes the different services that are provided within
     the Paymentservice
-->
<!ELEMENT submit  (order | orderBatch | shopper | futurePayAgreement | makeFuturePayPayment | identifyMeRequest | paymentTokenCreate | challenge | createAccessToken)>

<!ELEMENT modify  (orderModification | batchModification | accountBatchModification | futurePayAgreementModification | paymentTokenUpdate | paymentTokenDelete
		| deleteNetworkPaymentToken)>

<!ELEMENT inquiry (orderInquiry | klarnaConfirmationInquiry | batchInquiry | accountBatchInquiry | refundableAmountInquiry | shopperAuthentication |
		priceInquiry | bankAccountInquiry | identifyMeInquiry | paymentOptionsInquiry | cardAuthenticationCapabilitiesInquiry | paymentTokenInquiry |
		shopperTokenRetrieval | cardCheckInquiry | echeckInquiry | bankDetailsInquiry | retrieveInstalmentPlans | cardHolderNameInquiry | balanceCheckInquiry
        | cardBinInquiry)>

<!ELEMENT reply   ((orderStatus* | batchStatus | error | addressCheckResponse |
                   refundableAmount | accountBatch | shopper | ok |
                   futurePayAgreementStatus | shopperAuthenticationResult | futurePayPaymentResult | pricePoint | checkCardResponse | currentBalance |
		checkCardHolderNameResponse|  cardBinInquiryResponse | echeckVerificationResponse | paymentOption* | token*), actions?)>
<!ATTLIST reply   complete (true|false) #IMPLIED >

<!ELEMENT verify  (addressCheck)>

<!--
The payment service can notify merchants if the status of an order changes or to send
order- or transfer reports. This information is not requested by the
merchant. Therefore this type of messages are not reply messages but notify
messages.  Child elements of notify element:
- orderStatusEvent : The orderStatusEvent is sent to report the change of the
                     status of an order
- report           : Order report or transfer report.
-->
<!ELEMENT notify  ((orderStatusEvent, encryptedData?) | report ) >
<!ATTLIST notify  messageType  (TransferReport | OrderReport | CaptureReport | EventReport | BatchReport)  #IMPLIED >

<!ELEMENT identifyMeRequest (address, birthDate?, gender?, shopperDocuments?, session?, hcgAdditionalData?)>
<!ATTLIST identifyMeRequest orderCode NMTOKEN #REQUIRED>
<!ELEMENT gender EMPTY>
<!ATTLIST gender value (F|M) #REQUIRED>
<!ELEMENT shopperDocuments (document1?, document2?, document3?, document4?, document5?, passportData?)>
<!ELEMENT document1 (idType?, idNumber?, idCode?, idIssuingCountry?, idCountryOfOrigin?, idNationality?, idExpiryDate?, idIssueDate?)>
<!ELEMENT document2 (idType?, idNumber?, idCode?, idIssuingCountry?, idCountryOfOrigin?, idNationality?, idExpiryDate?, idIssueDate?)>
<!ELEMENT document3 (idType?, idNumber?, idCode?, idIssuingCountry?, idCountryOfOrigin?, idNationality?, idExpiryDate?, idIssueDate?)>
<!ELEMENT document4 (idType?, idNumber?, idCode?, idIssuingCountry?, idCountryOfOrigin?, idNationality?, idExpiryDate?, idIssueDate?)>
<!ELEMENT document5 (idType?, idNumber?, idCode?, idIssuingCountry?, idCountryOfOrigin?, idNationality?, idExpiryDate?, idIssueDate?)>
<!ELEMENT passportData (MRZLine1?, MRZLine2?, MRZShort?)>

<!ELEMENT idType (#PCDATA )>
<!ELEMENT idNumber (#PCDATA )>
<!ELEMENT idCode (#PCDATA )>
<!ELEMENT idIssuingCountry (#PCDATA )>
<!ELEMENT idCountryOfOrigin (#PCDATA )>
<!ELEMENT idNationality (#PCDATA )>
<!ELEMENT idExpiryDate (date)>
<!ELEMENT idIssueDate (date)>
<!ELEMENT MRZLine1 (#PCDATA )>
<!ELEMENT MRZLine2 (#PCDATA )>
<!ELEMENT MRZShort (#PCDATA )>

<!-- CHILD ELEMENTS OF SUBMIT ELEMENT -->
<!-- ================================ -->
<!ELEMENT order  ((( description,
					amount,
					cashbackAmount?,
					gratuityAmount?,
                    (secondaryAmount | surchargeAmount)?,
					donationAmount?,
					risk?,
					orderContent?,
					orderChannel?,
					checkoutId?,
					(paymentMethodMask | paymentDetails | payAsOrder ),
					paymentTokenID?,
					shopper?,
					shippingAddress?,
					billingAddress?,
					hostPaymentOrderAttribute?,
					branchSpecificExtension?,
					extendedOrderDetail?,
					redirectPageAttribute?,
					paymentMethodAttribute*,
					echoData?,
					statementNarrative?,
					hcgAdditionalData?,
					thirdPartyData?,
					resultURL?,
					shopperAdditionalData?,
					approvedAmount?,
					mandate?,
					authorisationAmountStatus?,
					dynamic3DS?,
					accountUpdaterRequest?,
					(createToken|createTokenApproval)?,
					orderLines?,
					(subMerchantData|instalmentProvider)?,
					dynamicMCC?,
					dynamicInteractionType?,
					primeRoutingRequest?,
					riskData?,
					additional3DSData?,
					exemption?,
					shippingMethod?,
					productSku?,
					FraudSightData?,
					deviceSession?,
					dynamicCurrencyConversion?,
					overrideNarrative?,
					GuaranteedPaymentsData?,
					delivery?,
					fundingTransfer?,
					externalProcessor?,
					processBatchTime?,
					occurredAt?)
					| (info3DSecure,
					session)),
					e2eIdentity?) >

<!-- Split authentication second request with the transactionId3DS-->
<!ELEMENT challenge (transactionId3DS|threeDSSessionId) >
<!ATTLIST challenge orderCode CDATA #REQUIRED>

<!ELEMENT createAccessToken EMPTY>
<!ATTLIST createAccessToken usage (threeDSFlexService) #REQUIRED>

<!ELEMENT dynamicMCC  (#PCDATA)>

<!ELEMENT dynamicInteractionType EMPTY>
<!ATTLIST dynamicInteractionType type  (ECOMMERCE |
										MOTO |
										CONT_AUTH |
										PRESENT |
										UNATTENDED |
										RECURRING) #REQUIRED>

<!ELEMENT shippingMethod  (#PCDATA)>
<!ELEMENT productSku  (#PCDATA)>

<!ELEMENT mandate (mandateType, mandateId?, mandateSignatureDate?)>
<!ELEMENT mandateType (#PCDATA)>
<!ELEMENT mandateId (#PCDATA)>
<!ELEMENT mandateSignatureDate (date)>

<!ELEMENT dynamic3DS EMPTY>
<!ATTLIST dynamic3DS overrideAdvice (do3DS | no3DS) #REQUIRED>

<!ELEMENT accountUpdaterRequest EMPTY>
<!ATTLIST accountUpdaterRequest allowRealTimeUpdate (true | false) #IMPLIED>

<!ELEMENT overrideNarrative (#PCDATA)>

<!--Account Funding Transaction fields-->
<!ELEMENT fundingParty (accountReference?, fullName?, fundingAddress?, fundingData?, taxId?)>
<!ELEMENT paymentPurpose (#PCDATA)>
<!ELEMENT fundingTransfer (paymentPurpose?, fundingParty*)>
<!ATTLIST fundingTransfer type CDATA  #IMPLIED>
<!ATTLIST fundingTransfer category CDATA  #REQUIRED>
<!ELEMENT accountReference (#PCDATA)>
<!ATTLIST accountReference accountType CDATA  #IMPLIED>
<!ATTLIST fundingParty type (sender|recipient) #REQUIRED>
<!ELEMENT fundingAddress  (((street?, houseName?, houseNumber?, houseNumberExtension?) | (address1?, address2?, address3?)),
		postalCode?,
		city?,
		state?,
		countryCode?,
		emailAddress?)>
<!ELEMENT fundingData (birthDate?, telephoneNumber?)>
<!ELEMENT taxId (#PCDATA)>

<!--GuaranteedPaymentsData additional fields-->
<!ELEMENT GuaranteedPaymentsData (reauth?, secondaryAmount, surchargeAmount, userAccount?, memberships?, discountCodes, productDetails, fulfillmentMethodType?, totalShippingCost, sellers?,
									installment?)>
<!ELEMENT reauth EMPTY>
<!ATTLIST reauth originatingOrderCode CDATA #IMPLIED>

<!ELEMENT secondaryAmount EMPTY>
<!ATTLIST secondaryAmount value NMTOKEN #REQUIRED>

<!ELEMENT surchargeAmount EMPTY>
<!ATTLIST surchargeAmount value NMTOKEN #REQUIRED>

<!ELEMENT userAccount (userAccountUserName?, userAccountCreatedDate?, userAccountNumber?, userAccountEmailAddress?, userAccountPhoneNumber?, userAccountLastUpdateDate?,
						userAccountLastOrderId?, userAccountEmailLastUpdateDate?, userAccountPhoneLastUpdateDate?, userAccountPasswordLastUpdateDate?, userAccountAggregateOrderCount?,
						userAccountAggregateOrderDollars?)>
<!ELEMENT userAccountUserName (#PCDATA)>
<!ELEMENT userAccountCreatedDate ( date )>
<!ELEMENT userAccountNumber (#PCDATA)>
<!ELEMENT userAccountEmailAddress (#PCDATA)>
<!ELEMENT userAccountPhoneNumber (#PCDATA)>
<!ELEMENT userAccountLastUpdateDate ( date )>
<!ELEMENT userAccountLastOrderId (#PCDATA)>
<!ELEMENT userAccountEmailLastUpdateDate ( date )>
<!ELEMENT userAccountPhoneLastUpdateDate ( date )>
<!ELEMENT userAccountPasswordLastUpdateDate ( date )>
<!ELEMENT userAccountAggregateOrderCount (#PCDATA)>
<!ELEMENT userAccountAggregateOrderDollars (#PCDATA)>

<!ELEMENT memberships (membership+)>
<!ELEMENT membership (membershipId?, membershipPhoneNumber?, membershipEmailAddress?, membershipName?)>
<!ELEMENT membershipId (#PCDATA)>
<!ELEMENT membershipPhoneNumber (#PCDATA)>
<!ELEMENT membershipEmailAddress (#PCDATA)>
<!ELEMENT membershipName (#PCDATA)>

<!ELEMENT discountCodes (purchaseDiscount+)>
<!ELEMENT purchaseDiscount (purchaseDiscountCode, purchaseDiscountAmount?, purchaseDiscountPercentage?)>
<!ELEMENT purchaseDiscountCode (#PCDATA)>
<!ELEMENT purchaseDiscountAmount (#PCDATA)>
<!ELEMENT purchaseDiscountPercentage (#PCDATA)>

<!ELEMENT productDetails (product+)>
<!ELEMENT product (itemName, itemPrice, itemQuantity, itemIsDigital, itemCategory, itemSubCategory, itemId, itemImage?, itemUrl?,
					shipmentId?, digitalDeliveryName?, digitalDeliveryEmail?, shopperSubscription?, travel?)>
<!ELEMENT itemName (#PCDATA)>
<!ELEMENT itemPrice (#PCDATA)>
<!ELEMENT itemQuantity (#PCDATA)>
<!ELEMENT itemIsDigital (#PCDATA)>
<!ELEMENT itemCategory (#PCDATA)>
<!ELEMENT itemSubCategory (#PCDATA)>
<!ELEMENT itemId (#PCDATA)>
<!ELEMENT itemImage (#PCDATA)>
<!ELEMENT itemUrl (#PCDATA)>
<!ELEMENT shipmentId (#PCDATA)>
<!ELEMENT digitalDeliveryName (#PCDATA)>
<!ELEMENT digitalDeliveryEmail (#PCDATA)>

<!ELEMENT fulfillmentMethodType EMPTY>
<!ATTLIST fulfillmentMethodType value CDATA #IMPLIED>
<!ELEMENT totalShippingCost (#PCDATA)>

<!ELEMENT sellers (seller+)>
<!ELEMENT seller (sellerContactAddress?, sellerAccountNumber?, sellerAggregateOrderCount?, sellerAggregateOrderDollars?, sellerCreatedDate?, sellerDomain?, sellerEmail?,
				sellerLastUpdateDate?, sellerName?, sellerOnboardingEmail?, sellerOnboardingIpAddress?, sellerPhone?, sellerTags?, sellerUsername?)>
<!ELEMENT sellerContactAddress (sellerStreetAddress, sellerUnit?, sellerPostalCode, sellerCity, sellerProvinceCode?, sellerCountryCode?)>
<!ELEMENT sellerTags (sellerTag+)>
<!ELEMENT sellerTag (#PCDATA)>
<!ELEMENT sellerAccountNumber (#PCDATA)>
<!ELEMENT sellerAggregateOrderCount (#PCDATA)>
<!ELEMENT sellerAggregateOrderDollars (#PCDATA)>
<!ELEMENT sellerStreetAddress (#PCDATA)>
<!ELEMENT sellerUnit (#PCDATA)>
<!ELEMENT sellerPostalCode (#PCDATA)>
<!ELEMENT sellerCity (#PCDATA)>
<!ELEMENT sellerProvinceCode (#PCDATA)>
<!ELEMENT sellerCountryCode (#PCDATA)>
<!ELEMENT sellerCreatedDate ( date )>
<!ELEMENT sellerDomain (#PCDATA)>
<!ELEMENT sellerEmail (#PCDATA)>
<!ELEMENT sellerLastUpdateDate ( date )>
<!ELEMENT sellerName (#PCDATA)>
<!ELEMENT sellerOnboardingEmail (#PCDATA)>
<!ELEMENT sellerOnboardingIpAddress (#PCDATA)>
<!ELEMENT sellerPhone (#PCDATA)>
<!ELEMENT sellerUsername (#PCDATA)>

<!ELEMENT shopperSubscription (subscriptionId?, nextDeliveryDate?, periodUnit, totalPeriods, regularItemPrice?, currentPeriod?)>
<!ELEMENT subscriptionId (#PCDATA)>
<!ELEMENT nextDeliveryDate ( date )>
<!ELEMENT totalPeriods (#PCDATA)>
<!ELEMENT regularItemPrice (#PCDATA)>
<!ELEMENT currentPeriod (#PCDATA)>
<!ELEMENT periodUnit EMPTY>
<!ATTLIST periodUnit value (WEEK | MONTH | QUARTER | YEAR) #REQUIRED>

<!ELEMENT installment (installmentInterval?, installmentCount?, installmentTotalValue?, installmentValue?)>
<!ELEMENT installmentInterval (#PCDATA)>
<!ELEMENT installmentCount (#PCDATA)>
<!ELEMENT installmentTotalValue (#PCDATA)>
<!ELEMENT installmentValue (#PCDATA)>

<!ELEMENT travel (transportationMethod?, tripPassengers, tripDetail?)>
<!ELEMENT transportationMethod (#PCDATA)>
<!ELEMENT tripPassengers (tripPassenger+)>
<!ELEMENT tripPassenger (passengerId, passengerFirstName?, passengerLastName?, passengerDateOfBirth?, passengerEmail?, passengerPhone?,
					passengerMembershipLast4?, passengerIdentityDocument?, ticketStatus?, ancillaryPurchases?)>
<!ELEMENT passengerId (#PCDATA)>
<!ELEMENT passengerFirstName (#PCDATA)>
<!ELEMENT passengerLastName (#PCDATA)>
<!ELEMENT passengerDateOfBirth ( date )>
<!ELEMENT passengerEmail (#PCDATA)>
<!ELEMENT passengerPhone (#PCDATA)>
<!ELEMENT passengerMembershipLast4 (#PCDATA)>

<!ELEMENT passengerIdentityDocument (identityDocumentType?, identityDocumentIssuanceGeo?, identityDocumentLast4?,
									identityDocumentIssuanceDate?, identityDocumentExpiryDate?)>
<!ELEMENT identityDocumentType (#PCDATA)>
<!ELEMENT identityDocumentIssuanceGeo (#PCDATA)>
<!ELEMENT identityDocumentLast4 (#PCDATA)>
<!ELEMENT identityDocumentIssuanceDate ( date )>
<!ELEMENT identityDocumentExpiryDate ( date )>

<!ELEMENT ticketStatus (#PCDATA)>

<!ELEMENT ancillaryPurchases (ancillaryPurchase+)>
<!ELEMENT ancillaryPurchase (ancillaryPurchaseType?, ancillaryPurchaseItemName?, ancillaryPurchaseItemPrice?,
							ancillaryPurchaseTypeQuantity?, ancillaryPurchaseCurrency?)>
<!ELEMENT ancillaryPurchaseType (#PCDATA)>
<!ELEMENT ancillaryPurchaseItemName (#PCDATA)>
<!ELEMENT ancillaryPurchaseItemPrice (#PCDATA)>
<!ELEMENT ancillaryPurchaseTypeQuantity (#PCDATA)>
<!ELEMENT ancillaryPurchaseCurrency (#PCDATA)>

<!ELEMENT tripDetail (tripSlice, tripIsFlexible?, tripIsInsured?, milesUsed?, numberMilesUsed?, milesBalance?, milesCompanyName?, partnerMilesUsed?)>
<!ELEMENT tripSlice (slicePrice?, sliceCurrency?, bookingClass?, tripSliceLegs?)>
<!ELEMENT slicePrice (#PCDATA)>
<!ELEMENT sliceCurrency (#PCDATA)>
<!ELEMENT bookingClass (#PCDATA)>
<!ELEMENT tripSliceLegs (tripSliceLeg+)>
<!ELEMENT tripSliceLeg (routeCode?, departureCity?, departureState?, departureCountryCode?, departurePortCode?, arrivalCity?,
						arrivalState?, arrivalCountryCode?, arrivalPortCode?, departureDateTime?, arrivalDateTime?, carrierName?)>
<!ELEMENT routeCode (#PCDATA)>
<!ELEMENT departureState (#PCDATA)>
<!ELEMENT departureCountryCode (#PCDATA)>
<!ELEMENT departurePortCode (#PCDATA)>
<!ELEMENT arrivalState (#PCDATA)>
<!ELEMENT arrivalCountryCode (#PCDATA)>
<!ELEMENT arrivalPortCode (#PCDATA)>
<!ELEMENT departureDateTime ( date )>
<!ELEMENT arrivalDateTime ( date )>
<!ELEMENT carrierName (#PCDATA)>

<!ELEMENT tripIsFlexible (#PCDATA)>
<!ELEMENT tripIsInsured (#PCDATA)>
<!ELEMENT milesUsed (#PCDATA)>
<!ELEMENT numberMilesUsed (#PCDATA)>
<!ELEMENT milesBalance (#PCDATA)>
<!ELEMENT milesCompanyName (#PCDATA)>
<!ELEMENT partnerMilesUsed (#PCDATA)>


<!--Order Lines element added in order to support
	line items for Klarna integration -->
<!ELEMENT orderLines (orderTaxAmount?, termsURL?, lineItem+)>
<!ELEMENT lineItem ((physical|discount|shippingFee|digital|giftCard|salesTaxType|storeCredit|surcharge)?,
					reference?,
					name,
					quantity,
					quantityUnit?,
					unitPrice,
					taxRate?,
					totalAmount,
					totalTaxAmount?,
					totalDiscountAmount?,
		            productURL?,
		            imageURL?)>
<!ELEMENT salesTaxType EMPTY>
<!ELEMENT physical EMPTY>
<!ELEMENT discount EMPTY>
<!ELEMENT shippingFee EMPTY>
<!ELEMENT digital EMPTY>
<!ELEMENT giftCard EMPTY>
<!ELEMENT storeCredit EMPTY>
<!ELEMENT surcharge EMPTY>
<!ELEMENT first (#PCDATA)>
<!ELEMENT middle (#PCDATA)>
<!ELEMENT last (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT fullName (first?, middle?, last?)>
<!ELEMENT quantity (#PCDATA)>
<!ELEMENT quantityUnit (#PCDATA)>
<!ELEMENT unitPrice (#PCDATA)>
<!ELEMENT taxRate (#PCDATA)>
<!ELEMENT totalAmount (#PCDATA)>
<!ELEMENT totalTaxAmount (#PCDATA)>
<!ELEMENT totalDiscountAmount (#PCDATA)>
<!ELEMENT productURL (#PCDATA)>
<!ELEMENT imageURL (#PCDATA)>

<!--
	Create token element added to be used for requests
	of creating a new token in the Token Store.
-->
<!ELEMENT createToken (tokenEventReference?, tokenReason?, shortLifeMins?, paymentTokenExpiry?, selectedScheme?)>
<!ATTLIST createToken tokenScope (shopper | merchant)    'shopper'>
<!ATTLIST createToken tokenOptIn (silent | notify | ask) #IMPLIED>
<!ELEMENT tokenEventReference (#PCDATA)>
<!ELEMENT tokenReason (#PCDATA)>
<!ELEMENT shortLifeMins (#PCDATA)>

<!--
	Approval to create token
-->
<!ELEMENT createTokenApproval EMPTY>
<!ATTLIST createTokenApproval shopperApproved (yes | no) #REQUIRED>

<!--
Enter risk parameters. All individual risk-score settings
eg. <risk multiply="1.5" avsLevel="C" cvcLevel="B"/>
-->
<!ELEMENT risk EMPTY>
<!ATTLIST risk multiply NMTOKEN  #IMPLIED
               avsLevel NMTOKEN  #IMPLIED
               cvcLevel NMTOKEN  #IMPLIED>


<!ELEMENT pricePoint (	locale,
						pricing,
						comments) >

<!ATTLIST pricePoint billedMessages NMTOKEN  #IMPLIED
              		 status NMTOKEN  #IMPLIED>

<!ELEMENT paymentOption (#PCDATA ) >

<!ELEMENT locale EMPTY>
<!ATTLIST locale countryCode NMTOKEN  #IMPLIED
          		 currencyCode NMTOKEN  #IMPLIED
          		 exponent NMTOKEN  #IMPLIED
          		 exchangeFactor NMTOKEN  #IMPLIED>

<!ELEMENT pricing EMPTY>
<!ATTLIST pricing 	amount NMTOKEN  #IMPLIED
	          		amountExSalesTax NMTOKEN  #IMPLIED
	          		amountIncSalesTax NMTOKEN  #IMPLIED
	          		amountReceivableGross NMTOKEN  #IMPLIED
	          		amountReceivableNet NMTOKEN  #IMPLIED>

<!ELEMENT comments (#PCDATA )>

<!--
The ordercode is a unique reference for an order. The maximum length is 64
characters. For purchase details the first 15 characters are used.
-->
<!ATTLIST order orderCode CDATA  #IMPLIED
                agreementId NMTOKEN #IMPLIED
				shoppingBasketCode CDATA #IMPLIED
				installationId NMTOKEN #IMPLIED
				shopperLanguageCode NMTOKEN #IMPLIED
				fixContact  (true|false) #IMPLIED
				hideContact (true|false) #IMPLIED
				captureDelay CDATA #IMPLIED
				>

<!--
The echoData element contains information that is used to process the
transaction much faster in case one transaction consists of multiple submit
messages.  If the echoData is supplied in a orderStatus element to the
merchant, the merchant must send the same echoData element back in the next
submit messages if it belonging to the same transaction.  The merchant should
never send its own data in the echoData element.  As such the first submit
never contains an echoData element.  One should not put any restrictions on the
size of the contents of this field.
-->
<!ELEMENT echoData (#PCDATA)>

<!--
The "content" element contains a HTML page.

This HTML page is to be returned to the shopper. It's used only for:

- BOLETO-HTML: For Boleto it displays the Boleto (ticket) on the screen.
- WEBPAY-SSL: The HTML page redirects the shopper to Transbank's "WebPay Plus".
- ONLINE_TRANSFER_BR-SSL: Redirects the shopper to his home banking.

Attributes:
- id : contains internal order id. (for Boleto only)
- charset : The character encoding to use when serving the HTML page to the shopper.
            Used for WEBPAY-SSL and ONLINE_TRANSFER_BR-SSL
-->
<!ELEMENT content (#PCDATA)>
<!ATTLIST content  id      NMTOKEN #IMPLIED
                   charset NMTOKEN #IMPLIED>

<!--
An orderBatch contains multiple orders. OrderBatches are processed off-line.

ForeignContent is reserved
Attributes of orderBatch :
- transactions : The exact number of transactions in this batch. There is no
  maximum for the number of transactions in a batch. We strongly suggest not
  to exceed 500 transactions in a batch.
- merchantBatchCode : The merchantBatchCode is a unique reference for a batch.
  The maximum length is 25 characters.
-->
<!ELEMENT orderBatch  ( (order+ ) , foreignContent? )>
<!ATTLIST orderBatch  transactions      NMTOKEN  #REQUIRED
                      merchantBatchCode CDATA    #REQUIRED >
<!--
FuturePay
-->

<!--
Agreement Creation
-->
<!ELEMENT futurePayAgreement ((schedule | limit),
								setUpPayment?,
								paymentDetails,
								address,
								shopperAuthentication?,
								shopperAdditionalData?)>


<!ATTLIST futurePayAgreement
		acquisitionCurrencyCode NMTOKEN #REQUIRED
		agreementCurrencyCode NMTOKEN #REQUIRED
		shoppingBasketCode CDATA #REQUIRED
		description CDATA #REQUIRED
		installationId NMTOKEN #REQUIRED
		shopperEmailAddress CDATA #REQUIRED
		shopperLanguageCode CDATA #REQUIRED>

<!-- CHILD ELEMENTS OF futurePayAgreement ELEMENT -->
<!--
Schedule applies to regular agreements
-->
<!ELEMENT schedule (numberOfPayments?,
					agreementInterval?,
					agreementStartDate?,
					(initialAmount?,normalAmount)?)>

<!--
Limit applies to limited agreements
-->
<!ELEMENT limit ((paymentsPerAgreement | paymentsPerInterval |
				valuePerInterval | valuePerAgreement),
					agreementStartDate?,
					agreementEndDate?)>
<!--
Payments per agreement limit
-->
<!ELEMENT paymentsPerAgreement (numberOfPayments?,
								agreementInterval?,
								amountLimit?)>
<!--
Payments per interval limit
-->
<!ELEMENT paymentsPerInterval (numberOfPayments,
								agreementInterval,
								amountLimit?)>
<!--
Value per agreement limit
-->
<!ELEMENT valuePerAgreement (amountLimit)>

<!--
Value per interval limit
-->
<!ELEMENT valuePerInterval (agreementInterval,
								amountLimit)>

<!--
	Presents of setUpPayment indicates there is an associated set up payment
	if the amount is present then the set up payment is taken by futurepay
-->
<!ELEMENT setUpPayment (amount?)>
<!ELEMENT numberOfPayments (#PCDATA)>
<!ELEMENT agreementInterval (interval)>
<!ELEMENT initialAmount (amount)>
<!ELEMENT normalAmount (amount)>
<!ATTLIST normalAmount type (fixed | adjustable) #REQUIRED>
<!ELEMENT amountLimit (amount)>
<!ELEMENT agreementStartDate (date)>
<!ELEMENT agreementEndDate (date)>

<!ELEMENT interval EMPTY>
<!ATTLIST interval unit (day | week | month | year) #REQUIRED
					multiplier NMTOKEN #REQUIRED>


<!ELEMENT futurePayAgreementStatus (shopperAuthentication?)>
<!ATTLIST futurePayAgreementStatus agreementId NMTOKEN #REQUIRED
									status (active |
											complete |
											cancelledByMerchant |
											cancelledByShopper |
											awaitingStartDate |
											attemptLimitReached |
											accountSuspended |
											cardExpiredSuspended |
											waitingSetUpPayment) #REQUIRED>

<!--

FuturePay shopper authentication

-->

<!ELEMENT shopperAuthentication (username,password)>
<!ELEMENT username (#PCDATA)>
<!ELEMENT password (#PCDATA)>

<!ELEMENT shopperAuthenticationResult EMPTY>
<!ATTLIST shopperAuthenticationResult authenticated (yes | no) #REQUIRED>

<!--

FuturePay admin

-->
<!ELEMENT makeFuturePayPayment (amount | amountNoCurrency)>
<!ATTLIST makeFuturePayPayment agreementId NMTOKEN #REQUIRED>

<!ELEMENT futurePayAgreementModification (agreementStartDate | adjustAmount | cancel | shopperAdditionalData)>
<!ATTLIST futurePayAgreementModification agreementId NMTOKEN #REQUIRED>

<!ELEMENT adjustAmount (amount | amountNoCurrency)>

<!-- A decimal amount with out a currency value-->
<!ELEMENT amountNoCurrency EMPTY>
<!ATTLIST amountNoCurrency value NMTOKEN #REQUIRED>

<!ELEMENT futurePayPaymentResult (paymentMethod,lastEvent)>
<!ATTLIST futurePayPaymentResult agreementId NMTOKEN #REQUIRED
									orderCode CDATA #REQUIRED>

<!--
	Define paymentTokenCreate element used for requests of creating a new token without payment.
-->
<!ELEMENT paymentTokenCreate (authenticatedShopperID?,createToken?,(paymentInstrument | CSE-DATA | posPaymentInstrument), storedCredentials?)>

<!-- CHILD ELEMENTS OF MODIFY ELEMENT -->
<!-- ================================ -->
<!ELEMENT orderModification  (cancel |
                              capture |
		                      provideCryptogram |
                              refund |
                              revoke |
                              addBackOfficeCode |
                              authorise |
                              increaseAuthorisation |
                              cancelOrRefund |
                              defend |
                              shopperWebformRefundDetails |
                              extendExpiryDate |
                              cancelRefund |
                              voidSale |
							  approve)>
<!ATTLIST orderModification  orderCode CDATA  #REQUIRED >
<!ELEMENT batchModification  (cancel )>
<!ATTLIST batchModification  merchantBatchCode CDATA  #REQUIRED >
<!ELEMENT accountBatchModification   EMPTY>
<!ATTLIST accountBatchModification action  (END_PERIOD) #REQUIRED
                                   accountType (IN_PROCESS_CAPTURED) #REQUIRED>

<!ELEMENT paymentTokenUpdate (paymentTokenID, authenticatedShopperID?, paymentInstrument, tokenEventReference?, tokenReason?, schemeTransactionIdentifier? )>
<!ATTLIST paymentTokenUpdate tokenScope (shopper | merchant) 'shopper'>

<!ELEMENT paymentTokenDelete (paymentTokenID, authenticatedShopperID?, tokenEventReference?, tokenReason? )>
<!ATTLIST paymentTokenDelete tokenScope (shopper | merchant) 'shopper'>

<!ELEMENT deleteNetworkPaymentToken (tokenId?, networkToken? )>

<!-- CHILD ELEMENTS OF INQUIRY ELEMENT -->
<!-- ================================= -->
<!--
The order inquiry element can be used to inquire the status of a specific
order, or the statusses of all orders that are payed using a specific credit
card.
Example of an order inquiry:
<orderInquiry orderCode="ORDER01" />
Example of an inquiry of order statusses belonging to a specific creditcard:
<orderInquiry>
  <cardSearch cardNumber="4111111111111111">
    <startDate>
      <date dayOfMonth="01" month="06" year="2001"/>
    </startDate>
  </cardSearch>
</orderInquiry>
This will return the statusses of all order made with creditcardnumber 4111111111111111
from June 1st 2001 until now.
-->
<!ELEMENT orderInquiry  (cardSearch? | dateSearch? )>
<!ATTLIST orderInquiry  orderCode CDATA  #IMPLIED >
<!ATTLIST orderInquiry  instant CDATA  #IMPLIED >
<!ATTLIST orderInquiry  update (true|false)  #IMPLIED >
<!ELEMENT klarnaConfirmationInquiry EMPTY>
<!ATTLIST klarnaConfirmationInquiry  orderCode CDATA  #IMPLIED >
<!ELEMENT batchInquiry EMPTY>
<!ATTLIST batchInquiry  merchantBatchCode CDATA  #REQUIRED >
<!ELEMENT accountBatchInquiry EMPTY>
<!ATTLIST accountBatchInquiry  accountType (IN_PROCESS_CAPTURED)  #REQUIRED
                               batchId NMTOKEN #IMPLIED
                               queryHotBatch (y) #IMPLIED >

<!ELEMENT refundableAmountInquiry  EMPTY>
<!ATTLIST refundableAmountInquiry  orderCode CDATA  #REQUIRED >
<!ELEMENT priceInquiry  EMPTY>
<!ATTLIST priceInquiry  currencyCode NMTOKEN  #IMPLIED
						countryCode NMTOKEN  #IMPLIED
						maximumBilledMessages NMTOKEN  #IMPLIED >
<!ELEMENT paymentOptionsInquiry  EMPTY>
<!ATTLIST paymentOptionsInquiry  	countryCode NMTOKEN  #REQUIRED >
<!ELEMENT bankAccountInquiry EMPTY>
<!ATTLIST bankAccountInquiry source NMTOKEN #REQUIRED>
<!ATTLIST bankAccountInquiry shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT identifyMeInquiry EMPTY>
<!ATTLIST identifyMeInquiry orderCode CDATA  #REQUIRED >
<!ELEMENT devicePayload (#PCDATA )>
<!ELEMENT cardAuthenticationCapabilitiesInquiry (paymentTokenInquiry?,cardNumber?,shopperEmailAddress,devicePayload)>
<!ATTLIST cardAuthenticationCapabilitiesInquiry transactionId NMTOKEN  #REQUIRED>
<!ELEMENT paymentTokenInquiry (authenticatedShopperID?, paymentTokenID)>
<!ATTLIST paymentTokenInquiry tokenScope (shopper | merchant) 'shopper'>
<!ATTLIST paymentTokenInquiry detokenisation (true|false) 'false'>
<!ATTLIST paymentTokenInquiry markUsed (true|false) 'false'>
<!ELEMENT shopperTokenRetrieval (authenticatedShopperID)>
<!ELEMENT cardCheckInquiry (paymentDetails)>
<!ELEMENT echeckInquiry (paymentDetails)>
<!ELEMENT bankDetailsInquiry (paymentMethod)>
<!ATTLIST bankDetailsInquiry countryCode NMTOKEN #REQUIRED>
<!ATTLIST bankDetailsInquiry pageNumber NMTOKEN #REQUIRED>
<!ATTLIST bankDetailsInquiry pageSize NMTOKEN #REQUIRED>
<!ATTLIST bankDetailsInquiry bankCode CDATA #IMPLIED>
<!ELEMENT retrieveInstalmentPlans ((paymentInstrument | (paymentTokenID, shopper)), amount)>
<!ATTLIST retrieveInstalmentPlans scheme (VISA | SOUTHKOREA) #REQUIRED>
<!ELEMENT cardHolderNameInquiry (paymentMethod?, recipient?)>
<!ELEMENT balanceCheckInquiry (paymentMethod)>
<!ATTLIST balanceCheckInquiry currencyCode NMTOKEN #REQUIRED>


<!-- CHILD ELEMENTS OF REPLY ELEMENT -->
<!-- =============================== -->
<!-- The ok element represents the new style answer to an order modification -->
<!-- Examples:
	<ok>
		<cancelReceived orderCode="MYORDER123"/>
	</ok>

	<ok>
		<captureReceived orderCode="MYORDER123">
			<amount currencyCode="EUR" value="123" exponent="2"/>
		</captureReceived>
	</ok>

	<ok>
		<refundReceived orderCode="MYORDER123">
			<amount currencyCode="EUR" value="123" exponent="2"/>
		</refundReceived>
	</ok>

	<ok>
		<backofficeCodeReceived orderCode="MYORDER123" backOfficeCode="ABCDE"/>
	</ok>

	<ok>
		<authorisationCodeReceived orderCode="MYORDER123" authorisationCode="AB12ZY"/>
	</ok>

-->
<!ELEMENT ok (localDateTimeAtPOS?,
               (cancelReceived|
				voidReceived|
				captureReceived|
				revokeReceived|
				refundReceived|
				backofficeCodeReceived|
				authorisationCodeReceived|
				defenceReceived|
				updateTokenReceived|
				deleteTokenReceived|
				extendExpiryDateReceived|
				orderReceived |
			    cryptogramReceived |
				voidSaleReceived)) >

<!ELEMENT voidReceived EMPTY >
<!ATTLIST voidReceived orderCode CDATA #REQUIRED>

<!ELEMENT cancelReceived EMPTY >
<!ATTLIST cancelReceived orderCode CDATA #REQUIRED>

<!ELEMENT revokeReceived EMPTY >
<!ATTLIST revokeReceived orderCode CDATA #REQUIRED>

<!ELEMENT captureReceived (amount) >
<!ATTLIST captureReceived orderCode CDATA #REQUIRED>

<!ELEMENT refundReceived (amount) >
<!ATTLIST refundReceived orderCode CDATA #REQUIRED>

<!ELEMENT backofficeCodeReceived EMPTY >
<!ATTLIST backofficeCodeReceived orderCode CDATA #REQUIRED
                                 backOfficeCode CDATA #REQUIRED>

<!ELEMENT authorisationCodeReceived EMPTY >
<!ATTLIST authorisationCodeReceived orderCode CDATA #REQUIRED
                                    authorisationCode CDATA #REQUIRED>

<!ELEMENT defenceReceived EMPTY >
<!ATTLIST defenceReceived orderCode CDATA #REQUIRED>

<!ELEMENT updateTokenReceived EMPTY >
<!ATTLIST updateTokenReceived paymentTokenID CDATA #REQUIRED>

<!ELEMENT deleteTokenReceived EMPTY >
<!ATTLIST deleteTokenReceived paymentTokenID CDATA #REQUIRED>

<!ELEMENT extendExpiryDateReceived EMPTY >
<!ATTLIST extendExpiryDateReceived orderCode CDATA #REQUIRED>

<!ELEMENT voidSaleReceived EMPTY >
<!ATTLIST voidSaleReceived orderCode CDATA #REQUIRED>

<!ELEMENT orderReceived (token?) >
<!ATTLIST orderReceived orderCode CDATA #REQUIRED>

<!ELEMENT cryptogramReceived EMPTY >
<!ATTLIST cryptogramReceived orderCode CDATA #REQUIRED>

<!ELEMENT qrCode (#PCDATA)>
<!ELEMENT orderStatus ( (((reference,bankAccount?,apmEnrichedData?) |
						 error | apmEnrichedData |
						 (payment, qrCode?, cardBalance?, paymentAdditionalDetails?, billingAddressDetails?, exemptionResponse?, instalmentPlan?, retryDetails?, ((payment*, orderModification?) | journal | reference)) |
						 requestInfo |
						 challengeRequired |
						 fxApprovalRequired |
						 pbbaRTP |
						 content
						), JournalTypeDetail*, token?, date?, echoData?, payAsOrderUseNewOrderCode?, selectedScheme?) | authenticateResponse)>
<!ATTLIST orderStatus  orderCode CDATA  #REQUIRED >

<!--
The element batchStatus represents the status of the batch. When orders are
processed the batch status can contain the orderstatusses of the individual orders.
Attributes of batchStatus :
- transactions: The exact number of transactions in this batch. There is no
  maximum for the number of transactions in a batch.
- merchantBatchCode :  The reference for this batch
- status :  The status of this batch.
-->
<!ELEMENT batchStatus  (orderStatus* , foreignContent? )>
<!ATTLIST batchStatus  settlementBatchId NMTOKEN  #IMPLIED
                       transactions      NMTOKEN  #REQUIRED
                       merchantBatchCode CDATA    #REQUIRED
                       status             (	ORDERS_SAVED |
                                           	PROCESSED |
                                           	PROCESSED_WITH_ERRORS |
                                           	CANCELLED )  #REQUIRED >
<!--
The element error will be returned when an error occurs. The error contains an
error message describing what caused this error.
Attributes of error :
- code : An error code for this error.
Error codes can be:
-  1 : ERROR_INTERNAL : please call the payment service
-  2 : ERROR_PARSE : your xml could not be parsed
-  3 : ERROR_ORDER_AMOUNT : either the order or the amount is invalid
-  4 : ERROR_SECURITY : security violation
-  5 : ERROR_INVALID_REQUEST : Error in request (duplicate order, cancel not existing order etc.)
-  6 : ERROR_INVALID_CONTENT : invalid order in orderbatch
-  7 : ERROR_PAYMENT_DETAILS : payment details are not correct (f.i. expiry date in past)
-  8 : ERROR_NOT_AVAILABLE : this service is currently not available, try again later
-  9 : ERROR_IDEMPOTENCY_SERVICE
- 10 : ERROR_PRIME_ROUTING : invalid prime routing request (not enabled, invalid network name, etc.)
- 11 : ERROR_L2_L3_DATA : the XML supplied for the purchase element was invalid
- 12 : ERROR_LODGING_DATA : the XML supplied for the lodgingInfo element ws invalid
- 13 : ERROR_3DS_FLEX : there was an error in communication with Cardinal
- 14 : ERROR_TOKEN_MANAGEMENT_SERVICE : there was an error in the processing or communication with the TMS service
-->
<!ELEMENT error  (#PCDATA )>
<!ATTLIST error  code  (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14)  #REQUIRED >
<!ELEMENT accountBatch  (periodBeginDate?,periodEndDate?,totalPayments?,paymentAmounts?)>
<!ATTLIST accountBatch batchId CDATA #REQUIRED accountType NMTOKEN #REQUIRED >

<!-- CHILD ELEMENTS OF ACCOUNTBATCH ELEMENT -->
<!-- ================================ -->
<!ELEMENT periodBeginDate  (date)>
<!ELEMENT periodEndDate  (date)>
<!ELEMENT totalPayments (#PCDATA) >
<!ELEMENT paymentAmounts  (amount*)>

<!ELEMENT actions (
		action+)>

<!ELEMENT action (
		type?,
		href?,
		method?,
		transactionId?,
		appSchemeUrl?,
		appLinkUrl?,
		appId?,
		voucherType?,
		displayType?,
		voucherDetails? )>

<!ELEMENT method (#PCDATA )>
<!ELEMENT orderId (#PCDATA )>
<!ELEMENT href (#PCDATA )>
<!ELEMENT appSchemeUrl (#PCDATA )>
<!ELEMENT appLinkUrl (#PCDATA )>
<!ELEMENT appId (#PCDATA )>
<!ELEMENT voucherType (#PCDATA )>
<!ELEMENT displayType (#PCDATA )>

<!ELEMENT voucherDetails (
		imageURL?,
		imageSmallURL?,
		imageLargeURL?,
		expiration? )>

<!ELEMENT imageSmallURL (#PCDATA )>
<!ELEMENT imageLargeURL (#PCDATA )>
<!ELEMENT expiration (date )>

<!-- CHILD ELEMENTS OF NOTIFY ELEMENT -->
<!-- ================================ -->
<!ELEMENT orderStatusEvent  (payment, paymentAdditionalDetails?, billingAddressDetails?, token?, journal, shopperWebformRefundDetails?,
		payAsOrderUseNewOrderCode?, selectedScheme?)>
<!ATTLIST orderStatusEvent  orderCode CDATA  #REQUIRED
							backOfficeCode CDATA #IMPLIED
							agreementId NMTOKEN #IMPLIED
							shoppingBasketCode CDATA #IMPLIED >

<!ELEMENT shopperWebformRefundDetails (webformId, paymentId, webformStatus, amount, reason, webformURL, refundId)>
<!ELEMENT payAsOrderUseNewOrderCode EMPTY>

<!ELEMENT webformId (#PCDATA)>
<!ELEMENT paymentId (#PCDATA)>
<!ELEMENT acquirerCode (#PCDATA)>
<!ELEMENT gatewayCode (#PCDATA)>
<!ELEMENT webformStatus (#PCDATA)>
<!ELEMENT webformURL (#PCDATA)>
<!ELEMENT refundId (#PCDATA)>


<!ELEMENT report  (lastDate? , creationDate? , fromDate?, untilDate?, (orderStatusEvent | journal )* )>
<!ATTLIST report  reportType             (order | transfer | capture | event | batch)  #REQUIRED
                  batchId                NMTOKEN  #IMPLIED
                  settlementCurrency     NMTOKEN  #IMPLIED
                  accountType            NMTOKEN  #IMPLIED
                  acquirerCode           NMTOKEN  #IMPLIED
                  acquirerAccountCode    NMTOKEN  #IMPLIED
                  brandId  			 	 NMTOKEN  #IMPLIED	 >

<!-- CHILD ELEMENTS OF ORDER ELEMENT -->
<!-- =============================== -->
<!--
The maximum length of description is 50 characters. In case an order with
airline element is used, the first 20 characters should contain the name
of the airline.
-->
<!ELEMENT description  (#PCDATA )>

<!--
Example of an amount element :
(E.g. BEF 12345)
<amount value="12345" currencyCode="BEF" exponent="0"/>
(E.g. USD 123.45)
<amount value="12345" currencyCode="USD" exponent="2"/>
-->
<!ELEMENT amount EMPTY>
<!ATTLIST amount  value					NMTOKEN  #REQUIRED
                  currencyCode			NMTOKEN  #REQUIRED
                  exponent				(0 | 2 | 3 )  #REQUIRED
                  debitCreditIndicator	(debit | credit )  'credit' >

<!--
Point of Sale transaction: cashback amount.
This amount is already included in the amount element. (This specifies the cashback part).
Currency and exponent are the same as the amount element.
-->
<!ELEMENT cashbackAmount EMPTY>
<!ATTLIST cashbackAmount value NMTOKEN #REQUIRED>

<!--
Point of Sale transaction: gratuity amount (tip).
This amount is already included in the amount element. (This specifies the gratuity part).
Currency and exponent are the same as the amount element.
-->
<!ELEMENT gratuityAmount EMPTY>
<!ATTLIST gratuityAmount value NMTOKEN #REQUIRED>

<!--
Point of Sale transaction: donation amount.
This amount is already included in the amount element. (This specifies the donation part).
Currency and exponent are the same as the amount element.
-->
<!ELEMENT donationAmount EMPTY>
<!ATTLIST donationAmount value NMTOKEN #REQUIRED>

<!ELEMENT orderContent  (#PCDATA )>

<!ELEMENT orderChannel EMPTY>
<!ATTLIST orderChannel  value  ( WEB | PHONE | MOBILE_APP | SOCIAL | MARKETPLACE | IN_STORE_KIOSK )  #REQUIRED>

<!ELEMENT checkoutId (#PCDATA)>

<!ELEMENT authorisationAmountStatus EMPTY>
<!ATTLIST authorisationAmountStatus	value (actual | estimated ) #REQUIRED>

<!ELEMENT paymentMethodMask  ( storedCredentials? , (include ) ,  (include | exclude )* )>

<!ELEMENT paymentDetails  (	(VISA-SSL | ECMC-SSL | BHS-SSL | NEWDAY-SSL | IKEA-SSL | AMEX-SSL | ELV-SSL |
							 SEPA_DIRECT_DEBIT-SSL |
							 DINERS-SSL | CB-SSL | AIRPLUS-SSL | UATP-SSL |
							 CARTEBLEUE-SSL | SOLO_GB-SSL|
							 LASER-SSL | DANKORT-SSL | DISCOVER-SSL | JCB-SSL |
							 AURORE-SSL | GECAPITAL-SSL | HIPERCARD-SSL | SOROCRED-SSL | ELO-SSL | CARNET-SSL |
							 ARGENCARD-SSL | CABAL-SSL | CENCOSUD-SSL | COOPEPLUS-SSL | CREDIMAS-SSL | ITALCRED-SSL |
							 NARANJA-SSL  | NATIVA-SSL  | NEVADA-SSL  | NEXO-SSL  | TARJETASHOPPING-SSL  |
							 PERMANENT_SIGNED_DD_NL-FAX|
							 SINGLE_UNSIGNED_DD_NL-SSL|
							 SINGLE_UNSIGNED_DD_ES-SSL|
							 SINGLE_UNSIGNED_DD_FR-SSL|
							 PERMANENT_SIGNED_DD_GB-SSL|
							 PERMANENT_UNSIGNED_DD_GB-SSL|
							 PAYOUT-BANK | VISACHECKOUT-SSL | PAYPAL-EXPRESS | GIROPAY-SSL | MAESTRO-SSL | SWITCH-SSL |
							 NCPB2B-SSL | NCPSEASON-SSL | NCPGMM-SSL | IDEAL-SSL | ACH_DIRECT_DEBIT-SSL | CARD-SSL | ABAQOOS-SSL |
							 AGMO-SSL | ALIPAY-SSL | ALIPAYMOBILE-SSL| BALOTO-SSL | BANKAXESS-SSL |BANKLINKNORDEA-SSL |
							 BILLDESK-SSL | BILLINGPARTNER-SSL | CASHU-SSL | DINEROMAIL_7ELEVEN-SSL | DINEROMAIL_OXXO-SSL |
							 DINEROMAIL_ONLINE_BT-SSL | DINEROMAIL_SERVIPAG-SSL | EKONTO-SSL |
							 EPAY-SSL | EUTELLER-SSL | EWIREDK-SSL | EWIRENO-SSL | EWIRESE-SSL | HALCASH-SSL |
							 INSTADEBIT-SSL | KONBINI-SSL | LOBANET_AR-SSL | LOBANET_BR-SSL |
							 LOBANET_CL-SSL | LOBANET_MX-SSL | LOBANET_PE-SSL | LOBANET_UY-SSL | MISTERCASH-SSL |
							 MULTIBANCO-SSL | NEOSURF-SSL | PAGA-SSL | PAGA_VERVE-SSL | PAYSAFECARD-SSL | PAYU-SSL |
							 PLUSPAY-SSL | POLI-SSL | POLINZ-SSL | POSTEPAY-SSL | PRZELEWY-SSL | QIWI-SSL | SAFETYPAY-SSL |
							 SID-SSL | SKRILL-SSL | SOFORT-SSL | SOFORT_CH-SSL | SPEEDCARD-SSL | SPOROPAY-SSL | SWIFF-SSL | TELEINGRESO-SSL |
							 TICKETSURF-SSL | TRUSTLY-SSL | TRUSTPAY_CZ-SSL | TRUSTPAY_EE-SSL | TRUSTPAY_SK-SSL | WEBMONEY-SSL | YANDEXMONEY-SSL |
							 ASTROPAYCARD-SSL | BANCOSANTANDER-SSL | BOLETO-SSL | BOLETO-HTML | MONETA-SSL | TODITOCARD-SSL |
							 ONLINE_TRANSFER_BR-SSL |
							 ONLINE_TRANSFER_MY-SSL | ONLINE_TRANSFER_TH-SSL | ONLINE_TRANSFER_VN-SSL |
		                     OPENBANKING-SSL |
							 SEVENELEVEN_MY-SSL | PETRONAS-SSL | ENETS_SG-SSL | CASH_TH-SSL | ATM_ID-SSL |
							 TOKEN-SSL |
							 ENVOY_TRANSFER_AUD-BANK | ENVOY_TRANSFER_CAD-BANK | ENVOY_TRANSFER_CHF-BANK | ENVOY_TRANSFER_CZK-BANK |
							 ENVOY_TRANSFER_DKK-BANK | ENVOY_TRANSFER_EUR-BANK | ENVOY_TRANSFER_GBP-BANK | ENVOY_TRANSFER_HKD-BANK |
							 ENVOY_TRANSFER_HUF-BANK | ENVOY_TRANSFER_JPY-BANK | ENVOY_TRANSFER_NOK-BANK | ENVOY_TRANSFER_NZD-BANK |
							 ENVOY_TRANSFER_PLN-BANK | ENVOY_TRANSFER_RUB-BANK | ENVOY_TRANSFER_SEK-BANK | ENVOY_TRANSFER_SGD-BANK |
							 ENVOY_TRANSFER_THB-BANK | ENVOY_TRANSFER_TRY-BANK | ENVOY_TRANSFER_USD-BANK | ENVOY_TRANSFER_ZAR-BANK |
							 TRANSFER_AT-BANK | TRANSFER_BE-BANK | TRANSFER_CH-BANK | TRANSFER_DE-BANK | TRANSFER_DK-BANK |
							 TRANSFER_ES-BANK | TRANSFER_FI-BANK | TRANSFER_FR-BANK | TRANSFER_GB-BANK | TRANSFER_GR-BANK |
							 TRANSFER_IT-BANK | TRANSFER_JP-BANK | TRANSFER_LU-BANK | TRANSFER_NL-BANK | TRANSFER_NO-BANK |
							 TRANSFER_PL-BANK | TRANSFER_SE-BANK | TRANSFER_US-BANK | EMVCO_TOKEN-SSL | APPLEPAY-SSL | ANDROIDPAY-SSL |
							 SAMSUNGPAY-SSL | PAYWITHGOOGLE-SSL | CLICKTOPAY-SSL | KLARNA-SSL | KLARNA_PAYLATER-SSL |
							 KLARNA_PAYNOW-SSL | KLARNA_SLICEIT-SSL | KLARNA_V2-SSL | WECHATPAY-SSL | BILLKEY-SSL | INIPAY-SSL |
			 				 WEBPAY-SSL |
							 PBBA-SSL | APM |
							 MERCADOPAGO-SSL | PAYPAL-SSL | FPX-SSL | AFTERPAY-SSL | CLEARPAY-SSL | ALIPAY_HK-SSL | GRABPAY-SSL | MAE-SSL | TRUEMONEY-SSL |
							 BANKTRANSFER-SSL | TOUCHNGO-SSL | BOOST-SSL | LINEPAY-SSL | PROMPTPAY-SSL | ALIPAY_CN-SSL | ALIPAY_POS-SSL |
							 SVS_GIFTCARD-SSL | KAKAOPAY-SSL |
							 TROY-SSL | UPI-SSL | UPEX-SSL |
							 FF_DISBURSE-SSL | FF_MONEYTRANSFER-SSL | FF_HPP-SSL | EPS_ENV-SSL | MYBANK-SSL | SATISPAY-SSL | BANCOMATPAY-SSL | BLIK-SSL | PAYBYBANK_AU-SSL |
		                     OXXO-SSL | MBWAY-SSL |
                             (cardNumber, expiryDate, cardHolderName,
                                 (cvc | issueNumber | startDate)? ) |
                                 POSRequest |
                             (cardSwipe, cvc?) |
                             CSE-DATA
                            ), sdwoData?, MVV?, retailerCountry?, foreignRetailerCountry?, storedCredentials?, localDateTimeAtPOS?, session?, info3DSecure?,
		captcha?,	existingAuthorisationCode?,
							routingMID?, additionalCOFData?, businessApplication?,  instalmentPlan?, selectedScheme?, schemeTransactionIdentifier?)>
<!ATTLIST paymentDetails  action  (AUTHORISE | REFUND | UNREFERENCEDREFUND | OFFLINEAUTHORISE | ACCOUNTVERIFICATION | SALE | AUTHENTICATE)  'AUTHORISE' >

<!-- External Processors only: Order was authorised by a 3rd party external payment processor. -->
<!ELEMENT externalProcessor (secureExtraData?)>
<!ATTLIST externalProcessor id NMTOKEN #REQUIRED>
<!-- CHILD ELEMENT OF externalProcessor ELEMENT -->
<!ELEMENT secureExtraData (#PCDATA)>

<!ELEMENT customerToken (tokenId?, description?)>
<!ATTLIST customerToken  usage (SUBSCRIPTION | USE) #IMPLIED>

<!-- CHILD ELEMENT OF customerToken ELEMENT -->
<!ELEMENT tokenId (#PCDATA)>
<!ELEMENT networkToken (#PCDATA)>

<!-- storedCredentials: Card-on-File  -->
<!ELEMENT storedCredentials (schemeTransactionIdentifier?, threeRIData?, isConsumerConsentReceived?)>
<!ATTLIST storedCredentials usage (NA | FIRST | USED) #REQUIRED
		                    merchantInitiatedReason (NA | REAUTH | UNSCHEDULED | DELAYED | INSTALMENT | INCREMENTAL | RECURRING | RESUBMISSION | NOSHOW) #IMPLIED
							customerInitiatedReason (RECURRING | UNSCHEDULED | INSTALMENT) #IMPLIED>
<!-- CHILD ELEMENTS OF storedCredentials ELEMENT -->
<!ELEMENT schemeTransactionIdentifier (#PCDATA)>
<!ELEMENT threeRIData (recurringEndDate?, recurringFrequency?, priorAuthenticationData?)>
<!ELEMENT isConsumerConsentReceived (#PCDATA)>

<!-- CHILD ELEMENTS OF threeRIData ELEMENT -->
<!ELEMENT recurringEndDate (date)>
<!ELEMENT recurringFrequency (#PCDATA)>
<!ELEMENT priorAuthenticationData (dsTransactionId, acsTransactionId, authenticationTimestamp)>

<!-- CHILD ELEMENT OF additionalCOFData ELEMENT -->
<!ELEMENT additionalCOFData (totalPaymentCount?,uniqueId?,sequenceIndicator?,validationReference?)>
<!ATTLIST additionalCOFData paymentType (FIXED_AMOUNT | VARIABLE_AMOUNT) #IMPLIED
		frequencyOfMIT (DAILY | WEEKLY | BI_WEEKLY | MONTHLY | QUARTERLY | BI_ANNUALLY | ANNUALLY | UNSCHEDULED) #IMPLIED>
<!ELEMENT totalPaymentCount (#PCDATA)>
<!ELEMENT uniqueId (#PCDATA)>
<!ELEMENT sequenceIndicator (#PCDATA)>
<!ELEMENT validationReference (#PCDATA)>

<!-- CHILD ELEMENT OF businessApplication ELEMENT -->
<!ELEMENT businessApplication EMPTY>
<!ATTLIST businessApplication type (HIGH_RISK_SECURITIES_PURCHASE | FUND_TRANSFER | WALLET_TRANSFER) #IMPLIED>

<!ELEMENT payAsOrder  (amount, storedCredentials?)>
<!ATTLIST payAsOrder  orderCode CDATA  #REQUIRED
		    merchantCode NMTOKEN  #IMPLIED
		    cvc NMTOKEN  #IMPLIED>
<!ELEMENT shopper  (shopperEmailAddress? ,
					authenticatedShopperID?,
					bankAccount?,
					browser?,
				    transactionTimeOut?,
					session?,
					shopperDocuments?,
					shopperDetails?,
					shopperToken?)>
<!ELEMENT paymentAdditionalDetails  (shopperId?,
		     firstName?,
		     lastName?,
		     shopperEmailAddress?,
		     shopperCountryCode?,
		     shopperStatus?,
		     shippingAddressDetails?,
		     shopperToken?)>

<!-- CHILD ELEMENTS OF PAYMENT ADDITIONAL DETAILS ELEMENT -->
<!-- ================================= -->
<!ELEMENT shopperId	(#PCDATA )>
<!ELEMENT shopperStatus	(#PCDATA )>
<!ELEMENT shopperCountryCode (#PCDATA )>


<!ELEMENT param (#PCDATA)>
<!ATTLIST param name CDATA #REQUIRED>
<!ELEMENT hcgAdditionalData (param+)>


<!ELEMENT shippingAddress  (address )>
<!ELEMENT shippingAddressDetails  (addressStatus?,
		     addressSource?,
		     name?,
		     street?,
		     postalCode?,
		     city?,
		     state?,
		     countryCode?)>

<!-- CHILD ELEMENTS OF SHIPPING ADDRESS DETAILS ELEMENT -->
<!-- ================================= -->
<!ELEMENT addressStatus	(#PCDATA )>
<!ELEMENT addressSource (#PCDATA )>

<!ELEMENT billingAddress  (address? )>
<!ELEMENT billingAddressDetails  (addressStatus?,
			addressSource?,
			name?,
			street?,
			postalCode?,
			city?,
			state?,
			countryCode?)>


<!ELEMENT branchSpecificExtension (airline|railway|carRental|purchase|hotel|lodging|ferry|events)>
<!ELEMENT extendedOrderDetail (marketplaceCustomer?, marketplaceCustomerPayment?, marketplaceCustomerPaymentSummary?, alternativeShippingAddress?,eventBooking*, reservationDetails*)>
<!-- To enable pay connect for PBBA payments, the following elements are mandatory:
	- userAgentHeader
	- activeHeaders
	- timeZone
	- resolution
-->
<!ELEMENT shipping (shippingInfo+)>

<!ELEMENT shippingInfo EMPTY>
<!ATTLIST shippingInfo trackingId CDATA #REQUIRED>

<!ELEMENT browser (acceptHeader?, userAgentHeader?, httpAcceptLanguage?, httpReferer?, activeHeaders?, timeZone?, resolution?, browserLanguage?, macAddress?, browserJavaEnabled?, browserJavaScriptEnabled?, browserColourDepth?, browserScreenHeight?, browserScreenWidth?)>
<!-- 0=DESKTOP, 1=MOBILE, 2=CONSOLE, 3=TABLET -->
<!ATTLIST browser deviceType (0|1|2|3) #IMPLIED>
<!ATTLIST browser deviceOS (ios|android|windows|linux|osx|other) #IMPLIED>
<!ELEMENT acceptHeader (#PCDATA)>
<!ELEMENT userAgentHeader (#PCDATA)>
<!ELEMENT httpAcceptLanguage (#PCDATA)>
<!ELEMENT httpReferer (#PCDATA)>
<!ELEMENT activeHeaders (#PCDATA)>
<!ELEMENT timeZone (#PCDATA)>
<!ELEMENT resolution (#PCDATA)>
<!ELEMENT browserLanguage (#PCDATA)>
<!ELEMENT redirectPageAttribute (fontAttr?, bodyAttr?)>
<!ELEMENT fontAttr (#PCDATA)>
<!ELEMENT bodyAttr (#PCDATA)>
<!ELEMENT macAddress (#PCDATA)>
<!ELEMENT browserJavaEnabled (#PCDATA)>
<!ELEMENT browserJavaScriptEnabled (#PCDATA)>
<!ELEMENT browserColourDepth (#PCDATA)>
<!ELEMENT browserScreenHeight (#PCDATA)>
<!ELEMENT browserScreenWidth (#PCDATA)>

<!--
An info3DSecure element contains the Verified by Visa payment authentication
response data necessary to complete a 3D Secure transaction.
-->
<!ELEMENT info3DSecure ((paResponse|(mpiProvider,mpiResponse)|attemptedAuthentication|completedAuthentication|(threeDSVersion?, merchantName?, xid?,
		dsTransactionId?, cavv?, eci, threeRI?, delegatedAuthentication?, transactionStatusReason?, challengeCancelIndicator?, networkScore?, cardBrand?,
		cavvAlgorithm?))?)>
<!ATTLIST info3DSecure challengePreference (noPreference | noChallengeRequested | challengeRequested | challengeMandated | dataOnly) #IMPLIED
				effectiveAuthenticationType (challenge | frictionless | frictionlessDelegated) #IMPLIED
		        authenticationOutage (true) #IMPLIED>
<!ELEMENT paResponse (#PCDATA)>
<!ELEMENT mpiProvider (#PCDATA)>
<!ELEMENT mpiResponse (#PCDATA)>
<!ELEMENT xid (#PCDATA)>
<!ELEMENT cavv (#PCDATA)>
<!ELEMENT eci (#PCDATA)>
<!ELEMENT threeRI EMPTY>
<!ATTLIST threeRI value (true|false) #REQUIRED>
<!ELEMENT dsTransactionId (#PCDATA)>
<!ELEMENT merchantName (#PCDATA)>
<!ELEMENT threeDSVersion (#PCDATA)>
<!ELEMENT attemptedAuthentication EMPTY>
<!ELEMENT completedAuthentication EMPTY>
<!ELEMENT delegatedAuthentication (#PCDATA)>
<!ATTLIST delegatedAuthentication method (visaDelegatedAuthentication) #REQUIRED>

<!ELEMENT existingAuthorisationCode (#PCDATA)>
<!ELEMENT routingMID (#PCDATA)>

<!ELEMENT instalmentPlan ((planId, planRef?, numberOfInstalments, termsId?)|(planId, planRef?, planAcceptanceId?, planActivationStatus?))>
<!ELEMENT planId (#PCDATA )>
<!ELEMENT planRef (#PCDATA )>
<!ELEMENT numberOfInstalments (#PCDATA )>
<!ELEMENT termsId (#PCDATA )>
<!ELEMENT planAcceptanceId (#PCDATA)>
<!ELEMENT planActivationStatus (#PCDATA)>
<!ATTLIST instalmentPlan scheme (VISA | SOUTHKOREA) #REQUIRED>

<!ELEMENT paymentAttempt EMPTY>
<!ATTLIST paymentAttempt
		lastEvent CDATA #REQUIRED
		responseCode CDATA #REQUIRED
		responseDescription CDATA #REQUIRED
		MAC CDATA #IMPLIED
		detail CDATA #REQUIRED>

<!ELEMENT retryDetails (paymentAttempt+)>

<!--
The subMerchantData elements contains the basic details that need to be provided
by the payment intermediary on behalf of the subsidiary
-->
<!ELEMENT subMerchantData (pfId+, isoId?, subName, subId, subStreet, subCity, subState?, subCountryCode, subPostalCode, subTaxId?, subEmailAddress?,
		subTelephone?)>
<!ELEMENT pfId (#PCDATA)>
<!ATTLIST pfId scheme CDATA  #IMPLIED>
<!ELEMENT isoId (#PCDATA)>
<!ELEMENT subName (#PCDATA)>
<!ELEMENT subId (#PCDATA)>
<!ELEMENT subStreet (#PCDATA)>
<!ELEMENT subCity (#PCDATA)>
<!ELEMENT subState (#PCDATA)>
<!ELEMENT subCountryCode (#PCDATA)>
<!ELEMENT subPostalCode (#PCDATA)>
<!ELEMENT subTaxId (#PCDATA)>
<!ELEMENT subEmailAddress (#PCDATA)>
<!ELEMENT subTelephone (#PCDATA)>

<!ELEMENT instalmentProvider (instalmentRetailerName)>
<!ELEMENT instalmentRetailerName (#PCDATA)>

<!-- Prime Routing (pinless debit) request data -->
<!ELEMENT primeRoutingRequest  (routingPreference?, preferredNetworks?)>
<!-- routingPreference: pinlessDebitOnly / signatureOnly / regular -->
<!ELEMENT routingPreference    (#PCDATA)>
<!ELEMENT preferredNetworks    (networkName+)>
<!ELEMENT networkName          (#PCDATA)>
<!ELEMENT debitResponse        (#PCDATA)>
<!ELEMENT debitMessage         (#PCDATA)>

<!-- =============================== -->

<!-- CHILD ELEMENTS OF ORDERSTATUS ELEMENT -->
<!-- ===================================== -->
<!ELEMENT reference  (#PCDATA )>
<!ATTLIST reference id NMTOKEN  #IMPLIED >
<!-- Element cardNumber in payment is deprecated, use attribute number in paymentMethodDetail.card instead -->
<!ELEMENT payment  (	localDateTimeAtPOS?,
            paymentMethod ,
			paymentMethodDetail? ,
			amount ,
            secondaryAmount? ,
            surchargeAmount? ,
			lastEvent? ,
			OCTTxnID? ,
			refundReference? ,
			reference? ,
			thirdPartyReference? ,
			AuthorisationId? ,
			cardDetails?,
			AgentFeeAuthorisationId?,
			ISO8583ReturnCode? ,
			IssuerResponseCode? ,
			CVCResultCode? ,
			AVSResultCode? ,
			AAVAddressResultCode? ,
			AAVPostcodeResultCode? ,
			AAVCardholderNameResultCode? ,
			AAVTelephoneResultCode? ,
			AAVEmailResultCode? ,
			ThreeDSecureResult? ,
			cardHolderName? ,
		    issuerCountryCode? ,
		    issuerName?,
		    ThreeDSOutcomeInAuthorisation? ,
		    POSResponse?,
			balance* ,
			cardNumber?,
			cardUpdated?,
			paymentInstrumentUpdated?,
			cardPAR?,
			hashedCardNumber?,
			riskScore?,
			FraudSight?,
			shippingAddress?,
			shopperEmailAddress?,
			consumerTrackingReference?,
			pbbaPayConnect?,
			instalments?,
			acquirerReturnDescription?,
			localAcquirer?,
			receipts?,
			ISO20022TransactionReasonCode?,
			subPaymentMethod?,
			apmEnrichedData?,
			schemeResponse?,
			emvcoTokenDetails?,
			dateTime?,
			fastFunds?,
			accountUpdater?,
			primeRoutingResponse?,
		    enhancedAuthResponse?,
			paymentId?,
			acquirerCode?,
		    gatewayCode?,
		    OCTTxnId?,
			cardBin?,
			networkPaymentToken?,
			merchantToken?,
		    MAC?,
			fundingLinkId?,
		    acquirerResponseEci?,
		    authenticationOptimisationService?)>

<!ELEMENT authenticateResponse (authenticationOutage | threeDSOutcome | authenticationOptimisationService) >

<!-- CHILD ELEMENTS OF authenticateResponse -->

<!ELEMENT authenticationOutage EMPTY>

<!ELEMENT threeDSOutcome (threeDSVersion?, enrolled?, eci?, xid?, dsTransactionId?, signatureVerification?,
		cavv?, authenticationStatus?, cardHolderInformation?, challengePreference?,
		effectiveAuthenticationType?, transactionStatusReason?, challengeCancelIndicator?, networkScore?, cardBrand?, cavvAlgorithm?, acsTransactionId?) >

<!-- END CHILD ELEMENTS OF authenticateResponse -->

<!-- CHILD ELEMENTS OF threeDSOutcome-->

<!ELEMENT signatureVerification (#PCDATA) >

<!ELEMENT enrolled (#PCDATA) >

<!ELEMENT authenticationStatus (#PCDATA) >

<!ELEMENT cardHolderInformation (#PCDATA) >

<!-- Possible values for challengePreference (noPreference, noChallengeRequested, challengeRequested, challengeMandated)-->
<!ELEMENT challengePreference (#PCDATA) >

<!-- Possible values for effectiveAuthenticationType (challenge, frictionless, frictionlessDelegated)-->
<!ELEMENT effectiveAuthenticationType (#PCDATA) >

<!--transactionStatusReason datatype: Alphanumeric, length: 2 -->
<!ELEMENT transactionStatusReason (#PCDATA) >

<!--challengeCancelIndicator datatype: Alphanumeric, length: 2 -->
<!ELEMENT challengeCancelIndicator (#PCDATA) >

<!--networkScore datatype: Numeric, length: 2 -->
<!ELEMENT networkScore (#PCDATA) >

<!--cavvAlgorithm datatype: Numeric, length: 1 -->
<!ELEMENT cavvAlgorithm (#PCDATA) >

<!ELEMENT acsTransactionId (#PCDATA) >
<!-- END CHILD ELEMENTS OF threeDSOutcome -->

<!ELEMENT authenticationOptimisationService (#PCDATA) >
<!ATTLIST authenticationOptimisationService decision (no3DS) #REQUIRED>

<!-- challengeRequired may be sent in response to an order with payment details where the shopper needs to authenticate
themselves with their card issuer using 3DS Flex -->
<!ELEMENT challengeRequired  (threeDSChallengeDetails|(threeDSSessionId, threeDSVersion, issuerName))>

<!ELEMENT threeDSChallengeDetails  (threeDSVersion, transactionId3DS, acsURL, payload)>

<!-- CHILD ELEMENTS OF threeDSChallengeDetails -->
<!ELEMENT acsURL (#PCDATA)>
<!ELEMENT payload (#PCDATA)>
<!ELEMENT transactionId3DS (#PCDATA)>

<!-- END CHILD ELEMENTS OF threeDSChallengeDetails -->

<!ELEMENT threeDSSessionId (#PCDATA) >

<!ELEMENT accessTokenDetails (accessToken, tokenExpiryInMinutes) >
<!ELEMENT accessToken (#PCDATA)>
<!ELEMENT tokenExpiryInMinutes (#PCDATA)>

<!ELEMENT hashedCardNumber (#PCDATA) >

<!ELEMENT requestInfo  (request3DSecure)>

<!ELEMENT cardBalance		(amount )>

<!-- CHILD ELEMENTS OF ORDERBATCH ELEMENT -->
<!-- ==================================== -->
<!-- Reserved for internal use.              -->
<!ELEMENT foreignContent  (#PCDATA )>
<!ATTLIST foreignContent  xml:space  (default | preserve )  'preserve' >


<!-- CHILD ELEMENT OF PaymentService ELEMENT -->
<!ELEMENT addressCheck  (address )>

<!-- CHILD ELEMENT OF Reply ELEMENT -->
<!ELEMENT addressCheckResponse  (address*,
								    addressCheckResponseCode,
									addressCheckMessage )>

<!-- 	AddressCheckResponseCodes:
		ERROR = 1
		PROVIDER_ERROR = 2
		SUCCESS = 3
		SUCCESS_NEW_DATA = 4
		MOVED_NO_NEW_ADDRESS = 5
		MOVED_MAIL_FORWARDED = 6
		UNUSABLE_ADDRESS =7
		MANUAL_CHECK =8           -->
<!ELEMENT addressCheckResponseCode  (#PCDATA )>
<!ELEMENT addressCheckMessage  (#PCDATA )>

<!ELEMENT checkCardResponse (cardType?, issuerCountryCode?, billingCurrencyCode?, disbursementBlocked?, gamblingDisbursementBlocked?, mtBlocked?, schemeSupportedByFfs?, fastFunds?)>

<!ELEMENT checkCardHolderNameResponse (firstNameCardHolderMatchDecision?, lastNameCardHolderMatchDecision?, middleNameCardHolderMatchDecision?,
		nameCardHolderMatchDecision?, nameCardHolderResult?, actionCode?, responseCode?)>
<!ATTLIST checkCardHolderNameResponse providerType CDATA #IMPLIED>
<!ELEMENT firstNameCardHolderMatchDecision (#PCDATA )>
<!ATTLIST firstNameCardHolderMatchDecision description CDATA #IMPLIED>
<!ELEMENT lastNameCardHolderMatchDecision (#PCDATA )>
<!ATTLIST lastNameCardHolderMatchDecision description CDATA #IMPLIED>
<!ELEMENT middleNameCardHolderMatchDecision (#PCDATA )>
<!ATTLIST middleNameCardHolderMatchDecision description CDATA #IMPLIED>
<!ELEMENT nameCardHolderMatchDecision (#PCDATA )>
<!ATTLIST nameCardHolderMatchDecision description CDATA #IMPLIED>
<!ELEMENT nameCardHolderResult (#PCDATA )>
<!ATTLIST nameCardHolderResult description CDATA #IMPLIED>
<!ATTLIST actionCode description CDATA #IMPLIED>
<!ATTLIST responseCode description CDATA #IMPLIED>

<!ELEMENT cardBinInquiryResponse ((type?, cardBrand?, bin? , binLength?, fundingType?, issuerName?, countryCode?, currency?, dccAllowed?, anonymousPrepaid?, category?) | (errorName, message))>
<!ELEMENT binLength (#PCDATA )>
<!ELEMENT fundingType (#PCDATA )>
<!ELEMENT currency (#PCDATA )>
<!ELEMENT dccAllowed (#PCDATA )>
<!ELEMENT anonymousPrepaid (#PCDATA )>
<!ELEMENT errorName (#PCDATA )>

<!ELEMENT refundableAmount ( (amount, date? ) | error )>
<!ATTLIST refundableAmount orderCode CDATA  #REQUIRED >
<!ELEMENT currentBalance	(paymentMethod, amount)>

<!-- CHILD ELEMENTS OF ORDERSTATUSEVENT ELEMENT -->
<!-- ========================================== -->
<!ELEMENT journal  (bookingDate , accountTx*, journalReference*, JournalTypeDetail* )>
<!ATTLIST journal  journalType NMTOKEN  #REQUIRED
                   journalId   NMTOKEN  #IMPLIED
                   description CDATA    #IMPLIED
                   note        CDATA    #IMPLIED
                   sent         (y | n )  'n' >

<!ELEMENT JournalTypeDetail (JournalTypeDetailId, Description, ReversalReason*)>
<!ELEMENT JournalTypeDetailId (#PCDATA)>
<!ELEMENT Description (#PCDATA)>
<!ELEMENT ReversalReason (#PCDATA)>

<!-- CHILD ELEMENTS OF PAYMENTMETHODMASK ELEMENT -->
<!-- =========================================== -->
<!ELEMENT include EMPTY>
<!ATTLIST include  code NMTOKEN  #REQUIRED >
<!ELEMENT exclude EMPTY>
<!ATTLIST exclude  code NMTOKEN  #REQUIRED >

<!--
request3DSecure may be sent in response to an order with payment details where the shopper needs to authenticate
themselves with their card issuer using 3D Secure.
-->
<!ELEMENT request3DSecure (mpiRequest, mpiURL?)>
<!ELEMENT paRequest (#PCDATA)>
<!ELEMENT issuerURL (#PCDATA)>

<!--
   mpiRequest and mpiURL are used in rare set-ups: for the MPI of an acquirer or 3rd party gateway.
   mpiRequest can contain a HTML form or data which is submitted to mpiURL. The content depends on the 3rd party MPI.
-->
<!ELEMENT mpiRequest (#PCDATA)>
<!ELEMENT mpiURL (#PCDATA)>
<!--
   CHILD Elements of bankAccountDetails with type element and bankAccountDetails
-->

<!ELEMENT bankAccountDetails (bankAccountIdentifier?, accountHolderName?, shopperPSUId?)>
<!ATTLIST bankAccountDetails type (IBAN|SortCodeAccountNumber) #REQUIRED>
<!ELEMENT bankAccountIdentifier (#PCDATA)>
<!ELEMENT paymentServiceUsername (#PCDATA)>
<!ELEMENT shopperPSUId (#PCDATA)>
<!ELEMENT purposeOfPaymentCode (#PCDATA)>

<!-- CHILD ELEMENTS OF PAYMENTDETAILS ELEMENT -->
<!-- ======================================== -->
<!ELEMENT VISA-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe?, comboCard?, purposeOfPaymentCode?)>
<!ELEMENT ECMC-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe?, comboCard?, purposeOfPaymentCode?)>
<!ELEMENT AMEX-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT DINERS-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT CB-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT CARTEBLEUE-SSL (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT DANKORT-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT DISCOVER-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe?, comboCard?)>
<!ELEMENT JCB-SSL	 	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT AURORE-SSL	 (cardNumber, birthDate,  cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT GECAPITAL-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT AIRPLUS-SSL	 (cardNumber, expiryDate, cardHolderName?, cvc?, cardAddress?,cardSwipe?, enhancedRiskData? )>
<!ELEMENT UATP-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe?, enhancedRiskData? )>
<!ELEMENT SWITCH-SSL	 (cardNumber, expiryDate, cardHolderName, (issueNumber | (startDate, issueNumber?) ), cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT MAESTRO-SSL	 (cardNumber, expiryDate, cardHolderName, startDate?, issueNumber?, cvc?, cardAddress?,cardSwipe?, purposeOfPaymentCode? )>
<!ELEMENT SOLO_GB-SSL	 (cardNumber, expiryDate, cardHolderName, (issueNumber | (startDate, issueNumber?) ), cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT LASER-SSL		 (cardNumber, expiryDate, cardHolderName, startDate?, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT BHS-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT NEWDAY-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT IKEA-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT HIPERCARD-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT SOROCRED-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT ELO-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe?, comboCard?)>
<!ELEMENT CARNET-SSL            (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT ARGENCARD-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT CABAL-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT CENCOSUD-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT COOPEPLUS-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT CREDIMAS-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT ITALCRED-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT NARANJA-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT NATIVA-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT NEVADA-SSL	 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT NEXO-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT SVS_GIFTCARD-SSL 	 (cardNumber, pin? )>
<!ELEMENT TARJETASHOPPING-SSL (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT TROY-SSL		 (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT UPI-SSL (cardNumber, expiryDate?, cardHolderName?, cvc?, parameter+, cardAddress?)>
<!ELEMENT UPEX-SSL (cardNumber, expiryDate?, cardHolderName?, cvc?, cardAddress?, cardSwipe?, comboCard?)>
<!ELEMENT FF_DISBURSE-SSL (recipient, purposeOfPayment?)>
<!ELEMENT FF_MONEYTRANSFER-SSL (sender?, recipient, purposeOfPayment?)>
<!ATTLIST FF_MONEYTRANSFER-SSL action (pushOnly|pullOnly) #REQUIRED
                               recipientMatchesSender (true|false) #IMPLIED>
<!ELEMENT FF_HPP-SSL (paymentInstrument | (cvc, session))>
<!ELEMENT ELV-SSL	(iban, accountHolderName, bankName?, bankLocation?, creditScoring?)>
<!ELEMENT SEPA_DIRECT_DEBIT-SSL (bankAccount-SEPA)>
<!ELEMENT bankAccount-SEPA (iban, accountHolderName)>
<!ELEMENT ACH_DIRECT_DEBIT-SSL (echeckSale | echeckVerification)>
<!ELEMENT PERMANENT_SIGNED_DD_NL-FAX EMPTY>
<!ELEMENT SINGLE_UNSIGNED_DD_NL-SSL (BankAccount_NL)>
<!ELEMENT SINGLE_UNSIGNED_DD_FR-SSL (BankAccount_FR)>
<!ELEMENT SINGLE_UNSIGNED_DD_ES-SSL (BankAccount_ES)>
<!ELEMENT PERMANENT_SIGNED_DD_GB-SSL (bankAccount-GB)>
<!ELEMENT PERMANENT_UNSIGNED_DD_GB-SSL (bankAccount-GB)>
<!ELEMENT SINGLE_SIGNED_DD_ES-SSL (BankAccount_ES)>
<!ELEMENT PAYOUT-BANK EMPTY>
<!ELEMENT VISACHECKOUT-SSL (callId, extraData?)>
<!ELEMENT PAYPAL-EXPRESS (successURL, failureURL, cancelURL)>
<!ATTLIST PAYPAL-EXPRESS firstInBillingRun (true|false) #IMPLIED>
<!ELEMENT IDEAL-SSL (successURL, failureURL, cancelURL, pendingURL?)>
<!ATTLIST IDEAL-SSL shopperBankCode (ABN_AMRO|ASN|ING|RABOBANK|SNS|SNS_REGIO|TRIODOS|VAN_LANSCHOT|KNAB|BUNQ|REVOLUT|YOURSAFE|NATIONALE_NEDERLANDEN|N26) #IMPLIED>
<!ELEMENT GIROPAY-SSL (successURL, failureURL, cancelURL, pendingURL?, swiftCode?)>
<!ATTLIST GIROPAY-SSL shopperCountryCode NMTOKEN #IMPLIED>
<!ELEMENT NCPB2B-SSL (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT NCPSEASON-SSL (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT NCPGMM-SSL (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?,cardSwipe? )>
<!ELEMENT CARD-SSL (cardNumber, expiryDate, cardHolderName, cvc?, cardAddress?, cardSwipe?, comboCard?, birthDate?, password?, BRN?)>
<!ELEMENT CSE-DATA ( encryptedData, cardAddress? )>
<!ELEMENT ABAQOOS-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST ABAQOOS-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT AGMO-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST AGMO-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ALIPAY-SSL (successURL, cancelURL, pendingURL, failureURL?)>
<!ATTLIST ALIPAY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ALIPAYMOBILE-SSL (successURL, cancelURL, pendingURL, failureURL?)>
<!ATTLIST ALIPAYMOBILE-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT BALOTO-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST BALOTO-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT BANKAXESS-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST BANKAXESS-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT BANKLINKNORDEA-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST BANKLINKNORDEA-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT BILLDESK-SSL (successURL, cancelURL?, pendingURL)>
<!ATTLIST BILLDESK-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT BILLINGPARTNER-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST BILLINGPARTNER-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT CASHU-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST CASHU-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT DINEROMAIL_7ELEVEN-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST DINEROMAIL_7ELEVEN-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT DINEROMAIL_OXXO-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST DINEROMAIL_OXXO-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT DINEROMAIL_ONLINE_BT-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST DINEROMAIL_ONLINE_BT-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT DINEROMAIL_SERVIPAG-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST DINEROMAIL_SERVIPAG-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT EKONTO-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST EKONTO-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT EPAY-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST EPAY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT EUTELLER-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST EUTELLER-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT EWIREDK-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST EWIREDK-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT EWIRENO-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST EWIRENO-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT EWIRESE-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST EWIRESE-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT HALCASH-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST HALCASH-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT INSTADEBIT-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST INSTADEBIT-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT KONBINI-SSL (lastName?, telephoneNumber?, successURL, cancelURL, pendingURL)>
<!ATTLIST KONBINI-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT LOBANET_AR-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST LOBANET_AR-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT LOBANET_BR-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST LOBANET_BR-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT LOBANET_CL-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST LOBANET_CL-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT LOBANET_MX-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST LOBANET_MX-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT LOBANET_PE-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST LOBANET_PE-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT LOBANET_UY-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST LOBANET_UY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT MISTERCASH-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST MISTERCASH-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT MULTIBANCO-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST MULTIBANCO-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT NEOSURF-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST NEOSURF-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT OPENBANKING-SSL (bankAccountDetails?, customerToken?, paymentServiceUsername?, successURL?, cancelURL?, pendingURL?, failureURL?)>
<!ATTLIST OPENBANKING-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ATTLIST OPENBANKING-SSL shopperBankCode CDATA #IMPLIED>
<!ELEMENT PAYSAFECARD-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST PAYSAFECARD-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT PAGA-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST PAGA-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT PAGA_VERVE-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST PAGA_VERVE-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT PAYU-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST PAYU-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT PLUSPAY-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST PLUSPAY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT POLI-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST POLI-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT POLINZ-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST POLINZ-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT POSTEPAY-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST POSTEPAY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT PRZELEWY-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST PRZELEWY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT QIWI-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST QIWI-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT SAFETYPAY-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST SAFETYPAY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT SID-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST SID-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT SKRILL-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST SKRILL-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT SOFORT-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST SOFORT-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT SOFORT_CH-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST SOFORT_CH-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT SPOROPAY-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST SPOROPAY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT TELEINGRESO-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST TELEINGRESO-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT TICKETSURF-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST TICKETSURF-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT TRUSTLY-SSL (successURL, cancelURL?, pendingURL)>
<!ATTLIST TRUSTLY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT TRUSTPAY_CZ-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST TRUSTPAY_CZ-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT TRUSTPAY_EE-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST TRUSTPAY_EE-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT TRUSTPAY_SK-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST TRUSTPAY_SK-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT WEBMONEY-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST WEBMONEY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT YANDEXMONEY-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST YANDEXMONEY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT KLARNA_PAYLATER-SSL (successURL, cancelURL, pendingURL, failureURL, customerToken?, klarnaExtraMerchantData?)>
<!ATTLIST KLARNA_PAYLATER-SSL shopperCountryCode NMTOKEN #REQUIRED locale NMTOKEN #REQUIRED>
<!ELEMENT KLARNA_PAYNOW-SSL (successURL, cancelURL, pendingURL, failureURL, customerToken?, klarnaExtraMerchantData?)>
<!ATTLIST KLARNA_PAYNOW-SSL shopperCountryCode NMTOKEN #REQUIRED locale NMTOKEN #REQUIRED>
<!ELEMENT KLARNA_SLICEIT-SSL (successURL, cancelURL, pendingURL, failureURL, customerToken?, klarnaExtraMerchantData?)>
<!ATTLIST KLARNA_SLICEIT-SSL shopperCountryCode NMTOKEN #REQUIRED locale NMTOKEN #REQUIRED>
<!ELEMENT KLARNA_V2-SSL (successURL, cancelURL, pendingURL, failureURL, customerToken?, klarnaExtraMerchantData?)>
<!ATTLIST KLARNA_V2-SSL shopperCountryCode NMTOKEN #REQUIRED locale NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_AUD-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_AUD-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_CAD-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_CAD-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_CHF-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_CHF-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_CZK-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_CZK-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_DKK-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_DKK-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_EUR-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_EUR-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_GBP-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_GBP-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_HKD-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_HKD-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_HUF-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_HUF-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_JPY-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_JPY-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_NOK-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_NOK-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_NZD-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_NZD-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_PLN-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_PLN-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_RUB-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_RUB-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_SEK-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_SEK-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_SGD-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_SGD-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_THB-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_THB-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_TRY-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_TRY-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_USD-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_USD-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT ENVOY_TRANSFER_ZAR-BANK EMPTY>
<!ATTLIST ENVOY_TRANSFER_ZAR-BANK shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT EPS_ENV-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST EPS_ENV-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT MYBANK-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST MYBANK-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT BANCOMATPAY-SSL (successURL?, cancelURL?, pendingURL?)>
<!ATTLIST BANCOMATPAY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT SATISPAY-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST SATISPAY-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT BLIK-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST BLIK-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT PAYBYBANK_AU-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST PAYBYBANK_AU-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT OXXO-SSL (successURL, failureURL)>
<!ATTLIST OXXO-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT MBWAY-SSL (successURL, failureURL, pendingURL)>
<!ATTLIST MBWAY-SSL shopperCountryCode NMTOKEN #REQUIRED>

<!ELEMENT ASTROPAYCARD-SSL (pan,cvv,expiryDate,successURL, cancelURL, pendingURL)>
<!ATTLIST ASTROPAYCARD-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT SWIFF-SSL (pan, cvv, expiryDate, successURL, cancelURL, pendingURL)>
<!ATTLIST SWIFF-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT pan (#PCDATA )>
<!ELEMENT cvv (#PCDATA )>

<!ELEMENT BANCOSANTANDER-SSL (rut,successURL, cancelURL, pendingURL)>
<!ATTLIST BANCOSANTANDER-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT rut (#PCDATA )>

<!ELEMENT BOLETO-SSL (cpf,successURL, cancelURL, pendingURL)>
<!ATTLIST BOLETO-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!-- CPF field can be used for CNPj also -->
<!ELEMENT BOLETO-HTML (cpf, firstName?, lastName?)>
<!ELEMENT selectedScheme EMPTY>
<!ATTLIST selectedScheme shopperSelection CDATA #IMPLIED>

<!--EXEMPTION fields-->
<!ELEMENT exemption EMPTY>
<!ATTLIST exemption type ( LV | LR | OP | CP) #REQUIRED>
<!ATTLIST exemption placement (AUTHORISATION | AUTHENTICATION | OPTIMISED) #REQUIRED>

<!ELEMENT exemptionResponse (exemption?) >
<!ATTLIST exemptionResponse result (ADVISED | HONOURED | REJECTED | OUT_OF_SCOPE) #REQUIRED>
<!ATTLIST exemptionResponse reason
		(GATEWAY_ADVICE  |  ISSUER_HONOURED      | ISSUER_REJECTED
		| HIGH_RISK      | INVALID               | UNSUPPORTED_SCHEME
		| NOT_SUBSCRIBED | ALREADY_AUTHENTICATED | MOTO
		| MIT            | UNATTENDED            | RECURRING
		| CONTACTLESS    | OLO                   | UNAVAILABLE
		| UNSUPPORTED_ACQUIRER | FRAUDSIGHT_OVERRIDE) #REQUIRED>

<!--FraudSightData additional fields-->
<!ELEMENT FraudSightData (customStringFields?, customNumericFields?, shopperFields?)>
<!ELEMENT customStringFields
		(customStringField1?, customStringField2?, customStringField3?, customStringField4?, customStringField5?,
				customStringField6?, customStringField7?, customStringField8?, customStringField9?, customStringField10?)>
<!ELEMENT customNumericFields
		(customNumericField1?, customNumericField2?, customNumericField3?, customNumericField4?, customNumericField5?,
				customNumericField6?, customNumericField7?, customNumericField8?, customNumericField9?, customNumericField10?)>
<!ELEMENT shopperFields (shopperName?, shopperId?, birthDate?, shopperAddress?)>
<!ELEMENT customStringField1 (#PCDATA)>
<!ELEMENT customStringField2 (#PCDATA)>
<!ELEMENT customStringField3 (#PCDATA)>
<!ELEMENT customStringField4 (#PCDATA)>
<!ELEMENT customStringField5 (#PCDATA)>
<!ELEMENT customStringField6 (#PCDATA)>
<!ELEMENT customStringField7 (#PCDATA)>
<!ELEMENT customStringField8 (#PCDATA)>
<!ELEMENT customStringField9 (#PCDATA)>
<!ELEMENT customStringField10 (#PCDATA)>
<!ELEMENT customNumericField1 (#PCDATA)>
<!ELEMENT customNumericField2 (#PCDATA)>
<!ELEMENT customNumericField3 (#PCDATA)>
<!ELEMENT customNumericField4 (#PCDATA)>
<!ELEMENT customNumericField5 (#PCDATA)>
<!ELEMENT customNumericField6 (#PCDATA)>
<!ELEMENT customNumericField7 (#PCDATA)>
<!ELEMENT customNumericField8 (#PCDATA)>
<!ELEMENT customNumericField9 (#PCDATA)>
<!ELEMENT customNumericField10 (#PCDATA)>
<!ELEMENT shopperName (#PCDATA )>
<!ELEMENT shopperAddress (address )>
<!-- Payment token elements -->
<!ELEMENT TOKEN-SSL ((paymentTokenID, paymentInstrument?) | (cvc, session))>
<!ATTLIST TOKEN-SSL tokenType (XiSecure | OmniToken | STS) #IMPLIED>
<!ATTLIST TOKEN-SSL tokenScope (shopper | merchant) #IMPLIED>
<!ATTLIST TOKEN-SSL captureCvc (true | false) #IMPLIED>
<!ELEMENT paymentInstrument (cardDetails | paypal | sepa | emvcoTokenDetails | SAMSUNGPAY-SSL | PAYWITHGOOGLE-SSL | APPLEPAY-SSL | EMVCO_TOKEN-SSL | obdetails | accountHolder)>
<!ELEMENT cardDetails (cardNumber?, expiryDate?, cardHolderName?, cvc?, cardAddress?, derived?, encryptedPAN?, fullName?)>
<!ELEMENT obdetails (OPENBANKING-SSL?,shopper?,billingAddress?)>
<!ELEMENT posPaymentInstrument (cardNumber, expiryDate, cardHolderName?, billingAddress?)>
<!-- Beneficiary token elements -->
<!ELEMENT accountHolder (bankDetail?, accountHolderAddress?, entity?)>
<!ELEMENT bankDetail (bankAccountIdentifier?, sortCode?, bankName?, accountType?, bankCode?, branchCode?, accountHolderName?)>
<!ELEMENT accountHolderAddress (address1?, address2?, address3?, postalCode?, city?, state?, countryCode?, telephoneNumber?, emailAddress?)>
<!ELEMENT sortCode (#PCDATA)>
<!ELEMENT beneficiaryName (#PCDATA)>
<!ELEMENT accountType (#PCDATA)>
<!ELEMENT entity (#PCDATA)>

<!ELEMENT paypal (#PCDATA)>
<!ELEMENT emvcoTokenDetails (tokenNumber?, tokenId?, type?, expiryDate?, cardHolderName?)>
<!ELEMENT sepa (mandateId?, iban?, shopperEmailAddress?, accountHolderName?, mandateSignatureDate?)>

<!ELEMENT derived (cardBrand, cardSubBrand, cardCoBrand?, issuerCountryCode, obfuscatedPAN?, bin?)>
<!ELEMENT cardBrand (#PCDATA)>
<!ELEMENT cardSubBrand (#PCDATA)>
<!ELEMENT cardCoBrand (#PCDATA)>
<!ELEMENT obfuscatedPAN  (#PCDATA )>
<!ELEMENT bin (#PCDATA )>

<!ELEMENT token (authenticatedShopperID?, tokenEventReference?, ((tokenReason?, tokenDetails, paymentInstrument, schemeResponse?, selectedScheme?) | error) )>
<!-- tokenEventReference, tokenReason will be populated for create token and order inquiry response. -->

<!ELEMENT tokenDetails (paymentTokenID, paymentTokenExpiry, reportingTokenID?, reportingTokenExpiry?, tokenEventReference?, tokenReason)>
<!-- tokenEventReference and tokenReason will be populated with data from the token store -->
<!-- tokenDetails will be populated just for create token response and order inquiry response, and not for used token -->

<!ATTLIST tokenDetails tokenEvent (NEW|MATCH|CONFLICT|USE) #IMPLIED>
<!-- tokenEvent will be populated only in create token response and order inquiry response -->
<!ATTLIST tokenDetails tokenType (XiSecure | OmniToken | STS) #IMPLIED>

<!ELEMENT paymentTokenID (#PCDATA)>
<!ELEMENT paymentTokenExpiry (date)>
<!ELEMENT reportingTokenID (#PCDATA)>
<!ELEMENT reportingTokenExpiry (date)>

<!-- CHILD ELEMENTS OF FF_DISBURSE-SSL and FF_MONEYTRANSFER-SSL -->
<!ELEMENT sender ((fundReference | ((paymentTokenID, authenticatedShopperID?)?, paymentInstrument?)), address?)>
<!ATTLIST sender tokenScope (shopper | merchant) 'shopper'>
<!ATTLIST sender fundType (DebitAccount | CreditAccount | StagedDigitalWallet | NonStagedDigitalWallet | MerchantWallet | CreditCard | DebitCard | PrepaidCard | Cash | Card) 'CreditAccount'>
<!ATTLIST sender captureCvc (true | false) #IMPLIED>
<!ELEMENT purposeOfPayment (#PCDATA)>
<!ELEMENT recipient ((fundReference | ((paymentTokenID, authenticatedShopperID?)?, paymentInstrument?)), (address | countryCode)?)>
<!ATTLIST recipient tokenScope (shopper | merchant) 'shopper'>
<!ATTLIST recipient fundType (CreditCard | DebitCard | PrepaidCard | DebitAccount | CreditAccount | StagedDigitalWallet | NonStagedDigitalWallet | MerchantWallet | Cash | Card) #IMPLIED>
<!ELEMENT fundReference (#PCDATA)>

<!-- Bank Transfer online in Brazil -->
<!ELEMENT ONLINE_TRANSFER_BR-SSL (bankCode, cpf?, successURL, failureURL)>

<!ELEMENT cpf (#PCDATA )>

<!ELEMENT WEBPAY-SSL (successURL, failureURL, cardBrand)>

<!ELEMENT MONETA-SSL (accountNumber, accountPassword, successURL, cancelURL, pendingURL)>
<!ATTLIST MONETA-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT accountPassword (#PCDATA )>


<!-- SPEEDCARD-SSL also requires the customerId,
     which is defined below the thirdPartyData element -->
<!ELEMENT SPEEDCARD-SSL (successURL, cancelURL, pendingURL)>
<!ATTLIST SPEEDCARD-SSL shopperCountryCode NMTOKEN #REQUIRED>

<!ELEMENT TODITOCARD-SSL (pan, pin, successURL, cancelURL, pendingURL)>
<!ATTLIST TODITOCARD-SSL shopperCountryCode NMTOKEN #REQUIRED>
<!ELEMENT pin (#PCDATA )>

<!ELEMENT TRANSFER_AT-BANK EMPTY>
<!ELEMENT TRANSFER_BE-BANK EMPTY>
<!ELEMENT TRANSFER_CH-BANK EMPTY>
<!ELEMENT TRANSFER_DE-BANK EMPTY>
<!ELEMENT TRANSFER_DK-BANK EMPTY>
<!ELEMENT TRANSFER_ES-BANK EMPTY>
<!ELEMENT TRANSFER_FI-BANK EMPTY>
<!ELEMENT TRANSFER_FR-BANK EMPTY>
<!ELEMENT TRANSFER_GB-BANK EMPTY>
<!ELEMENT TRANSFER_GR-BANK EMPTY>
<!ELEMENT TRANSFER_IT-BANK EMPTY>
<!ELEMENT TRANSFER_JP-BANK EMPTY>
<!ELEMENT TRANSFER_LU-BANK EMPTY>
<!ELEMENT TRANSFER_NL-BANK EMPTY>
<!ELEMENT TRANSFER_NO-BANK EMPTY>
<!ELEMENT TRANSFER_PL-BANK EMPTY>
<!ELEMENT TRANSFER_SE-BANK EMPTY>
<!ELEMENT TRANSFER_US-BANK EMPTY>

<!ELEMENT EMVCO_TOKEN-SSL	 (tokenNumber?, expiryDate?, tokenId?, cardHolderName?, cvc?, cryptogram?, tokenRequestorID?, eciIndicator?, comboCard?) >
<!ATTLIST EMVCO_TOKEN-SSL	 type (APPLEPAY|ANDROIDPAY|SAMSUNGPAY|GOOGLEPAY|NETWORKTOKEN) #REQUIRED>

<!ELEMENT APPLEPAY-SSL       (header, signature, version, data, tokenRequestorID?, cardAddress?, comboCard?) >

<!ELEMENT ANDROIDPAY-SSL       (ephemeralPublicKey, encryptedMessage, tag) >

<!ELEMENT SAMSUNGPAY-SSL      (ThreeDS, comboCard?)>

<!ELEMENT PAYWITHGOOGLE-SSL (protocolVersion, signature, signedMessage, comboCard?)>

<!ELEMENT CLICKTOPAY-SSL (encryptedPayload)>

<!ELEMENT KLARNA-SSL (purchaseCountry, shopperLocale, merchantUrls, extraMerchantData?) >

<!ELEMENT WECHATPAY-SSL (transactionTimeOut*, inAppBrowser*)>

<!ELEMENT BILLKEY-SSL (successURL, failureURL, cancelURL)>
<!ELEMENT INIPAY-SSL  (successURL, failureURL, cancelURL)>
<!ATTLIST INIPAY-SSL  goPayMethod (Card|DirectBank|HPP|VBank) #IMPLIED>

<!ELEMENT ONLINE_TRANSFER_MY-SSL (bankName,  successURL, failureURL, pendingURL)>
<!ELEMENT ONLINE_TRANSFER_TH-SSL (bankName,  successURL, failureURL, pendingURL)>
<!ELEMENT ONLINE_TRANSFER_VN-SSL (bankName?, successURL, failureURL, pendingURL)>
<!ELEMENT SEVENELEVEN_MY-SSL     (successURL, failureURL, pendingURL)>
<!ELEMENT PETRONAS-SSL           (successURL, failureURL, pendingURL)>
<!ELEMENT ENETS_SG-SSL           (successURL, failureURL, pendingURL)>
<!ELEMENT CASH_TH-SSL            (successURL, failureURL, pendingURL)>
<!ELEMENT ATM_ID-SSL             (successURL, failureURL, pendingURL)>

<!ELEMENT PBBA-SSL (returnURL, delivery?, cookieId?)>
<!ELEMENT returnURL (#PCDATA )>
<!ELEMENT delivery (date?)>
<!ATTLIST delivery type (ship|digital|collect) #REQUIRED>

<!ELEMENT consumerTrackingReference (#PCDATA)>
<!ELEMENT pbbaPayConnect (cookieId, cookieExpiryDays)>
<!ELEMENT cookieId (#PCDATA)>
<!ELEMENT cookieExpiryDays (#PCDATA)>

<!ELEMENT MERCADOPAGO-SSL (successURL?, cancelURL?, pendingURL?, failureURL?)>
<!ATTLIST MERCADOPAGO-SSL intent (authorise|capture|enrol) 'capture'
						  shopperCountryCode NMTOKEN #IMPLIED>

<!ELEMENT PAYPAL-SSL (successURL?, cancelURL?, pendingURL?, failureURL?)>
<!ATTLIST PAYPAL-SSL intent (authorise|capture) 'authorise' >

<!ELEMENT AFTERPAY-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST AFTERPAY-SSL intent (authorise|capture) 'authorise' >

<!ELEMENT CLEARPAY-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST CLEARPAY-SSL intent (authorise|capture) 'authorise' >

<!ELEMENT ALIPAY_HK-SSL (successURL?, cancelURL?, pendingURL?, failureURL?)>
<!ATTLIST ALIPAY_HK-SSL intent (capture) 'capture'
		                shopperCountryCode NMTOKEN #IMPLIED >

<!ELEMENT ALIPAY_CN-SSL (successURL?, cancelURL?, pendingURL?, failureURL?)>
<!ATTLIST ALIPAY_CN-SSL intent (capture) 'capture'>

<!ELEMENT ALIPAY_POS-SSL (quickPayAuthCode?, acquirerMerchantId, transactionTimeOut?, terminalData)>
<!ATTLIST ALIPAY_POS-SSL intent (capture) 'capture'>

<!-- eGHL PAYMENT METHOD START -->

<!ELEMENT FPX-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST FPX-SSL intent (capture) 'capture' >

<!ELEMENT GRABPAY-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST GRABPAY-SSL intent (capture) 'capture' >

<!ELEMENT MAE-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST MAE-SSL intent (capture) 'capture' >

<!ELEMENT TRUEMONEY-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST TRUEMONEY-SSL intent (capture) 'capture' >

<!ELEMENT BANKTRANSFER-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST BANKTRANSFER-SSL intent (capture) 'capture' >

<!ELEMENT TOUCHNGO-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST TOUCHNGO-SSL intent (capture) 'capture' >

<!ELEMENT BOOST-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST BOOST-SSL intent (capture) 'capture' >

<!ELEMENT LINEPAY-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST LINEPAY-SSL intent (capture) 'capture' >

<!ELEMENT PROMPTPAY-SSL (successURL, cancelURL, pendingURL, failureURL)>
<!ATTLIST PROMPTPAY-SSL intent (capture) 'capture' >

<!ELEMENT KAKAOPAY-SSL (successURL, pendingURL, failureURL)>

<!-- eGHL PAYMENT METHOD END -->

<!-- Generic element for generic APMs START-->

<!ELEMENT APM (successURL?, failureURL?, cancelURL?, pendingURL?)>
<!ATTLIST APM paymentMethodName NMTOKEN #REQUIRED
		shopperCountryCode NMTOKEN #IMPLIED>

<!-- Generic element for generic APMs END -->

<!ELEMENT receipts (receipt*)>

<!ELEMENT receipt (acquirerData)>
<!ATTLIST receipt type (TICKET|AGENTFEE) #REQUIRED>
<!ELEMENT acquirerData (#PCDATA)>

<!ELEMENT cardSwipe (track*)>
<!ELEMENT track (#PCDATA)>
<!ATTLIST track number (1|2|3|4) #REQUIRED>

<!-- For combo cards only: is this a debit or credit card transaction? -->
<!ELEMENT comboCard EMPTY>
<!ATTLIST comboCard type (debit|credit) #REQUIRED>

<!ELEMENT localDateTimeAtPOS (date)>

<!ELEMENT session EMPTY>

<!ATTLIST session  shopperIPAddress	NMTOKEN  #IMPLIED
                   id               NMTOKEN  #IMPLIED >

<!ELEMENT deviceSession (sessionId)>

<!ELEMENT dynamicCurrencyConversion (dynamicCurrencyConversionData?)>

<!ATTLIST dynamicCurrencyConversion status (accepted |
											rejectedByCustomer |
											serviceUnavailable |
											lessThanMinimumValue |
											unsupportedLocalCard |
											unsupportedCard |
											noInformationAvailable |
											ratesUnavailable |
											unauthorisedRequest |
											invalidRequest) #REQUIRED>

<!ELEMENT dynamicCurrencyConversionData (amount, date)>

<!ATTLIST dynamicCurrencyConversionData exchangeRate NMTOKEN #REQUIRED>

<!ELEMENT sessionId   (#PCDATA)>

<!ELEMENT captcha EMPTY>
<!ATTLIST captcha responseToken NMTOKEN #IMPLIED >

<!ELEMENT foreignRetailerCountry	(#PCDATA)>

<!--
SDWODATA ELEMENT
-->
<!ELEMENT sdwoData ( retailerMcc,
				     operatorName,
				     retailerName,
                     retailerStreet,
                     retailerPostCode,
				     retailerCity,
				     retailerState?,
				     retailerCountry,
				     visaMvv?,
				     mcWalletId? )>

<!--
CHILD ELEMENTS OF SDWODATA ELEMENT
-->
<!ELEMENT retailerMcc		(#PCDATA)>
<!ELEMENT operatorName      (#PCDATA)>
<!ELEMENT retailerName		(#PCDATA)>
<!ELEMENT retailerStreet    (#PCDATA)>
<!ELEMENT retailerPostCode	(#PCDATA)>
<!ELEMENT retailerCity		(#PCDATA)>
<!ELEMENT retailerState		(#PCDATA)>
<!ELEMENT retailerCountry	(#PCDATA)>
<!ELEMENT visaMvv		    (#PCDATA)>
<!ELEMENT mcWalletId	    (#PCDATA)>

<!ELEMENT MVV (#PCDATA)>

<!-- CHILD ELEMENTS FOR RESULT URLS -->
<!ELEMENT successURL (#PCDATA )>
<!ELEMENT failureURL (#PCDATA )>
<!ELEMENT errorURL (#PCDATA )>
<!ELEMENT pendingURL (#PCDATA )>
<!ELEMENT cancelURL (#PCDATA )>

<!-- CHILD ELEMENTS OF VISA CHECKOUT -->
<!ELEMENT callId (#PCDATA )>
<!ELEMENT extraData (#PCDATA )>

<!-- CHILD ELEMENTS FOR KLARNA-SSL -->
<!ELEMENT purchaseCountry (#PCDATA )>
<!ELEMENT shopperLocale (#PCDATA )>
<!ELEMENT orderTaxAmount (#PCDATA )>
<!ELEMENT merchantUrls (checkoutURL, confirmationURL)>
<!ELEMENT extraMerchantData (#PCDATA )>

<!-- CHILD ELEMENTS FOR WECHATPAY-SSL -->
<!ELEMENT transactionTimeOut (#PCDATA )>
<!ELEMENT inAppBrowser (#PCDATA )>

<!ELEMENT termsURL (#PCDATA )>
<!ELEMENT checkoutURL (#PCDATA )>
<!ELEMENT confirmationURL (#PCDATA )>

<!--CHILD ELEMENTS FOR EMVCO TOKEN PAYMENT METHODS -->
<!ELEMENT tokenNumber  (#PCDATA )>
<!ELEMENT tokenRequestorID (#PCDATA )>
<!ELEMENT eciIndicator (#PCDATA )>
<!ELEMENT type (#PCDATA )>

<!--CHILD ELEMENTS FOR APPLEPAY-SSL PAYMENT METHODS -->
<!ELEMENT header (ephemeralPublicKey, publicKeyHash, transactionId, applicationData?) >
<!ELEMENT ephemeralPublicKey (#PCDATA )>
<!ELEMENT publicKeyHash (#PCDATA )>
<!ELEMENT transactionId (#PCDATA )>

<!ELEMENT signature (#PCDATA )>
<!ELEMENT version (#PCDATA )>
<!ELEMENT data (#PCDATA )>

<!--CHILD ELEMENTS FOR ANDROIDPAY-SSL PAYMENT METHOD -->
<!ELEMENT encryptedMessage  (#PCDATA)>
<!ELEMENT tag (#PCDATA)>

<!--CHILD ELEMENTS FOR SAMSUNGPAY-SSL PAYMENT METHOD -->
<!ELEMENT ThreeDS (data, version)>

<!--CHILD ELEMENTS FOR PAYWITHGOOGLE-SSL PAYMENT METHOD -->
<!ELEMENT signedMessage (#PCDATA)>
<!ELEMENT protocolVersion (#PCDATA)>

<!--CHILD ELEMENTS FOR CLICKTOPAY-SSL PAYMENT METHOD -->
<!ELEMENT encryptedPayload (#PCDATA)>

<!-- CHILD ELEMENTS OF CB-SSL, CARTEBLEUE-SSL, VISA-SSL, -->
<!-- DISCOVER-SSL, JCB-SSL, LASER-SSL, DANKORT-SSL, JCB-SSL, -->
<!-- ECMC-SSL, AMEX-SSL, DINERS-SSL, AURORE-SSL, GECAPITAL, -->
<!-- NCPB2B-SSL, NCPSEASON-SSL, NCPGMM-SSL, BHS-SSL, NEWDAY-SSL, IKEA-SSL, -->
<!-- HIPERCARD-SSL, SOROCRED-SSL ELEMENT -->
<!-- =================================================== -->
<!ELEMENT cardNumber  (#PCDATA )>
<!ELEMENT cardPAR (#PCDATA)>
<!ELEMENT expiryDate  (date )>
<!ELEMENT cardHolderName  (#PCDATA )>
<!ELEMENT encryptedPAN  (#PCDATA )>
<!ELEMENT cvc  (#PCDATA )>
<!ELEMENT family  (#PCDATA )>

<!-- CHILD ELEMENTS OF UATP-SSL -->
<!ELEMENT enhancedRiskData (salesSource?, ticketRestrictions?, shopperEmailAddress?)>

<!ELEMENT salesSource   ( #PCDATA )>
<!ELEMENT ticketRestrictions ( #PCDATA )>


<!-- the cardAddress element represents the address of -->
<!-- the card holder or, where appliccable, account holder -->
<!ELEMENT cardAddress  (address )>

<!ELEMENT encryptedData  (#PCDATA )>

<!-- CHILD ELEMENTS OF ACH_DIRECT_DEBIT-SSL -->
<!ELEMENT echeckSale (companyName?, billingAddress, bankAccountType, accountNumber, routingNumber, checkNumber?, customIdentifier?)>
<!ELEMENT echeckVerification (amount, companyName?, billingAddress, bankAccountType, accountNumber, routingNumber, checkNumber?)>
<!ATTLIST echeckVerification orderCode NMTOKEN #REQUIRED>
<!ELEMENT companyName (#PCDATA)>
<!ELEMENT bankAccountType (#PCDATA)>
<!ELEMENT accountNumber (#PCDATA)>
<!ELEMENT routingNumber (#PCDATA)>
<!ELEMENT checkNumber (#PCDATA)>
<!ELEMENT customIdentifier (#PCDATA)>

<!ELEMENT echeckVerificationResponse (response, responseTime, message, acquirerResponseCode)>
<!ELEMENT response (#PCDATA)>
<!ELEMENT responseTime (#PCDATA)>
<!ELEMENT message (#PCDATA)>
<!ELEMENT acquirerResponseCode (#PCDATA)>
<!ATTLIST echeckVerificationResponse orderCode NMTOKEN #REQUIRED>

<!-- 	Payment method attribute elements are sent along with the order and can be
 	used by merchant to supply payment method specific attributes. The payment method
 	implementation, if used, can query and use these attributes for specific order.

 	This functionality is currently being used by ACH payment method for setting
 	verification and authentication flags. Merchant can send these flags along with
 	order. If shopper uses eCheck payment method then screen can will authentication
 	fields only if authentication flag is 'Y'  -->

<!ELEMENT paymentMethodAttribute (paymentMethod, attrName?, attrValue?, attribute*)>
<!ELEMENT attrName (#PCDATA)>
<!ELEMENT attrValue (#PCDATA)>
<!ELEMENT attribute (#PCDATA)>
<!ATTLIST attribute key CDATA #IMPLIED >

<!-- Used to specify the text displayed on the shoppers' statement.  Only supported by certain acquirers -->
<!ELEMENT statementNarrative (#PCDATA)>

<!-- Used to collect merchant-held data
     required by some 3rd party processors -->
<!ELEMENT thirdPartyData (customerId?, instalments?, firstInstalment?, cpf?, originalAmount?, mpiTermURL?)>
<!-- used to validate what amount has been aproved-->
<!ELEMENT approvedAmount (amount)>
<!-- used to request approval on currency conversion-->
<!ELEMENT fxApprovalRequired (amount)>

<!ELEMENT customerId (#PCDATA)>
<!ELEMENT instalments (#PCDATA)>
<!ELEMENT firstInstalment ( amountNoCurrency )>
<!ELEMENT originalAmount ( amountNoCurrency )>
<!ELEMENT mpiTermURL (#PCDATA)>

<!ELEMENT localAcquirer (code?, description?)>

<!ELEMENT acquirerReturnDescription (#PCDATA )>

<!ELEMENT subPaymentMethod (#PCDATA)>

<!-- Used to collect merchant-held data
     required by Visa for MCC6012 merchants -->
<!ELEMENT shopperAdditionalData (shopperAccountNumber?, lastName?, birthDate?, postalCode?, debtRepayment?, documentID?, consumerBillPaymentIndicator?)>
<!ELEMENT shopperAccountNumber (#PCDATA)>
<!ELEMENT documentID (#PCDATA)>

<!--This can be either 'D' to indicate it is a debt repayment or 'N' to indicate that it is not.-->
<!ELEMENT debtRepayment (#PCDATA)>

<!--This can be 'B' to indicate it is applicable for the merchants business.-->
<!ELEMENT consumerBillPaymentIndicator (#PCDATA)>


<!-- CHILD ELEMENTS of SINGLE_UNSIGNED_DD_NL-SSL -->
<!-- BankAccount_NL is deprecated for use in new elements, instead
     bankAccount-NL must be used.
     Use is still required within a SINGLE_UNSIGNED_DD_NL-SSL element -->
<!ELEMENT BankAccount_NL (iban, accountHolderName, accountHolderResidence)>

<!-- CHILD ELEMENTS of SINGLE_UNSIGNED_DD_FR-SSL -->
<!-- The element BankAccount_FR represents a french -->
<!-- bank account which consists of 5 elements:     -->
<!-- the bankCode (code &eacute;tablissement),      -->
<!-- the branchCode (code guichet),                 -->
<!-- the bankAccountNr,                             -->
<!-- the controlCode (cl&eacute; RIB) and           -->
<!-- the accountHolderName                          -->
<!-- BankAccount_FR is deprecated for use in new elements, instead
     bankAccount-FR must be used.
     Use is still required within a SINGLE_UNSIGNED_DD_FR-SSL element -->
<!ELEMENT BankAccount_FR (bankCode, branchCode, bankAccountNr, controlCode, accountHolderName)>

<!-- CHILD ELEMENTS of SINGLE_UNSIGNED_DD_ES-SSL -->
<!-- Spanish bank account
     bankCode (Codigo de entidad) 4 digits
     branchCode (Codigo de oficina) 4 digits
     controlCode (Digitos de control) 2 digits
     bankAccountNr (Numero de cuenta) 10 digits
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT BankAccount_ES (swiftCode?, bankCode, branchCode, controlCode, bankAccountNr, bankName?, bankAddress?, bankCity?, accountHolderName)>


<!-- Convenience container element for country-specific bank accounts. -->
<!ELEMENT bankAccount (
        bankAccount-AT|
        bankAccount-BE|
        bankAccount-CA|
        bankAccount-CH|
        bankAccount-CZ|
        bankAccount-DE|
        bankAccount-DK|
        bankAccount-EE|
        bankAccount-ES|
        bankAccount-FI|
        bankAccount-FR|
        bankAccount-GB|
        bankAccount-GR|
        bankAccount-HU|
		bankAccount-JP|
        bankAccount-HK|
        bankAccount-IE|
        bankAccount-IT|
        bankAccount-LU|
        bankAccount-NL|
        bankAccount-NO|
        bankAccount-PL|
        bankAccount-PT|
        bankAccount-SE|
        bankAccount-SG|
        bankAccount-US|
        bankAccount-ZA
    )>

<!-- Austrian bank account
     iban           20 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-AT (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Australian bank account
     bankCode       3 digits
     branchCode     3 digits
     bankAccountNr  9 digits
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-AU (swiftCode?, bankCode, branchCode, bankAccountNr, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Belgian bank account
     iban           16 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-BE (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Canadian bank account
     bankCode      4 digits
     branchCode    5 digits
     bankAccountNr 12 digits
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-CA (swiftCode?, bankCode, branchCode, bankAccountNr, bankName, bankAddress, bankCity,  accountHolderName)>
<!-- Swiss bank account
     branchCode (Clearingnummer) 5 digits
     bankAccountNr (Kontonummer) 1-16 digits/characters
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-CH (swiftCode?, branchCode, bankAccountNr, bankName, bankAddress?, bankCity, accountHolderName)>
<!-- Czech republic bank account
     bankCode		4 digits
     branchCode		(First part/prefix) 0-6 digits
     bankAccountNr	(Second part/basic) 2-10 digits
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-CZ (swiftCode?, bankCode, branchCode, bankAccountNr, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- German bank account
     iban 			22 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-DE (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Danish bank account
     bankCode (Registreringsnummer) 4 digits
     bankAccountNr (Kontonummer)    10 digits
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-DK (swiftCode?, bankCode, bankAccountNr, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Estonian bank account
     iban           20 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-EE (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Spanish bank account
     iban           24 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-ES (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Finnish bank account
     iban           18 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-FI (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- French bank account
     iban           27 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-FR (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- UK bank account
     branchCode (Sort Code)     6 digits
     bankAccountNr (Account Number) 7/8 digits
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-GB (swiftCode?, branchCode, bankAccountNr, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Greek bank account
     iban           27 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-GR (swiftCode?, iban, bankName, bankAddress?, bankCity, accountHolderName)>
<!-- Hong Kong bank account
     bankCode      3 digits
     branchCode    3 digits
     bankAccountNr 1-10 digits
     bankName      non empty string
     bankAddress   non empty string
     bankCity      non empty string -->
<!ELEMENT bankAccount-HK (swiftCode?, bankCode, branchCode, bankAccountNr, bankName, bankAddress, bankCity, accountHolderName)>
<!-- Hungarian bank account
     bankCode		8 digits (last digit is check digit)
     bankAccountNr	8-16 digits (last digit is check digit)
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-HU (swiftCode?, bankCode, bankAccountNr, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Irish bank account
     iban           22 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-IE (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Italian bank account
     iban           27 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-IT (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Japanese bank account
     bankCode			numeric bank code
     bankAccountNr		numeric account number (up to 12 digits)
     bankName			bank name in English
     bankNameLocal		bank name in local language
     bankAddress		bank address
     bankCity			bank city
     branchName			branch name in English
     branchNameLocal		branch name in local language
     branchCode			branch code
     accountHolderName		account holder name in English
     accountHolderNameLocal 	account holder name in local language  -->
<!ELEMENT bankAccount-JP (swiftCode?, bankCode, bankAccountNr, bankName?, bankNameLocal?, bankAddress?, bankCity?, branchName?, branchNameLocal?, branchCode?, accountHolderName?, accountHolderNameLocal?)>
<!-- Luxemburgian bank account
     iban           20 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-LU (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Dutch bank account
     iban 			18 alphanumeric
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-NL (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Norwegian bank account
     bankAccountNr (Kontonummer) 11 digits
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-NO (swiftCode?, bankAccountNr, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- New Zealand bank account
     bankCode       4 digits
     branchCode     3 digits
     bankAccountNr  7 digits
	 controlCode    2 digits(check digits)
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-NZ (swiftCode?, bankCode, branchCode, bankAccountNr, bankName?, bankAddress?, bankCity?, controlCode, accountHolderName)>
<!-- Polish bank account
     bankCode      8 digits
     bankAccountNr 16 digits
     controlCode   2 digits(IBAN check digits)
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-PL (swiftCode?, controlCode, bankCode, bankAccountNr, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Portuguese bank account
     iban           25 alphanumeric
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-PT (swiftCode?, iban, bankName?, bankAddress?, bankCity?, accountHolderName)>
<!-- Swedish bank account
     bankCode       4-5 digits
     bankAccountNr  1-9 digits
     controlCode    1 digit
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-SE (swiftCode?, bankCode, bankAccountNr, controlCode,bankName?, bankAddress?, bankCity?,  accountHolderName)>
<!-- Singaporean bank account
     bankCode       4 digits
     branchCode     3 digits
     bankAccountNr  9 digits
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string -->
<!ELEMENT bankAccount-SG (swiftCode?, bankCode, branchCode, bankAccountNr, bankName, bankAddress?, bankCity, accountHolderName)>
<!-- US bank account
     branchCode (Sort code) 9 digits
     bankAccountNr          1-17 digits
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string -->
<!ELEMENT bankAccount-US (swiftCode?, branchCode, bankAccountNr, accountHolderName, accountHolderCity,  bankName, bankAddress, bankCity)>
<!-- South African bank account
     branchCode     6 digits
     bankAccountNr  1-9 digits
     bankName       non empty string
     bankAddress    non empty string
     bankCity       non empty string  -->
<!ELEMENT bankAccount-ZA (swiftCode, branchCode, bankAccountNr, bankName, bankAddress?, bankCity?, accountHolderName)>


<!-- name of the account holder -->
<!ELEMENT accountHolderName  (#PCDATA )>
<!-- name of the account holder in local language -->
<!ELEMENT accountHolderNameLocal (#PCDATA)>
<!-- accountHolderResidence is deprecated for new elements,
     use accountHolderCity instead.
     Use still required within a BankAccount_NL element -->
<!ELEMENT accountHolderResidence  (#PCDATA )>
<!-- accountHolderCity replaces accountHolderResidence -->
<!ELEMENT accountHolderCity  (#PCDATA )>
<!-- the SWIFT code of the bank -->
<!ELEMENT swiftCode  (#PCDATA )>
<!-- the bank code -->
<!ELEMENT bankCode  (#PCDATA )>
<!-- the branch code -->
<!ELEMENT branchCode  (#PCDATA )>
<!-- the control code, or check-digit -->
<!ELEMENT controlCode  (#PCDATA )>
<!-- customer's account nr -->
<!ELEMENT bankAccountNr  (#PCDATA )>
<!-- the name of the bank -->
<!ELEMENT bankName  (#PCDATA )>
<!-- the name of the bank in local language -->
<!ELEMENT bankNameLocal (#PCDATA)>
<!-- the city of the bank -->
<!ELEMENT bankCity  (#PCDATA )>
<!-- the addresss of the bank -->
<!ELEMENT bankAddress  (#PCDATA )>
<!-- the name of the branch -->
<!ELEMENT branchName (#PCDATA)>
<!-- the name of the branch in local language -->
<!ELEMENT branchNameLocal (#PCDATA)>

<!-- Location of the bank in Germany -->
<!ELEMENT bankLocation  (#PCDATA )>
<!-- Unique bank code for a bank located in Germany -->
<!ELEMENT bankLocationId (#PCDATA)>

<!-- CHILD ELEMENTS OF creditScoring ELEMENT -->
<!-- credit scoring is only available for merchants -->
<!-- with a  guaranteed payment agreement with InterCard -->
<!ELEMENT creditScoring (birthDate,address)>
<!-- The birthDate element represents the date of birth -->
<!-- of the account holder, which is used in credit scoring -->
<!ELEMENT birthDate	(date)>

<!-- CHILD ELEMENTS OF MAESTRO-SSL, SOLO_GB-SSL ELEMENT -->
<!ELEMENT issueNumber (#PCDATA)>

<!-- CHILD ELEMENT OF paymentDetails ELEMENT -->
<!ELEMENT POSRequest ((ISO8583Request | WeChatPay)) >

<!ATTLIST POSRequest isRetry (true|false) 'false'
					 isOfflineAuth (true|false) #REQUIRED
					 requestBalance (true|false) 'false'
					 allowPartialAuth (true|false) 'false'
					 isDeferredAuth (true|false) 'false' >
<!ELEMENT ISO8583Request (((cardNumber, expiryDate, cardHolderName?, cvc?, billingAddress?) | encryptedData | TOKEN-SSL), transmissionDate, systemsTraceAuditNumber,
		localDateTimeAtPOS, originalLocalDateTimeAtPOS?,
		POSEntryMode, POSConditionCode, cardholderActivatedTerminal?, track?, terminalData, applicationPANSequenceNumber?, CVMR?, reasonForOnline?, ISOResponseIndicator?,
		AuthorisationId?, authorisationResponseCode?, acquirerMerchantId, issuerCardData?, cardholderIdentificationMethod?, EMVRequest?, lodging?, onlinePIN?,
		singleTapPIN?, retrievalReferenceNumber?, cardBrand?, POSBankAccount?, schemeTransactionIdentifier?) >
<!ATTLIST ISO8583Request chipCard (true|false) 'false' >

<!-- CHILD ELEMENTS FOR WeChatPay -->
<!ELEMENT WeChatPay (quickPayAuthCode, terminalData) >
<!ELEMENT quickPayAuthCode (#PCDATA )>

<!ELEMENT POSBankAccount (#PCDATA) >
<!ATTLIST POSBankAccount iban CDATA #REQUIRED >

<!ELEMENT POSReversal (transmissionDate, systemsTraceAuditNumber, localDateTimeAtPOS, applicationData?, cryptogram?, verificationResults?) >

<!ELEMENT transmissionDate	(date)>
<!ELEMENT systemsTraceAuditNumber (#PCDATA)>
<!ELEMENT originalLocalDateTimeAtPOS (date)>
<!ELEMENT POSEntryMode (#PCDATA)>
<!ELEMENT POSConditionCode (#PCDATA)>
<!ELEMENT cardholderActivatedTerminal (#PCDATA)>

<!ELEMENT terminalData (terminalId, entryCapability?, authenticationCapability?, CAMDataCorrect?, ARQCVerified?, ownerName, ownerLocation, storeId?,
		  terminalModel?, singleTapEnabled?, screenSize?)>
<!ATTLIST terminalData type (default|mobile|tapToPhone|mposIntegratedReader|mposExternalReader) 'default' >

<!ELEMENT terminalId (#PCDATA)>
<!ELEMENT entryCapability (#PCDATA)>
<!ELEMENT authenticationCapability (#PCDATA)>
<!ELEMENT CAMDataCorrect (#PCDATA)>
<!ELEMENT ARQCVerified (#PCDATA)>
<!ELEMENT ownerName (#PCDATA )>
<!ELEMENT ownerLocation (city, state?, countryCode)>
<!ELEMENT storeId (#PCDATA)>
<!ELEMENT terminalModel (#PCDATA)>
<!ELEMENT singleTapEnabled (#PCDATA)>
<!ELEMENT screenSize EMPTY>
<!ATTLIST screenSize value (SMALL|MEDIUM|LARGE) #IMPLIED>

<!ELEMENT applicationPANSequenceNumber (#PCDATA)> <!-- 5F34 -->
<!ELEMENT CVMR (#PCDATA)> <!-- Cardholder Verification Method Results, 9F34 -->
<!ELEMENT reasonForOnline (#PCDATA)>
<!ELEMENT ISOResponseIndicator (#PCDATA)>
<!ELEMENT acquirerMerchantId (#PCDATA)> <!--Also known as MID-->
<!ELEMENT cardholderIdentificationMethod (#PCDATA)>
<!ELEMENT EMVRequest (application, terminal, transaction, unpredictable)>

<!ELEMENT application (ICCCryptogramInformation, ICCCryptogramType, ICCAppUsageControl?,
						ICCAppId, cryptogram, cryptogramAmount?, cryptogramOtherAmount?, interchangeProfile, transactionCounter, applicationEffectiveDate?)>

<!-- Hexadecimal comments in this section refer to the EMV tag Id, see http://www.emvlab.org -->
<!ELEMENT ICCCryptogramInformation (#PCDATA)> <!-- 9F27 -->
<!ELEMENT ICCCryptogramType (#PCDATA)> <!-- 9C -->
<!ELEMENT ICCAppUsageControl (#PCDATA)> <!-- 9F07 -->
<!ELEMENT ICCAppId (#PCDATA)> <!-- 4F -->
<!ELEMENT cryptogram (#PCDATA)> <!-- 9F26 -->
<!ELEMENT cryptogramAmount EMPTY>
<!ATTLIST cryptogramAmount value NMTOKEN #REQUIRED
						   currencyCodeNum NMTOKEN #REQUIRED> <!-- 9F02 - for value; 5F2A - for currencyCodeNum -->
<!ELEMENT cryptogramOtherAmount EMPTY>
<!ATTLIST cryptogramOtherAmount value NMTOKEN #REQUIRED>	<!-- 9F03 -->
<!ELEMENT interchangeProfile (#PCDATA)> <!-- 82-->
<!ELEMENT transactionCounter (#PCDATA)> <!-- 9F36 -->
<!ELEMENT applicationEffectiveDate (#PCDATA)> <!-- 5F25 -->

<!ELEMENT issuerCardData (applicationData?, formFactorIndicator?,customerExclusiveData?)>
<!ELEMENT applicationData (#PCDATA)> <!-- 9F10 -->
<!ELEMENT formFactorIndicator (#PCDATA)>   <!-- 9F6E For contactless transactions -->
<!ELEMENT customerExclusiveData (#PCDATA)> <!-- 9F7C For contactless transactions -->

<!ELEMENT terminal (TAVN, capabilities, verificationResults, transactionStatusInfo?)>
<!ATTLIST terminal countryCode  NMTOKEN #REQUIRED
                   serialNumber	NMTOKEN #IMPLIED
                   type         NMTOKEN #REQUIRED > <!-- serialNumber => 9F1E, type => 9F35 -->

<!ELEMENT TAVN (#PCDATA)> <!-- 9F08 -->
<!ELEMENT capabilities (#PCDATA)>
<!ELEMENT verificationResults (#PCDATA)>
<!ELEMENT transactionStatusInfo (#PCDATA)> <!-- 9B -->

<!ELEMENT additionalCapabilities (#PCDATA)>

<!ELEMENT transaction (transactionDate)>

<!ELEMENT ICCTrxStatus (#PCDATA)>
<!ELEMENT transactionDate (#PCDATA)> <!-- 9A -->

<!ELEMENT unpredictable (#PCDATA)> <!-- 9F37 -->

<!ELEMENT onlinePIN (encryptedPINBlock, PINEncryptionMetadata)>
<!ELEMENT encryptedPINBlock (#PCDATA)>
<!ELEMENT PINEncryptionMetadata (#PCDATA)>
<!ELEMENT singleTapPIN (#PCDATA)>
<!ELEMENT retrievalReferenceNumber (#PCDATA)>

<!ELEMENT POSResponse ((ISO8583Response, balanceReturn?) | inquiryURL)>
<!ELEMENT balanceReturn (amount)>
<!ELEMENT ISO8583Response (authorisationResponseCode, acquirerAuthorisationResponse?, EMVResponse?, transactionResponder?, singleTapRequested?)>
<!ELEMENT acquirerAuthorisationResponse (responseCode, responseDescription)>
<!ELEMENT responseDescription (#PCDATA)>
<!ELEMENT EMVResponse (authenticationData,script)>
<!ELEMENT authenticationData (ARPC)>
<!ELEMENT script (#PCDATA)>
<!ELEMENT ARPC (#PCDATA)>
<!ELEMENT authorisationResponseCode (#PCDATA)>
<!ELEMENT transactionResponder (#PCDATA)>
<!ELEMENT singleTapRequested (#PCDATA)>
<!ELEMENT inquiryURL (#PCDATA)>

<!-- CHILD ELEMENTS OF JOURNAL ELEMENT -->
<!-- the accountType's AUTHORISED, CAPTURED, IN_PROCESS, FOREX, SETTLED_ACQUIRER_TOTAL are obsolete from version 1.4 and on -->
<!-- ================================= -->
<!ELEMENT accountTx  (amount )>
<!ATTLIST accountTx  accountType  (AUTHORISED |
                                   CAPTURED |
                                   IN_PROCESS |
                                   FOREX |
                                   DEPOSIT |
                                   IN_PROCESS_AUTHORISED |
                                   IN_PROCESS_CAPTURED |
                                   IN_PROCESS_SENT_FOR_AUTH |
								   IN_PROCESS_REFUND_PENDING |
								   REFUND_PENDING |
                                   PAYOUT |
                                   SETTLED_BIBIT_NET |
                                   SETTLED_BIBIT_COMMISSION |
                                   SETTLED_ACQUIRER_TOTAL |
                                   IN_PROCESS_PUSH_APPROVED |
                                   IN_PROCESS_PULL_APPROVED)  #REQUIRED
					 batchId NMTOKEN #IMPLIED>

<!ELEMENT journalReference EMPTY>
<!ATTLIST journalReference type      NMTOKEN  #REQUIRED
                           reference CDATA    #IMPLIED >

<!-- CHILD ELEMENTS OF PAYMENT ELEMENT -->
<!-- ================================= -->
<!ELEMENT paymentMethodDetail		(card?)>
<!ELEMENT card	(issueNumber?,expiryDate?, family?)>
<!ATTLIST card	number	CDATA #IMPLIED
				hash	CDATA #IMPLIED
 				type	(creditcard | debitcard) #IMPLIED
 				code	CDATA #IMPLIED >
<!ELEMENT balance		(amount )>
<!ATTLIST balance		accountType NMTOKEN  #REQUIRED >
<!ELEMENT paymentMethod		(#PCDATA )>
<!ELEMENT parameter (#PCDATA)>
<!ATTLIST parameter key CDATA #REQUIRED>
<!ELEMENT apmEnrichedData (parameter+)>
<!ELEMENT schemeResponse (schemeName?, actionCode?, responseCode?, transactionIdentifier?)>
<!ELEMENT ISO8583ReturnCode	EMPTY>
<!ATTLIST ISO8583ReturnCode	code        NMTOKEN  #REQUIRED
                        	description CDATA    #REQUIRED >
<!ELEMENT ISO20022TransactionReasonCode EMPTY>
<!ATTLIST ISO20022TransactionReasonCode code   		NMTOKEN #REQUIRED
                            			description CDATA   #REQUIRED >
<!ELEMENT IssuerResponseCode	EMPTY>
<!ATTLIST IssuerResponseCode	code        NMTOKEN  #REQUIRED
                        	    description CDATA    #REQUIRED >
<!ELEMENT lastEvent		(#PCDATA )>
<!ELEMENT MAC (#PCDATA)>
<!ATTLIST MAC description CDATA  #IMPLIED>
<!ELEMENT fundingLinkId (#PCDATA)>
<!ELEMENT OCTTxnID (#PCDATA)>
<!ELEMENT refundReference	(#PCDATA )>
<!ELEMENT thirdPartyReference	(#PCDATA )>
<!ELEMENT AuthorisationId EMPTY>
<!ATTLIST AuthorisationId  id NMTOKEN  #REQUIRED >
<!ATTLIST AuthorisationId  by NMTOKEN  #IMPLIED >
<!ELEMENT cardUpdated  (#PCDATA )>
<!ELEMENT OCTTxnId (#PCDATA)>
<!ELEMENT paymentInstrumentUpdated EMPTY>
<!ATTLIST paymentInstrumentUpdated type CDATA  #REQUIRED >
<!ELEMENT cardBin EMPTY>
<!ATTLIST cardBin  cardClass			NMTOKEN  #REQUIRED
		           productType			NMTOKEN  #REQUIRED
		           issuerCountryCode	NMTOKEN  #REQUIRED
		           issuerName			NMTOKEN  #REQUIRED>
<!ELEMENT networkPaymentToken (tokenNumber)>
<!ELEMENT acquirerResponseEci (#PCDATA)>
<!ELEMENT cardBinInquiry (recipient?)>

<!-- START ELEMENT merchantToken (and sub-elements) -->
<!ELEMENT merchantToken (merchantTokenMetadata?) >
<!ATTLIST merchantToken merchantTokenIdentifier CDATA #REQUIRED >
<!ELEMENT merchantTokenMetadata (cardArt?, cardMetadata?)>
<!ELEMENT cardArt EMPTY>
<!ATTLIST cardArt name CDATA #IMPLIED
		          type CDATA #IMPLIED
		           url CDATA #IMPLIED>
<!ELEMENT cardMetadata EMPTY>
<!ATTLIST cardMetadata expirationDate CDATA #IMPLIED
		               fpanSuffix CDATA #IMPLIED>
<!--  END  ELEMENT merchantToken (and sub-elements) -->

<!-- Agency Fee authorisation ID. Sometimes used for Acquirers in specific countries like Colombia.-->
<!ELEMENT AgentFeeAuthorisationId EMPTY>
<!ATTLIST AgentFeeAuthorisationId  id NMTOKEN  #REQUIRED >

<!ELEMENT CVCResultCode	EMPTY>
<!ATTLIST CVCResultCode description NMTOKENS #REQUIRED >
<!ELEMENT AVSResultCode	EMPTY>
<!ATTLIST AVSResultCode description NMTOKENS #REQUIRED >
<!ELEMENT AAVAddressResultCode	EMPTY>
<!ATTLIST AAVAddressResultCode description NMTOKENS #REQUIRED >
<!ELEMENT AAVPostcodeResultCode	EMPTY>
<!ATTLIST AAVPostcodeResultCode description NMTOKENS #REQUIRED >
<!ELEMENT AAVCardholderNameResultCode	EMPTY>
<!ATTLIST AAVCardholderNameResultCode description NMTOKENS #REQUIRED >
<!ELEMENT AAVTelephoneResultCode	EMPTY>
<!ATTLIST AAVTelephoneResultCode description NMTOKENS #REQUIRED >
<!ELEMENT AAVEmailResultCode	EMPTY>
<!ATTLIST AAVEmailResultCode description NMTOKENS #REQUIRED >
<!ELEMENT ThreeDSecureResult	(eci?, cavv?, cardHolderInformation?, dsTransactionId?, acsTransactionId?, challengeCancelIndicator?, transactionStatusReason?)>
<!ATTLIST ThreeDSecureResult description NMTOKENS #REQUIRED>
<!ELEMENT issuerCountryCode		(#PCDATA )>
<!ELEMENT issuerName	(#PCDATA )>

<!ELEMENT riskScore EMPTY>
<!ATTLIST riskScore value 				CDATA #IMPLIED
					provider 			CDATA #IMPLIED
					id 					CDATA #IMPLIED
					finalScore 			CDATA #IMPLIED
					score 				CDATA #IMPLIED
					RGID 				CDATA #IMPLIED
					tScore 				CDATA #IMPLIED
					tRisk 				CDATA #IMPLIED
					message 			CDATA #IMPLIED
					extendedResponse	CDATA #IMPLIED
					triggeredRules		CDATA #IMPLIED>

<!ELEMENT FraudSight (reasonCodes, insights?) >
<!ATTLIST FraudSight score   CDATA #REQUIRED
					 id      CDATA #REQUIRED
					 message CDATA #REQUIRED>

<!-- START - CHILD ELEMENTS OF FraudSight -->

<!ELEMENT reasonCodes (reasonCode+)>
<!ELEMENT reasonCode (#PCDATA)>

<!ELEMENT insights (insight+)>
<!ELEMENT insight (#PCDATA)>

<!-- END - CHILD ELEMENTS OF FraudSight -->

<!ELEMENT pbbaRTP (BRN, ApTransactionId, ApTRId, CFI?)>
<!ATTLIST pbbaRTP	confirmExpiry	CDATA #REQUIRED
					retrievalExpiry	CDATA #REQUIRED
					cookieStatus	(N|Y) #REQUIRED>
<!ELEMENT BRN (#PCDATA)>
<!ELEMENT ApTransactionId (#PCDATA)>
<!ELEMENT ApTRId (#PCDATA)>
<!ELEMENT CFI (#PCDATA)>

<!ELEMENT schemeName (#PCDATA )>
<!ELEMENT transactionIdentifier (#PCDATA )>
<!ELEMENT actionCode (#PCDATA )>
<!ELEMENT responseCode (#PCDATA )>
<!ELEMENT fastFunds (#PCDATA )>
<!ELEMENT dateTime (date)>
<!ELEMENT cardType (#PCDATA )>
<!ELEMENT billingCurrencyCode (#PCDATA )>
<!ELEMENT disbursementBlocked (#PCDATA )>
<!ELEMENT gamblingDisbursementBlocked (#PCDATA )>
<!ELEMENT mtBlocked (#PCDATA )>
<!ELEMENT schemeSupportedByFfs (#PCDATA )>

<!ELEMENT accountUpdater  ((originalCard, newCard, updaterResponse?, updaterSource?) | (originalAccountInfo, newAccountInfo) | (updaterResponse,
        updaterSource) | (updaterResponse) | (updaterSource) | (amendedTokenDetails))>
<!ELEMENT originalCard    (cardDetails)>
<!ELEMENT newCard         (cardDetails)>
<!ELEMENT updaterResponse (updaterCode, updaterMessage)>
<!ELEMENT updaterCode     (#PCDATA)>
<!ELEMENT updaterMessage  (#PCDATA)>
<!ELEMENT updaterSource   (#PCDATA)>
<!-- Amended token details for when MAU creates a new token with new card details -->
<!ELEMENT amendedTokenDetails (token)>

<!-- ACH Direct Debit Account Updater info -->
<!ELEMENT originalAccountInfo (bankAccountType, accountNumber, routingNumber)>
<!ELEMENT newAccountInfo (bankAccountType, accountNumber, routingNumber)>

<!ELEMENT primeRoutingResponse (networkName, debitResponse?, debitMessage?)>

<!ELEMENT enhancedAuthResponse (fundingSource?, affluence?, issuerCountry?, cardProductType?, virtualAccountNumber?, accountRangeId?)>

<!ELEMENT fundingSource (sourceType?, availableBalance?, reloadable?, prepaidCardType?)>

<!ELEMENT sourceType (#PCDATA)>
<!ELEMENT availableBalance (#PCDATA)>
<!ELEMENT reloadable (#PCDATA)>
<!ELEMENT prepaidCardType (#PCDATA)>

<!ELEMENT affluence (#PCDATA)>
<!ELEMENT issuerCountry (#PCDATA)>
<!ELEMENT cardProductType (#PCDATA)>
<!ELEMENT virtualAccountNumber (#PCDATA)>
<!ELEMENT accountRangeId (#PCDATA)>

<!-- CHILD ELEMENTS OF ORDERMODIFICATION ELEMENT -->
<!-- ================================================== -->
<!ELEMENT cancel (amount?, localDateTimeAtPOS?, (POSRequest | POSReversal)?, occurredAt?)>
<!-- The cancel immediate attribute can only used for EMV transactions.
     If the merchant is not participating in EMV the value is not checked.
     When the value is set to 'yes', a cancel will be processed directly,
     and not saved as batch.
     Of course the Shoppercell of the authorisation and the cancel should
     be the same! -->
<!ATTLIST cancel immediate (yes|no) 'no' >
<!ATTLIST cancel instant (true|false) #IMPLIED >
<!ATTLIST cancel merchantCode CDATA #IMPLIED >
<!ELEMENT cancelOrRefund (amount?, POSReversal?)>
<!ATTLIST cancelOrRefund merchantCode CDATA #IMPLIED >
<!ELEMENT POSCaptureRequest ((cryptogram, ICCCryptogramInformation)?, transactionStatusInfo?)>
<!ATTLIST POSCaptureRequest isRetry (true|false) 'false'>
<!ELEMENT provideCryptogram (cryptogram, ICCCryptogramInformation, transactionStatusInfo?)>
<!ATTLIST provideCryptogram instant (true|false) #IMPLIED >
<!ELEMENT capture  (localDateTimeAtPOS?, date?, amount, surchargeAmount?, branchSpecificExtension?, POSCaptureRequest?, shipping?, orderLines?, splitFunded?,
        e2eIdentity?, processBatchTime?, occurredAt?)>
<!ATTLIST capture reference CDATA #IMPLIED >
<!ATTLIST capture instant (true|false) #IMPLIED >
<!ATTLIST capture sequenceNumber CDATA #IMPLIED>
<!ATTLIST capture totalCount CDATA #IMPLIED>
<!ATTLIST capture merchantCode CDATA #IMPLIED>
<!ELEMENT splitFunded EMPTY>
<!ATTLIST splitFunded reference CDATA #IMPLIED>
<!ATTLIST splitFunded countryCode CDATA #IMPLIED>
<!ELEMENT defend  (disputeDefence | (disputeDefence? , disputeAttachment))>
<!ELEMENT refund  (amount, (secondaryAmount | surchargeAmount)?, branchSpecificExtension?, reason?, description?, iban?, warning?, orderLines?, splitFunded?, e2eIdentity?,
        processBatchTime?, occurredAt?)>
<!ATTLIST refund reference CDATA #IMPLIED >
<!ATTLIST refund paymentId CDATA #IMPLIED >
<!ATTLIST refund immediate (true|false) #IMPLIED >
<!ATTLIST refund shopperWebformRefund (true|false) #IMPLIED >
<!ATTLIST refund fastRefund (true|false) #IMPLIED >
<!ATTLIST refund merchantCode CDATA #IMPLIED >
<!ELEMENT addBackOfficeCode EMPTY>
<!ATTLIST addBackOfficeCode backOfficeCode CDATA #REQUIRED >
<!ELEMENT authorise EMPTY>
<!ATTLIST authorise authorisationCode CDATA #REQUIRED >
<!ELEMENT amexSubsequentOrderCode (#PCDATA)>
<!ELEMENT increaseAuthorisation (amount, authorisationResponseCode?, storedCredentials?, amexSubsequentOrderCode?)>
<!ELEMENT revoke EMPTY>
<!ELEMENT extendExpiryDate EMPTY>
<!ELEMENT cancelRefund EMPTY>
<!ELEMENT voidSale EMPTY>
<!ELEMENT approve EMPTY>
<!ELEMENT processBatchTime  (#PCDATA )>
<!ELEMENT occurredAt (#PCDATA)>

<!-- CHILD ELEMENTS OF DEFEND ELEMENT -->
<!-- ====================================== -->
<!ELEMENT disputeDefence  (#PCDATA )>
<!ELEMENT disputeAttachment (#PCDATA) >
<!ATTLIST disputeAttachment fileName CDATA  #REQUIRED>

<!-- OPTIONAL CHILD ELEMENTS OF REFUND ELEMENT -->
<!-- ====================================== -->
<!ELEMENT reason  (#PCDATA )>
<!ELEMENT iban (#PCDATA)>
<!ELEMENT warning (#PCDATA)>

<!-- CHILD ELEMENTS OF ORDERINQUIRY ELEMENT -->
<!-- ====================================== -->
<!ELEMENT cardSearch	(startDate )>
<!ATTLIST cardSearch	cardNumber NMTOKEN  #REQUIRED >
<!ELEMENT dateSearch	(fromDate, untilDate )>
<!ATTLIST dateSearch journalTypeFilter CDATA #IMPLIED>
<!ELEMENT creationDate	(date )>
<!ELEMENT fromDate	(date )>
<!ELEMENT untilDate	(date )>
<!ELEMENT bookingDate	(date )>
<!ELEMENT lastDate	(date )>
<!ELEMENT startDate	(date )>
<!ELEMENT date EMPTY>
<!ATTLIST date  dayOfMonth NMTOKEN  #IMPLIED
                month      NMTOKEN  #REQUIRED
                year       NMTOKEN  #REQUIRED
                hour       NMTOKEN  #IMPLIED
                minute     NMTOKEN  #IMPLIED
                second     NMTOKEN  #IMPLIED >


        <!-- CHILD ELEMENTS OF SHOPPER ELEMENT -->
<!-- ===================================== -->
<!ELEMENT shopperEmailAddress		(#PCDATA )>
<!ELEMENT authenticatedShopperID	(#PCDATA )>
<!ELEMENT shopperDetails            (firstName?,
                                     lastName?,
                                     telephoneNumber? )>
<!ELEMENT shopperToken				(((maxAmount?, subscriptionDetails?) | tokenId?), label?)>

<!ELEMENT maxAmount	EMPTY>
<!ATTLIST maxAmount	value	NMTOKEN #REQUIRED>
<!ELEMENT subscriptionDetails	EMPTY>
<!ATTLIST subscriptionDetails	recurrence (ANNUAL|MONTHLY|WEEKLY|DAILY) 'MONTHLY'>
<!ELEMENT label (#PCDATA)>

<!-- CHILD ELEMENTS OF ALL ADDRESS ELEMENTS -->
<!-- ================================= -->
<!-- Note: The form of address which contains a street, is deprecated, and should no longer be used.
           The address1 is now optional, as some merchants are supplying an address only for the
           purpose of performing an AVS check, which requires just the postalCode and countryCode. -->
<!ELEMENT address  (	firstName?,
			lastName?,
			((street, houseName?, houseNumber?, houseNumberExtension?)
			| (address1?, address2?, address3?)),
			postalCode,
			city?,
			state?,
 			countryCode,
			telephoneNumber?,
			emailAddress? )>
<!ATTLIST address	relaxPostalCodeCheck	(true | false) #IMPLIED>

<!-- CHILD ELEMENTS OF ADDRESS ELEMENT -->
<!-- ================================= -->
<!ELEMENT firstName		(#PCDATA )>
<!ELEMENT lastName		(#PCDATA )>
<!ELEMENT street		(#PCDATA )>
<!ELEMENT houseName		(#PCDATA )>
<!ELEMENT houseNumber		(#PCDATA )>
<!ELEMENT houseNumberExtension	(#PCDATA )>
<!ELEMENT address1			(#PCDATA )>
<!ELEMENT address2			(#PCDATA )>
<!ELEMENT address3			(#PCDATA )>
<!ELEMENT postalCode		(#PCDATA )>
<!ELEMENT city			(#PCDATA )>
<!ELEMENT state			(#PCDATA )>
<!ELEMENT countryCode		(#PCDATA )>
<!ELEMENT telephoneNumber	(#PCDATA )>
<!ELEMENT emailAddress (#PCDATA )>

<!ELEMENT invoiceNumber (#PCDATA)>
<!-- CHILD ELEMENTS OF ALL TICKET-DETAILS ELEMENTS -->
<!-- ================================= -->
<!ELEMENT ticketDetails  (bookingSystemTrvl?,
		                  isSeatSale?,
		                  isWithChild?,
		                  purchaseType?,
			              isPackageTrvl?,
			              isFlexTicket?,
			              isInsPurchased?,
			              secProgTrvl? )>



<!-- CHILD ELEMENTS OF ALL TICKET-DETAILS ELEMENTS -->
<!-- ================================= -->
<!ELEMENT bookingSystemTrvl		(#PCDATA ) >
<!ELEMENT isSeatSale  (#PCDATA)>
<!ELEMENT isWithChild (#PCDATA)>
<!ELEMENT purchaseType (#PCDATA)>
<!ELEMENT isPackageTrvl	(#PCDATA)>
<!ELEMENT isFlexTicket	(#PCDATA)>
<!ELEMENT isInsPurchased  (#PCDATA)>
<!ELEMENT secProgTrvl (#PCDATA)>

<!-- CHILD ELEMENTS OF ALL HOTEL ELEMENTS -->
<!ELEMENT hotelReservationDetails ( reference?, guestReservationCount?, hosts?, reservations, insurances?, parties, affiliateName?)>
<!ELEMENT hosts ( host* )>
<!ELEMENT reservations ( reservation+ )>
<!ELEMENT host (  id?, registrationDate?, reservationCount?)>
<!ELEMENT reservation (hotelName, hotelLocation, start, end, numberOfRooms?, partiesIndex, deliveryMethod?, deliveryRecipient,
			amount, classification?)>
<!-- The hotel data is deprecated for use in BranchSpecificExtension, instead lodging must be used  -->
<!-- ================================= -->
<!ELEMENT hotel  (	 hotelReservationDetails+ | (checkInDate, checkOutDate)  )>

<!-- CHILD ELEMENTS OF HOTELRESERVATIONDETAILS -->
<!ELEMENT	guestReservationCount (#PCDATA)>

<!-- CHILD ELEMENTS OF RESERVATION -->
<!ELEMENT	numberOfRooms (#PCDATA)>
<!ELEMENT	partiesIndex (#PCDATA)>

<!-- CHILD ELEMENTS OF ALL CHECKINDATE ELEMENTS -->
<!-- ================================= -->
<!ELEMENT checkInDate  (	date	)>

<!-- CHILD ELEMENTS OF ALL CHECKOUTDATE ELEMENTS -->
<!-- ================================= -->
<!ELEMENT checkOutDate  (	date	)>

<!-- CHILD ELEMENTS OF HOTELRESERVATIONDETAILS -->
<!ELEMENT	hotelName (#PCDATA)>
<!ELEMENT	hotelLocation (address1, postalCode, city, countryCode)>

<!-- CHILD ELEMENTS OF HOST -->
<!ELEMENT	id (#PCDATA)>

<!-- CHILD ELEMENTS OF ALL AIRLINE ELEMENTS -->
<!-- ================================= -->
<!ELEMENT airline  (	airlineName,
						passenger,
						(ticket|nonTicket),
						agent,
						agentFeeAmounts?,
						totalAirlineTaxes?)>
<!-- Code, length 3, consists of the IATA airline code -->
<!ATTLIST airline	code NMTOKEN #REQUIRED
					planNumber (03|06|09|12|00) #IMPLIED>

<!-- CHILD ELEMENTS OF ALL AIRLINENAME ELEMENTS -->
<!-- ================================= -->
<!-- Contains the name of an airline as it may appear on a bill -->
<!ELEMENT	airlineName  (	#PCDATA )>


<!-- CHILD ELEMENTS OF ALL RAILWAY ELEMENTS -->
<!-- ====================================== -->
<!ELEMENT railway   (   railwayName,
                        passenger,
						(ticket|nonTicket),
                        agent,
                        agentFeeAmounts?,
                        totalRailwayTaxes?)>
<!ATTLIST railway	code NMTOKEN #REQUIRED
					planNumber (03|06|09|12|00) #IMPLIED>

<!-- CHILD ELEMENTS OF ALL RAILWAYNAME ELEMENTS -->
<!-- ========================================== -->
<!-- Contains the name of a railway as it may appear on a bill -->
<!ELEMENT	railwayName  (	#PCDATA )>


<!-- CHILD ELEMENTS OF ALL CARRENTAL ELEMENTS -->
<!-- ================================= -->
<!ELEMENT carRental     (   passenger,
							checkInDate,
							checkOutDate,
							duration,
							rentalRate,
							returnLocation,
							customerServicePhone,
                            agent?,
                            agentFeeAmounts?,
							insurance?,
							affiliateName?,
                            totalCarRentalTaxes?)>
<!ATTLIST carRental	agreementNumber NMTOKEN #REQUIRED>

<!ELEMENT	returnLocation	( location )>
<!ELEMENT	rentalRate		( amount )>


<!-- CHILD ELEMENTS OF ALL PASSENGER ELEMENTS -->
<!-- ================================= -->
<!-- Contains the name of a passenger  -->
<!ELEMENT	passenger  (#PCDATA	)>
<!ELEMENT	isFreqFlyer   (	#PCDATA	)>
<!ATTLIST	passenger	code NMTOKEN #REQUIRED
                        isFreqFlyer (0|1) #IMPLIED
                        passengerSpecificData CDATA #IMPLIED >

<!-- CHILD ELEMENTS OF ALL TICKET ELEMENTS -->
<!-- ================================= -->
<!-- Code consists of the ticket number -->
<!ELEMENT ticket  (	issuer,
					issueDate?,
					(flight*|train*),
					ticketAmounts?,
					invoiceNumber?)>
<!ATTLIST ticket	code NMTOKEN #REQUIRED
					restricted (0|1) #REQUIRED
					passengerCount NMTOKEN #IMPLIED
					adultCount NMTOKEN #IMPLIED
					childCount NMTOKEN #IMPLIED
					returnTicket (0|1) #IMPLIED>

<!-- CHILD ELEMENTS OF ALL NONTICKET ELEMENTS -->
<!-- ================================= -->
<!ELEMENT nonTicket  (	#PCDATA	)>
<!ATTLIST nonTicket	subCode NMTOKEN #IMPLIED>

<!-- CHILD ELEMENTS OF ALL AGENT ELEMENTS -->
<!-- ================================= -->
<!-- Code, length 8, consists of the IATA travel agency code -->
<!-- Agent element, contains name of travel agent -->
<!ELEMENT agent	(	#PCDATA )>
<!ATTLIST agent	code NMTOKEN #REQUIRED
                city CDATA   #IMPLIED >

<!ELEMENT totalAirlineTaxes	( amountNoCurrency )>
<!ELEMENT totalRailwayTaxes	( amountNoCurrency )>
<!ELEMENT totalCarRentalTaxes	( amountNoCurrency )>

<!-- CHILD ELEMENTS OF ALL ISSUER ELEMENTS -->
<!-- ================================= -->
<!ELEMENT issuer  (	address, ticketDetails?)>

<!ELEMENT issueDate ( date )>

<!-- CHILD ELEMENTS OF ALL FLIGHT ELEMENTS -->
<!-- ================================= -->
<!-- carrierCode, length 2, consists of the IATA carrier code -->
<!ELEMENT flight  (	departureAirport,
					arrivalAirport,
					departureDate,
					fare,
					tax,
					reservationItinerary?,
					insurance?,
					affiliateName?)>

<!ATTLIST flight	carrierCode NMTOKEN #REQUIRED
					stopOverCode (0|1) #IMPLIED
					flightCode CDATA   #IMPLIED
					isChartered  (0|1) #IMPLIED
					domestic     (0|1) #IMPLIED >

<!-- CHILD ELEMENTS OF ALL TRAIN ELEMENTS -->
<!-- ===================================== -->
<!ELEMENT train	(	departureStation,
					arrivalStation,
					departureDate,
					fare,
					tax,
					reservationItinerary?,
					insurance?,
					affiliateName?)>

<!ATTLIST train		carrierCode		NMTOKEN #REQUIRED
					stopOverCode	(0|1) #IMPLIED
					trainCode		CDATA #IMPLIED
					isChartered		(0|1) #IMPLIED
					domestic		(0|1) #IMPLIED >


<!-- CHILD ELEMENTS OF ALL RESERVATIONITINERARY ELEMENTS -->
<!-- ================================= -->
<!ELEMENT reservationItinerary (
					name?,
					departureCity?,
					arrivalCity?,
					start?,
					end?,
					deliveryMethod?,
					deliveryRecipient?,
					addresses?,
					parties?,
					amount?,
					classification? )>

<!-- information supporting travel legs -->
<!ELEMENT departureCity (#PCDATA) >
<!ELEMENT arrivalCity (#PCDATA) >
<!ELEMENT start (date) >
<!ELEMENT end (date) >
<!ELEMENT deliveryMethod (#PCDATA) >
<!ELEMENT deliveryRecipient (#PCDATA) >
<!ELEMENT addresses (location*) >
<!-- structure to allow multiple parties within a reservation, these could be drivers, passengers, hotel guests) -->
<!ELEMENT parties (party*) >
<!ELEMENT classification (#PCDATA) >

<!-- structure to associate codes with a given address and a type for that address -->
<!ELEMENT location (code?,
					locationType?,
					name?,
					address?) >
<!ELEMENT code (#PCDATA)>
<!-- can be START, FINISH, HOTEL -->
<!ELEMENT locationType (#PCDATA) >


<!-- structure to defining information pertaining to an individual -->
<!ELEMENT party (	reference?,
					firstName?,
					lastName?,
					salutation?) >
<!-- can be mr | mrs | ms | (blank value) -->
<!ELEMENT salutation (#PCDATA) >

<!-- CHILD ELEMENTS OF ALL INSURANCE ELEMENTS -->
<!-- ================================= -->
<!-- Structure to transfer insurance information -->
<!ELEMENT insurance (
					insuranceCompany?,
					insuranceType?,
					amount?) >
<!ELEMENT insuranceCompany (#PCDATA) >
<!-- can be cancellation | travel | cancellation_travel | bankruptcy -->
<!ELEMENT insuranceType (#PCDATA) >

<!ELEMENT affiliateName (#PCDATA) >
<!ELEMENT affiliateAddress (city, state, countryCode) >
<!ELEMENT reservationCount (#PCDATA) >

<!-- CHILD ELEMENTS OF ALL DEPARTUREAIRPORT ELEMENTS -->
<!-- ================================= -->
<!-- Consists of the 3 chars IATA airport code -->
<!ELEMENT departureAirport  (#PCDATA )>

<!-- CHILD ELEMENTS OF ALL ARRIVALAIRPORT ELEMENTS -->
<!-- ================================= -->
<!-- Consists of the 3 chars IATA airport code -->
<!ELEMENT arrivalAirport  (	#PCDATA )>

<!-- CHILD ELEMENTS OF ALL DEPARTURESTATION ELEMENTS -->
<!-- =============================================== -->
<!ELEMENT departureStation ( #PCDATA )>

<!-- CHILD ELEMENTS OF ALL ARRIVALSTATION ELEMENTS -->
<!-- ============================================= -->
<!ELEMENT arrivalStation ( #PCDATA )>

<!-- CHILD ELEMENTS OF ALL DEPARTUREDATE ELEMENTS -->
<!-- ================================= -->
<!ELEMENT departureDate  (	date	)>

<!-- CHILD ELEMENTS OF ALL FARE ELEMENTS -->
<!-- ================================= -->
<!-- class consists of the single character IATA
		travel class code -->
<!ELEMENT fare 	EMPTY>
<!ATTLIST fare	class NMTOKEN #REQUIRED
				basis NMTOKEN #IMPLIED>

<!-- CHILD ELEMENTS OF ALL FARE ELEMENTS -->
<!-- ================================= -->
<!ELEMENT tax 	(	amount	)	>

<!-- CHILD ELEMENTS OF ALL TICKETAMOUNTS ELEMENTS -->
<!-- ================================= -->
<!ELEMENT ticketAmounts (ticketFare, ticketFareVAT?, (airportTax|stationTax)?, agentFee?, agentFeeVAT?, baseRefundVAT?, agentFeeBaseRefundVAT?)>
<!ELEMENT agentFeeAmounts (agentFee, agentFeeVAT?, agentFeeBaseRefundVAT?)>
<!ELEMENT ticketFare (amountNoCurrency)>
<!ELEMENT ticketFareVAT (amountNoCurrency)>
<!ELEMENT airportTax (amountNoCurrency)>
<!ELEMENT stationTax (amountNoCurrency)>
<!ELEMENT agentFee	(amountNoCurrency)>
<!ELEMENT agentFeeVAT (amountNoCurrency)>
<!ELEMENT baseRefundVAT (amountNoCurrency)>
<!ELEMENT agentFeeBaseRefundVAT (amountNoCurrency)>

<!-- CHILD ELEMENTS OF ALL KLARNA EXTRA MERCHANT DATA ELEMENTS -->
<!-- ================================= -->
<!ELEMENT klarnaExtraMerchantData (
					subscription* ) >

<!-- can be CAR, FLIGHT, CAR_AND_FLIGHT, UNKNOWN - the usage is different from reservationType -->
<!ELEMENT packageType (#PCDATA) >

<!-- CHILD ELEMENTS OF ALL RESERVATIONDETAILS ELEMENTS -->
<!-- ================================= -->
<!-- generic structure for reservations/tickets -->
<!ELEMENT reservationDetails (
					reservationType?,
					reference?,
					reservationItinerary+,
					insurance?,
					affiliateName?,
					affiliateAddress?,
					reservationCount?,
					packageType?) >

<!-- can be TRAIN, FERRY, CAR, BUS, HOTEL, CRUISE)  -->
<!ELEMENT reservationType (#PCDATA) >

<!ELEMENT events (
		eventBooking+) >

<!-- Event Booking -->
<!ELEMENT eventBooking (
					name?,
					company?,
					eventType?,
					arenaName?,
					location?,
					eventLocation?,
					start?,
					end?,
					ticketed?,
					deliveryMethod?,
					deliveryRecipient?,
					affiliateName?) >

<!ELEMENT company  (#PCDATA )>
<!ELEMENT eventType  (#PCDATA )>
<!ELEMENT ticketed  (#PCDATA )>

<!ELEMENT ferry (
		ferryReservationDetails+ ) >

<!ELEMENT ferryReservationDetails (
		reference?,
		itineraries?,
		insurances?,
		affiliateName? )>

<!ELEMENT itineraries (
		reservationItinerary+ )>

<!ELEMENT insurances (
		insurance+ )>

<!ELEMENT eventLocation (
		eventAddress?,
		postalCode?,
		city?,
		country?)>

<!ELEMENT eventAddress (#PCDATA )>
<!ELEMENT country (#PCDATA )>
<!ELEMENT arenaName (#PCDATA )>
<!-- voucher -->
<!ELEMENT voucher (
					name?,
					company?,
					start?,
					end?,
					affiliateName?) >

<!-- subscription -->
<!ELEMENT subscription (
					name?,
					start?,
					end?,
					autoRenew?,
					affiliateName?) >
<!ELEMENT autoRenew (#PCDATA) >

<!-- marketplace -->
<!ELEMENT marketplaceSeller (marketplaceAccountIdentifier, subMerchantId, category, productName, registrationDate, lastModified, rating, tradeCount, tradeVolume) >
<!ELEMENT marketplaceBuyer (marketplaceAccountIdentifier, registrationDate, lastModified, tradeCount, tradeVolume) >
<!ELEMENT marketplaceCustomer (marketplaceAccountIdentifier?, registrationDate?, lastModified?) >
<!ELEMENT marketplaceCustomerPayment (marketplaceAccountIdentifier?, paymentOption?, paidPurchaseCount?, paidPurchaseTotal?, lastPaidPurchase?, firstPaidPurchase?) >
<!ELEMENT marketplaceCustomerPaymentSummary (marketplaceAccountIdentifier?, hasPayment?) >

<!-- alternate delivery address -->
<!ELEMENT alternativeShippingAddress (shippingSummary?, address?) >

<!ELEMENT shippingSummary EMPTY >
<!ATTLIST shippingSummary 	shippingMethod CDATA #REQUIRED
							shippingType CDATA #REQUIRED >

<!ELEMENT marketplaceAccountIdentifier (#PCDATA) >
<!ELEMENT subMerchantId (#PCDATA) >
<!ELEMENT category (#PCDATA) >
<!ELEMENT productName (#PCDATA) >
<!ELEMENT registrationDate (date) >
<!ELEMENT lastModified (date) >
<!ELEMENT rating (#PCDATA) >
<!ELEMENT tradeCount (#PCDATA) >
<!ELEMENT tradeVolume (#PCDATA) >
<!ELEMENT paidPurchaseCount (#PCDATA) >
<!ELEMENT paidPurchaseTotal (#PCDATA) >
<!ELEMENT lastPaidPurchase (date) >
<!ELEMENT firstPaidPurchase (date) >
<!ELEMENT hasPayment (#PCDATA) >


<!-- CHILD ELEMENTS OF ALL PURCHASE ELEMENTS -->
<!-- ================================= -->
<!ELEMENT purchase (invoiceReferenceNumber?,
                    customerReference?,
                    cardAcceptorTaxId?,
                    salesTax?,
                    discountName?,
                    discountCode?,
                    discountAmount?,
                    shippingAmount?,
                    dutyAmount?,
                    shipFromPostalCode?,
                    destinationPostalCode?,
                    destinationCountryCode?,
                    orderDate?,
                    shippingDate?,
                    taxExempt?,
					taxInvoiceIndicator?,
					taxInvoiceDiscountIndicator?,
	            	taxTotalInclusiveIndicator?,
		            transactionTaxIndicator?,
		            item*,
                    shippingCourier?)>

<!ELEMENT item (    description,
                    productCode?,
                    commodityCode?,
                    quantity?,
                    unitCost?,
                    unitOfMeasure?,
                    itemTotal?,
                    itemTotalWithTax?,
                    itemDiscountAmount?,
	             	itemTaxRate?,
					lineDiscountIndicator?,
	            	itemLocalTaxRate?,
		            itemLocalTaxAmount?,
                    taxAmount?,
                    categories?,
                    pageURL?,
                    imageURL?)>

<!ELEMENT shippingCourier (name?,
                           trackingNumber?,
                           priority?)>

<!ELEMENT categories (category+)>

<!-- GRANDCHILD ELEMENTS OF ALL PURCHASE ELEMENTS -->
<!-- ================================= -->
<!-- if Vatnumber doesn't start with two character language code, it may be
prefixed with the destination CountryCode in the case of the Shopper and
with the departure countryCode in case of the merchant VAT number -->

<!ELEMENT customerReference         (#PCDATA)>
<!ELEMENT invoiceReferenceNumber    (#PCDATA)>
<!ELEMENT cardAcceptorTaxId         (#PCDATA)>
<!ELEMENT salesTax                  (amount)>
<!ELEMENT discountName              (#PCDATA)>
<!ELEMENT discountAmount            (amount)>
<!ELEMENT discountCode              (#PCDATA)>
<!ELEMENT shippingAmount            (amount)>
<!ELEMENT dutyAmount                (amount)>
<!ELEMENT shipFromPostalCode        (#PCDATA)>
<!ELEMENT destinationPostalCode     (#PCDATA)>
<!ELEMENT destinationCountryCode    (#PCDATA)>
<!ELEMENT orderDate                 (date)>
<!ELEMENT shippingDate              (date)>
<!ELEMENT taxExempt                 (#PCDATA)>
<!ELEMENT taxTotalInclusiveIndicator (#PCDATA)>
<!ELEMENT itemTaxRate		        (#PCDATA)>
<!ELEMENT lineDiscountIndicator     (#PCDATA)>
<!ELEMENT itemLocalTaxRate          (#PCDATA)>
<!ELEMENT itemLocalTaxAmount        (amount)>
<!ELEMENT taxInvoiceIndicator       (#PCDATA)>
<!ELEMENT taxInvoiceDiscountIndicator (#PCDATA)>
<!ELEMENT transactionTaxIndicator   (#PCDATA)>
<!ELEMENT productCode               (#PCDATA)>
<!ELEMENT commodityCode             (#PCDATA)>
<!ELEMENT unitCost                  (amount)>
<!ELEMENT unitOfMeasure             (#PCDATA)>
<!ELEMENT taxAmount                 (amount)>
<!ELEMENT itemTotal                 (amount)>
<!ELEMENT itemTotalWithTax          (amount)>
<!ELEMENT itemDiscountAmount        (amount)>
<!ELEMENT pageURL                   (#PCDATA)>

<!ELEMENT trackingNumber            (#PCDATA)>
<!ELEMENT priority                  (#PCDATA)>

<!--
   GENERIC ELEMENT FOR SUBMITTING RESULT URLS FOR AN ORDER,
   CURRENLTLY ONLY USED FOR CREDIT CARD 3rd PARTY MPI INTEGRATION IN TURKEY.
-->
<!ELEMENT resultURL (successURL?, failureURL?, errorURL?, pendingURL?, cancelURL?)>

<!ELEMENT riskData (authenticationRiskData?, shopperAccountRiskData?, transactionRiskData?)>

<!ELEMENT authenticationRiskData (authenticationTimestamp?, alternateAuthenticationData?)>
<!ATTLIST authenticationRiskData authenticationMethod (guestCheckout | localAccount | federatedAccount | issuerCredentials | thirdPartyAuthentication | fidoAuthenticator | fidoAuthenticatorSignedData | fidoAuthenticatorManaged | assuranceData) #IMPLIED>
<!ELEMENT authenticationTimestamp (date)>
<!ELEMENT alternateAuthenticationData (#PCDATA)>

<!ELEMENT shopperAccountRiskData (
		shopperAccountCreationDate?,
		shopperAccountModificationDate?,
		shopperAccountPasswordChangeDate?,
		shopperAccountShippingAddressFirstUseDate?,
		shopperAccountPaymentAccountFirstUseDate?)>

<!ATTLIST shopperAccountRiskData
		transactionsAttemptedLastDay NMTOKEN  #IMPLIED
		transactionsAttemptedLastYear NMTOKEN #IMPLIED
		purchasesCompletedLastSixMonths NMTOKEN #IMPLIED
		addCardAttemptsLastDay NMTOKEN #IMPLIED
		previousSuspiciousActivity (true | false) #IMPLIED
		shippingNameMatchesAccountName (true | false) #IMPLIED
		shopperAccountAgeIndicator (noAccount | createdDuringTransaction | lessThanThirtyDays | thirtyToSixtyDays | moreThanSixtyDays) #IMPLIED
		shopperAccountChangeIndicator (changedDuringTransaction | lessThanThirtyDays | thirtyToSixtyDays | moreThanSixtyDays) #IMPLIED
		shopperAccountPasswordChangeIndicator (noChange | changedDuringTransaction | lessThanThirtyDays | thirtyToSixtyDays | moreThanSixtyDays) #IMPLIED
		shopperAccountShippingAddressUsageIndicator (thisTransaction | lessThanThirtyDays | thirtyToSixtyDays | moreThanSixtyDays) #IMPLIED
		shopperAccountPaymentAccountIndicator (noAccount | duringTransaction | lessThanThirtyDays | thirtyToSixtyDays | moreThanSixtyDays) #IMPLIED
>
<!ELEMENT shopperAccountCreationDate (date)>
<!ELEMENT shopperAccountModificationDate (date)>
<!ELEMENT shopperAccountPasswordChangeDate (date)>
<!ELEMENT shopperAccountShippingAddressFirstUseDate (date)>
<!ELEMENT shopperAccountPaymentAccountFirstUseDate (date)>

<!ELEMENT transactionRiskData (transactionRiskDataGiftCardAmount?, transactionRiskDataPreOrderDate?)>

<!ATTLIST transactionRiskData
		shippingMethod (shipToBillingAddress | shipToVerifiedAddress | shipToOtherAddress | shipToStore | digital | unshippedTravelOrEventTickets | other) #IMPLIED
		deliveryTimeframe (electronicDelivery | sameDayShipping | overnightShipping | otherShipping) #IMPLIED
		deliveryEmailAddress CDATA #IMPLIED
		reorderingPreviousPurchases (true | false) #IMPLIED
		preOrderPurchase (true | false) #IMPLIED
		giftCardCount NMTOKEN #IMPLIED
>
<!ELEMENT transactionRiskDataGiftCardAmount (amount)>
<!ELEMENT transactionRiskDataPreOrderDate (date)>

<!ELEMENT additional3DSData (merchantName?)>

<!ATTLIST additional3DSData
		dfReferenceId CDATA #IMPLIED
		threeDSSessionId CDATA #IMPLIED
		challengeWindowSize (250x400 | 390x400 | 500x600 | 600x400 | fullPage) '390x400'
		challengePreference (noPreference | noChallengeRequested | challengeRequested | challengeMandated
				| SCAAlreadyPerformed | TRAAlreadyPerformed | dataOnly) 'noPreference'
		javaScriptEnabled (true | false) 'true'
		externalAcquirerId CDATA #IMPLIED
		deviceChannel (Browser | SDK) #IMPLIED
		returnURL CDATA #IMPLIED
>

<!-- CHILD ELEMENTS OF ALL LODGING ELEMENTS -->
<!-- ================================= -->

<!ELEMENT lodging ( hotelFolioNumber?,
			checkInDate?,
			checkOutDate?,
			duration?,
			customerServicePhone?,
			programCode?,
			roomRate?,
			roomTax?,
			numAdults?,
			propertyLocalPhone?,
			fireSafetyIndicator?,
		    lodgingNoShowIndicator?,
			lodgingCharge?)>

<!-- GRANDCHILD ELEMENTS OF ALL LODGING ELEMENTS -->
<!-- ================================= -->
<!ELEMENT hotelFolioNumber (#PCDATA)>
<!ELEMENT duration (#PCDATA)>
<!ELEMENT customerServicePhone (#PCDATA)>
<!ELEMENT programCode (#PCDATA)>
<!ELEMENT roomRate (amount)>
<!ELEMENT roomTax (amount)>
<!ELEMENT numAdults (#PCDATA)>
<!ELEMENT propertyLocalPhone (#PCDATA)>
<!ELEMENT fireSafetyIndicator (#PCDATA)>
<!ELEMENT lodgingNoShowIndicator (#PCDATA)>
<!ELEMENT lodgingCharge (chargeType+ | lodgingItem+)>
<!ELEMENT chargeType (#PCDATA)>
<!ELEMENT lodgingItem EMPTY>
<!ATTLIST lodgingItem type (prepaidExpenses | foodBeverages | folioCashAdvances | valetParking | restaurant | miniBar | laundry | giftShop | telephone | movie |
		businessCentre | healthClub | other) #REQUIRED
						amount NMTOKEN #REQUIRED>

<!ELEMENT outcome (#PCDATA)>
<!ELEMENT ThreeDSOutcomeInAuthorisation (eci?, outcome?, reasonCode?)>

<!-- time to live for hpp payments-->
<!ELEMENT hostPaymentOrderAttribute	EMPTY>
<!ATTLIST hostPaymentOrderAttribute	timeToLiveInMin NMTOKEN #REQUIRED>

<!-- CHILD ELEMENTS OF CAPTURE/REFUND FOR END TO END IDENTITY BUNDLE-->
<!ELEMENT e2eIdentity EMPTY >
<!ATTLIST e2eIdentity
		merchantId CDATA #IMPLIED
		entityId CDATA #IMPLIED
		entityReference CDATA #IMPLIED
		resourceId CDATA #IMPLIED
		resourceReference CDATA #IMPLIED
		commandId CDATA #IMPLIED
		commandReference CDATA #IMPLIED
		orderReference CDATA #IMPLIED
		>