Interface Batch

From Documentation Mercanet
Jump to: navigation, search

Contents

Introduction

Mercanet est une solution de paiement e-commerce multicanale sécurisée conforme à la norme PCI DSS. Elle permet à tout commerçant d’accepter et de gérer des transactions de paiement en prenant en compte les règles métiers liées à son activité (paiement à la livraison, paiement différé, paiement récurrent, paiement fractionné, …).
L’objectif du présent document est d’expliquer la mise en œuvre de la solution Mercanet Batch et des tests initiaux relatifs au paiement ou à la gestion de caisse.

A qui s’adresse ce document

Mercanet Batch a pour but de fournir aux commerçants les fonctions de Mercanet en mode Batch. Ces fonctions sont basées sur l'échange hors-ligne de fichiers. Certaines options du mode en ligne ne sont pas disponibles comme par exemple l’authentification 3-D Secure.
C’est un guide d’implémentation qui s’adresse à l’équipe technique du commerçant.
Pour avoir une vue d’ensemble de la solution Mercanet, nous vous conseillons de consulter les documents suivants:

Prérequis

Une connaissance des protocoles de transfert des fichiers ainsi qu’une connaissance des standards relatifs aux langages de programmation pratiqués aujourd’hui, tels que Java, PHP ou .Net, est nécessaire pour développer la connexion à Mercanet Batch.

Contacter l’assistance technique

[Pour toute question technique ou demande d'assistance, nos services sont disponibles]

Comprendre le paiement avec Mercanet Batch

Le traitement des fichiers par Mercanet Batch se décompose en plusieurs étapes :
SchemaMercanetBatch.PNG

  1. Le commerçant dépose des fichiers de requêtes sur un compte FTPS ou SFTP externe fourni par BNP Paribas.
  2. La passerelle de transfert de fichiers BNP Paribas reçoit les fichiers de requêtes et les envoie au moteur Mercanet Batch.
  3. Le moteur Mercanet Batch traite les fichiers de requêtes un par un et génère un fichier de réponses par fichier de requêtes.
  4. Le moteur Mercanet Batch envoie le fichier de réponses au compte FTPS ou SFTP externe via la passerelle de transfert de fichiers.
  5. Le commerçant récupère le fichier de réponses depuis le compte FTPS ou SFTP externe fourni par BNP Paribas.
  6. Le moteur Mercanet Batch, via la passerelle de transfert de fichier, détruit le fichier de réponses après le premier téléchargement réussi par le commerçant.
Règles générales concernant les transferts
  • Le commerçant peut choisir entre FTPS ou SFTP comme méthode de transfert.
  • BNP Paribas fournit un compte commerçant dédié (avec nom d'utilisateur et mot de passe), et le compte BNP Paribas doit être le même pour les fichiers de requêtes et les fichiers de réponses, mais des restrictions s'appliquent quant au nom du fichier.
  • En plus des vérifications de nom d'utilisateur et de mot de passe, les serveurs SFTP et FTPS de BNP Paribas exécutent une vérification de l'adresse IP du commerçant.
  • BNP Paribas donne au fichier de réponses un nom différent de celui du fichier de requêtes.
  • Après une période donnée (1 semaine), les fichiers de réponse sont supprimés des comptes FTPS ou SFTP, même s'ils n'ont pas été téléchargés.
Gérer les opérations de plusieurs commerçants

Le remettant est un partenaire qui joue le rôle d'un opérateur technique gérant les échanges de fichiers avec la plate-forme de paiement Mercanet. Un remettant peut envoyer des opérations de plusieurs commerçants dans le même fichier à condition qu'elles soient déclarées au nom de ce remettant lors de l'étape d’inscription.

Info.png Remarques

Mercanet attribue un numéro de remettant durant l’inscription. Ce numéro est fourni dans le champ remitterId de l’entête du fichier de requêtes.

Il est intéressant de noter qu'un remettant peut également être lui-même un commerçant.

Comprendre le format de fichiers échangés

Les fichiers de requêtes et de réponses échangés avec Mercanet Batch sont au format XML.

Chaque fichier est constitué de quatre parties successives :

  • FILE TYPE correspondant au type de fichier (voir le chapitre suivant pour les explications des différents types)
  • HEADER contenant l’en-tête du fichier
  • BODY contenant toutes les opérations
  • END indiquant la fin du fichier

L'en-tête du fichier contient un identifiant sous la forme d’un numéro de séquence. Ce numéro de séquence doit être :

  • numérique
  • unique pour tous vos fichiers (sans limite de temps)
  • croissant et il doit commencer à 1 et augmenter de 1 en 1

Le corps du fichier contient plusieurs enregistrements. Un enregistrement correspond à une transaction, ou une opération de caisse sur une transaction, ou une fonction satellite (comme la gestion du wallet, la tokenisation ou encore la gestion de la fraude).

  • Exemple de structure principale du fichier de requêtes ou de réponses
<?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>

Les diagrammes XML sont fournis en annexes afin de vous permettre de valider ses fichiers de requêtes et de réponses.


Plusieurs fichiers de requêtes peuvent être traités en une journée. Lorsque plusieurs fichiers de requêtes sont disponibles sur le compte FTPS externe, Mercanet Batch les traite un par un successivement (et non simultanément) et par ordre d’arrivée sur le compte FTPS.

Il y a un fichier de réponses pour chaque fichier de requêtes même si le traitement du fichier génère des erreurs.

Info.png Remarques

A l'exception de cas très spécifiques, un fichier de réponses ajoute les champs de réponse aux informations du fichier de requêtes. Voir le chapitre Rapprochement des fichiers ci dessous

Règles générales concernant les fichiers échangés
  • la taille des fichiers ne doit pas dépasser 100 Mo ou 100 000 enregistrements d'opérations
  • les fichiers sont dédiés à un seul remettant
  • un fichier de requêtes ne peut pas contenir plusieurs opérations sur la même transaction. Par exemple, il n'est pas possible de créer une transaction et de l'annuler dans le même fichier de requêtes.
  • L'ordre des opérations dans le corps du fichier de réponses peut être différent de l'ordre des opérations dans le fichier de requêtes.

Comprendre le format du fichier de requêtes

Le type de fichier est basé sur le service utilisé.

Tous les champs de l’élément file type de la requête sont obligatoires et en format ANS20. Ils sont retournés à l’identique dans la réponse.

  • Le nom de la balise est file
  • Le champ type doit valoir request pour la requête et response pour la réponse.
  • Les champs format et version dépendent du type de service appelé.

Format

Version

Description du service

office

Doit valoir 8

Acceptation transactions et operation de caisse

token

Doit valoir 1

Tokenisation et détokenisation des PAN

fraud

Doit valoir 2

Gestion de la fraude

wallet

Doit valoir 2

Gestion des coordonnées de paiement dans le wallet utilisée dans le cas du oneclick et de l’abonnement

  • Exemple de type de fichier
<file type="request" format="office" version="8">
 ...
</file>

L'en-tête est basé sur un enregistrement contenant les champs suivants :

Champs

Présence

Format

Description

Le nom de la balise est header

Obligatoire

ANS20

Indique un enregistrement d'en-tête

remitterId

Obligatoire

N15

Identifiant du remettant

date

Obligatoire

XML Date

Date à laquelle le fichier a été créé dans le fuseau horaire du commerçant (AAAA-MM-JJ+hh:mm)

time

Obligatoire

XML Time

Heure à laquelle le fichier a été créé dans le fuseau horaire du commerçant (hh:mm:ss+hh:mm)

sequence

Obligatoire

N6

Numéro de séquence du fichier. Vous pouvez utiliser un remplissage à base de « 0 » sur la gauche (par exemple : 000001 pour le numéro de la première séquence).

  • Exemple d’en-tête
<header>
 <remitterId>023101122334455</remitterId>
 <date>2012-06-11+02:00</date>
 <time>14:28:00+01:00</time>
 <sequence>86</sequence>
 </header>

Le corps contient des opérations en fonction du service déclaré dans l'élément file. Il faut se reporter au chapitre suivant pour connaitre le détail des champs suivant l’opération souhaitée.

  • Exemple de partie «corps» pour le service «office»
<body>
…
 <cardOrder recordSequence=”2”>
 …
 </cardOrder>
…
</body>

La partie finale est basée sur un enregistrement contenant les champs suivants :

Champs

Présence

Format

Description

Le nom de la balise est end

Obligatoire

ANS20

Indique la fin de l'enregistrement

nbRecord

Obligatoire

N6

Nombres d'opérations dans la partie «body»

  • Exemple d’élément «end »
<end nbRecord="227" />
Nommage du fichier de requêtes

Le fichier de requêtes doit être transmis dans une archive au format ZIP. L’archive doit se nommer OFBREQxx.ZIP où xx désigne un nombre compris entre 01 et 99.

Une archive ne doit contenir qu’un seul fichier requête.

Le nom du fichier requête est libre mais nous vous conseillons de respecter le nommage suivant: SOB.Alias.Date-Heure.xml Avec :

  • SOB à fichier requête à destination de «Mercanet Batch»
  • Alias à alias/merchantId Mercanet de la boutique remettante
  • Date à date du fichier sous le format AAMMJJ
  • Heure à heure du fichier sous le format HHMMSS

Comprendre le format du fichier de réponses

L'en-tête est basé sur un enregistrement contenant les champs suivants :

Champs

Format

Description

Le nom de la balise est header

ANS20

Indique un enregistrement d'en-tête

remitterId

N15

Identifiant du remettant

date

XML Date

Date de création du fichier dans le fuseau horaire du commerçant (YYYY-MM-DD+hh:mm)

time

XML Time

Heure de création du fichier dans le fuseau horaire du commerçant (hh:mm:ss+hh:mm)

sequence

N6

Numéro de séquence du fichier

processingResponseCode

AN2

Code réponse de traitement

beginProcessTime

ANS25 ISO8601

Horodatage de début du traitement du fichier dans le fuseau horaire du commerçant

endProcessTime

ANS25 ISO8601

Horodatage de fin du traitement du fichier dans le fuseau horaire du commerçant

  • Exemple d’en-tête
<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>

L’élément “error-details” n’est renvoyé que lorsqu’une erreur intervient lors du contrôle du fichier requête. “error-details” est une chaine de caractère décrivant l’erreur.

  • Exemple d’en-tête
…
<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>
…

A chaque opération du fichier de requêtes correspond un élément du fichier de réponses dont les attributs ont été remplis lors du renvoi. Les champs retournés sont décrits au chapitre suivant.

La fin du fichier de réponses est similaire à celle du fichier de requêtes et comporte les champs suivants :

Champs

Format

Description

Le nom de la balise est end

ANS20

Indique la fin de l'enregistrement

nbRecord

N6

Nombres d'opérations dans la partie «body»

  • Exemple d’élément «end »
<end nbRecord="227" />
Nommage fichier réponse

Le fichier réponse est transmis dans une archive au format ZIP. Le nom de cette archive est OFBREPxx.Jour.Mois.Année.ZIP. Avec:

  • xx un nombre compris entre 01 et 99 identique au fichier requête.
  • Jour jour de création du fichier archive exprimé sous le format JJ
  • Mois mois de création du fichier archive exprimé sous le format MM
  • Année année de création du fichier archive exprimé sous le format AA

Le nom du fichier réponse contenu dans l’archive a pour formalisme: OFFUBZ.OFFBAREP.Alias.Date-Heure. xml Avec:

  • Alias à alias/merchantId Mercanet de la boutique remettante
  • Date à date du fichier sous le format AAMMJJ
  • Heure à heure du fichier sous le format HHMMSS

Rapprochement des fichiers requêtes et réponses

Afin d'aider au rapprochement des fichiers requêtes et réponses, chaque fichier requête est identifiée par un numéro de séquence qui est également retourné avec la réponse. Tous les champs du fichier requête sont également retournés dans le fichier réponse à l'exception des champs suivants en raison de la conformité avec PCI DSS :

  • cardNumber peut être retourné masqué dans le champ maskedPan
  • cardEffectiveDate (date de début de validité de la carte.)
  • cardExpiryDate (date d'expirationde la carte)
  • cardSeqNumber (numéro de séquence de la cartesi présent)
  • cardCscValue (cryptogramme visuel de la carte)

Mercanet peut modifier la valeur du champ suivant si la création de la transaction est suivie d'une autorisation bancaire.

  • transactionDate

Démarrer avec Mercanet Batch en 5 étapes

Etape 1: Demander la création d’un compte ftp

Pour cela, vous devez renvoyer le formulaire d’inscription à Mercanet Batch remis par votre interlocuteur technique Wordline. La création du compte ftp prend environ 12 jours à réception du formulaire correctement rempli. Des échanges par mail ont ensuite lieu pour tester le compte ftp en recette avant mise en place en environnement de production.

Etape 2: Utiliser les fonctions disponibles

Les différentes fonctions possibles font l’objet de requêtes spécifiques. Une requête est composée de champs génériques et de champs de type container. Un container est une structure de données utilisée afin de regrouper fonctionnellement les données. Si le champ est de type container, cette précision est indiquée dans la colonne commentaire qui renvoie au chapitre dédié détaillant le contenu de tous les champs de ce type.

Info.png Remarques

Avant d’utiliser une fonction, vérifiez que vous avez bien les droits pour utiliser cette fonction sur votre boutique.

Fonction «cardOrder» du service «office»

Cette fonction vous permet d'effectuer un paiement carte si vous disposez des informations bancaires d'un client.

Format de la requête cardOrder

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes:

Champs

Présence

Commentaires

Le nom de la balise est cardOrder

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Facultatif si vous utilisez le S10TransactionReference

s10TransactionReference

Obligatoire

Facultatif si vous utilisez le transactionReference. Voir paragraphe Container

amount

Obligatoire

captureDay

Facultatif

captureMode

Facultatif

cardCSCValue

Facultatif

cardEffectiveDate

Facultatif

cardExpiryDate

Obligatoire

cardNumber

Obligatoire

cardSeqNumber

Facultatif

currencyCode

Obligatoire

customerEmail

Facultatif

customerId

Facultatif

customerIpAddress

Facultatif

merchantTransactionDateTime

Facultatif

orderChannel

Obligatoire

orderId

Facultatif

paymentPattern

Facultatif

returnContext

Facultatif

statementReference

Facultatif

transactionOrigin

Facultatif

fraudData

Facultatif

Voir paragraphe Container

panType

Facultatif

Valorisé à TOKEN_PAN si paiement via un token

paymentMeanData

Facultatif

Voir paragraphe Container

holderData

Facultatif

Voir paragraphe Container

riskManagementCustomDataList

Facultatif

Voir paragraphe Container

shoppingCartDetail

Facultatif

Voir paragraphe Container

paymentMeanBrand

Facultatif

paymentMeanBrandSelectionStatus

Facultatif

orderContext

Facultatif

Voir paragraphe Container

travelContext

Facultatif

Voir paragraphe Container

deliveryContact

Facultatif

Voir paragraphe Container

deliveryAddress

Facultatif

Voir paragraphe Container

deliveryData

Facultatif

Voir paragraphe Container

holderContact

Facultatif

Voir paragraphe Container

billingContact

Facultatif

Voir paragraphe Container

billingAddress

Facultatif

Voir paragraphe Container

authenticationData

Facultatif

Voir paragraphe Container

holderAddress

Facultatif

Voir paragraphe Container

  • Exemple de requête cardOrder
<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@BNP Paribas.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 de la réponse à la requête cardOrder

La réponse contient tous les champs de la requête (à l'exception des champs cardCSCValue, cardEffectiveDate, cardExpiryDate, cardNumber, cardSeqNumber), ainsi que les champs présentés ci-dessous:

Champs

Commentaires

Le nom de la balise est cardOrder

acquirerResponseCode

authorisationId

complementaryCode

complementaryInfo

guaranteeIndicator

holderAuthentRelegation

holderAuthentStatus

maskedPan

officeBatchResponseCode

responseCode

transactionDateTime

tokenPan

authorMessageReference

acquirerResponseMessage

paymentMeanTradingName

cardData

Voir paragraphe Container

recurringResponseCode

preAuthorisationProfile

preAuthorisationProfileValue

preAuthorisationRuleResultList

Voir paragraphe Container

transactionPlatform

Usage futur (systématiquement valorisé à ‘PROD’ pour le moment)

cardCSCResultCode

avsPostcodeResponseCode

avsAddressResponseCode

authorisationTypeLabel

Usage future (MPADS)

  • Exemple de réponse à une requête cardOrder
<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>

Fonction «refund» du service «office»

Cette opération vous permet de rembourser une transaction en créditant le compte du client et en débitant votre compte.

Info.png Remarques

Toute opération REFUND traitée entre 22 heures et 23 heures (heure locale française) retourne automatiquement un code réponse 24. L’opération n’est pas traitée.

Format de la requête refund

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes.

Champs

Présence

Commentaires

Le nom de la balise est refund

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Référence de la transaction à rembourser. Facultatif vous utilisez le s10TransactionReference

s10TransactionReference

Obligatoire

Référence de la transaction à rembourser. Facultatif si vous utilisez le transactionReference

operationAmount

Obligatoire

currencyCode

Obligatoire

operationOrigin

Facultatif

shoppingCartDetail

Facultatif

Voir paragraphe Container

  • Exemple de requête refund
<refund recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <transactionReference>SIM201206810160</transactionReference>
 <operationAmount>1000</operationAmount>
 <currencyCode>978</currencyCode>
 <operationOrigin>operationOrigin</operationOrigin>
</refund>
Format de la réponse à la requête refund

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs

Commentaires

Le nom de la balise est refund

Nom de la fonction

operationDateTime

transactionDateTime

responseCode

newStatus

newAmount

authorisationId

acquirerResponseCode

officeBatchResponseCode

  • Exemple de réponse à une requête refund :
<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>

Fonction «validate» du service «office»

Cette fonction permet de déclencher la remise en paiement d’une transaction. Elle vous permet de faire du paiement différé en débitant votre client à l’expédition des produits achetés.

Format de la requête validate

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes.

Champs

Présence

Commentaires

Le nom de la balise est validate

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Référence de la transaction à valider. Facultatif si vous utilisez le s10TransactionReference

s10TransactionReference

Obligatoire

Référence de la transaction à valider. Facultatif si vous utilisez le transactionReference. Voir paragraphe Container

operationAmount

Obligatoire

currencyCode

Obligatoire

operationOrigin

Facultatif

lastRecoveryIndicator

Facultatif

Exemple de requête validate

<validate recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <transactionReference>SIM201206810160</transactionReference>
 <operationAmount>1000</operationAmount>
 <currencyCode>978</currencyCode>
 <operationOrigin>operationOrigin</operationOrigin>
 <lastRecoveryIndicator>TRUE</lastRecoveryIndicator>
</validate>
Format de la réponse à la requête validate

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs

Commentaires

Le nom de la balise est validate.

Nom de la fonction

operationDateTime

responseCode

newStatus

newAmount

authorisationId

acquirerResponseCode

officeBatchResponseCode

captureLimitDate

  • Exemple de réponse à une requête validate :
<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>

Fonction «duplicate» du service «office»

Cette fonction permet de créer une nouvelle transaction à partir des données d'une transaction précédente À titre d'exemple, si une transaction n'a – par erreur ou omission – pu être validée dans le délai de capture que vous avez renseigné, elle a expiré et ne sera donc pas envoyée en remise en paiement. Vous pouvez alors rattraper cette transaction en la dupliquant.

Format de la requete duplicate

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes.

Champs

Présence

Commentaires

Le nom de la balise est duplicate.

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Facultatif si vous utilisez le S10TransactionReference

s10TransactionReference

Obligatoire

Facultatif si vous utilisez le transactionReference. Voir paragraphe Container

amount

Obligatoire

currencyCode

Obligatoire

captureDay

Facultatif

captureMode

Facultatif

customerEmail

Facultatif

customerId

Facultatif

customerIpAddress

Facultatif

fromTransactionReference

Obligatoire

Référence de la transaction à dupliquer. Facultatif si vous utilisez le S10FromTransactionReference. Voir paragraphe Container.

s10FromTransactionReference

Obligatoire

Référence de la transaction à dupliquer. Facultatif si vous utilisez le fromTransactionReference. Voir paragraphe Container.

merchantTransactionDateTime

Facultatif

orderChannel

Obligatoire

orderId

Facultatif

returnContext

Facultatif

transactionOrigin

Facultatif

fromMerchantId

Facultatif

fraudData

Facultatif

Voir paragraphe Container

statementReference

Facultatif

orderContext

Facultatif

Voir paragraphe Container

travelContext

Facultatif

Voir paragraphe Container

deliveryContact

Facultatif

Voir paragraphe Container

deliveryAddress

Facultatif

Voir paragraphe Container

deliveryData

Facultatif

Voir paragraphe Container

holderContact

Facultatif

Voir paragraphe Container

billingContact

Facultatif

Voir paragraphe Container

billingAddress

Facultatif

Voir paragraphe Container

authenticationData

Facultatif

Voir paragraphe Container

holderAddress

Facultatif

Voir paragraphe Container

shoppingCartDetail

Facultatif

Voir paragraphe Container

  • Exemple de requête duplicate
<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>
</duplicate>
Format de la réponse à la requête duplicate

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs

Commentaires

Le nom de la balise est duplicate

Nom de la fonction

authorisationId

acquirerResponseCode

complementaryCode

complementaryInfo

responseCode

scoreColor

scoreInfo

scoreProfile

scoreThreshold

scoreValue

transactionDateTime

officeBatchResponseCode

maskedPan

panExpiryDate

paymentMeanBrand

cardData

Voir paragraphe Container

preAuthorisationProfile

preAuthorisationProfileValue

preAuthorisationRuleResultList

Voir paragraphe Container

paymentMeanBrandSelectionStatus

transactionPlatform

Usage futur (systématiquement valorisé à ‘PROD’ pour le moment)

avsPostcodeResponseCode

avsAddressResponseCode

Exemple de réponse au format XML à une requête duplicate

<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>

Fonction «cancel» du service «office»

Cette fonction permet d’annuler une transaction avant l’envoi en banque ou de modifier son montant. Une opération d’annulation ne peut pas être annulée et on ne peut pas annuler un montant supérieur au montant d’origine de la transaction.

Info.png Remarques

Toute opération CANCEL traitée entre 22 heures et 23 heures (heure locale française) retourne automatiquement un code réponse 24. L’opération n’est pas traitée.

Format de la requête cancel

Champs

Présence

Commentaires

Le nom de la balise est cancel

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Référence de la transaction à annuler. Facultatif vous utilisez le s10TransactionReference

s10TransactionReference

Obligatoire

Référence de la transaction à annuler. Facultatif vous utilisez le transactionReference

amount

Obligatoire

currencyCode

Obligatoire

operationOrigin

Facultatif

  • Exemple de requête cancel
<cancel recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <transactionReference>SIM201206810160</transactionReference>
 <amount>1000</amount>
 <currencyCode>978</currencyCode>
 <operationOrigin>operationOrigin</operationOrigin>
</cancel>
Format de la réponse à la requête cancel

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs

Commentaires

Le nom de la balise est cancel

Nom de la fonction

operationDateTime

responseCode

newStatus

newAmount

officeBatchResponseCode

  • Exemple de réponse à une requête cancel
<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>

Fonction «credit» du service «office»

Cette fonction vous permet de créditer le compte d’un client sans transaction d’origine référencée. Il est donc nécessaire de détenir les informations du moyen de paiement de votre client ou le token associé.

Info.png Remarques

Cette fonction se nomme creditHolder si vous utilisez Mercanet.

Format de la requête credit

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Description

Le nom de la balise est credit

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Facultatif si vous utilisez le S10TransactionReference

s10TransactionReference

Obligatoire

Facultatif si vous utilisez le transactionReference. Voir paragraphe Container

amount

Obligatoire

cardEffectiveDate

Facultatif

cardExpiryDate

Obligatoire

cardNumber

Obligatoire

cardCSCValue

Facultatif

cardSeqNumber

Facultatif

currencyCode

Obligatoire

customerEmail

Facultatif

customerId

Facultatif

customerIpAddress

Facultatif

orderChannel

Facultatif

orderId

Facultatif

paymentMeanBrand

Facultatif

returnContext

Facultatif

transactionOrigin

Facultatif

panType

Facultatif

statementReference

Facultatif

  • Exemple de requête credit
<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@BNP Paribas.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>
</credit>
Format de la réponse à la requête credit

La réponse contient certains champs de la requête (à l'exception des champs de carte) ainsi que les champs suivants:

Champs

Description

Le nom de la balise est credit

Nom de la fonction

responseCode

acquirerResponseCode

authorisationId

maskedPan

newStatus

operationDateTime

officeBatchResponseCode

transactionPlatform

Usage futur (systématiquement valorisé à ‘PROD’ pour le moment)

  • Exemple de réponse à une requête credit :
<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>

Fonction «walletOrder» du service «office»

Cette fonction vous permet d’effectuer des paiements en utilisant les informations contenues dans le Wallet de vos clients.

Format de la requête walletOrder

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes

Champs

Présence

Commentaires

Le nom de la balise est walletOrder

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Facultatif si vous utilisez le S10TransactionReference

s10TransactionReference

Obligatoire

Facultatif si vous utilisez le transactionReference. Voir paragraphe Container

amount

Obligatoire

captureDay

Facultatif

captureMode

Facultatif

currencyCode

Obligatoire

customerEmail

Facultatif

customerId

Facultatif

customerIpAddress

Facultatif

merchantTransactionDateTime

Facultatif

orderChannel

Obligatoire

orderId

Facultatif

paymentMeanId

Obligatoire

returnContext

Facultatif

statementReference

Facultatif

merchantWalletId

Obligatoire

transactionOrigin

Facultatif

cardCSCValue

Facultatif

paymentPattern

Facultatif

fraudData

Facultatif

Voir paragraphe Container

orderContext

Facultatif

Voir paragraphe Container

travelContext

Facultatif

Voir paragraphe Container

deliveryContact

Facultatif

Voir paragraphe Container

deliveryAddress

Facultatif

Voir paragraphe Container

deliveryData

Facultatif

Voir paragraphe Container

holderContact

Facultatif

Voir paragraphe Container

billingContact

Facultatif

Voir paragraphe Container

billingAddress

Facultatif

Voir paragraphe Container

authenticationData

Facultatif

Voir paragraphe Container

holderAddress

Facultatif

Voir paragraphe Container

shoppingCartDetail

Facultatif

Voir paragraphe Container

  • Exemple de requête walletOrder au format XML :
<walletOrder recordSequence="1">
 <amount>1000</amount>
 <captureDay>0</captureDay>
 <captureMode>VALIDATION</captureMode>
 <currencyCode>978</currencyCode>
 <customerEmail>test@BNP Paribas.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 de la réponse à la requête walletOrder

La réponse contient tous les champs de la requête excepté cardCSCValue ainsi que les champs suivants :

Champs

Commentaires

Le nom de la balise est walletOrder

Nom de la fonction

acquirerResponseCode

authorisationId

complementaryCode

complementaryInfo

guaranteeIndicator

holderAuthentRelegation

holderAuthentStatus

maskedPan

officeBatchResponseCode

responseCode

transactionDateTime

tokenPan

cardData

Voir paragraphe Container

preAuthorisationProfile

preAuthorisationProfileValue

preAuthorisationRuleResultList

transactionPlatform

cardCSCResultCode

avsPostcodeResponseCode

avsAddressResponseCode

authorMessageReference

Usage future (MPADS)

authorisationTypeLabel

Usage future (MPADS)

  • Exemple de réponse à une requête walletOrder:
<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>

Fonction «walletCredit» du service «office»

Cette fonction vous permet de créditer vos clients via leur wallet sans transaction préalable.

Format de la requête walletCredit

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Description

Le nom de la balise est walletCredit

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Facultatif si vous utilisez le S10TransactionReference.

s10TransactionReference

Obligatoire

Facultatif si vous utilisez le transactionReference. Voir paragraphe Container

amount

Obligatoire

merchantWalletId

Obligatoire

paymentMeanId

Obligatoire

currencyCode

Obligatoire

customerEmail

Facultatif

customerId

Facultatif

customerIpAddress

Facultatif

orderChannel

Facultatif

orderId

Facultatif

returnContext

Facultatif

transactionOrigin

Facultatif

statementReference

Facultatif

  • Exemple de requête walletCredit
<walletCredit recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <transactionReference>SIM201206810160</transactionReference>
 <amount>124</amount>
 <merchantWalletId>A01</ merchantWalletId >
 <paymentMeanId>2</paymentMeanId>
 <currencyCode>978</currencyCode>
 <customerEmail>test@BNP Paribas.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 de la réponse à la requête walletCredit

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs

Description

Le nom de la balise est walletCredit.

Nom de la fonction

responseCode

acquirerResponseCode

authorisationId

maskedPan

paymentMeanBrand

newStatus

operationDateTime

officeBatchResponseCode

transactionPlatform

Usage futur (systématiquement valorisé à ‘PROD’ pour le moment)


  • Exemple de réponse à une requête walletCredit
<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>

Fonction «recycle» du service «office»

Cette fonction permet de créer une nouvelle transaction à partir des données bancaires d'une transaction précédente. Cette opération est similaire à la duplication, mais avec des limites. Elle vous permet de recycler une transaction expirée ou refusée ou capturée partiellement (le montant n'a pas été entièrement réglé) sans dépasser le montant de la transaction initiale.

Format de la requête recycle

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est recycle.

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Facultatif si vous utilisez le S10TransactionReference

s10TransactionReference

Obligatoire

Facultatif si vous utilisez le transactionReference. Voir paragraphe Container

amount

Obligatoire

currencyCode

Obligatoire

captureDay

Facultatif

captureMode

Facultatif

fromTransactionReference

Obligatoire

Référence de la transaction à recycler. Facultatif si vous utilisez le S10FromTransactionReference. Voir paragraphe Container.

s10FromTransactionReference

Obligatoire

Référence de la transaction à recycler. Facultatif si vous utilisez le fromTransactionReference. Voir paragraphe Container.

merchantTransactionDateTime

Facultatif

transactionOrigin

Facultatif

statementReference

Facultatif

lastRecoveryIndicator

Facultatif

orderContext

Facultatif

Voir paragraphe Container

travelContext

Facultatif

Voir paragraphe Container

deliveryContact

Facultatif

Voir paragraphe Container

deliveryAddress

Facultatif

Voir paragraphe Container

deliveryData

Facultatif

Voir paragraphe Container

holderContact

Facultatif

Voir paragraphe Container

billingContact

Facultatif

Voir paragraphe Container

billingAddress

Facultatif

Voir paragraphe Container

  • Exemple de requête recycle
<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 de la réponse à la requête recycle

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs

Description

Le nom de la balise est recycle

Nom de la fonction

acquirerResponseCode

authorisationId

complementaryCode

complementaryInfo

maskedPan

officeBatchResponseCode

panExpiryDate

paymentMeanBrand

responseCode

scoreColor

scoreInfo

scoreProfile

scoreThreshold

scoreValue

transactionDateTime

cardData

Voir paragraphe Container

preAuthorisationProfile

preAuthorisationProfileValue

preAuthorisationRuleResultList

Voir paragraphe Container

preAuthenticationColor

preAuthenticationInfo

preAuthenticationProfile

preAuthenticationProfileValue

preAuthenticationThreshold

preAuthenticationValue

preAuthenticationRuleResultList

Voir paragraphe Container

paymentMeanBrandSelectionStatus

transactionPlatform

Usage futur (systématiquement valorisé à ‘PROD’ pour le moment)

Exemple de réponse à une requête recycle

<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>

Fonction «directDebitOrder» du service «office»

Cette fonction permet au commerçant possédant les informations bancaires d'un client d'effectuer des paiements de type prélèvement (SDD et ELV).

Format de la requête directDebitOrder

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes

Champs

Présence

Commentaires

Le nom de la balise est directDebitOrder

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Référence de la transaction. Facultatif si vous utilisez le S10TransactionReference.

s10TransactionReference

Obligatoire

Référence de la transaction. Facultatif si vous utilisez le transactionReference. Voir paragraphe Container.

amount

Obligatoire

captureDay

Facultatif

captureMode

Facultatif

currencyCode

Obligatoire

customerId

Facultatif

customerIpAddress

Facultatif

mandateId

Obligatoire

merchantTransactionDateTime

Facultatif

paymentPattern

Facultatif

orderChannel

Obligatoire

orderId

Facultatif

returnContext

Facultatif

statementReference

Facultatif

transactionOrigin

Facultatif

valueDate

Facultatif

holderContact

Facultatif

Voir paragraphe Container

holderAddress

Facultatif

Voir paragraphe Container

instalmentData

Facultatif

Voir paragraphe Container

fraudData

Facultatif

Voir paragraphe Container

riskManagementCustomDataList

Facultatif

Voir paragraphe Container

shoppingCartDetail

Facultatif

Voir paragraphe Container

  • Exemple de requête directDebitOrder
<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 de la réponse à la requête directDebitOrder

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs

Commentaires

Le nom de la balise est directDebitOrder

Nom de la fonction

acquirerResponseCode

authorisationId

captureLimitDate

creditorId

guaranteeIndicator

holderAuthentRelegation

holderAuthentStatus

maskedPan

officeBatchResponseCode

responseCode

transactionActors

transactionDateTime

preAuthorisationProfile

preAuthorisationProfileValue

preAuthorisationRuleResultList

Voir paragraphe Container

transactionPlatform

Usage futur (systématiquement valorisé à ‘PROD’ pour le moment)

  • Exemple de réponse à une requête directDebitOrder
<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>
</directDebitOrder>

Fonction «acceptChallenge» du service «office»

Cette fonction vous permet de vérifier et d’accepter le risque de fraude sur des transactions ayant un score de fraude orange. Une fois la transaction acceptée, elle reprend son cycle de vie normal.

Format de la requête acceptChallenge

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est acceptChallenge

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Référence de la transaction. Facultatif si vous utilisez le S10TransactionReference.

s10TransactionReference

Obligatoire

Référence de la transaction. Facultatif si vous utilisez le transactionReference. Voir paragraphe Container.

validationIndicator

Facultatif

operationOrigin

Facultatif

comment

Facultatif

  • Exemple de requête acceptChallenge
<acceptChallenge recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <transactionReference>SIM201206810160</transactionReference>
 <validationIndicator>Y</validationIndicator>
 <operationOrigin>batch</operationOrigin>
 <comment>client fidelity</comment>
</acceptChallenge>
Format de la réponse à la requête acceptChallenge

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs

Description

Le nom de la balise est acceptChallenge

Nom de la fonction

acquirerResponseCode

authorisationId

captureLimitDate

newStatus

officeBatchResponseCode

operationDateTime

responseCode

Exemple de réponse à une requête acceptChallenge

<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>

Fonction «refuseChallenge» du service «office»

Cette fonction vous permet de vérifier et de refuser le risque de fraude sur des transactions ayant un score de fraude orange. Dans le cas d’un refus, la transaction n’est pas envoyée en paiement.

Format de la requête refuseChallenge

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est refuseChallenge

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

transactionReference

Obligatoire

Référence de la transaction. Facultatif si vous utilisez le S10TransactionReference.

s10TransactionReference

Obligatoire

Référence de la transaction. Facultatif si vous utilisez le transactionReference. Voir paragraphe Container.

operationOrigin

Facultatif

comment

Facultatif

  • Exemple de requête refuseChallenge
<refuseChallenge recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <transactionReference>SIM201206810160</transactionReference>
 <operationOrigin>batch</operationOrigin>
 <comment>score warning</comment>
</refuseChallenge>
Format de la réponse à la requête refuseChallenge

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs

Description

Le nom de la balise est refuseChallenge

Nom de la fonction

newStatus

officeBatchResponseCode

operationDateTime

responseCode

  • Exemple de réponse à une requête refuseChallenge
<refuseChallenge recordSequence="1">
 …
 <newStatus>REFUSED</newStatus>
 <responseCode>05</responseCode>
 <operationDateTime>2015-02-12T09:30:47+02:00</operationDateTime>
 <officeBatchResponseCode>00</officeBatchResponseCode>
</refuseChallenge>

Fonction «panToToken» du service «token»

Cette opération permet de tokéniser un numéro de carte.

Format de la requête panToToken

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est panToToken

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

userId

Obligatoire

pan

Obligatoire

  • Exemple de requête pantoToken
<panToToken recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <userid>idofuser</userid>
 <pan>4975497549754975</pan>
</panToToken>
Format de la réponse à la requête panToToken

La réponse contient les champs suivants :

Champs

Commentaires

Le nom de la balise est panToToken

Nom de la fonction

recordSequence

N6 – attribute qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

responseCode

tokenPan

officeBatchResponseCode

  • Exemple de réponse à une requête pantoToken
<panToToken recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <responseCode>00</responseCode>
 <tokenPan>497899AcDEF57631</tokenPan>
 <officeBatchResponseCode>00</officeBatchResponseCode>
</panToToken>

Fonction «transactionToToken» du service «token»

Cette opération permet de transformer le PAN d’une transaction existante en token.

Format de la requête transactionToToken

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est transactionToToken.

Obligatoire

Nom de l'opération

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

fromMerchantId

Facultatif

Identifiant du commerçant de la transaction d’origine. Obligatoire si différent du merchantId

fromTransactionReference

Facultatif

Obligatoire si s10FromTransactionReference non renseigné

s10FromTransactionReference

Facultatif

Voir duplicate Obligatoire si fromTransactionReference non renseigné

merchantExternalId

Facultatif

Exemple de requête transactionToToken

<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 de la réponse à la requête transactionToToken

La réponse contient les champs suivants :

Champs

Commentaires

Le nom de la balise est transactionToToken.

Nom de l'opération

recordSequence

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

fromMerchantId

fromTransactionReference

s10FromTransactionReference

Voir duplicate

merchantExternalId

responseCode

tokenPan

paymentMeanBrand

cardExpiryDate

officeBatchResponseCode

Exemple de réponse à une requête transactiontoToken

<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>

Fonction «addToFraudList» du service «fraud»

Cette opération permet d'ajouter un numéro de carte, de token ou de transaction (via le couple transactionIid/transactionDate ou transactionReference) à différents types de liste fraude.

Format de la requête addToFraudList

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est addToFraudList

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

fraudListReasonCode

Facultatif

fraudListType

Obligatoire

fraudListLevel

Obligatoire

fraudListElementType

Obligatoire

fraudListElementValue

Obligatoire

  • Exemple de requête addToFraudList
<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 de la réponse à la requête addToFraudList

La réponse contient les champs suivants :

Champs

Commentaires

Le nom de la balise est addToFraudList

Nom de la fonction

merchantId

fraudListType

fraudListLevel

fraudListElementType

fraudListElementValue

officeBatchResponseCode

responseCode

  • Exemple de réponse à une requête addToFraudList
<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>

Fonction «removeFromFraudList» du service «fraud»

Cette opération permet de supprimer un numéro de carte, de token, de transaction (via le couple transactionIid/transactionDate ou transactionReference) de différents types de liste fraude.

Format de la requête removeFromFraudList

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est removeFromFraudList

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

fraudListType

Obligatoire

fraudListLevel

Obligatoire

fraudListElementType

Obligatoire

fraudListElementValue

Obligatoire

  • Exemple de requête removeFromFraudList
<removeFromFraudList recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <fraudListType>CARD_LIST</fraudListType>
 <fraudListLevel>BLACK</fraudListLevel>
 <fraudListElementType>PAN</fraudListElementType>
 <fraudListElementValue>4975497549754975</fraudListElementValue>
</removeFromFraudList>
Format de la réponse à la requête removeFromFraudList

La réponse contient les champs suivants :

Champs

Commentaires

Le nom de la balise est removeFromFraudList

Nom de la fonction

merchantId

fraudListType

fraudListLevel

fraudListElementType

fraudListElementValue

responseCode

officeBatchResponseCode

  • Exemple de réponse à une requête removeFromFraudList
<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>

Fonction«addCard» du service «wallet»

Cette opération permet d'ajouter une carte à un wallet. Ce dernier est créé s'il n'existe pas.

Format de la requête addCard

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est addCard

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

merchantWalletId

Obligatoire

paymentMeanAlias

Facultatif

paymentMeanBrand

Facultatif

cardExpiryDate

Obligatoire

cardNumber

Obligatoire

  • Exemple de requête addCard
<addCard recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <merchantWalletId>TESTCLIENT</merchantWalletId>
 <paymentMeanAlias>my VISA</paymentMeanAlias>
 <paymentMeanbrand>VISA</paymentMeanBrand>
 <cardExpiryDate>201910</cardExpiryDate>
 <cardNumber>4975497549754975</cardNumber>
</addCard>
Format de la réponse à la requête addCard

La réponse contient les champs suivants :

Champs

Commentaires

Le nom de la balise est addCard.

Nom de la fonction

merchantId

merchantWalletId

paymentMeanAlias

cardExpiryDate

maskedPan

paymentMeanId

officeBatchResponseCode

responseCode

walletCreationDateTime

  • Exemple de réponse au format XML
<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 >

Fonction «addDirectDebit» du service «wallet»

Cette opération permet d'ajouter un mandat à un wallet.

Format de la requête addDirectDebit

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est addDirectDebit

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

customerAccount

Facultatif

customerBankCode

Facultatif

mandateId

Obligatoire

merchantId

Obligatoire

merchantWalletId

Obligatoire

paymentMeanAlias

Facultatif

paymentMeanBrand

Facultatif

transactionActors

Facultatif

Tableau 1 - Champs de la requête addDirectDebit

  • Exemple de requête addDirectDebit
<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 de la réponse à la requête addDirectDebit

La réponse contient les champs suivants :

Champs

Commentaires

Le nom de la balise est addDirectDebit

Nom de la fonction

merchantId

merchantWalletId

paymentMeanAlias

paymentMeanBrand

maskedPan

paymentMeanId

officeBatchResponseCode

responseCode

transactionActors

walletCreationDateTime

  • Exemple de réponse à une requête addDirectDebit
<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 >

Fonction «deletePaymentMean» du service «wallet»

Cette opération permet de supprimer un moyen de paiement d'un wallet.

Format de la requête deletePaymentMean

Tous les enregistrements de la partie "body" doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est deletePaymentMean

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

merchantWalletId

Obligatoire

paymentMeanId

Obligatoire

  • Exemple de requête deletePaymentMean
<deletePaymentMean recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <merchantWalletId>TESTCLIENT</merchantWalletId>
 <paymentMeanId>4</paymentMeanId>
</deletePaymentMean>
Format de la réponse à la requête deletePaymentMean

La réponse contient les champs suivants :

Champs

Commentaires

Le nom de la balise est deletePaymentMean

Nom de la fonction

merchantId

merchantWalletId

paymentMeanId

officeBatchResponseCode

responseCode

walletActionDateTime

  • Exemple de réponse à une requête deletePaymentMean
<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>

Fonction «updatePaymentMean» du service «wallet»

Cette opération permet de mettre à jour l'alias d'un moyen de paiement dans un wallet.

Format de la requête updatePaymentMean

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est updatePaymentMean

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

merchantWalletId

Obligatoire

paymentMeanId

Obligatoire

paymentMeanAlias

Facultatif

  • Exemple de requête updatePaymentMean
<updatePaymentMean recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <merchantWalletId>TESTCLIENT</merchantWalletId>
 <paymentMeanId>4</paymentMeanId>
 <paymentMeanAlias>my SDD</paymentMeanAlias>
</updatePaymentMean>
Format de la réponse à la requête updatePaymentMean

La réponse contient les champs suivants :

Champs

Commentaires

Le nom de la balise est updatePaymentMean

Nom de la fonction

merchantId

merchantWalletId

paymentMeanAlias

paymentMeanId

officeBatchResponseCode

responseCode

walletActionDateTime

  • Exemple de réponse à une requête updatePaymentMean :
<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>

Fonction «signOff» du service «wallet»

Cette opération permet de supprimer un wallet et tous les moyens de paiement qu'il contient.

Format de la requête signOff

Tous les enregistrements de la partie «body» doivent contenir les informations suivantes :

Champs

Présence

Commentaires

Le nom de la balise est signOff

Obligatoire

Nom de la fonction

recordSequence

Obligatoire

N6 – attribut qui indique le numéro de ligne, ce qui permet au commerçant de rapprocher la réponse de la requête.

merchantId

Obligatoire

merchantWalletId

Obligatoire

  • Exemple de requête signOff
<signOff recordSequence="1">
 <merchantId>012323232323231</merchantId>
 <merchantWalletId>TESTCLIENT</merchantWalletId>
</signOff>
Format de la réponse à la requête signOff

La réponse contient les champs suivants :

Champs

Commentaires

Le nom de la balise est signOff

Nom de la fonction

merchantId

merchantWalletId

officeBatchResponseCode

responseCode

walletActionDateTime

  • Exemple de réponse à une requête signOff
<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>

Containers

Les containers regroupent fonctionnellement les données. Ils peuvent contenir des listes, dans ce cas, les éléments des listes doivent être fournis de la manière suivante: <elementList> <elementName>value1</elementName> <elementName>value2</elementName> </elementList>

Tous ces champs sont facultatifs.

s10TransactionReference

Champs

Commentaires

Le nom de la balise est s10TransactionReference

Nom de l'élément

s10TransactionId

s10TransactionIdDate

  • Exemple de requête refund/s10TransactionReference
<refund … >
…
 <s10TransactionReference>
 <s10TransactionId>100206</s10TransactionId>
 <s10TransactionIdDate>20150203</s10TransactionIdDate>
 </s10TransactionReference>
…
</refund>
s10FromTransactionReference

Champs

Commentaires

Le nom de la balise est s10FromTransactionReference

Nom de l'élément

s10FromTransactionId

s10FromTransactionIdDate

  • Exemple de requête duplicate/s10FromTransactionReference
<duplicate …>
…
 <s10FromTransactionReference>
 <s10FromTransactionId>100206</s10FromTransactionId>
 <s10FromTransactionIdDate>20150203</s10FromTransactionIdDate>
 </s10FromTransactionReference>
…
</duplicate>
paymentMeanData

Champs

Commentaires

Le nom de la balise est paymentMeanData

Nom de l'élément

accord

cofinoga

Donnée supplémentaire pour le moyen de paiement accord

Champs

Commentaires

Le nom de la balise est accord

Nom de l'élément

settlementMode

Mode de paiement pour Accord ; voir guide d’implémentation du moyen de paiement

  • Exemple de requête cardOrder/paymentMeanData pour accord
<cardOrder …>
…
 <paymentMeanData>
 <accord>
 <settlementMode>WEB3X</settlementMode>
 </accord>
 </paymentMeanData>
…
</cardOrder>


Champs

Commentaires

Le nom de la balise est accord

Nom de l'élément

settlementMode

Mode de paiement pour Accord ; voir guide d’implémentation du moyen de paiement

additionalAuthorisationNumber

  • Exemple de réponse à une requête cardOrder/paymentMeanData
<cardOrder …>
…
 <paymentMeanData>
 <accord>
 <settlementMode>WEB3X</settlementMode>
 <additionalAuthorisationNumber>123456</additionalAuthorisationNumber>
 </accord>
 </paymentMeanData>
…
</cardOrder>


Donnée supplémentaire pour le moyen de paiement cofinoga

Champs

Commentaires

Le nom de la balise est cofinoga

Nom de l'élément

settlementMode

Mode de paiement pour Cofinoga ; voir guide d’implémentation du moyen de paiement

  • Exemple de requête cardOrder/paymentMeanData pour cofinoga
<cardOrder …>
…
 <paymentMeanData>
 <cofinoga>
 <settlementMode>MR_COMP</settlementMode>
 </cofinoga>
 </paymentMeanData>
…
</cardOrder>
cardData

Champs

Commentaires

Le nom de la balise est cardData

Nom de l'élément

cardProductCode

cardProductName

cardProductProfile

cardScheme

issuerCode

issuerCountryCode

cardProductUsageLabel

Usage future (MPADS)

  • Exemple de réponse à une requête duplicate/cardData
<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

Info.png Remarques

La valeur du champ number et le nombre d'éléments dans les listes d’éléments doivent être identiques.


Champs

Commentaires

Le nom de la balise est instalmentData

Nom de l'élément

number

datesList

transactionReferencesList

amountsList

s10TransactionIdsList

  • Exemple de requête directDebitOrder/instalmentData
<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

Champs

Commentaires

Le nom de la balise est shoppingCartDetail

Nom de l'élément

shoppingCartTotalAmount

shoppingCartTotalQuantity

shoppingCartTotalTaxAmount

mainProduct

ShoppingCartItemList

Champs

Commentaires

Le nom de la balise est shoppingCartItemList

Nom de l'élément

shoppingCartItem

Champs

Commentaires

Le nom de la balise est shoppingCartItem

Nom de l'élément

productName

productDescription

productCode

productSKU

productUnitAmount

productQuantity

productTaxRate

productUnitTaxAmount

productCategory

  • Exemple de requête cardOrder/riskManagementCustomDataList
<cardOrder …>
…
 <riskManagementCustomDataList>
 <riskManagementCustomData>
 <riskManagementCustomSequence>1</riskManagementCustomSequence>
 <riskManagementCustomValue>1</riskManagementCustomValue>
 </riskManagementCustomData>
 </riskManagementCustomDataList>
…
</cardOrder>
orderContext

Champs

Commentaires

Le nom de la balise est orderContext

Nom de l'élément

customerHostName

customerBrowserType

customerANI

customerANIInformationIdentifier

  • Exemple de requête duplicate/orderContext
<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

Champs

Commentaires

Le nom de la balise est travelContext

Nom de l'élément

departureDate

passengerName

originAirport

numberOfRoutingCities

routingCityList

numberOfAirlineCarriers

airlineCarrierList

fareBasis

numberOfPassengers

destinationAirport

reservationCode

Concernant les deux listes routingCityList et airlineCarrierList, leurs éléments doivent être fournis de la manière suivante:

<routingCityList>
<routingCity>value1</routingCity> 
<routingCity>value2</routingCity>
… 
</ routingCityList>
  • Exemple de requête duplicate/travelContext
<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

Champs

Commentaires

Le nom de la balise est deliveryData

Nom de l'élément

method

  • Exemple de requête duplicate/deliveryData
<duplicate …>
…
 <deliveryData>
 <method>A2</method>
 </deliveryData>
…
</duplicate>
deliveryContact

Champs

Commentaires

Le nom de la balise est deliveryContact

Nom de l'élément

firstName

lastName

phone

mobile

  • Exemple de requête duplicate/deliveryContact
<duplicate …>
…
 <deliveryContact>
 <firstName>Pierre</firstName>
 <lastName>Dupont</lastName>
 <mobile>06666666</email>
 <phone>0521360011</phone>
 </deliveryContact>
…
</duplicate>
deliveryAddress

Champs

Commentaires

Le nom de la balise est deliveryAddress

Nom de l'élément

additionalAddress1

additionalAddress2

additionalAddress3

country

zipCode

  • Exemple de requête duplicate/deliveryAddress
<duplicate …>
…
 <deliveryAddress>
 <additionalAddress1>80 Quai Voltaire, Bezons</additionalAddress1>
 <country>FRA</country>
 <zipCode>95870</zipCode>
 </deliveryAddress>
…
</duplicate>
holderData

Champs

Commentaires

Le nom de la balise est holderData

Nom de l'élément

birthDate

Exemple de requête cardOrder/holderData

<cardOrder …>
…
 <holderData>
 <birthdate>19450902</birthdate>
 </holderData>
…
</cardOrder>
holderContact

Champs

Commentaires

Le nom de la balise est holderContact

Nom de l'élément

firstName

lastName

gender

Non utilisé pour la fonction duplicate

phone

Non utilisé pour la fonction duplicate

email

Non utilisé pour la fonction duplicate

  • Exemple de requête directDebitOrder/holderContact
<directDebitOrder …>
…
 <holderContact>
 <firstName>Pierre</firstName>
 <lastName>Dupont</lastName>
 <gender>M</gender>
 <phone>0123456789</phone>
 <email>john.doe@mail.com</email>
 </holderContact>
…
</directDebitOrder>
holderAddress

Champs

Commentaires

Le nom de la balise est holderAddress

Nom de l'élément

additionalAddress1

additionalAddress2

additionalAddress3

city

country

streetName

streetNumber

postbox

state

zipCode

  • Exemple de requête directDebitOrder/holderAddress
<directDebitOrder …>
…
 <holderAddress>
 <city>Bezons</city>
 <country>FRA</country>
 <streetName>Quai Voltaire</streetName>
 <streetNumber>80</streetNumber>
 <zipCode>95870</zipCode>
 </holderAddress>
…
</directDebitOrder>
billingContact

Champs

Commentaires

Le nom de la balise est billingContact

Nom de l'élément

phone

mobile

  • Exemple de requête duplicate/billingContact
<duplicate …>
…
 <billingContact>
 <phone>0521360011</phone>
 <mobile>06666666</email>
 </billingContact>
…
</duplicate>
billingAddress

Champs

Commentaires

Le nom de la balise est billingAddress

Nom de l'élément

additionalAddress1

additionalAddress2

additionalAddress3

zipCode

  • Exemple de requête duplicate/billingAddress
<duplicate …>
…
 <billingAddress>
 <additionalAddress1>80 Quai Voltaire, Bezons</additionalAddress1>
 <zipCode>95870</zipCode>
 </billingAddress>
…
</duplicate>
fraudData

Info.png Remarques

Les éléments «autorisés» d'un type particulier ne peuvent être fournis en même temps que les éléments «interdits» du même type. Par exemple, allowedCardArea et deniedCardArea sont incompatibles.


Champs

Commentaires

Le nom de la balise est fraudData

Nom de l'élément

bypass3DS

bypassCtrlList

bypassInfoList

allowedCardCountryList

deniedCardCountryList

allowedCardArea

Pour usage futur/non mis en œuvre

deniedCardArea

Pour usage futur/non mis en œuvre

allowedIpCountryList

deniedIpCountryList

allowedIpArea

Pour usage futur/non mis en œuvre

deniedIpArea

Pour usage futur/non mis en œuvre

riskManagementDynamicSettingList

  • Exemple de requête duplicate/fraudData
<duplicate …>
…
 <fraudData>
 <deniedIpCountryList>
 <country>ATG</country>
 <country>FRA</country>
 <country>DNK</country>
 </deniedIpCountryList>
 </fraudData>
…
</duplicate>
riskManagementDynamicSettingList

Champs

Commentaires

Le nom de la balise est riskManagementDynamicSettingList

Nom de l'élément

riskManagementDynamicSetting

Champs

Commentaires

Le nom de la balise est RiskManagementDynamicSetting

Nom de l'élément

riskManagementDynamicParam

riskManagementDynamicValue

  • Exemple de requête fraudData/riskManagementDynamicSettingList
<duplicate>
…
 <riskManagementDynamicSettingList>
 <riskManagementDynamicSetting>
 <riskManagementDynamicParam>AllowedIpCountryList</riskManagementDynamicParam>
 <riskManagementDynamicValue>FRA,BEL</riskManagementDynamicValue>
 </riskManagementDynamicSetting>
 <riskManagementDynamicSetting>
 <riskManagementDynamicParam>DeniedIpCountryList</riskManagementDynamicParam>
 <riskManagementDynamicValue>DEU</riskManagementDynamicValue>
 </riskManagementDynamicSetting>
 </riskManagementDynamicSettingList>
</fraudData> 
</duplicate>
riskManagementCustomDataList

Champs

Commentaires

Le nom de la balise est riskManagementCustomDataList

Nom de l'élément

riskManagementCustomData

Champs

Commentaires

Le nom de la balise est riskManagementCustomData

Nom de l'élément

riskManagementCustomSequence

riskManagementCustomValue

  • Exemple de requête cardOrder/riskManagementCustomDataList
<cardOrder …>
…
 <riskManagementCustomDataList>
 <riskManagementCustomData>
 <riskManagementCustomSequence>1</riskManagementCustomSequence>
 <riskManagementCustomValue>1</riskManagementCustomValue>
 </riskManagementCustomData >
 </riskManagementCustomDataList>
…
</cardOrder>
preAuthorisationRuleResultList

Champs

Commentaires

Le nom de la balise est preAuthorisationRuleResultList

Nom de l’élement

ruleResult

  • Exemple de réponse du champ preAuthorisationRuleResultList
<preAuthorisationRuleResultList>
<ruleResult>
…
</ruleResult>
<ruleResult>
…
</ruleResult>
</preAuthorisationRuleResultList>

Détail de l’élément ruleResult

Champs

Commentaires

Le nom de la balise est ruleResult

Nom de l’élement

ruleCode

ruleType

ruleWeight

ruleSetting

ruleResultIndicator

ruleDetailedInfo

  • Exemple de l’élément ruleResult
<ruleResult>
<ruleCode>EC</ruleCode>
<ruleType>NG</ruleType>
<ruleWeight>D</ruleWeight>
<ruleSetting>N</ruleSetting>
<ruleResultIndicator>U</ruleResultIndicator>
<ruleDetailedInfo>MAX=2:2</ruleDetailedInf>
</ruleResult>
preAuthenticationRuleResultList

Champs

Commentaires

Le nom de la balise est preAuthenticationRuleResultList

Nom de l’élement

ruleResult

Please see ruleResult in duplicate response 0

  • Exemple de réponse du champ preAuthenticationRuleResultList
<preAuthenticationRuleResultList>
<ruleResult>
…
</ruleResult>
<ruleResult>
…
</ruleResult>
</preAuthenticationRuleResultList>

Voir ci dessus le Détail de l’élément ruleResult

authenticationData

Champs

Commentaires

Le nom de la balise est authenticationData

Nom de l'élément

CardAuthPolicy

Détails de l’élément CardAuthPolicy

Champs

Commentaires

Le nom de la balise est CardAuthPolicy

Nom de l'élément

checkAVS

ignoreCSCCheckResult

ignorePostcodeCheckResult

ignoreAddressCheckResult

automaticReverse


  • Exemple de requête duplicate / authenticationData
<duplicate …>
…
 <authenticationData>
 <CardAuthPolicy>
 <checkAVS>Y</checkAVS>
 <ignoreCSCCheckResult>N</ignoreCSCCheckResult>
 <ignorePostcodeCheckResult>N</ignorePostcodeCheckResult>
 <ignoreAddressCheckResult>N</ignoreAddressCheckResult>
 <automaticReverse>Y</automaticReverse>
 </CardAuthPolicy>
 </authenticationData>
…
</duplicate>

Analyser les erreurs lors de la vérification du fichier

Il y a plusieurs niveaux de codes réponses lors du traitement d'un fichier par Mercanet Batch. Plusieurs vérifications globales sont effectuées avant que le fichier ne soit traité. Si l'une de ces vérifications échoue, le fichier est entièrement refusé (processingResponseCode n'est égal ni à 00 ni à 01). Le fichier de réponses retourné contient le code de résultat global du traitement dans le champ processingResponseCode présent dans l'en-tête du fichier.

Codes de resultat global du traitement

Code

Signification

00

Fichier traité correctement. Le fichier contient la liste des opérations.

01

Fichier traité correctement. Une opération a été associée à un commerçant qui n'est pas lié à l'identifiant de remettant. Le champ officeBatchResponseCode sera valorisé à 80 par l'opération.

02

Fichier déjà traité. Le numéro de séquence du fichier est inférieur à ce qu’il devrait être. Le numéro correct est envoyé dans le message qui décrit l'erreur.

03

Rupture de séquence dans le numéro de séquence du fichier. Le numéro de séquence du fichier est supérieur à ce qu’il devrait être. Le numéro correct est envoyé dans le message qui décrit l'erreur.

04

Problème technique. Problème interne

05

Fichier trop grand

06

Le nombre d'opérations dépasse la quantité maximale autorisée. Le nombre maximal d'opérations a été atteint.

07

Le nombre d'opérations compté est différent du nombre indiqué dans le champ nbRecord.

08

Opération en double

09

Enregistrement invalide

10

Format de fichier invalide. Le format du fichier est invalide (la description de l'erreur sera retournée dans la balise «error details».).

11

Remettant invalide. Le remettant déclaré dans l'en-tête est invalide.

Autres codes

Fichier invalide (ces codes concernent les versions plus anciennes de Mercanet Batch.)


Code réponse

Cause

Solution

Différent de 00 et 01

Redémarrage du traitement

Le fichier de requêtes doit être renvoyé en intégralité avec le même numéro de séquence de fichier.

03

Rupture de numéro de séquence du fichier

Le fichier a été complètement refusé. Si nécessaire, le numéro de séquence doit être corrigé et le fichier renvoyé.

04

Erreur technique

Une opération a provoqué une erreur technique. Le traitement du fichier n'a pas été interrompu. Dans ce cas, le traitement peut être très rapide, car toutes les opérations avec le code 25 ou 90 seront refusées (champ responseCode). Pour l'heure, BNP Paribas n'a pas fourni de mécanisme pour différer le traitement dans l'attente qu'une connexion soit de nouveau établie.

Analyser les erreurs causées par une opération

Chaque opération est considérée comme indépendante. Chaque opération a son propre code de réponse stocké (champ officeBatchResponseCode). Le code indique le champ qui est à l'origine du problème. Si une opération échoue, le traitement n'est pas interrompu. L'opération est refusée avec le code-réponse Mercanet classique (champ responseCode).

Codes

Champs en question

00

Aucun (tous les champs sont corrects.)

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

Commerçant non enregistré pour Mercanet Batch/non lié au remettant déclaré dans l'en-tête

Etape 3: Tester sur l’environnement de recette client

L’objectif est de valider que la structure du fichier et la syntaxe des requêtes sont correctes. Pour cette 1ère étape, vous n’avez pas besoin d’avoir un contrat d’acquisition car il n’y a pas de connexion vers l’acquéreur de paiement: les demandes d’autorisations carte sont simulées. Les transactions sont stockées dans le back office Mercanet et vous pouvez tester les opérations de caisse sur ces transactions.

Contactez l’assistance technique pour configurer une boutique sur l’environnement de recette et demander la mise en place d’un transfert de fichier entre votre site et Mercanet.

Etape 4: Valider le passage en production

Commencez par soumettre un fichier contenant un nombre limité d’opérations afin de valider le passage en production. Verifiez dans le fichier réponse que toutes les opérations se sont bien déroulées:

  • Surveillez le taux d’acceptation (nombre de responseCode 00/nombre total d’opérations).
  • Vérifiez la nature des refus non bancaires
    • Problème technique: responseCode 90, 97, 99
    • Fraude acquéreur : responseCode 34

Annexe

Vous trouverez ci-dessous les schémas XML correspondant à chaque service disponible dans Mercanet Batch.

XSD du service "office"

Fichier requête

<?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="force" />
        <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="1"/>
        <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: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="force">
    <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="1"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" 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="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: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="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 ref="s10TransactionReference" 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>

Fichier réponse

<?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="force" />
        <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="acquirerResponseIdentifier" 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="authorArchivingReference" 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: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" />
        
        <!-- 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="force">
    <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="1"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        
        <!-- RESPONSE -->
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newAmount" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" 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="authorArchivingReference" 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="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 ref="s10TransactionReference" 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>

XSD du service "token"

Fichier requête

<?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="panToToken"/>
        <xs:element ref="transactionToToken"/>
      </xs:choice>
    </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>

Fichier réponse

<?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>

XSD du service "fraud"

Fichier requête

<?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>
  
</xs:schema>

Fichier réponse

<?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>

XSD du service "wallet"

Fichier requête

<?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: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: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="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

</xs:schema>

Fichier réponse

<?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: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:schema>