Introduction

WL Sips is a secure multi-channel e-commerce payment solution that complies with the PCI DSS standard. It allows you to accept and manage payment transactions by taking into account business rules related to your activity (payment on despatch, deferred payment, recurring payment, payment in instalments, etc.).

The purpose of this document is to explain the implementation steps of the Sips Office Batch solution and of initial payment and cash management tests.

Who does this document target?

Sips Office Batch aims to provide you with Sips Office functions in Batch mode. These functions are bases on offline file exchanges. Some of the online mode options are not available, e.g. 3-D Secure authentication.

This implementation guide is intended for your technical team.

To get an overview of the WL Sips solution, we advise you to consult the following documents:

  • Functional presentation
  • Functionality set-up guide

Prerequisites

Knowledge of file transfer protocols and standards for programming languages used today, such as Java, PHP or .Net, is necessary to develop a connection to Sips Office Batch .

Note: all code sections in this document are provided as samples, you will need to adapt them to your website for them to be fully operable.

Understanding payments with Sips Office Batch

The processing of files by Sips Office Batch can be divided into several steps:

1. The merchant uploads request files to an external FTPS or SFTP account supplied by Worldline .

2. Worldline 's file transfer gateway receives the request files and sends them to the Sips Office Batch engine.

3. The Sips Office Batch engine processes the request files one by one and generates one response file per request file.

4. The Sips Office Batch engine sends the response files to the external FTPS or SFTP account through the file transfer gateway.

5. The merchant retrieves the response files from the external FTPS or SFTP account supplied by Worldline .

6. The Sips Office Batch engine, via the file transfer gateway, destroys the response files after a first successful download by the merchant.

General rules about transfers

  • The merchant can choose either FTPS or SFTP as transfer method.
  • Worldline provides a dedicated merchant account (with a username and password). The Worldline account must be the same for request files and response files; however some file name restrictions apply.
  • Worldline 's SFTP and FTPS servers also verify the merchant’s IP address in addition to their username and password.
  • Worldline gives the response file a name that differs from that of the request file.
  • After a given period (1 week), response files are deleted from the FTPS or SFTP accounts even if they were not downloaded.

Managing the operations from several merchants

The remitter is a partner who acts as a technical operator managing the file exchanges with the WL Sips payment platform. A remitter can send the operations from several merchants in the same file provided these operations are declared in the name of this remitter during the registration step.

Note: WL Sips assigns a remitter number during registration. This number is supplied in the remitterId field of the request file header.

It should be noted that a remitter can also be a merchant themselves.

Understanding the format of the exchanged files

The request and response files exchanged with Sips Office Batch are in XML format.

Each file consists of four successive sections:

  • FILE TYPE corresponds to the file type (please read the next section for an explanation of the various types)
  • HEADER contains the file header
  • BODY contains all operations
  • END marks the end of the file

The file header contains an ID in the form of a sequence number. This sequence number must be:

  • numerical
  • unique for all your files (with no time limit)
  • ascending i.e. must start at 1 and increase from 1 to 1

The file body contains several records. A record corresponds to a transaction or cash management operation, or a related function (such as wallet management or fraud management).

  • Sample request or response file main structure:
      <?xml version="1.0" encoding="utf-8"?>
<file type="…" format="…" version="…">
<header …   >
    <remitterId>023101122334455</remitterId>
    <date>2012-06-08+01:00</date>
    <time>15:35:00+01:00</time>
    <sequence>86</sequence>
</header>
<body>
   <operation1 …   />
   <operation2 …   />
    …
</body>
<end nbRecord="nn" />
</file>
    
Note: XML schemas are provided in the appendices so you can validate the request and response files.

Several response files can be processed over the same day. When several request files are available on the external FTPS account, Sips Office Batch processes them one by one successively (not simultaneously) and in their order of arrival on the FTPS account.

There is one response file for each request file even if the file processing generates errors.

Note: except in very specific cases, a response file adds the response fields to the information of the request file. Please read the 'Reconciliation of request and response files' section below.

General rules about the exchanged files

  • The file size cannot exceed 100 Mb or 100,000 operation records.
  • A file is dedicated to a single remitter.
  • A request file cannot contain several operations on the same transaction. For instance, a transaction cannot be created and cancelled in the same request file.
  • The order of operations in the body of the response file can differ from the order of operations in the request file.

Understanding the format of the request file

The file type is based on the service used.

All the fields of the “file type” element of the request are mandatory and in ANS20 format. They are returned unchanged in the response.

  • The tag name is file.
  • The type field must be request for the request and response for the response.
  • The format and version fields depend on the type of service called.
Format Version Service description
office The value must be 11 Acceptance of transactions and cash management operations.
token The value must be 1 PAN tokenisation and detokenisation.
fraud The value must be 2 Fraud management.
wallet The value must be 3 Management of the payment data in the wallet; used for OneClick and subscription-based payments.
  • Sample file type:
      <file type="request" format="office" version="10">
   ...
</file>
    

The header is based on a record that contains the following fields:

Fields Presence Format Description
The tag name is header Mandatory ANS20 Indicates a header record.
remitterId Mandatory N15 Remitter's ID.
date Mandatory XML Date Date, in the merchant's time zone, on which the file was created (YYYY-MM-DD+hh:mm).
time Mandatory XML Time Time, in the merchant's time zone, on which the file was created (hh:mm:ss+hh:mm).
sequence Mandatory N6 File sequence number. You may add leading zeros on the left (e.g. 000001 for the first sequence number).
  • Sample header:
      <header>
    <remitterId>023101122334455</remitterId>
    <date>2012-06-11+02:00</date>
    <time>14:28:00+01:00</time>
    <sequence>86</sequence>
  </header>
    

The body contains operations according to the service declared in the file element. Please refer to the next section for details on the fields for every operation.

  • Sample "body" section for the office service
      <body>
…
    <cardOrder  recordSequence=”2”>
      …
    </cardOrder>
…
</body>
    

The final section is based on a single record that contains the following fields:

Fields Presence Format Description
The tag name is end Mandatory ANS20 Indicates the end of the record.
nbRecord Mandatory N6 Number of operations in the "body" section.
  • Sample "end" element
      <end nbRecord="227" />
    

Request file naming scheme

The request file must be sent in a ZIP archive. The archive name must be OFBREQxx.ZIP , where "xx" is a number between 01 and 99.

An archive must only contain one request file.

You can name this request file freely; however we recommend you to comply with the following naming scheme: SOB.Alias.Date-Time.xml

Where:

  • SOB is the request file to be sent to Sips Office Batch
  • Alias is the WL Sips alias/merchantId of the remitting shop
  • Date is the file date in YYMMDD format
  • Time is the file time in HHMMSS format.

Understanding the format of the response file

The header is based on a record that contains the following fields:

Fields Format Description
The tag name is header ANS20 Indicates a header record.
remitterId N15 Remitter's ID.
date XML Date Date, in the merchant's time zone, on which the file was created (YYYY-MM-DD+hh:mm).
time XML Time Time, in the merchant's time zone, on which the file was created (hh:mm:ss+hh:mm).
sequence N6 File sequence number.
processingResponseCode AN2 Processing response code
beginProcessTime

ANS25

ISO8601

File processing starting timestamp, in the merchant's time zone.
endProcessTime

ANS25

ISO8601

File processing ending timestamp, in the merchant's time zone.
  • Sample header:
      <header>
    <remitterId>023101122334455</remitterId>
    <date>2012-06-11+02:00</date>
    <time>14:28:00+01:00</time>
    <sequence>86</sequence>
    <processingResponseCode>00</processingResponseCode>
    <beginProcessTime>2012-06-07T11:30:47+02:00</beginProcessTime>
    <endProcessTime>2012-06-07T11:31:43+02:00</endProcessTime>
  </header>
    

The “error-details” element is only returned when an error occurs during the checking of the request file. “error-details” is a character string that describes the error.

  • Sample header:
      …
<error-details>ERROR_FILE_ALREADY_PROCESSED: processing_response_code = [02] :
Error in the file sequence number. 
The file has already been processed. Expected sequence number [2] - 
Request file sequence number [1]</error-details>
…
    

The response file contains one element for each operation of the request file. The attributes of this element are filled in during the return. The returned fields are described in the next section.

The end of the response file is similar to the end of the request file and contains the following fields:

Fields Format Description
The tag name is end ANS20 Indicates the end of the record
nbRecord N6 Number of operations in the "body" section
  • Sample "end" element:
      <end nbRecord="227" />
    

Response file naming scheme

The response file is sent in a ZIP archive. This archive is called s******.OFBREP**.zip.

Where:

  • s****** is a unique and non-customisable sequence number.
  • OFBREP** is a number between 01 and 99; this number is identical to that of the request file.

The name of the response file contained in the archive complies with the following naming scheme: OFFUBZ.OFFBAREP.$alias.$date (for instance OFFUBZ.OFFBAREP.MM20LEQUIPE0861.181216).

Where:

  • $alias is the WL Sips alias of the webshop.
  • $date is the file processing date in YYMMDD format.

Reconciliation of request and response files

To make it easier to reconcile request and response files, each request file is identified by a sequence number that is also returned with the response.

All the fields of the request file are also returned in the response file, except for the following fields because of compliance with the PCI DSS standard:

  • cardNumber can be returned hidden in the maskedPan field.
  • cardEffectiveDate (card effective date).
  • cardExpiryDate (card expiry date),
  • cardSeqNumber (card sequence number if present),
  • cardCSCValue (card security code).

WL Sips can modify the value of the following field if the creation of the transaction is followed by a banking authorization:

  • transactionDate

Getting started with Sips Office Batch in 4 steps

Step 1: requesting the creation of a FTPS account

To this end, you must return the Sips Office Batch registration form given to you by your Worldline technical contact. The creation of a FTPS account takes about 12 days from the receipt of the form if the latter has been filled in properly.

E-mails are then exchanged to test the FTPS account in validation mode before implementation in the production environment.

Step 2: using the available functions

The various possible functions are the subject of specific requests.

A request consists of generic fields and container-type fields.

A container is a data structure that groups data functionally.

If a field is that of a container, it is named <container name>.<field name>.

Tip: before you use a function, make sure you are allowed to use it on your shop by contacting the WL Sips technical support.
Note: in the responses, depending on the transaction status and the payment mean chosen, some fields can be null, empty or not returned. Please refer to the payment means documentations to know the field present in the responses.

cardOrder function of the office service

This function will let you make a card payment if you have a customer’s banking information.

cardOrder request format

All the records of the “body” section must contain the following information:

Fields Presence Comments
The tag name is cardOrder Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Optional if you use the S10TransactionReference .
s10TransactionReference Mandatory Optional if you use the transactionReference .
amount Mandatory
captureDay Optional
captureMode Optional
cardCSCValue Optional
cardEffectiveDate Optional
cardExpiryDate Optional
cardNumber Optional
cardSeqNumber Optional
currencyCode Mandatory
customerEmail Optional
customerId Optional
customerIpAddress Optional
merchantTransactionDateTime Optional
orderChannel Mandatory
orderId Optional
paymentPattern Optional
returnContext Optional
statementReference Optional
transactionOrigin Optional
fraudData Optional See the "Container" section
panType Optional Value set to TOKEN_PAN if payment is made using a token
paymentMeanData Optional See the "Container" section
holderData Optional See the "Container" section
riskManagementCustomDataList Optional See the "Container" section
shoppingCartDetail Optional See the "Container" section
paymentMeanBrand Optional
paymentMeanBrandSelectionStatus Optional
orderContext Optional See the "Container" section
travelContext Optional See the "Container" section
deliveryContact Optional See the "Container" section
deliveryAddress Optional See the "Container" section
deliveryData Optional See the "Container" section
holderContact Optional See the "Container" section
billingContact Optional See the "Container" section
billingAddress Optional See the "Container" section
authenticationData Optional See the "Container" section
holderAddress Optional See the "Container" section
  • Sample cardOrder request
      <cardOrder recordSequence=”1”>
      <amount>1000</amount>
      <captureDay>0</captureDay>
      <captureMode>VALIDATION</captureMode>
      <cardCSCValue>470</cardCSCValue>
      <cardEffectiveDate>201201</cardEffectiveDate>
      <cardExpiryDate>209910</cardExpiryDate>
      <cardNumber>4975497549754975</cardNumber>
      <cardSeqNumber>1</cardSeqNumber>
      <currencyCode>978</currencyCode>
      <customerEmail>test@worldline.com</customerEmail>
      <customerId>123</customerId>
      <customerIpAddress>127.0.0.1</customerIpAddress>
      <fraudData>
            <bypass3DS>all</bypass3DS>
            <allowedIpCountryList>
                 <country>fra</country>
            </allowedIpCountryList>
      </fraudData>
      <merchantId>012323232323231</merchantId>
      <merchantTransactionDateTime>2012-11-29T17:04:30Z</merchantTransactionDateTime>
      <orderChannel>INTERNET</orderChannel>
      <orderId>123456</orderId>
      <returnContext>context</returnContext>
      <transactionReference>201211218170401</transactionReference>
      <transactionOrigin>origin</transactionOrigin>
</cardOrder>
    

Format of the response to the cardOrder request

The response contains all the fields of the request (except for cardCSCValue, cardEffectiveDate, cardExpiryDate, cardNumber, cardSeqNumber ), and the fields listed below:

Fields Comments
The tag name is cardOrder
acquirerResponseCode
authorisationId
complementaryCode
complementaryInfo
guaranteeIndicator
holderAuthentRelegation
holderAuthentStatus
maskedPan
officeBatchResponseCode
responseCode
transactionDateTime
tokenPan
authorMessageReference
acquirerResponseMessage
paymentMeanTradingName
cardData See the "Container" section
recurringResponseCode
preAuthorisationProfile
preAuthorisationProfileValue
preAuthorisationRuleResultList See the "Container" section
transactionPlatform Always filled with ‘PROD’
cardCSCResultCode
avsPostcodeResponseCode
avsAddressResponseCode
authorisationTypeLabel Not filled
  • Sample response to a cardOrder request
      <cardOrder recordSequence="1">
     …
    <acquirerResponseCode>00</acquirerResponseCode>
    <authorisationId>1234569654656</authorisationId>
    <maskedPan>160000.47</maskedPan>
    <officeBatchResponseCode>00</officeBatchResponseCode>
    <responseCode>00</responseCode>
    <transactionDateTime>2012-06-14T16:00:00+02:00</transactionDateTime>
    <cardData>
        <cardProductCode>F</cardProductCode>
        <cardProductName>VISA CLASSIC</cardProductName>
        <cardProductProfile>C</cardProductProfile>
        <cardScheme>VISA</cardScheme>
        <issuerCode>00000</issuerCode>
        <issuerCountryCode>GRC</issuerCountryCode>
    </cardData>
    <transactionPlatform>PROD</transactionPlatform>
</cardOrder>
    

refund function of the office service

This operation enables you to refund a transaction by crediting your customer’s account and debiting your own account.

Note: please read the set-up guide ('cash management > refund' section), to find out in which cases you can perform a refund operation.

refund request format

All the records of the “body” section must contain the following information:

Fields Presence Comments
The tag name is refund Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Reference of the transaction to be refunded. Optional if you use the s10TransactionReference .
s10TransactionReference Mandatory Reference of the transaction to be refunded. Optional if you use the transactionReference .
operationAmount Mandatory
currencyCode Mandatory
operationOrigin Optional
shoppingCartDetail Optional See the "Containers" section
  • Sample refund request
      <refund recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <operationAmount>1000</operationAmount>
      <currencyCode>978</currencyCode>
      <operationOrigin>operationOrigin</operationOrigin>
</refund>
    

Format of the response to the refund request

The response contains all the fields of the request plus the following fields:

Fields Comments
The tag name is refund Function name
operationDateTime
transactionDateTime
responseCode
newStatus
newAmount
authorisationId
acquirerResponseCode
officeBatchResponseCode
  • Sample response to a refund request
      <refund recordSequence="1">
      …
      <operationDateTime>2012-06-14T16:00:00+02:00</operationDateTime>
      <transactionDateTime>2012-06-14T16:00:00+02:00</transactionDateTime>
      <responseCode>00</responseCode>
      <newStatus>TO_CREDIT</newStatus>
      <newAmount>0</newAmount>
      <authorisationId>956798798534</authorisationId >
      <acquirerResponseCode>00</acquirerResponseCode>
      <officeBatchResponseCode>00</ officeBatchResponseCode >
</refund>
    

validate function of the office service

This function triggers the capture of a transaction. It enables you to provide deferred payment by debiting your customer’s account when the purchased goods are despatched.

validate request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is validate Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Reference of the transaction to be refunded. Optional if you use the s10TransactionReference .
s10TransactionReference Mandatory Reference of the transaction to be refunded. Optional if you use the transactionReference . See the "Container" section.
operationAmount Mandatory
currencyCode Mandatory
operationOrigin Optional
lastRecoveryIndicator Optional

Sample validate request

      <validate recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <operationAmount>1000</operationAmount>
      <currencyCode>978</currencyCode>
      <operationOrigin>operationOrigin</operationOrigin>
      <lastRecoveryIndicator>TRUE</lastRecoveryIndicator>
</validate>

    

Format of the response to the validate request

The response contains all the fields of the request plus the following fields:

Fields Comments
The tag name is validate Function name
operationDateTime
responseCode
newStatus
newAmount
authorisationId
acquirerResponseCode
officeBatchResponseCode
captureLimitDate
  • Sample response to a validate request:
      <validate recordSequence="1">
      …
    <merchantId>024729465300001</merchantId>
    <transactionReference>17R2DBR2016101400000000</transactionReference>
    <operationAmount>100</operationAmount>
    <currencyCode>978</currencyCode>
    <operationOrigin>batch</operationOrigin>
    <operationDateTime>2017-05-26T11:05:36+02:00</operationDateTime>
    <responseCode>00</responseCode>
    <newStatus>CREDITED</newStatus>
    <newAmount>1000</newAmount>
    <officeBatchResponseCode>00</officeBatchResponseCode>
</validate>
    

duplicate function of the office service

This function makes it possible to create a new transaction from the data of a previous transaction. For instance, if the transaction could not be validated during the specified capture period because of an error or oversight, this transaction has expired and will not be captured. You can correct this by duplicating this transaction.

duplicate request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is duplicate Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Optional if you use the s10TransactionReference .
s10TransactionReference Mandatory Optional if you use the transactionReference .
amount Mandatory
currencyCode Mandatory
captureDay Optional
captureMode Optional
customerEmail Optional
customerId Optional
customerIpAddress Optional
fromTransactionReference Mandatory Reference of the transaction to be duplicated Optional if you use the S10FromTransactionReference . See the "Container" section.
s10FromTransactionReference Mandatory Reference of the transaction to be duplicated Optional if you use the fromTransactionReference . See the "Container" section.
merchantTransactionDateTime Optional
orderChannel Mandatory
orderId Optional
returnContext Optional
transactionOrigin Optional
fromMerchantId Optional
fraudData Optional See the "Container" section.
statementReference Optional
orderContext Optional See the "Container" section.
travelContext Optional See the "Container" section.
deliveryContact Optional See the "Container" section.
deliveryAddress Optional See the "Container" section.
deliveryData Optional See the "Container" section.
holderContact Optional See the "Container" section.
billingContact Optional See the "Container" section.
billingAddress Optional See the "Container" section.
authenticationData Optional See the "Container" section.
holderAddress Optional See the "Container" section.
shoppingCartDetail Optional See the "Container" section.
paymentMeanData Optional Optional configuration for means of payment.
  • duplicate request paymentMeanData container
Fields Presence Comments
The tag name is paymentMeanData. Element name
paypal Optional Specific configuration for PayPal
bcacup Optional Specific configuration for BCAUP

Additional data for PayPal:

Fields Presence Comments
The tag name is paypal . Nom de l'élément
invoiceId Optional PayPal Invoice reference; See PayPal integration guide .

Additional data for BCACUP:

Fields Presence Comments
The tag name is paypal . Nom de l'élément
settlementMode Settlement mode; See BCACUP integration guide.
  • Sample duplicate request
      <duplicate       recordSequence
="1">
  <merchantId>012323232323231</merchantId>
  <transactionReference>SIM201206810160</transactionReference>
  <amount>1000</amount>
  <currencyCode>978</currencyCode>
  <captureDay>1</captureDay>
  <captureMode>VALIDATION</captureMode>
  <customerEmail>your.email@email.com</customerEmail>
  <customerId>12345</customerId>
  <customerIpAddress>127.0.0.1</customerIpAddress>
  <fromTransactionReference>SIM2012068102311</fromTransactionReference>
  <merchantTransactionDateTime>2012-06-07T11:30:47+02:00</merchantTransactionDateTime>
  <orderChannel>MOTO</orderChannel>
  <orderId>123</orderId>
  <returnContext>my context</returnContext>
  <transactionOrigin>SOB</transactionOrigin>
  <paymentMeanData>
    <paypal>
      <invoiceId>my invoice id</invoiceId>
    </paypal>
    <bcacup>
      <settlementMode>COMPTAN</settlementMode>
    </bcacup>
  </paymentMeanData>
</duplicate>
    

Format of the response to the duplicate request

The response contains all the fields of the request plus the following fields:

Fields Comments
The tag name is duplicate Function name
authorisationId
acquirerResponseCode
complementaryCode
complementaryInfo
responseCode
scoreColor
scoreInfo
scoreProfile
scoreThreshold
scoreValue
transactionDateTime
officeBatchResponseCode
maskedPan
panExpiryDate
paymentMeanBrand
cardData See the "Container" section
preAuthorisationProfile
preAuthorisationProfileValue
preAuthorisationRuleResultList See the "Container" section
paymentMeanBrandSelectionStatus
transactionPlatform Always filled with ‘PROD’s
avsPostcodeResponseCode
avsAddressResponseCode
  • Sample response in XML format to a duplicate response
      <duplicate recordSequence="1">
    …
    <authorisationId>956798798534</authorisationId >
    <acquirerResponseCode>00</acquirerResponseCode>
    <responseCode>00</responseCode>
    <transactionDateTime>2012-06-12T09:30:47+02:00</transactionDateTime>
    <officeBatchResponseCode>00</officeBatchResponseCode>
    <maskedPan>4907##########00</maskedPan>
    <panExpiryDate>201610</panExpiryDate>
    <paymentMeanBrand>VISA</paymentMeanBrand>
    <cardData>
        <cardProductCode>F</cardProductCode>
        <cardProductName>VISA CLASSIC</cardProductName>
        <cardProductProfile>C</cardProductProfile>
        <cardScheme>VISA</cardScheme>
        <issuerCode>00000</issuerCode>
        <issuerCountryCode>GRC</issuerCountryCode>
    </cardData>
    <transactionPlatform>PROD</transactionPlatform>
</duplicate>
    

cancel function of the office service

This function makes it possible to cancel a transaction or modify its amount before it is captured.

A cancellation operation cannot be cancelled. It is impossible to cancel an amount that exceeds the original amount of the transaction.

Note: please read the set-up guide ('cash management > cancellation' section), to find out in which cases you can perform a cancellation operation.

cancel request format

Fields Presence Comments
The tag name is cancel Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Reference of the transaction to be cancelled. Optional if you use the s10TransactionReference .
s10TransactionReference Mandatory Reference of the transaction to be cancelled. Optional if you use the transactionReference .
amount Mandatory
currencyCode Mandatory
operationOrigin Optional
  • Sample cancel request
      <cancel recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <amount>1000</amount>
      <currencyCode>978</currencyCode>
      <operationOrigin>operationOrigin</operationOrigin>
</cancel>
    

Format of the response to the cancel request

The response contains all the fields of the request plus the following fields:

Fields Comments
The tag name is cancel Function name
operationDateTime
responseCode
newStatus
newAmount
officeBatchResponseCode
  • Sample response to a cancel request
      <cancel recordSequence="1">
<merchantId>012323232323231</merchantId>
    <transactionReference>DSU20150219070007</transactionReference>
    <amount>010</amount>
    <currencyCode>978</currencyCode>
    <operationOrigin>batch</operationOrigin>
    <operationDateTime>2015-02-27T20:19:57+01:00</operationDateTime>
    <responseCode>00</responseCode>
    <newStatus>TO_CAPTURE</newStatus>
    <newAmount>920</newAmount>
    <officeBatchResponseCode>00</officeBatchResponseCode>
</cancel>
    

credit function of the office service

This function enables you to credit a customer’s account without an original reference transaction. Therefore, you must have the information of your customer’s means of payment, or the associated token.

Note: this function is called creditHolder if you use Sips Office .

credit request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is credit Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Optional if you use the S10TransactionReference .
s10TransactionReference Mandatory Optional if you use the transactionReference .
amount Mandatory
cardEffectiveDate Optional
cardExpiryDate Mandatory
cardNumber Mandatory
cardCSCValue Optional
cardSeqNumber Optional
currencyCode Mandatory
customerEmail Optional
customerId Optional
customerIpAddress Optional
orderChannel Optional
orderId Optional
paymentMeanBrand Optional
returnContext Optional
transactionOrigin Optional
panType Optional
statementReference Optional
  • Sample credit request
      <credit recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <amount>124</amount>
      <cardEffectiveDate>201201</cardEffectiveDate>
      <cardExpiryDate>201212</cardExpiryDate>
      <cardNumber>1600000012331447</cardNumber>
      <cardCSCValue>470</cardCSCValue>
      <cardSeqNumber>1</cardSeqNumber>
      <currencyCode>978</currencyCode>
      <customerEmail>test@worldline.net</customerEmail>
      <customerId>123</customerId>
      <customerIpAddress>127.0.0.1</customerIpAddress>
      <orderChannel>MOTO</orderChannel>
      <orderId>123456</orderId>
      <paymentMeanBrand>VISA</paymentMeanBrand>
      <returnContext>context</returnContext>
      <transactionOrigin>origin</transactionOrigin>
      <statementReference>RefN123600</statementReference>
</credit>
    

Format of the response to the credit request

The request contains all the fields of the request (except the card fields) and the following fields:

Fields Comments
The tag name is credit Function name
responseCode
acquirerResponseCode
authorisationId
maskedPan
newStatus
operationDateTime
officeBatchResponseCode
transactionPlatform For future use (for now systematically set to ‘PROD’).
  • Sample response to a credit request
      <credit recordSequence="1">
      ….
      <responseCode>00</responseCode>
      <acquirerResponseCode>00</acquirerResponseCode>
      <authorisationId>1234569654656</authorisationId>
      <maskedPan>160000.47</maskedPan>
      <newStatus>TO_CAPTURE</newStatus>
      <operationDateTime>2012-06-14T16:00:00+02:00</operationDateTime>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <transactionPlatform>PROD</transactionPlatform>
</credit>
    

walletOrder function of the office service

This function enables you to make payments using the information contained in your customers’ wallets.

walletOrder request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is walletOrder Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Optional if you use the S10TransactionReference .
s10TransactionReference Mandatory Optional if you use the transactionReference .
amount Mandatory
captureDay Optional
captureMode Optional
currencyCode Mandatory
customerEmail Optional
customerId Optional
customerIpAddress Optional
merchantTransactionDateTime Optional
orderChannel Mandatory
orderId Optional
paymentMeanId Mandatory
returnContext Optional
statementReference Optional
merchantWalletId Mandatory
transactionOrigin Optional
cardCSCValue Optional
paymentPattern Optional
fraudData Optional See the "Container" section.
orderContext Optional See the "Container" section.
travelContext Optional See the "Container" section.
deliveryContact Optional See the "Container" section.
deliveryAddress Optional See the "Container" section.
deliveryData Optional See the "Container" section.
holderContact Optional See the "Container" section.
billingContact Optional See the "Container" section.
billingAddress Optional See the "Container" section.
authenticationData Optional See the "Container" section.
holderAddress Optional See the "Container" section.
shoppingCartDetail Optional See the "Container" section.
  • Sample walletOrder request in XML format
      <walletOrder recordSequence="1">
     <amount>1000</amount>
     <captureDay>0</captureDay>
     <captureMode>VALIDATION</captureMode>
     <currencyCode>978</currencyCode>
     <customerEmail>test@worldline.com</customerEmail>
     <customerId>123</customerId>
     <customerIpAddress>127.0.0.1</customerIpAddress>
     <fraudData>
               <bypass3DS>all</bypass3DS>
               <allowedIpCountryList>
                    <country>FRA</country>
               </allowedIpCountryList>
     </fraudData>
     <merchantId>012323232323231</merchantId>
     <merchantTransactionDateTime>2012-11-29T17:04:30Z</merchantTransactionDateTime>
     <orderChannel>INTERNET</orderChannel>
     <orderId>123456</orderId>
     <paymentMeanId>1</paymentMeanId>
     <returnContext>context</returnContext>
     <transactionReference>20121218170402</transactionReference>
     <merchantWalletId>2</merchantWalletId>
     <transactionOrigin>origin</transactionOrigin>
     <cardCSCValue>100</cardCSCValue>
     <paymentPattern>ONE_SHOT</paymentPattern >
</walletOrder>
    

Format of the response to the walletOrder request

The response contains all the fields of the request, except cardCSCValue , plus the following fields:

Fields Comments
The tag name is walletOrder Function name
acquirerResponseCode
authorisationId
complementaryCode
complementaryInfo
guaranteeIndicator
holderAuthentRelegation
holderAuthentStatus
maskedPan
officeBatchResponseCode
responseCode
transactionDateTime
tokenPan
cardData See the "Container" section
preAuthorisationProfile
preAuthorisationProfileValue
preAuthorisationRuleResultList
transactionPlatform
cardCSCResultCode
avsPostcodeResponseCode
avsAddressResponseCode
authorMessageReference Not filled
authorisationTypeLabel Not filled
  • Sample response to a walletOrder request
      <walletOrder recordSequence="1">
     …
     <acquirerResponseCode>00</acquirerResponseCode>
     <authorisationId>1234569654656</authorisationId>
     <maskedPan>160000.47</maskedPan>
     <officeBatchResponseCode>00</officeBatchResponseCode>
     <responseCode>00</responseCode>
     <transactionDateTime>2012-06-14T16:00:00+02:00</transactionDateTime>
     <transactionPlatform>PROD</transactionPlatform>
</walletOrder>
    

walletCredit function of the office service

This function enables you to credit your customers' accounts through their wallets without prior transaction.

Format of the walletCredit request

All the records of the "body"section must contain the following information:

Fields Presence Comments
The tag name is walletCredit Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Optional if you use the S10TransactionReference .
s10TransactionReference Mandatory Optional if you use the transactionReference . See the "Container" section.
amount Mandatory
merchantWalletId Mandatory
paymentMeanId Mandatory
currencyCode Mandatory
customerEmail Optional
customerId Optional
customerIpAddress Optional
orderChannel Optional
orderId Optional
returnContext Optional
transactionOrigin Optional
statementReference Optional
  • Sample walletCredit request
      <walletCredit recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <amount>124</amount>
      <merchantWalletId>A01</ merchantWalletId >
      <paymentMeanId>2</paymentMeanId>
      <currencyCode>978</currencyCode>
      <customerEmail>test@worldline.net</customerEmail>
      <customerId>123</customerId>
      <customerIpAddress>127.0.0.1</customerIpAddress>
      <orderChannel>MOTO</orderChannel>
      <orderId>123456</orderId>
      <paymentMeanBrand>VISA</paymentMeanBrand>
      <returnContext>context</returnContext>
      <transactionOrigin>origin</transactionOrigin>
      <statementReference>RefN123400</statementReference>
</walletCredit>
    

Format of the response to the walletCredit request

The response contains all the fields of the request plus the following fields:

Fields Comments
Le nom de la balise est walletCredit Function name
responseCode
acquirerResponseCode
authorisationId
maskedPan
paymentMeanBrand
newStatus
operationDateTime
officeBatchResponseCode
transactionPlatform Always filled with ‘PROD’.
  • Sample response to a walletCredit request
      <walletCredit recordSequence="1">
      ….
      <responseCode>00</responseCode>
      <acquirerResponseCode>00</acquirerResponseCode>
      <authorisationId>1234569654656</authorisationId>
      <maskedPan>160000.47</maskedPan>
      <paymentMeanBrand>VISA</paymentMeanBrand >
      <newStatus>TO_CAPTURE</newStatus>
      <operationDateTime>2012-06-14T16:00:00+02:00</operationDateTime>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <transactionPlatform>PROD</transactionPlatform>
</walletCredit>
    

recycle function of the office service

This function makes it possible to create a new transaction from the banking data of a previous transaction. This operation is similar to duplication, with some limitations. It enables you to recycle a transaction that has expired, has been refused or has been captured partially (i.e. the amount of which has not been fully paid) without exceeding the amount of the initial transaction.

recycle request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is recycle . Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Optional if you use the S10TransactionReference .
s10TransactionReference Mandatory Optional if you use the transactionReference . See the "Container" section.
amount Mandatory
currencyCode Mandatory
captureDay Optional
captureMode Optional
fromTransactionReference Mandatory Reference of the transaction to be recycled. Optional if you use the S10FromTransactionReference . See the "Container" section.
s10FromTransactionReference Mandatory Reference of the transaction to be recycled. Optional if you use the fromTransactionReference . See the "Container" section.
merchantTransactionDateTime Optional
transactionOrigin Optional
statementReference Optional
lastRecoveryIndicator Optional
orderContext Optional See the "Container" section.
travelContext Optional See the "Container" section.
deliveryContact Optional See the "Container" section.
deliveryAddress Optional See the "Container" section.
deliveryData Optional See the "Container" section.
holderContact Optional See the "Container" section.
billingContact Optional See the "Container" section.
billingAddress Optional See the "Container" section.
  • Sample recycle request
      <recycle recordSequence="1">
  <merchantId>012323232323231</merchantId>
  <transactionReference>SIM201206810160</transactionReference>
  <amount>1000</amount>
  <captureDay>1</captureDay>
  <captureMode>VALIDATION</captureMode>
  <currencyCode>978</currencyCode>
  <fromTransactionReference>SIM2012068102311</fromTransactionReference>
  <merchantTransactionDateTime>2012-06-07T11:30:47+02:00</merchantTransactionDateTime>
  <transactionOrigin>SOB</transactionOrigin>
  <statementReference>REF1023540</statementReference>
</recycle>
    

Format of the response to the recycle request

The response contains all the fields of the request plus the following fields:

Fields Comments
The tag name is recycle Function name
acquirerResponseCode
authorisationId
complementaryCode
complementaryInfo
maskedPan
officeBatchResponseCode
panExpiryDate
paymentMeanBrand
responseCode
scoreColor
scoreInfo
scoreProfile
scoreThreshold
scoreValue
transactionDateTime
cardData See the "Container" section.
preAuthorisationProfile
preAuthorisationProfileValue
preAuthorisationRuleResultList See the "Container" section.
preAuthenticationColor
preAuthenticationInfo
preAuthenticationProfile
preAuthenticationProfileValue
preAuthenticationThreshold
preAuthenticationValue
preAuthenticationRuleResultList See the "Container" section.
paymentMeanBrandSelectionStatus
transactionPlatform Always filled with ‘PROD’.
  • Sample response to a recycle request
      <recycle recordSequence="1">
    …
    <authorisationId>956798798534</authorisationId >
    <acquirerResponseCode>00</acquirerResponseCode>
    <responseCode>00</responseCode>
    <transactionDateTime>2012-06-12T09:30:47+02:00</transactionDateTime>
    <officeBatchResponseCode>00</officeBatchResponseCode>
    <transactionPlatform>PROD</transactionPlatform>
</recycle>
    

directDebitOrder function of the office service

This function enables you to make debit-type payments (SDD) in case you have a customer's banking information.

directDebitOrder request format

All the records of the "body" must contain the following information:

Fields Presence Comments
The tag name is directDebitOrder Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Reference of the transaction. Optional if you use the S10TransactionReference .
s10TransactionReference Mandatory Reference of the transaction. Optional if you use the transactionReference . See the "Container" section.
amount Mandatory
captureDay Optional
captureMode Optional
currencyCode Mandatory
customerId Optional
customerIpAddress Optional
mandateId Mandatory
merchantTransactionDateTime Optional
paymentPattern Optional
orderChannel Mandatory
orderId Optional
returnContext Optional
statementReference Optional
transactionOrigin Optional
valueDate Optional
holderContact Optional See the "Container" section.
holderAddress Optional See the "Container" section.
instalmentData Optional See the "Container" section.
fraudData Optional See the "Container" section.
riskManagementCustomDataList Optional See the "Container" section.
shoppingCartDetail Optional See the "Container" section.
  • Sample directDebitOrder request
      <directDebitOrder recordSequence="1">
         <amount>1000</amount>
         <captureMode>AUTHOR_CAPTURE</captureMode>
         <currencyCode>978</currencyCode>
         <customerId>12300</customerId>
         <customerIpAddress>127.0.0.1</customerIpAddress>
         <mandateId>000000000000004403</mandateId>
         <merchantId>012323232323231</merchantId>
         <merchantTransactionDateTime>2014-09-04T14:04:30Z</merchantTransactionDateTime>
         <orderChannel>INTERNET</orderChannel>
         <orderId>8888</orderId>
         <returnContext>context</returnContext>
         <statementReference>ref1000</statementReference>
         <transactionReference>TIR20140904000004</transactionReference>
         <transactionOrigin>batch</transactionOrigin>
         <valueDate>20140905</valueDate>
</directDebitOrder>
    

Format of the response to the directDebitOrder request

The response contains all the fields of the request plus the following fields:

Fields Comments
The tag name is directDebitOrder Function name
acquirerResponseCode
authorisationId
captureDay
captureLimitDate
creditorId
guaranteeIndicator
holderAuthentRelegation
holderAuthentStatus
mandateId
maskedPan
officeBatchResponseCode
responseCode
secureReference
transactionActors
transactionDateTime
preAuthorisationProfile
preAuthorisationProfileValue
preAuthorisationRuleResultList See the "Container" section.
transactionPlatform For future use (for now systematically set to ‘PROD’).
  • Sample response to a directDebitOrder request
      <directDebitOrder recordSequence="1">
    <amount>1000</amount>
    <captureDay>5</captureDay>
    <captureMode>AUTHOR_CAPTURE</captureMode>
    <currencyCode>978</currencyCode>
    <customerId>123</customerId>
    <customerIpAddress>127.0.0.1</customerIpAddress>
    <instalmentData>
        <number>1</number>
        <datesList>
            <date>Thu Sep 04 00:00:00 CEST 2014</date>
        </datesList>
        <transactionReferencesList>
            <transactionReference>TIR20140904000024</transactionReference>
        </transactionReferencesList>
        <amountsList>
            <amount>1000</amount>
        </amountsList>
    </instalmentData>
    <mandateId>000000000000004403</mandateId>
    <merchantId>012323232323231</merchantId>
    <merchantTransactionDateTime>2014-09-04T14:04:30Z</merchantTransactionDateTime>
    <paymentPattern>INSTALMENT</paymentPattern>
    <orderChannel>INTERNET</orderChannel>
    <orderId>8888</orderId>
    <returnContext>context</returnContext>
    <statementReference>stateref</statementReference>
    <transactionReference>TIR20140904000024</transactionReference>
    <transactionOrigin>batch</transactionOrigin>
    <valueDate>20140909</valueDate>
    <acquirerResponseCode>00</acquirerResponseCode>
    <authorisationId>33105000010020140904</authorisationId>
    <captureLimitDate>20140909</captureLimitDate>
    <maskedPan>AGRIFRPP879/FR76#####################48</maskedPan>
    <officeBatchResponseCode>00</officeBatchResponseCode>
    <responseCode>00</responseCode>
    <transactionActors>B2C</transactionActors>
    <transactionDateTime>2014-09-04T15:16:24+02:00</transactionDateTime>
    <transactionPlatform>PROD</transactionPlatform>
    <secureReference>SF_16957</secureReference>
</directDebitOrder>
    

acceptChallenge function of the office service

This function enables you to check and accept the risk of fraud for transactions with an orange fraud score. Once the transaction is accepted, its normal life cycle resumes.

acceptChallenge request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is acceptChallenge Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Reference of the transaction. Optional if you use the S10TransactionReference .
s10TransactionReference Mandatory Reference of the transaction. Optional if you use the transactionReference . See the "Container" section.
validationIndicator Optional
operationOrigin Optional
comment Optional
  • Sample acceptChallenge request
      <acceptChallenge recordSequence="1">
  <merchantId>012323232323231</merchantId>
  <transactionReference>SIM201206810160</transactionReference>
  <validationIndicator>Y</validationIndicator>
  <operationOrigin>batch</operationOrigin>
  <comment>client fidelity</comment>
</acceptChallenge>
    

Format of the response to the acceptChallenge request

The response contains all the fields of the request plus the following fields:

Fields Comments
The tag name is acceptChallenge Function name
acquirerResponseCode
authorisationId
captureLimitDate
newStatus
officeBatchResponseCode
operationDateTime
responseCode
  • Sample response to a acceptChallenge request
      <acceptChallenge recordSequence="1">
    …
    <acquirerResponseCode>00</acquirerResponseCode>
    <authorisationId>956798798534</authorisationId >
    <captureLimitDate>20150515</captureLimitDate>
    <newStatus>VALIDATED</newStatus>
    <responseCode>00</responseCode>
    <operationDateTime>2015-02-12T09:30:47+02:00</operationDateTime>
    <officeBatchResponseCode>00</officeBatchResponseCode>
</ acceptChallenge>
    

refuseChallenge function of the office service

This function enables you to check and refuse the risk of fraud for transactions with an orange fraud score. In the case of a refusal, the transaction is not captured.

refuseChallenge request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is refuseChallenge Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
transactionReference Mandatory Reference of the transaction. Optional if you use the S10TransactionReference .
s10TransactionReference Mandatory Reference of the transaction. Optional if you use the transactionReference . See the "Container" section.
operationOrigin Mandatory
comment Mandatory
  • Sample refuseChallenge request
      <refuseChallenge recordSequence="1">
  <merchantId>012323232323231</merchantId>
  <transactionReference>SIM201206810160</transactionReference>
  <operationOrigin>batch</operationOrigin>
  <comment>score warning</comment>
</refuseChallenge>
    

Format of the response to the refuseChallenge request

The response contains all the fields of the request plus the following fields:

Fields Comments
The tag name is refuseChallenge Function name
newStatus
officeBatchResponseCode
operationDateTime
responseCode
  • Sample response to a refuseChallenge request
      <refuseChallenge recordSequence="1">
    …
    <newStatus>REFUSED</newStatus>
    <responseCode>05</responseCode>
    <operationDateTime>2015-02-12T09:30:47+02:00</operationDateTime>
    <officeBatchResponseCode>00</officeBatchResponseCode>
</refuseChallenge>
    

panToToken function of the token service

This function makes it possible to tokenise a card number.

panToToken request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is panToToken Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
userId Mandatory
pan Mandatory
  • Sample panToToken request
      <panToToken recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <userid>idofuser</userid>
      <pan>4975497549754975</pan>
</panToToken>

    

Format of the response to the panToToken request

The response contains the following fields:

Fields Comments
The tag name is panToToken Function name
recordSequence N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId
responseCode
tokenPan
officeBatchResponseCode
  • Sample response to a panToToken request
      <panToToken recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <responseCode>00</responseCode>
      <tokenPan>497899AcDEF57631</tokenPan>
      <officeBatchResponseCode>00</officeBatchResponseCode>
</panToToken>
    

transactionToToken function of the token service

This operation makes it possible to convert the PAN of an existing transaction into a token.

transactionToToken request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is transactionToToken . Mandatory Operation name.
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory

ID of the merchant of the original transaction.

Mandatory if differs from the merchantId .

fromMerchantId Optional Mandatory if s10FromTransactionReference not specified.
fromTransactionReference Optional

See duplicate.

Mandatory if fromTransactionReference is not specified.

s10FromTransactionReference Optional
merchantExternalId Optional
  • Sample transactionToToken request
      <transactionToToken recordSequence="1">
      <responseCode>00</responseCode>
      <merchantId>024729465300101</merchantId>
      <fromMerchantId>024729465300006</fromMerchantId>
      <fromTransactionReference>SIM20170613140621</fromTransactionReference>
      <merchantExternalId>myMerchantExternalId</merchantExternalId>
      <tokenPan>490700h719850600</tokenPan>
      <paymentMeanBrand>VISA</paymentMeanBrand>
      <cardExpiryDate>201802</cardExpiryDate>
      <officeBatchResponseCode>00</officeBatchResponseCode>
</transactionToToken>
    

Format of the response to the transactionToToken request

The response contains the following fields:

Fields Comments
The tag name is transactionToToken . Operation name
recordSequence N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId
fromMerchantId
fromTransactionReference
s10FromTransactionReference See duplicate
merchantExternalId
responseCode
tokenPan
paymentMeanBrand
cardExpiryDate
officeBatchResponseCode
  • Sample response to a transactiontoToken request
      <transactionToToken recordSequence="1">
      <responseCode>00</responseCode>
      <merchantId>024729465300101</merchantId>
      <fromMerchantId>024729465300006</fromMerchantId>
      <fromTransactionReference>SIM20170613140621</fromTransactionReference>
      <merchantExternalId>myMerchantExternalId</merchantExternalId>
      <tokenPan>490700h719850600</tokenPan>
      <paymentMeanBrand>VISA</paymentMeanBrand>
      <cardExpiryDate>201802</cardExpiryDate>
      <officeBatchResponseCode>00</officeBatchResponseCode>
</transactionToToken>
    

addToFraudList function of the fraud service

This operation makes it possible to add a card, token or transaction number (using the transactionIid/transactionDate or transactionIid/transactionReference combinations) to various types of fraud lists.

addToFraudList request format

All the records of the 'body" section must contain the following information:

Fields Presence Comments
The tag name is addToFraudList . Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
fraudListReasonCode Optional
fraudListType Mandatory
fraudListLevel Mandatory
fraudListElementType Mandatory
fraudListElementValue Mandatory If the value of fraudListElementType is TRANSACTION_ID then the expected format in this data element is transactionId@transactionDate (e.g. 123@20180919)
  • Sample addToFraudList request
      <addToFraudList recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <fraudListReasonCode>FRAUD</fraudListReasonCode>
      <fraudListType>CARD_LIST</fraudListType>
      <fraudListLevel>BLACK</fraudListLevel>
      <fraudListElementType>TRANSACTION_REF</fraudListElementType>
      <fraudListElementValue>ARTE160728OHE050231655</fraudListElementValue>
</addToFraudList>
    

Format of the response to the addToFraudList request

The response contains the following fields:

Fields Comments
The tag name is addToFraudList . Function name
merchantId
fraudListType
fraudListLevel
fraudListElementType
fraudListElementValue
officeBatchResponseCode
responseCode
  • Sample response to a addToFraudList request
      <addToFraudList recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <fraudListType>CARD_LIST</fraudListType>
      <fraudListLevel>BLACK</fraudListLevel>
      <fraudListElementType>PAN</fraudListElementType>
      <fraudListElementValue>4975.75</fraudListElementValue>
      <responseCode>00</responseCode>
      <officeBatchResponseCode>00</officeBatchResponseCode>
</addToFraudList>
    

removeFromFraudList function of the fraud list

This operation makes it possible to delete a card, token or transaction number (using the transactionIid/transactionDate or transactionIid/transactionReference combinations) from various types of fraud lists.

removeFromFraudList request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is removeFromFraudList . Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
fraudListType Mandatory
fraudListLevel Mandatory
fraudListElementType Mandatory
fraudListElementValue Mandatory
  • Sample removeFromFraudList request
      <removeFromFraudList recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <fraudListType>CARD_LIST</fraudListType>
      <fraudListLevel>BLACK</fraudListLevel>
      <fraudListElementType>PAN</fraudListElementType>
      <fraudListElementValue>4975497549754975</fraudListElementValue>
</removeFromFraudList>
    

Format of the response to the removeFromFraudList request

The response contains the following fields:

Champs Comments
The tag name is removeFromFraudList . Function name
merchantId
fraudListType
fraudListLevel
fraudListElementType
fraudListElementValue
responseCode
officeBatchResponseCode
  • Sample response to a removeFromFraudList request
      <removeFromFraudList recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <fraudListType>CARD_LIST</fraudListType>
      <fraudListLevel>BLACK</fraudListLevel>
      <fraudListElementType>PAN</fraudListElementType>
      <fraudListElementValue>4975.75</fraudListElementValue>
      <responseCode>00</responseCode>
      <officeBatchResponseCode>00</officeBatchResponseCode>
</removeFromGreyList>
    

addCard function of the wallet service

This operation makes it possible to add a card to a wallet. If the wallet doesn't exist, it is created when adding the card.

Sensitive information (card number) can be handled via the panType set to encryption via the CSE mode (see the relevant documentation).

addCard request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is addCard . Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
merchantWalletId Mandatory
paymentMeanAlias Optional
PaymentMeanBrand Optional
cardExpiryDate Mandatory
cardNumber Mandatory
panType Optional
  • Sample addCard request
      <addCard recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my VISA</paymentMeanAlias>
      <paymentMeanbrand>VISA</paymentMeanBrand>
      <cardExpiryDate>201910</cardExpiryDate>
      <cardNumber>4975497549754975</cardNumber>
</addCard>
    

Format of the response to the addCard request

The response contains the following fields:

Fields Comments
The tag name is addCard . Function name
merchantId
merchantWalletId
paymentMeanAlias
cardExpiryDate
maskedPan
paymentMeanId
officeBatchResponseCode
responseCode
walletCreationDateTime
  • Sample response in XML format
      <addCard recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my VISA</paymentMeanAlias>
      <cardExpiryDate>202210</cardExpiryDate>
      <maskedPan>4975.75</maskedPan>
      <paymentMeanId>2</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletCreationDateTime>2014-06-14T16:00:00+02:00</walletCreationDateTime >
</addCard >
    

addDirectDebit function of the wallet service

This operation makes it possible to add a mandate to a wallet.

addDirectDebit request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is addDirectDebit . Mandatory Function name
recordSequence Mandatory Function name
customerAccount Optional
customerBankCode Optional
mandateId Mandatory
merchantId Mandatory
merchantWalletId Mandatory
paymentMeanAlias Optional
paymentMeanBrand Optional
transactionActors Optional
  • Sample addDirectDebit request
      <addDirectDebit recordSequence="1">
      <mandateId>00000127001</mandateId>
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my SDD</paymentMeanAlias>
      <paymentMeanBrand>SEPA_DIRECT_DEBIT</paymentMeanBrand>
      <transactionActors>B2C</transactionActors>
</addDirectDebit >
    

Format of the response to the addDirectDebit request

The response contains the following fields:

Fields Comments
The tag name is addDirectDebit Function name
merchantId
merchantWalletId
paymentMeanAlias
paymentMeanBrand
maskedPan
paymentMeanId
officeBatchResponseCode
responseCode
transactionActors
walletCreationDateTime
  • Sample response to a addDirectDebit request
      <addDirectDebit recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my SDD</paymentMeanAlias>
      <paymentMeanBrand>SEPA_DIRECT_DEBIT</paymentMeanBrand>
      <paymentMeanId>4</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <transactionActors>B2C</transactionActors>
      <walletCreationDateTime>2014-06-14T16:00:00+02:00</walletCreationDateTime >
</addDirectDebit >
    

deletePaymentMean function of the wallet service

This operation makes it possible to delete a means of payment from a wallet.

deletePaymentMean request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is deletePaymentMean . Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
merchantWalletId Mandatory
paymentMeanId Mandatory
  • Sample deletePaymentMean request
      <deletePaymentMean recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanId>4</paymentMeanId>
</deletePaymentMean>
    

Format of the response to the deletePaymentMean request

The response contains the following fields:

Fields Comments
The tag name is deletePaymentMean. Function name
merchantId
merchantWalletId
paymentMeanId
officeBatchResponseCode
responseCode
walletActionDateTime
  • Sample response to a deletePaymentMean request
      <deletePaymentMean recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanId>4</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletActionDateTime>2014-06-14T16:00:00+02:00</walletActionDateTime>
</deletePaymentMean>
    

updatePaymentMean function of the wallet service

This function allows a merchant to update one of the payment means contained in the client's wallet.

updatePaymentMean request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is updatePaymentMean . Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
merchantWalletId Mandatory
paymentMeanId Mandatory
paymentMeanAlias Optional
  • Sample updatePaymentMean request
      <updatePaymentMean recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanId>4</paymentMeanId>
      <paymentMeanAlias>my SDD</paymentMeanAlias>
</updatePaymentMean>
    

Format of the response to the updatePaymentMean request

The response contains the following fields:

Fields Comments
The tag name is updatePaymentMean . Function name
merchantId
merchantWalletId
paymentMeanAlias
paymentMeanId
officeBatchResponseCode
responseCode
walletActionDateTime
  • Sample response to a updatePaymentMean request
      <updatePaymentMean recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my SDD</paymentMeanAlias>
      <paymentMeanId>4</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletActionDateTime>2014-06-14T16:00:00+02:00</walletActionDateTime>
</updatePaymentMean>
    

signOff function of the wallet service

This operation makes it possible to delete a wallet and all the means of payment contained in the wallet.

signOff request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
The tag name is signOff. Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
merchantWalletId Mandatory
  • Sample signOff request
      <signOff recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
</signOff>
    

Format of the response to the signOff request

The response contains the following fields:

Fields Comments
The tag name is signOff Function name
merchantId
merchantWalletId
officeBatchResponseCode
responseCode
walletActionDateTime
  • Sample response to a signOff request
      <signOff recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletActionDateTime>2014-06-14T16:00:00+02:00</walletActionDateTime>
</signOff>
    

addIssuerWallet function of the wallet service

This operation makes it possible to add an issuer wallet (e.g. Paylib) to a WL Sips wallet.

addIssuerWallet request format

All the records of the "body" section must contain the following information:

Fields Presence Comments
the tag name is addIssuerWallet. Mandatory Function name
recordSequence Mandatory N6 – This attribute indicates the line number, which allows you to reconcile the response with the request.
merchantId Mandatory
merchantWalletId Mandatory
paymentMeanAlias Mandatory
issuerWalletId Mandatory
issuerWalletType Mandatory
  • Sample addIssuerWallet request
      <addIssuerWallet recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my payment card</paymentMeanAlias>
      <issuerWalletId>paylib-wallet-id</issuerWalletId>
      <issuerWalletType>PAYLIB</issuerWalletType>
</addIssuerWallet>
    

Format of the response to the addIssuerWallet request

The response contains the following fiels:

Fields Comments
The tag name is addIssuerWallet Function name
merchantId
merchantWalletId
paymentMeanAlias
issuerWalletId
issuerWalletType
paymentMeanId
officeBatchResponseCode
responseCode
walletCreationDateTime
  • Sample response to an addIssuerWallet request
      <addIssuerWallet recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my payment card</paymentMeanAlias>
      <issuerWalletId>paylib-wallet-id</issuerWalletId>
      <issuerWalletType>PAYLIB</issuerWalletType>
      <paymentMeanId>pmid-1</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletCreationDateTime>2014-06-14T16:00:00+02:00</walletCreationDateTime>
</addIssuerWallet>
    

Containers

Containers group data functionally. They can contain lists, in which case list elements must be supplied in the following manner:

      <elementList>
<elementName>value1</elementName>
<elementName>value2</elementName>
…
</elementList>
    

All these fields are optional.

s10TransactionReference

Fields Comments
The tag name is s10TransactionReference Element name
s10TransactionId
s10TransactionIdDate As part of transaction creation, this field is computed by our server. There is no need to set a value in this field (as it will be ignored if set), for the following methods:
  • cardOrder method
  • walletOrder method
  • directDebitOrder method
  • duplicate method
  • recycle method
  • credit method
  • walletCredit method
  • Sample refund/s10TransactionReference request
      <refund …>
…
  <s10TransactionReference>
     <s10TransactionId>100206</s10TransactionId>
     <s10TransactionIdDate>20150203</s10TransactionIdDate>
  </s10TransactionReference>
…
</refund>
    

s10FromTransactionReference

Fields Comments
The tag name is s10FromTransactionReference. Element name
s10FromTransactionId
s10FromTransactionIdDate
  • Sample duplicate/s10FromTransactionReference request
      <duplicate …>
…
  <s10FromTransactionReference>
     <s10FromTransactionId>100206</s10FromTransactionId>
     <s10FromTransactionIdDate>20150203</s10FromTransactionIdDate>
  </s10FromTransactionReference>
…
</duplicate>
    

paymentMeanData

Fields Comments
The tag name is paymentMeanData. Element name
cofinoga

Additional data element for the Cofinoga means of payment:

Fields Comments
The tag name is cofinoga Element name
settlementMode Means of payment for Cofinoga. See the implementation guide for this means of payment.
  • Sample cardOrder/paymentMeanData request for Cofinoga
      <cardOrder …>
…
  <paymentMeanData>
     <cofinoga>
        <settlementMode>MR_COMP</settlementMode>
     </cofinoga>
  </paymentMeanData>
…
</cardOrder>
    

cardData

Fields Comments
The tag name is cardData Element name
cardProductCode
cardProductName
cardProductProfile
cardScheme
issuerCode
issuerCountryCode
cardProductUsageLabel For future use (MPADS)
  • Sample response to a duplicate/cardData request
      <duplicate…>
…
  <cardData>
     <cardProductCode>2</cardProductCode>
     <cardProductName>CARTE NATIONALE DE RETRAIT ET DE PAIEMENT</cardProductName>
     <cardProductProfile>D</cardProductProfile>
     <cardScheme>CB</cardScheme>
     <issuerCode>10107</issuerCode>
     <issuerCountryCode>FRA</issuerCountryCode>
  </cardData>
…
</duplicate>
    

instalmentData

Note: the value in the number field and the number of elements in the element lists must be identical.
Fields Comments
The tag name is instalmentData . Element name
number
datesList
transactionReferencesList
amountsList
s10TransactionIdsList
  • Sample directDebitOrder/instalmentData request
      <directDebitOrder …>
…
  <instalmentData>
       <number>3</number>
       <datesList>
           <date>20140915</date>
           <date>20141015</date>
           <date>20141115</date>
       </datesList>
       <transactionReferencesList>
           <transactionReference>TIR20140915A</transactionReference>
           <transactionReference>TIR20141015A</transactionReference>
           <transactionReference>TIR20141115A</transactionReference>
       </transactionReferencesList>
       <amountsList>
           <amount>3100</amount>
           <amount>3100</amount>
           <amount>3100</amount>
       </amountsList>
  </instalmentData>
…
</directDebitOrder>
    

shoppingCartDetail

Fields Comments
The tag name is shoppingCartDetail Element name
shoppingCartTotalAmount
shoppingCartTotalQuantity
shoppingCartTotalTaxAmount
mainProduct
ShoppingCartItemList
Fields Comments
The tag name is shoppingCartItemList Element name
shoppingCartItem
Fields Comments
The tag name is shoppingCartItem Element name
productName
productDescription
productCode
productSKU
productUnitAmount
productQuantity
productTaxRate
productUnitTaxAmount
productCategory
  • Sample cardOrder/shoppingCartDetail request
      <cardOrder …>
…
  <shoppingCartDetail>
    <shoppingCartTotalAmount>12000</shoppingCartTotalAmount>
    <shoppingCartTotalQuantity>3</shoppingCartTotalQuantity>
    <shoppingCartTotalTaxAmount>21</shoppingCartTotalTaxAmount>
    <mainProduct>wine</mainProduct>
    <ShoppingCartItemList>
      <shoppingCartItem>
        <productName>Bordeaux</productName>
        <productCode>BDX1546201</productCode>
        <productUnitAmount>4000</productUnitAmount>
        <productQuantity>1</productQuantity>
      </shoppingCartItem>
      <shoppingCartItem>
        <productName>Bourgogne</productName>
        <productCode>BGN0588201</productCode>
        <productUnitAmount>5000</productUnitAmount>
        <productQuantity>1</productQuantity>
      </shoppingCartItem>
      <shoppingCartItem>
        <productName>Cognac</productName>
        <productCode>CGC8541500</productCode>
        <productUnitAmount>3000</productUnitAmount>
        <productQuantity>1</productQuantity>
      </shoppingCartItem>
    </ShoppingCartItemList>
</shoppingCartDetail>
…
</cardOrder>
    

orderContext

Fields Comments
The tag name is orderContext Element name
customerHostName
customerBrowserType
customerANI
customerANIInformationIdentifier
  • Sample duplicate/orderContext request
      <duplicate …>
…
  <orderContext>
     <customerHostName>Pierre Durand</customerHostName>
     <customerBrowserType> MOZILLA/4.0~(COMPATIBLE#059~MSIE~5.0#059~WINDOWS~95)</customerBrowserType>
     <customerANI>17A00206</customerANI>
     <customerANIInformationIdentifier>02</customerANIInformationIdentifier>
  </orderContext>
…
</duplicate>
    

travelContext

Fields Comments
The tag name is travelContext Element name
departureDate
passengerName
originAirport
numberOfRoutingCities
routingCityList
numberOfAirlineCarriers
airlineCarrierList
fareBasis
numberOfPassengers
destinationAirport
reservationCode

The elements of the routingCityList and airlineCarrierList lists must be supplied in the following manner:

      <routingCityList> 
<routingCity>value1</routingCity> 
<routingCity>value2</routingCity>
… 
</ routingCityList 
    
  • Sample duplicate/travelContext request
      <duplicate …>
…
  <travelContext>
    <departureDate>201702270</departureDate>
    <passengerName>Arnaud Durand</passengerName>
    <originAirport>ORLY1</originAirport>
    <numberOfRoutingCities>2</numberOfRoutingCities>
    <routingCityList>
      <routingCity>PARIS</routingCity>
      <routingCity>SEOUL</routingCity>
    </routingCityList>
    <numberOfAirlineCarriers>2</numberOfAirlineCarriers>
    <airlineCarrierList>
      <airlineCarrier>1234</airlineCarrier>
      <airlineCarrier>KAL</airlineCarrier>
    </airlineCarrierList>
    <fareBasis>123456789</fareBasis>
    <numberOfPassengers>1</numberOfPassengers>
    <destinationAirport>LILLE</destinationAirport>
    <reservationCode>RESERVATIONCODE</reservationCode>
  </travelContext>
…
</duplicate>
    

deliveryData

Fields Comments
The tag name is deliveryData Element name
method
  • Sample duplicate/deliveryData request
      <duplicate …>
…
  <deliveryData>
        <method>A2</method>
  </deliveryData>
…
</duplicate>
    

deliveryContact

Fields Comments
The tag name is deliveryContact Element name
firstName
lastName
phone
mobile
  • Sample duplicate/deliveryContact request
      <duplicate …>
…
  <deliveryContact>
       <firstName>Pierre</firstName>
       <lastName>Dupont</lastName>
       <mobile>06666666</mobile>
       <phone>0521360011</phone>
  </deliveryContact>
…
</duplicate>
    

deliveryAddress

Fields Comments
The tag name is deliveryAddress Element name
additionalAddress1
additionalAddress2
additionalAddress3
country
zipCode
  • Sample duplicate/deliveryAddress request
      <duplicate …>
…
  <deliveryAddress>
        <additionalAddress1>80 Quai Voltaire, Bezons</additionalAddress1>
        <country>FRA</country>
        <zipCode>95870</zipCode>
  </deliveryAddress>
…
</duplicate>
    

holderData

Fields Comments
The tag name is holderData Element name
birthDate
  • Sample cardOrder/holderData request
      <cardOrder …>
…
  <holderData>
   <birthdate>19450902</birthdate>
  </holderData>
…
</cardOrder>
    

holderContact

Fields Comments
The tag name is holderContact Element name
firstName
lastName
gender Not used for the duplicate function.
phone Not used for the duplicate function.
email Not used for the duplicate function
  • Sample directDebitOrder/holderContact request
      <directDebitOrder …>
…
  <holderContact>
       <firstName>Pierre</firstName>
       <lastName>Dupont</lastName>
       <gender>M</gender>
       <phone>0123456789</phone>
       <email>john.doe@mail.com</email>
  </holderContact>
…
</directDebitOrder>
    

holderAddress

Fields Comments
The tag name is holderAddress Element name
additionalAddress1
additionalAddress2
additionalAddress3
city
country
streetName
streetNumber
postbox
state
zipCode
  • Sample directDebitOrder/holderAddress request
      <directDebitOrder …>
…
  <holderAddress>
        <city>Bezons</city>
        <country>FRA</country>
        <streetName>Quai Voltaire</streetName>
        <streetNumber>80</streetNumber>
        <zipCode>95870</zipCode>
  </holderAddress>
…
</directDebitOrder>
    

billingContact

Fields Comments
The tag name is billingContact Element name
phone
mobile
  • Sample duplicate/billingContact request
      <duplicate …>
…
  <billingContact>
       <phone>0521360011</phone>
       <mobile>06666666</email>
  </billingContact>
…
</duplicate>
    

billingAddress

Fields Comments
The tag name is billingAddress Element name
additionalAddress1
additionalAddress2
additionalAddress3
zipCode
  • Sample duplicate/billingAddress request
      <duplicate …>
…
  <billingAddress>
        <additionalAddress1>80 Quai Voltaire, Bezons</additionalAddress1>
        <zipCode>95870</zipCode>
  </billingAddress>
…
</duplicate>
    

fraudData

Note: the “allowed” elements of a given type and the “denied” elements of the same type cannot be supplied at the same time. For instance, allowedCardArea and deniedCardArea are incompatible.
Fields Comments
The tag name is fraudData Element name
bypass3DS
bypassCtrlList
bypassInfoList
allowedCardCountryList
deniedCardCountryList
allowedCardArea For future use
deniedCardArea For future use
not implementedallowedIpCountryList
deniedIpCountryList
allowedIpArea For future use
deniedIpArea For future use
riskManagementDynamicSettingList
  • Sample duplicate/fraudData request
      <duplicate …>
…
  <fraudData>
       <deniedIpCountryList>
              <country>ATG</country>
              <country>FRA</country>
              <country>DNK</country>
       </deniedIpCountryList>
  </fraudData>
…
</duplicate>
    

riskManagementDynamicSettingList

Fields Comments
The tag name is riskManagementDynamicSettingList Element name
riskManagementDynamicSetting
Fields Comments
The tag name is RiskManagementDynamicSetting Element name
riskManagementDynamicParam
riskManagementDynamicValue
  • Sample fraudData/riskManagementDynamicSettingList request
      <duplicate>
…
    <riskManagementDynamicSettingList>
      <riskManagementDynamicSetting>
         <riskManagementDynamicParam>AllowedIpCountryList</riskManagementDynamicParam>
         <riskManagementDynamicValue>FRA,BEL</riskManagementDynamicValue>
      </riskManagementDynamicSetting>
      <riskManagementDynamicSetting>
         <riskManagementDynamicParam>DeniedIpCountryList</riskManagementDynamicParam>
         <riskManagementDynamicValue>DEU</riskManagementDynamicValue>
      </riskManagementDynamicSetting>
    </riskManagementDynamicSettingList>
</fraudData> 
</duplicate>
    

riskManagementCustomDataList

Fields Comments
The tag name is riskManagementCustomDataList Element name
riskManagementCustomData
Fields Comments
The tag name is riskManagementCustomData Element name
riskManagementCustomSequence
riskManagementCustomValue
  • Sample cardOrder/riskManagementCustomDataList request
      <cardOrder …>
…
  <riskManagementCustomDataList>
     <riskManagementCustomData>
        <riskManagementCustomSequence>1</riskManagementCustomSequence>
        <riskManagementCustomValue>1</riskManagementCustomValue>
     </riskManagementCustomData >
  </riskManagementCustomDataList>
…
</cardOrder>
    

preAuthorisationRuleResultList

Fields Comments
The tag name is preAuthorisationRuleResultList Element name
ruleResult
  • Sample preAuthorisationRuleResultList field response
          <preAuthorisationRuleResultList>
        <ruleResult>
        …
        </ruleResult>
        <ruleResult>
        …
        </ruleResult>
    </preAuthorisationRuleResultList>
    
Fields Comments
The tag name is ruleResult Element name
ruleCode
ruleType
ruleWeight
ruleSetting
ruleResultIndicator
ruleDetailedInfo
  • Sample ruleResult element
        <ruleResult>
            <ruleCode>EC</ruleCode>
            <ruleType>NG</ruleType>
            <ruleWeight>D</ruleWeight>
            <ruleSetting>N</ruleSetting>
            <ruleResultIndicator>U</ruleResultIndicator>
            <ruleDetailedInfo>MAX=2:2</ruleDetailedInf>
        </ruleResult>
    

preAuthenticationRuleResultList

Fields Comments
The tag name is preAuthenticationRuleResultList Element name
ruleResult See ruleResult in the duplicate response 0.
  • Sample preAuthenticationRuleResultList field response
      <preAuthenticationRuleResultList>
        <ruleResult>
        …
        </ruleResult>
        <ruleResult>
        …
        </ruleResult>
    </preAuthenticationRuleResultList>
    

See the breakdown of the ruleResult element above.

authenticationData

Fields Comments
The tag name is authenticationData Element name
CardAuthPolicy
Fields Comments
The tag name is CardAuthPolicy Element name
checkAVS
ignoreCSCCheckResult
ignorePostcodeCheckResult
ignoreAddressCheckResult
automaticReverse
  • Sample duplicate/authenticationData request
      <duplicate …>
…
  <authenticationData>
      <CardAuthPolicy>
          <checkAVS>Y</checkAVS>
          <ignoreCSCCheckResult>N</ignoreCSCCheckResult>
          <ignorePostcodeCheckResult>N</ignorePostcodeCheckResult>
          <ignoreAddressCheckResult>N</ignoreAddressCheckResult>
          <automaticReverse>Y</automaticReverse>
      </CardAuthPolicy>
  </authenticationData>
…
</duplicate>
    

Analysing errors when checking the file

There are several response code levels when Sips Office Batch processes a file. Several overall checks are carried out before the file is processed. If one of these checks fails, the file is completely rejected. (the processingResponseCode is neither 00 nor 01).

The returned response file contains the overall processing result code in the processingResponseCode field, in the file header.

Overall processing result codes

Code Meaning
00 File processed correctly . The file contains the list of operations.
01 File processed correctly. An operation has been associated with a merchant that is not related to the remitter ID. The operation will set the value of the officeBatchResponseCode field to 80.
02 File already processed The file sequence number is lower than it should be. The correct number is returned in the message that describes the error.
03 Sequence broken in the file sequence number . The file sequence number is higher than it should be. The correct number is returned in the message that describes the error.
04 Technical issue . Internal issue
05 File too big
06 The number of operations exceeds the maximum authorised amount. The maximum number of operations has been reached (100 000 operations maximum. This limit can be lower if you are not using the las version of the connector).
07 The number of operations counted is different from the number specified in the nbRecord field.
08 Duplicate operation
09 Incorrect record
10 Incorrect file format . The file format is not correct (the error description will be returned in the error-details tag).
11 Incorrect remitter. The remitter declared in the header is not correct.
Autres codes Incorrect file (these codes apply to older Sips Office Batch versions).
Response code Cause Solution
Different from 00 and 01 Restarting processing The request file must be returned in its entirety with the same file sequence number.
03 File sequence number interruption The file was completely refused. If necessary, the sequence number must be corrected and the file returned.
04 Technical error

An operation caused a technical error. File processing was not interrupted. In this case, the processing can be very fast since all operations with code 25 or 90 will be refused ( responseCode field).

For now, Worldline has not supplied any mechanism to defer the processing until a new connection is established.

Analysing the errors caused by an operation

Each operation is considered as independent. Each operation has its own stored response code ( officeBatchResponseCode code). The code indicates the field that causes the issue.

If an operation fails, the processing is not interrupted. The operation is refused with the typical WL Sips response code ( responseCode field).

Codes Fields in question
00 None (all fields are correct)
01 merchantId error
03 transactionReference error
04 merchantTransactionDateTime error
05 amount error
06 captureDay error
07 captureMode error
08 operationAmount error
09 operationOrigin error
11 currencyCode error
12 customerIpAddress error
13 customerEmail error
14 customerId error
16 orderId error
17 orderChannel error
18 transactionOrigin error
19 returnContext error
20 fromTransactionReference error
21 cardExpiryDate error
22 cardNumber error
23 cardCSCValue error
24 cardEffectiveDate error
25 cardSeqNumber error
26 paymentMeanBrand error
27 authorisationId error
28 merchantWalletId error
29 paymentMeanId error
30 paymentPattern error
31 number error
32 statementReference error
33 panType error
34 mandateId error
35 valueDate error
36 paymentMeanAlias error
37 account error
38 bankCode error
39 transactionActors error
45 Date fields format error
46 settlementMode error
47 comment error
48 validationIndicator error
50 s10TransactionId error
51 s10TransactionIdDate error
52 s10FromTransactionId error
53 s10FromTransactionIdDate error
54 fraudData error
55 riskManagementDynamicParam error
56 riskManagementDynamicValue error
57 riskManagementDynamicSettingList error
58 fraudListReason error
59 fraudListType error
60 fraudListLevel error
61 fraudListElementType error
62 fraudListElementValue error
63 lastRecoveryIndicator error
80 Merchant not registered with Sips Office Batch or not associated with the remitter declared in the header

Step 3: testing in the customer's validation environment

The objective is to validate that the file structure and query syntax are correct. For this first step, you do not need to have an acquiring contract since there is no connection to the payment acquirer: card authorisation requests are simulated. Transactions are stored in the WL Sips back office and you can test cash management operations on these transactions.

Contact the technical support to have a shop configured in the validation environement and request that file transfer be implemented between your site and WL Sips .

Step 4: validating the transition to live operation

First, submit a file containing a limited number of operations to validate the transition to live operation. Check the response file to make sure all operations were carried out correctly:

  • Monitor the acceptance rate (number of responseCode 00/total number of operations).
  • Check the nature of non-banking refusals:
    • technical issue: responseCode   90, 97, 99,
    • acquirer fraud: responseCode  34.

Appendix

Below are the XML schemas for each service available in Sips Office Batch .

office service XSD

Request file

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header" />
        <xs:element ref="body" />
        <xs:element ref="end" />
      </xs:sequence>
      <xs:attribute name="type" type="xs:string" use="required" fixed="request" />
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="header">
    <xs:complexType>
      <xs:all>
        <xs:element name="remitterId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="date" type="xs:date" maxOccurs="1" minOccurs="1"/>
        <xs:element name="time" type="xs:time" maxOccurs="1" minOccurs="1"/>
        <xs:element name="sequence" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="body">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="validate" />
        <xs:element ref="refund" />
        <xs:element ref="duplicate" />
        <xs:element ref="cardOrder" />
        <xs:element ref="directDebitOrder" />
        <xs:element ref="cancel" />
        <xs:element ref="credit" />
        <xs:element ref="walletOrder" />
        <xs:element ref="recycle" />
        <xs:element ref="acceptChallenge" />
        <xs:element ref="refuseChallenge" />  
        <xs:element ref="walletCredit" />      
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="cardOrder">
<xs:complexType>
      <xs:all>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardCSCValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardEffectiveDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardExpiryDate" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardNumber" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardSeqNumber" type="xs:short" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="panType" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="paymentMeanData" maxOccurs="1" minOccurs="0" />
        <xs:element name="holderData" type="holderData" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="riskManagementCustomDataList" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrandSelectionStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="directDebitOrder">
    <xs:complexType>
      <xs:all>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="instalmentData" minOccurs="0" maxOccurs="1" />
        <xs:element name="mandateId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="valueDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="riskManagementCustomDataList" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

xs:element name="credit">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardEffectiveDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardExpiryDate" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardNumber" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardCSCValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardSeqNumber" type="xs:short" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="panType" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="statementReference" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="cancel">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="refund">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationAmount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
<xs:element name="duplicate">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="fromTransactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="fromMerchantId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10FromTransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
        <xs:element name="paymentMeanData" minOccurs="0" maxOccurs="1" />
            <xs:complexType>
                <xs:all>
                    <xs:element name="paypal" type="duplicate.paymentMeanData.paypal" minOccurs="0" maxOccurs="1"/>
                    <xs:element name="bcacup" type="duplicate.paymentMeanData.bcacup" minOccurs="0" maxOccurs="1"/>
                <xs:all>
            <xs:complexType>
        <xs:element>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="recycle">
    <xs:complexType>
      <xs:all>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="fromTransactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10FromTransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element name="lastRecoveryIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="validate">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationAmount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
                <xs:element name="lastRecoveryIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="walletOrder">
      <xs:complexType>
        <xs:all>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardCSCValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="walletCredit">
      <xs:complexType>
        <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="statementReference" maxOccurs="1" minOccurs="0" />                
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="acceptChallenge">
    <xs:complexType>
      <xs:all>
        <xs:element name="comment" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="validationIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="refuseChallenge">
    <xs:complexType>
      <xs:all>
        <xs:element name="comment" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="fraudData">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="bypass3DS" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="bypassCtrlList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ctrl"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="bypassInfoList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="info"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedCardCountryList"
            type="CountryList">
          </xs:element>
          <xs:element name="deniedCardCountryList"
            type="CountryList">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedCardArea"
            type="xs:string">
          </xs:element>
          <xs:element name="deniedCardArea"
            type="xs:string">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedIpCountryList"
            type="CountryList">
          </xs:element>
          <xs:element name="deniedIpCountryList"
            type="CountryList">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedIpArea" type="xs:string"></xs:element>
          <xs:element name="deniedIpArea" type="xs:string"></xs:element>
        </xs:choice>
        <xs:element minOccurs="0" name="riskManagementDynamicSettingList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="riskManagementDynamicSetting" type="RiskManagementDynamicSetting"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
<xs:complexType name="CountryList">
    <xs:sequence>
      <xs:element name="country" type="xs:string" maxOccurs="unbounded" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RiskManagementDynamicSetting">
    <xs:sequence>
      <xs:element name="riskManagementDynamicParam" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
      <xs:element name="riskManagementDynamicValue" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

<xs:complexType name="Contact">
    <xs:all>
      <xs:element name="email" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="firstName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="lastName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="gender" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="phone" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="mobile" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

<xs:complexType name="Address">
    <xs:all>
      <xs:element name="additionalAddress1" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="additionalAddress2" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="additionalAddress3" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="city" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="country" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="streetName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="streetNumber" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="zipCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="state" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="postbox" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="DeliveryData">
    <xs:all>
      <xs:element name="deliveryMethod" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:element name="instalmentData">
    <xs:complexType>
      <xs:all>
        <xs:element name="number" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="datesList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="date"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="transactionReferencesList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="transactionReference"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="amountsList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="amount"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="s10TransactionIdsList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="s10TransactionId"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="paymentMeanData">
    <xs:complexType>
      <xs:all>
        <xs:element name="accord" type="accord" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="cofinoga" type="cofinoga" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="accord">
    <xs:all>
      <xs:element name="settlementMode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cofinoga">
    <xs:all>
      <xs:element name="settlementMode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>
  
  <xs:complexType name="holderData">
    <xs:all>
      <xs:element name="birthDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:element name="s10TransactionReference">
    <xs:complexType>
      <xs:all>
        <xs:element name="s10TransactionId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="s10TransactionIdDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="s10FromTransactionReference">
    <xs:complexType>
      <xs:all>
        <xs:element name="s10FromTransactionId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="s10FromTransactionIdDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="riskManagementCustomDataList">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="riskManagementCustomData" maxOccurs="unbounded" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

<xs:element name="riskManagementCustomData">
    <xs:complexType>
      <xs:all>
        <xs:element name="riskManagementCustomSequence" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="riskManagementCustomValue" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="shoppingCartDetail">
    <xs:complexType>
      <xs:all>
        <xs:element name="shoppingCartTotalAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="shoppingCartTotalQuantity" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="shoppingCartTotalTaxAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="mainProduct" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="ShoppingCartItemList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="shoppingCartItem" maxOccurs="unbounded" minOccurs="1"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="shoppingCartItem">
    <xs:complexType>
      <xs:all>
        <xs:element name="productName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productDescription" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productSKU" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productUnitAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productQuantity" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productTaxRate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productUnitTaxAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productCategory" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>  

<xs:element name="orderContext">
    <xs:complexType>
      <xs:all>
        <xs:element name="customerHostName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerBrowserType" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerANI" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerANIInformationIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>  
  
  <xs:element name="travelContext">
    <xs:complexType>
      <xs:all>
        <xs:element name="departureDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="passengerName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="originAirport" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="numberOfRoutingCities" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="routingCityList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="routingCity" type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="numberOfAirlineCarriers" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="airlineCarrierList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="airlineCarrier" type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="fareBasis" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="numberOfPassengers" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="destinationAirport" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="reservationCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>  

<xs:element name="authenticationData">
    <xs:complexType>
      <xs:all>
        <xs:element name="CardAuthPolicy" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:all>
              <xs:element name="checkAVS" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignoreCSCCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignorePostcodeCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignoreAddressCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="automaticReverse" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>
    

Response file

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

  <xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header" />
        <xs:element ref="error-details" minOccurs="0" />
        <xs:element ref="body" minOccurs="0" />
        <xs:element ref="end" />
      </xs:sequence>
      <xs:attribute name="type" type="xs:string" use="required" fixed="response" />
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="header">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="remitterId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="date" type="xs:date" maxOccurs="1" minOccurs="1"/>
        <xs:element name="time" type="xs:time" maxOccurs="1" minOccurs="1"/>
        <xs:element name="sequence" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="processingResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="beginProcessTime" type="xs:dateTime" maxOccurs="1" minOccurs="1"/>
        <xs:element name="endProcessTime" type="xs:dateTime" maxOccurs="1" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="body">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="validate" />
        <xs:element ref="refund" />
        <xs:element ref="duplicate" />
        <xs:element ref="cardOrder" />
        <xs:element ref="directDebitOrder" />
        <xs:element ref="cancel" />
        <xs:element ref="credit" />
        <xs:element ref="walletOrder" />
        <xs:element ref="recycle" />
        <xs:element ref="acceptChallenge" />
        <xs:element ref="refuseChallenge" />
        <xs:element ref="walletCredit" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
  
  <!-- Error details for error response file -->
  <xs:element name="error-details" type="xs:string" />
  
  <xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>  

  
  <xs:element name="cardOrder">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="panType" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="paymentMeanData" maxOccurs="1" minOccurs="0" />
        <xs:element name="holderData" type="holderData" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>

        <!-- RESPONSE -->
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="guaranteeIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentRelegation" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="tokenPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorMessageReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseMessage" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanTradingName" type="xs:string" maxOccurs="1" minOccurs="0"/>
      
        <xs:element ref="riskManagementCustomDataList" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
        <xs:element ref="cardData" maxOccurs="1" minOccurs="0" />
        
        <xs:element name="recurringResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <!-- RMS fields -->
        <xs:element name="preAuthorisationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthorisationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element minOccurs="0" name="preAuthorisationRuleResultList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrandSelectionStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardCSCResultCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="avsPostcodeResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="avsAddressResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationTypeLabel" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="directDebitOrder">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="instalmentData" minOccurs="0" maxOccurs="1" />
        <xs:element name="mandateId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="valueDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        
        <!-- RESPONSE -->
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureLimitDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="creditorId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="guaranteeIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentRelegation" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionActors" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        
        <xs:element ref="riskManagementCustomDataList" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
                <!-- RMS fields -->
                <xs:element name="preAuthorisationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
                <xs:element name="preAuthorisationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
                <xs:element minOccurs="0" name="preAuthorisationRuleResultList">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="secureReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="credit">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="panType" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="statementReference" maxOccurs="1" minOccurs="0" />
        
        <!-- RESPONSE -->
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="cancel">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        
        <!-- RESPONSE -->
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newAmount" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="refund">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationAmount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />

        <!-- RESPONSE -->
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newAmount" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="duplicate">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="fromTransactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="fromMerchantId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10FromTransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />

        <!-- RESPONSE -->
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreColor" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreThreshold" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="panExpiryDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="cardData" maxOccurs="1" minOccurs="0" />
        <xs:element name="avsPostcodeResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="avsAddressResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <!-- RMS fields -->
        <xs:element name="preAuthorisationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthorisationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element minOccurs="0" name="preAuthorisationRuleResultList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="paymentMeanBrandSelectionStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="validate">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationAmount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element name="lastRecoveryIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        
        <!-- RESPONSE -->
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newAmount" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureLimitDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="walletOrder">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>

        <!-- RESPONSE -->
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="guaranteeIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentRelegation" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="tokenPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="cardData" maxOccurs="1" minOccurs="0" />
        <xs:element name="cardCSCResultCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="avsPostcodeResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="avsAddressResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <!-- RMS fields -->
        <xs:element name="preAuthorisationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthorisationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element minOccurs="0" name="preAuthorisationRuleResultList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
<xs:element name="authorMessageReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
	<xs:element name="authorisationTypeLabel" type="xs:string" maxOccurs="1" minOccurs="0"/>

      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="walletCredit">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" /> 
        <xs:element ref="statementReference" maxOccurs="1" minOccurs="0" /> 

        <!-- RESPONSE -->
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="recycle">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="fromTransactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10FromTransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element name="lastRecoveryIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/> 
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>

        <!-- RESPONSE -->
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="panExpiryDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreColor" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreThreshold" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="cardData" maxOccurs="1" minOccurs="0" />
        <!-- RMS fields -->
        <xs:element name="preAuthorisationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthorisationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element minOccurs="0" name="preAuthorisationRuleResultList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="preAuthenticationColor" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthenticationInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthenticationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthenticationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthenticationThreshold" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthenticationValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element minOccurs="0" name="preAuthenticationRuleResultList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="paymentMeanBrandSelectionStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="acceptChallenge">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="comment" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="validationIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        
        <!-- RESPONSE -->
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureLimitDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="refuseChallenge">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="comment" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        
        <!-- RESPONSE -->
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>        
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="fraudData">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="bypass3DS" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="bypassCtrlList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ctrl"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="bypassInfoList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="info"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedCardCountryList"
            type="CountryList">
          </xs:element>
          <xs:element name="deniedCardCountryList"
            type="CountryList">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedCardArea"
            type="xs:string">
          </xs:element>
          <xs:element name="deniedCardArea"
            type="xs:string">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedIpCountryList"
            type="CountryList">
          </xs:element>
          <xs:element name="deniedIpCountryList"
            type="CountryList">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedIpArea" type="xs:string"></xs:element>
          <xs:element name="deniedIpArea" type="xs:string"></xs:element>
        </xs:choice>
        <xs:element minOccurs="0" name="riskManagementDynamicSettingList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="riskManagementDynamicSetting" type="RiskManagementDynamicSetting"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:complexType name="CountryList">
    <xs:sequence>
      <xs:element name="country" type="xs:string" maxOccurs="unbounded" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RiskManagementDynamicSetting">
    <xs:sequence>
      <xs:element name="riskManagementDynamicParam" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
      <xs:element name="riskManagementDynamicValue" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Contact">
    <xs:all>
      <xs:element name="email" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="firstName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="lastName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="gender" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="phone" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="mobile" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="Address">
    <xs:all>
      <xs:element name="additionalAddress1" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="additionalAddress2" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="additionalAddress3" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="city" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="country" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="streetName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="streetNumber" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="zipCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="state" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="postbox" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="DeliveryData">
    <xs:all>
      <xs:element name="deliveryMethod" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:element name="instalmentData">
    <xs:complexType>
      <xs:all>
        <xs:element name="number" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="datesList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="date"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="transactionReferencesList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="transactionReference"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="amountsList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="amount"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="s10TransactionIdsList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="s10TransactionId"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>


  <xs:element name="paymentMeanData">
    <xs:complexType>
      <xs:all>
        <xs:element name="accord" type="accord" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="cofinoga" type="cofinoga" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="accord">
    <xs:all>
      <xs:element name="additionalAuthorisationNumber" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="settlementMode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cofinoga">
    <xs:all>
      <xs:element name="settlementMode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>
  
  <xs:complexType name="holderData">
    <xs:all>
      <xs:element name="birthDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>


  <xs:element name="s10TransactionReference">
    <xs:complexType>
      <xs:all>
        <xs:element name="s10TransactionId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="s10TransactionIdDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="s10FromTransactionReference">
    <xs:complexType>
      <xs:all>
        <xs:element name="s10FromTransactionId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="s10FromTransactionIdDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>


  <xs:element name="riskManagementCustomDataList">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="riskManagementCustomData"
          type="xs:string" maxOccurs="unbounded" minOccurs="1">
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="riskManagementCustomData">
    <xs:complexType>
      <xs:all>
        <xs:element name="riskManagementCustomSequence" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="riskManagementCustomValue" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="shoppingCartDetail">
    <xs:complexType>
      <xs:all>
        <xs:element name="shoppingCartTotalAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="shoppingCartTotalQuantity" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="shoppingCartTotalTaxAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="mainProduct" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="ShoppingCartItemList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="shoppingCartItem"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="shoppingCartItem">
    <xs:complexType>
      <xs:all>
        <xs:element name="productName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productDescription" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productSKU" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productUnitAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productQuantity" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productTaxRate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productUnitTaxAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productCategory" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>  

  <xs:element name="cardData">
    <xs:complexType>
      <xs:all>
        <xs:element name="cardProductCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="cardProductName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="cardProductProfile" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="cardScheme" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="issuerCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="issuerCountryCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
<xs:element name="cardProductUsageLabel" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RuleResult">
    <xs:sequence>
      <xs:element name="ruleCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="ruleType" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="ruleWeight" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="ruleSetting" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="ruleResultIndicator" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="ruleDetailedInfo" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="orderContext">
    <xs:complexType>
      <xs:all>
        <xs:element name="customerHostName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerBrowserType" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerANI" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerANIInformationIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>  

  <xs:element name="travelContext">
    <xs:complexType>
      <xs:all>
        <xs:element name="departureDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="passengerName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="originAirport" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="numberOfRoutingCities" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="routingCityList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="routingCity" type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="numberOfAirlineCarriers" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="airlineCarrierList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="airlineCarrier" type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="fareBasis" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="numberOfPassengers" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="destinationAirport" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="reservationCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>  

  <xs:element name="authenticationData">
    <xs:complexType>
      <xs:all>
        <xs:element name="CardAuthPolicy" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:all>
              <xs:element name="checkAVS" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignoreCSCCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignorePostcodeCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignoreAddressCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="automaticReverse" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

</xs:schema>
    

token service XSD

Request file

      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

  <xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header"/>
        <xs:element ref="body"/>
        <xs:element ref="end"/>
      </xs:sequence>
      <xs:attribute fixed="request" name="type" type="xs:string" use="required"/>
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="header">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="remitterId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="date" type="xs:date"/>
        <xs:element maxOccurs="1" minOccurs="1" name="time" type="xs:time"/>
        <xs:element maxOccurs="1" minOccurs="1" name="sequence" type="xs:string"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="header">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="remitterId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="date" type="xs:date"/>
        <xs:element maxOccurs="1" minOccurs="1" name="time" type="xs:time"/>
        <xs:element maxOccurs="1" minOccurs="1" name="sequence" type="xs:string"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="panToToken">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="userId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="pan" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="transactionToToken">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="fromTransactionReference" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="fromMerchantId" type="xs:string"/>
        <xs:element ref="s10FromTransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element maxOccurs="1" minOccurs="0" name="merchantExternalId" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="s10FromTransactionReference">
    <xs:complexType>
      <xs:all>
        <xs:element name="s10FromTransactionId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="s10FromTransactionIdDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  
</xs:schema>
    

Response file

        <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header"/>
        <xs:element minOccurs="0" ref="error-details"/>
        <xs:element minOccurs="0" ref="body"/>
        <xs:element ref="end"/>
      </xs:sequence>
      <xs:attribute fixed="response" name="type" type="xs:string" use="required"/>
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="header">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="1" minOccurs="1" name="remitterId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="date" type="xs:date"/>
        <xs:element maxOccurs="1" minOccurs="1" name="time" type="xs:time"/>
        <xs:element maxOccurs="1" minOccurs="1" name="sequence" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="processingResponseCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="beginProcessTime" type="xs:dateTime"/>
        <xs:element maxOccurs="1" minOccurs="1" name="endProcessTime" type="xs:dateTime"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

<xs:element name="body">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded" minOccurs="0">
        <xs:element ref="panToToken"/>
        <xs:element ref="transactionToToken"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>

<!-- Error details for error response file -->
  <xs:element name="error-details" type="xs:string"/>

<xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>  

<xs:element name="panToToken">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="responseCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="tokenPan" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="officeBatchResponseCode" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="transactionToToken">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="fromTransactionReference" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="fromMerchantId" type="xs:string"/>
        <xs:element ref="s10FromTransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element maxOccurs="1" minOccurs="1" name="responseCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="tokenPan" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="paymentMeanBrand" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="cardExpiryDate" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="officeBatchResponseCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="merchantExternalId" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="s10FromTransactionReference">
    <xs:complexType>
      <xs:all>
        <xs:element name="s10FromTransactionId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="s10FromTransactionIdDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

</xs:schema>
      

fraud service XSD

Request file

      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header"/>
        <xs:element ref="body"/>
        <xs:element ref="end"/>
      </xs:sequence>
      <xs:attribute fixed="request" name="type" type="xs:string" use="required"/>
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="header">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="remitterId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="date" type="xs:date"/>
        <xs:element maxOccurs="1" minOccurs="1" name="time" type="xs:time"/>
        <xs:element maxOccurs="1" minOccurs="1" name="sequence" type="xs:string"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="body">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded" minOccurs="0">
        <xs:element ref="addToFraudList"/>
        <xs:element ref="removeFromFraudList"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>

<xs:element name="addToFraudList">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="fraudListReasonCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListLevel" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementValue" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="removeFromFraudList">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListLevel" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementValue" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
    

Response file

      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

  <xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header"/>
        <xs:element minOccurs="0" ref="error-details"/>
        <xs:element minOccurs="0" ref="body"/>
        <xs:element ref="end"/>
      </xs:sequence>
      <xs:attribute fixed="response" name="type" type="xs:string" use="required"/>
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="header">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="1" minOccurs="1" name="remitterId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="date" type="xs:date"/>
        <xs:element maxOccurs="1" minOccurs="1" name="time" type="xs:time"/>
        <xs:element maxOccurs="1" minOccurs="1" name="sequence" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="processingResponseCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="beginProcessTime" type="xs:dateTime"/>
        <xs:element maxOccurs="1" minOccurs="1" name="endProcessTime" type="xs:dateTime"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

<xs:element name="body">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded" minOccurs="0">
        <xs:element ref="addToFraudList"/>
        <xs:element ref="removeFromFraudList"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>

<!-- Error details for error response file -->
  <xs:element name="error-details" type="xs:string"/>

<xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>  

<xs:element name="addToFraudList">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListLevel" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementValue" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="officeBatchResponseCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="responseCode" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  
  <xs:element name="removeFromFraudList">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListType"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListLevel" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementValue" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="officeBatchResponseCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="responseCode" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

</xs:schema>
    

wallet service XSD

Request file

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header" />
        <xs:element ref="body" />
        <xs:element ref="end" />
      </xs:sequence>
      <xs:attribute name="type" type="xs:string" use="required" fixed="request" />
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="header">
    <xs:complexType>
      <xs:all>
        <xs:element name="remitterId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="date" type="xs:date" maxOccurs="1" minOccurs="1"/>
        <xs:element name="time" type="xs:time" maxOccurs="1" minOccurs="1"/>
        <xs:element name="sequence" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="body">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="addCard" />
        <xs:element ref="addDirectDebit" />
        <xs:element ref="deletePaymentMean" />
        <xs:element ref="updatePaymentMean" />
        <xs:element ref="signOff" />
        <xs:element ref="addIssuerWallet" />
      </xs:choice>
    </xs:complexType>
  </xs:element>

<xs:element name="addCard">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardExpiryDate" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardNumber" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="addDirectDebit">
    <xs:complexType>
      <xs:all>
        <xs:element name="customerAccount" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerBankCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="mandateId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionActors" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="deletePaymentMean">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="updatePaymentMean">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="signOff">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="addIssuerWallet">
 <xs:complexType>
  <xs:all>
   <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
   <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
   <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="1"/>
   <xs:element name="issuerWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
   <xs:element name="issuerWalletType" type="xs:string" maxOccurs="1" minOccurs="1"/>
  </xs:all>
  <xs:attribute name="recordSequence" type="xs:string" use="required" />
 </xs:complexType>
</xs:element>

  <xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

</xs:schema>
    

Response file

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header" />
        <xs:element ref="error-details" minOccurs="0" />
        <xs:element ref="body" minOccurs="0" />
        <xs:element ref="end" />
      </xs:sequence>
      <xs:attribute name="type" type="xs:string" use="required" fixed="response" />
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="header">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="remitterId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="date" type="xs:date" maxOccurs="1" minOccurs="1"/>
        <xs:element name="time" type="xs:time" maxOccurs="1" minOccurs="1"/>
        <xs:element name="sequence" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="processingResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="beginProcessTime" type="xs:dateTime" maxOccurs="1" minOccurs="1"/>
        <xs:element name="endProcessTime" type="xs:dateTime" maxOccurs="1" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="body">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="addCard" />
        <xs:element ref="addDirectDebit" />
        <xs:element ref="deletePaymentMean" />
        <xs:element ref="updatePaymentMean" />
        <xs:element ref="signOff" />
        <xs:element ref="addIssuerWallet" />
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <!-- Error details for error response file -->
  <xs:element name="error-details" type="xs:string" />

<xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>  

<xs:element name="addCard">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardExpiryDate" type="xs:string" maxOccurs="1" minOccurs="1"/>

<xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="walletCreationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="addDirectDebit">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>

        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionActors" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="walletCreationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="deletePaymentMean">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="1"/>

<xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="walletActionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>        
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="updatePaymentMean">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>


        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="walletActionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>  
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="signOff">
      <xs:complexType>
        <xs:all>
         <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>

<xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="walletActionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>  
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:complexType name="walletPaymentMeanData">
    <xs:all>
      <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="panExpiryDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="transactionActors" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

<xs:element name="addIssuerWallet">
<xs:complexType>
  <xs:all>
   <!-- REQUEST -->
         <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="issuerWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="issuerWalletType" type="xs:string" maxOccurs="1" minOccurs="1"/>
   <!-- RESPONSE -->
         <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>
         <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="walletCreationDateTime" type="xs:string" maxOccurs="1" minOccurs="1"/>        
  </xs:all>
  <xs:attribute name="recordSequence" type="xs:string" use="required" />
</xs:complexType>
</xs:element>

</xs:schema>