Interface Batch

De Documentation Mercanet
Aller à : navigation, rechercher

Sommaire

Introduction

Mercanet Batch est une interface offline par échange de fichiers. Elle offre aux commerçants la possibilité d’adresser leurs opérations à Mercanet en mode d’échange de fichiers Batch.

Les opérations traitées dans Mercanet Batch sont les suivantes:

  • Gestion d’opérations de caisse:
    • Annulation (Cancel): annulation d’une transaction avant son envoi à la banque,
    • Création de paiement (CardOrder): vérifie la transaction avec une demande d’autorisation
    • Duplication (Duplicate): duplication d’une transaction préexistante tout en protégeant les données détaillées de la transaction initiale. Fonctionnalité disponible en fonction de l’offre Mercanet.
    • Remboursement (Refund): remboursement partiel ou total d’une transaction (après son envoi à la banque).
    • Validation (Validate) : validation de la transaction pour déclencher la transmission à la banque.
    • Paiement depuis un Wallet (WalletOrder) : crée une transaction en utilisant le portefeuille commerçant comme moyen de paiement.
  • Gestion des tokens
    • Tokenisation (PanToToken) : transforme une numéro de carte en token
  • Gestion liste grise
    • Ajout liste grise (AddToFraudList) : ajout d'un numéro de carte, de token, de transaction à la liste grise
    • Supression liste grise (RemoveFromFraudList) : supprime un numéro de carte, de token, de transaction de la liste grise
  • Gestion Wallet
    • Ajout de carte (AddCard) : ajout d'une carte à un portefeuille
    • Suppression moyen de paiement (DeletePaymentMean) : suppression d'un moyen de paiement d'un portefeuille
    • Mise à jour moyen de paiement (UpdatePaymentMean) : mise à jour de l'alias d'un moyen de paiement dans un portefeuille
    • Suppression d'un wallet (signOff) : efface un portefeuille avec tous les moyens de paiement qu'il contient.


Info.png A noter

· Tous les termes, acronymes, expressions spécifiques à la Mercanet Solution et son contexte sont définies dans le document: GLOSSAIRE · Tous les champs de ces opérations, sauf indication contraire, sont définis dans le DICTIONNAIRE DES DONNEES.

N’hésitez pas à vous y référer chaque fois que nécessaire.


Info.png Important

La réglementation PCI DSS interdisant le stockage du cryptogramme visuel, dans Mercanet Batch, seuls les paiements ne nécessitant pas la saisie du cryptogramme visuel sont autorisés.

Principes

Le Commerçant peut choisir entre les méthodes de transfert FTPS et SFTP.

L’utilisation de Mercanet Batch se décompose en plusieurs étapes:

  1. Le Commerçant dispose d’un compte FTPS ou SFTP où il peut déposer ses fichiers de requêtes.
  2. Mercanet reçoit les fichiers de requêtes pour les traiter dans son environnement de production.
  3. Mercanet traite les fichiers de demande un à un et génère un fichier de réponse pour chacun.
  4. Mercanet envoie le fichier de réponse au compte extérieur FTPS ou SFTP.
  5. Le Commerçant télécharge le fichier de réponse depuis le compte externe FTPS ou SFTP
  6. Le fichier de réponse est détruit après que le Commerçant ait effectué le premier téléchargement réussi.


Batch schema.PNG

Règles générales concernant le transfert:

  • Un compte Mercanet est réservé à chaque Commerçant (avec le nom d’utilisateur et le mot de passe). Ce même compte Mercanet doit être utilisé pour les fichiers de demande et de réponse, mais des restrictions s'appliquent quant au nom du fichier
  • Outre les contrôles du nom d’utilisateur et du mot de passe, les serveurs SFTP et FTPS de Mercanet vérifient l’adresse IP du Commerçant.
  • Le nommage du fichier de réponse est toujours différent de celui de la requête faite par le commerçant.
  • Au-delà d’une semaine, les fichiers de réponse sont supprimés du compte FTPS ou SFTP même s’ils n’ont pas été téléchargés.

Nommage fichier requete

Le fichier requête doit être transmis dans une archive au format ZIP. Le nom de cette archive doit se nommer OFBREQxx.ZIP où xx désigne un nombre compris entre 01 et 99.
Une archive doit contenir qu’un seul fichier requête.
Le nom du fichier requête est libre mais il est préférable de respecter le nommage suivant:Où:
[SOB]-[Alias]-[Date]-[Heure].[Format fichier]
Où :

  • [SOB] : Indique que c’est un fichier requête à destination de «Sips Office Batch»
  • [Alias] : Alias Sips de la boutique
  • [Date] : Date du fichier sous le format AAMMJJ
  • [Heure] : Heure du fichier sous le format HHMMSS
  • [Format du fichier] : xml ou csv

Nommage fichier reponse

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

  • xx désigne un nombre compris entre 01 et 99.
  • [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].[Format du fichier]
Où :

  • [Alias] : Alias Sips de la boutique
  • [Date] : Date du fichier sous le format AAMMJJ
  • [Heure] : Heure du fichier sous le format HHMMSS
  • [Format du fichier] : xml ou csv

Format des fichiers Mercanet batch

Introduction

Règles générales

Chaque fichier de requêtes commerçant fait l’objet d’un fichier de réponse Mercanet, même si le traitement est en erreur.

Plusieurs fichiers de demande peuvent être traités en un jour. Lorsque plusieurs fichiers de réponse sont disponibles sur le compte FTPS externe, Mercanet Batch les traite un à un successivement (non simultanément).

Le format des fichiers échangés est XML ou CSV.

Chaque fichier se compose de quatre parties successives:

  • TYPE DU FICHIER
  • ENTÊTE (Header)
  • CORPS (Body)
  • FIN (End)

L’entête du fichier contient le numéro d’ordre qui constitue l’identifiant du fichier et doit être:

  • numérique,
  • unique pour tous les fichiers du Commerçant (sans aucune limite de temps),
  • croissant; il doit commencer à 1 et augmenter d’unité en unité.

Le corps du fichier contient 1 à n enregistrements. Un enregistrement correspond à une opération concernant une transaction Mercanet (création ou mise à jour).

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.

Contraintes:

  • en règle générale, la taille des fichiers ne doit pas dépasser 100 Mo ou 100 000 enregistrements d'opération.
  • les fichiers sont dédiés à un seul remettant (entité purement logique qui regroupe plusieurs commerçants) ; voir ci-dessous.
  • un fichier de requêtes ne peut contenir plusieurs opérations qui concernent 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 peut être différent de l'ordre des opérations dans le fichier de requêtes.

La grammaire CSV contient des fonctions spécifiques qui seront détaillées tout au long de ce document. Avec cette grammaire, l'ordre des champs doit être respecté (contrairement au XML, où l'ordre des attributs d'un élément est généralement sans importance, sauf s'il est spécifié dans la description de l'opération.)

Le concept de remettant

Le remettant est une nouvelle entité qui joue le rôle de l’opérateur technique gérant les échanges de fichiers avec la plate-forme de paiement Mercanet. Le remettant peut envoyer les opérations depuis plusieurs boutiques dans le même fichier dans la mesure où elles ont été attachées à ce remettant lors de leur procédure d’inscription. Mercanet attribue un identifiant de remettant lors de l’inscription. Cet identifiant se trouve dans le champs remitterId de l’enregistrement de l’entête du fichier.

Il convient de noter que le remettant peut également être une boutique.

Format du fichier XML

La structure principale du fichier de demande ou de réponse est la suivante:

<?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 permettre au commerçant de valider ses fichiers de demandes et de réponses.

Format du fichier CSV

Dans le format CSV, chaque enregistrement est préfixé par le nom de type d’élément écrit en majuscules. Les valeurs des champs de chaque élément sont écrites l'une après l'autre et séparées par un point-virgule, sans espace et sans être préfixées de leur nom. L’ordre de ces champs doit être respecté.

Le dictionnaire des données détaillé dans ce document spécifie l'ordre en prenant en compte le préfixe. Contrairement au XML, il n'y a pas de notion d'ouverture ou de fermeture d'élément. La structure principale du fichier CSV (de requêtes ou de réponses) est la suivante :

FILE;…
HEADER;…
<OPERATION>;value1;value2;…
<OPERATION>;value1;value2;…
END;…

Remarques concernant l’élément OPERATION: La structure de l’élément «operation»dépend du type de chaque opération. <OPERATION> contient le nom de l’opération (AUTHOR, VALIDATE , etc.).

Format du fichier de demande (requête)

Élément «header» (entête)

L’entête est un enregistrement avec les champs suivants:

Champs

Présence (O/F)*

Format

Description

Numéro de champ CSV

balise «header»

O

ANS20

Désigne l’enregistrement de l’entête

1

remitterId

O

N15

Identifiant du remettant

2

date

O

Date XML

Date de création du fichier dans le fuseau horaire du Commerçant (AAAA-MM-JJ+hhmm) Lorsque le fichier est au format CSV, le fuseau horaire est indiqué avec le format AAAA-MM-JJ+hhmm

3

time

O

Heure XML

Heure de création du fichier dans le fuseau horaire du Commerçant (hh:mm:ss+hhmm) Lorsque le fichier est au format CSV, le fuseau horaire est indiqué avec le format hh:mm:ss+hhmm

4

sequence

O

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

5

Tableau : Champs de l'élément «header» d’une demande *: O=Obligatoire; F=facultatif

Exemple d’une entête XML:

<header>
    <remitterId>023101122334455</remitterId>
    <date>2012-06-11+02:00</date>
    <time>14:28:00+01:00</time>
    <sequence>86</sequence>
</header>

Exemple d’une entête CSV:

HEADER;023101122334455;2012-06-11+0200;14:28:00+0100;86

Élément «BODY» (corps)

Le corps contient des opérations en fonction du service déclaré dans l'élément file. Voici un exemple de la partie «body» au format XML pour le service :

<body>
…
    <cardOrder  recordSequence=”2”>
      …
    </cardOrder>
…
</body>

La partie «body» au format CSV n’existe pas, toutes les opérations sont détaillées directement après la partie «header».

<OPERATION>;value1;value2;….

Élément «end» (fin)

Le pied de page est un enregistrement avec les champs suivants:

Champs

Présence (O/F)

Format

Description

Numéro de champ CSV

Balise «end»

O

ANS20

Désigne l’enregistrement de fin du fichier

1

nbRecord

O

N6

Nombre d’opérations dans la partie «body»

2

Tableau : Champs prévus pour l’élément «end» (dans la demande)

Voici un exemple de la fin du fichier XML:

<end nbRecord="227" />

Voici un exemple de la fin du fichier CSV:

END;227

Format du fichier de réponses

Élément «header»

L’entête est un enregistrement avec les champs suivants:

Champs

Format

Description

Numéro de champ CSV

Balise «header»

ANS20

Désigne l’enregistrement d’entête

1

remitterId

N15

Identifiant du remettant

2

date

Date XML

Date de création du fichier dans le fuseau horaire du Commerçant (AAAA-MM-JJ+hh:mm) Dans le cas du fichier au format CSV, le fuseau horaire est AAAA-MM-JJ+hhmm

3

time

Heure XML

Heure de création du fichier dans le fuseau horaire du Commerçant (hh:mm:ss+hh:mm) Dans le cas du fichier au format CSV, le fuseau horaire est hh:mm:ss+hhmm

4

sequence

N6

Numéro d’ordre du fichier

5

processingResponseCode

AN2

code réponse du traitement de prise en charge du fichier des demandes

6

beginProcessTime

ANS25 ISO8601

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

7

endProcessTime

ANS25 ISO8601

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

8

Tableau : Champs de l'élément «header» d’une réponse Exemple d’une entête XML:

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


Exemple d’une entête CSV:

HEADER;023101122334455;2012-06-11+0200;14:28:00+0100;86;00;2012-06-07T11:30:47+02:00;2012-06-07T11:31:43+02:00

Élément «error-details»

L’élément “error-details” n’est renvoyé que lorsqu’une erreur intervient lors du contrôle du fichier requête. Le format de “error-details” est un string décrivant l’erreur.

Exemple de error-detail au format XML:

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

Exemple de error-detail au format CSV:

ERRORDETAILS;ERROR_FILE_ALREADY_PROCESSED: processing_response_code = [02] : Error in the file sequence number. The file has already been processed.Expect
ed sequence number [2] - Request file sequence number [1]

Élément «Opération»

Pour chaque opération du fichier de demande, il existe un élément correspondant dansle fichier de réponse avec des attributs remplis dans le fichier de retour.

Les champs retournés sont décrits dans la partie «Description des opérations».

Élément «end»

Le pied de page du fichier de réponse ressemble à celui du fichier de demande. Il comprend les champs suivants:

Champs

Format

Description

Numéro de champ CSV

Balise «end»

ANS20

Désigne la fin de l’enregistrement

1

nbRecord

N6

Nombre d’opérations dans la partie «body»

2

Tableau : Champs prévus pour l’élément «end» (dans la réponse) Voici un exemple de la fin du fichier:

<end nbRecord="227" />

Voici un exemple de la fin du fichier CSV:

END;227

Gestion des codes réponse

Plusieurs niveaux de code réponse du traitement d’un fichier existent dans Mercanet Batch. Plusieurs vérifications générales sont effectuées avant de traiter le fichier en tant que tel. Si l’une d’entre elles échoue, le fichier entier est refusé (processingResponseCode est autre que 00 ou 01). Le fichier de réponse renvoyé contiendra le code réponse du traitement général dans le champ «processingResponseCode» de l’entête du fichier.

Codes réponse du traitement général

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

Tableau : Codes de réponse relatifs au traitement du fichier

Erreur causée par une opération

Chaque opération est considérée comme indépendante et possède son propre code réponse stocké (champ «officeBatchResponseCode»). Ce code réponse désigne le champ à l’origine de l’erreur. Si l’opération échoue, le traitement n’est pas interrompu. L’opération est rejetée avecle code réponse Mercanet typique (champ «responseCode»).

Codes

Champs concernés

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

80

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

Tableau: Codes de réponse relatifs au traitement d’une opération

Rupture de numéro de séquence du fichier

En cas de rupture, le fichier est rejeté en totalité. Si nécessaire, le numéro de séquence doit être corrigé et le fichier renvoyé.

Redémarrage du traitement

Si le fichier de demande est entièrement rejeté par le serveur Mercanet (processingResponseCode diffère de 00 ou 01), il doit être totalement renvoyé avec le même numéro de séquence fichier.

Erreur technique

Une opération a provoquéi une erreur technique.. Le traitement du fichier n’a pas été interrompu. Dans ce cas, le traitement peut être effectué très rapidement car les opérations avec les codes 25 ou 90 seront rejetées (champ«responseCode»). Il n’existe pas de mécanisme de reprise des opérations en rejet technique.

Erreur de format du fichier Csv

Lorsqu’il n’est pas possible d’identifier le service de traitement par lot de la version du fichier, ou si ce dernier comporte une erreur de format (blanc dans le fichier, etc.), une réponse générique est envoyée au commerçant. Cette réponse ressemble à ceci :

RESPONSE
FATAL_ERROR
END

L’envoi de cette réponse n’est possible que pour un fichier au format CSV; il est impossible avec le format XML.

Rapprochement des demandes et réponses

Pour aider à rapprocher les demandes et les réponses:

  • Chaque demande est identifiée par un numéro d’ordre qui est retourné dans la réponse.
  • Tous les champs de la demande sont également retournés dans la réponse, à l’exception des champs suivants:
    • cardNumber est retourné masqué (conformité avec PCI DSS)
    • cardCscValue n’est pas retourné (conformité avec PCI DSS)
    • transactionDate peut être remplacé par Mercanet (heure locale de France) si la création de la transaction est suivie par une demande d’autorisation..

Méthode de tests

Les étapes de test et d’intégration peuvent être effectuées dans l’environnement de recette du client.

Pour utiliser cet environnement, vous devez contacter le service d’assistance technique en leur indiquant les services requis.

Le service d’assistance technique vous enverra votre identifiant (merchantId) et un accès client au serveur FTP.

Description du service d'opérations de gestion de caisse

Élément «File type» de la demande

Champs

Présence (O/F)

Format

Description

Numéro de champ CSV

balise «file»

O

ANS20

Élément principal

1

type

O

ANS20

Doit être «request»

2

format

O

ANS20

Doit être «office»

3

version

O

ANS20

Doit être «6»

4

Tableau: Champs de l’élément «File type» (demande) Exemple XML:

<file type="request" format="office" version="6">
	...
</file>

Exemple CSV

FILE;request;office;6

Élément «File type» de la réponse

Champs

Format

Description

Numéro de champ CSV

Balise «file»

ANS20

Élément principal

1

type

ANS20

Doit être «response»

2

format

ANS20

Doit être «office»

3

version

ANS20

Doit être «6»

4

Tableau: Champs de l’élément «File type» (réponse)

Exemple XML:

<file type="response" format="office" version="6">
	...		
</file>

Exemple CSV:

FILE;response;office;6

Opération de remboursement

Cette opération permet de rembourser une transaction, ce qui consiste à créditer le compte de l’acheteur et à débiter celui du Commerçant.

Info.png Avertissement

Toute opération de remboursement traitée entre 22 heures et 23 heures (heure locale française) retournera automatiquement un code réponse 24. L’opération ne sera pas traitée.

Format de la demande de remboursement

Tous les enregistrements dans l’élément «body» doivent inclure les informations suivantes:

Numéro de champ CSV

Présence

Commentaires

Numéro de champ CSV

balise est refund.

O

Nom de l'opération

1

recordSequence

O

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

2

merchantId

O

 

3

transactionReference

F

Facultatif pour un commerçant utilisant s10TransactionReference

4

operationAmount

O

 

5

currencyCode

O

 

6

operationOrigin

F

 

7

s10TransactionReference

F

Cf. champ s10TransactionReference de l’opération «refund»

8..9

shoppingCartDetail

F

Cf. champ shoppingCartDetail

ND

Tableau: Champs d’une demande de remboursement Exemple d’une demande de remboursement XML:

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

Exemple d’une demande de remboursement CSV:

REFUND;1;012323232323231;SIM201206810160;1000;978;operationOrigin;;

Détail du champ s10transactionreference

Important : Pour le numéro de champ CSV, N représente le numéro du premier champ concernant l'opération (par ex. 8 pour l'opération refund).

Champs

Présence

Commentaires

Numéro de champ CSV

Balise: s10TransactionReference.

F

Nom de l'élément

 

s10TransactionId

F
 

N

s10TransactionIdDate

F

 

N+1

Tableau : Détails du champ s10FromTransactionReference de la demande de remboursement

Exemple de demande refunds/s10TransactionReference XML:

<refund …>
…
  <s10TransactionReference>
     <s10TransactionId>100206</s10TransactionId>
     <s10TransactionIdDate>20150203</s10TransactionIdDate>
  </s10TransactionReference>
…
</refund>

Exemple de demande refund/s10TransactionReference CSV:

…;100206;20150203;…

Format de la réponse à la demande de remboursement

La réponse contient tous les champs de la demande ainsi que les champs suivants:

Champs

Commentaires

Numéro de champ CSV

Balise «refund»

Nom de l’opération de remboursement

1

operationDateTime

Date et heure de l’opération de remboursement effectuée par Mercanet dans le fuseau horaire du Commerçant

10

transactionDateTime

Date et heure du paiement initialement autorisé dans Mercanet dans le fuseau horaire du Commerçant

11

responseCode

Code réponse Mercanet

12

newStatus

Nouveau statut de la transaction

13

newAmount

Montant final de la transaction suivant l’opération

14

authorisationId

Identifiant d’autorisation renvoyé par l’Acquéreur

15

acquirerResponseCode

Code réponse de l’Acquéreur

16

officeBatchResponseCode

Code réponse pour l’opération de Mercanet Batch

17

Tableau : Champs de la réponse à une demande de remboursement Exemple d’une réponse au remboursement XML:

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

Exemple d’une réponse au remboursement CSV:

REFUND;1;012323232323231;SIM201206810160;1000;978;operationOrigin;;;2012-06-14T16:00:00+02:00;2012-06-14T16:00:00+02:00;00;TO_CREDIT;0;956798798534;00;00

Opération de validation

Cette fonction permet de déclencher la transmission de la transaction à la banque.

Format de la demande de validation

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est validate.

O

Nom de l'opération

1

recordSequence

O

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

2

merchantId

O

Identifiant Commerçant dans Mercanet

3

transactionReference

F

Identifiant unique de la transaction de paiement Facultatif pour un commerçant utilisant s10TransactionReference

4

operationAmount

O

Montant à valider

5

currencyCode

O

Devise du montant

6

operationOrigin

F

Le Commerçant peut utiliser ce champ pour préciser l’origine de l’opération

7

s10TransactionReference

F

Cf. champ s10TransactionReference de l’opération «refund»

8..9

lastRecoveryIndicator

F

 

10

Tableau: Champs d’une demande de validation

Exemple d’une demande de validation XML:

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

Exemple d’une demande de validation CSV:

VALIDATE;1;012323232323231;SIM201206810160;1000;978;operationOrigin;;;TRUE

Format de la réponse à la demande de validation

La réponse contient tous les champs de la demande ainsi que les champs suivants:

Champs

Commentaires

Numéro de champ CSV

balise est validate.

Nom de l'opération

1

operationDateTime

Date et heure de l’opération validée dans Mercanet dans le fuseau horaire du Commerçant

11

responseCode

Code réponse Mercanet

12

newStatus

Nouveau statut de la transaction

13

newAmount

Montant final de la transaction suivant l’opération

14

authorisationId

Identifiant d’autorisation renvoyé par l’Acquéreur

15

acquirerResponseCode

Code réponse de l’Acquéreur

16

officeBatchResponseCode

Code réponse pour l’opération de Mercanet Batch

17

captureLimitDate

Date et heure limite de la remise

18

Tableau : Champs de la réponse à une opération de validation

Exemple d’une réponse de validation XML:

<validate recordSequence="1">
      …
      <operationDateTime>2012-06-14T16:00:00+02:00</operationDateTime>
      <responseCode>00</responseCode>
      <newStatus>TO_CREDIT</newStatus>
      <newAmount>0</newAmount>
      <authorisationId>956798798534</authorisationId >
      <acquirerResponseCode>00</acquirerResponseCode>
      <officeBatchResponseCode>00</ officeBatchResponseCode >
      <captureLimitDate>2012-06-14T21:00:00+02:00</captureLimitDate>
</validate>

Exemple d’une réponse de validation CSV:

VALIDATE;1;012323232323231;SIM201206810160;1000;978;operationOrigin;;;;2012-06-14T16:00:00+02:00;2012-06-14T16:00:00+02:00;00;TO_CREDIT;0;956798798534;00;00;2012-06-14T21:00:00+02:00

Opération de duplication

Cette fonction permet de créer une nouvelle transaction à partir des données bancaires d’une transaction précédente. La fonctionnalité est disponible en fonction de l’offre Mercanet.

Format de la demande de duplication

Tous les enregistrements dans l’élément «body» doivent inclure les informations suivantes, la séquence de champs étant requise (Cf. document XSD en annexe) :


Champs

Présence (O/F)

Description

Numéro de champ CSV

Balise «duplicate»

O

Nom de l’opération

1

recordSequence

O

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

2

merchantId

O

Identifiant Commerçant dans Mercanet

3

transactionReference

F

Identifiant unique de la transaction de paiement Facultatif pour un commerçant utilisant s10TransactionReference

4

amount

O

Montant de la transaction

5

currencyCode

O

Devise du montant

6

captureDay

F

Délai de remise en paiement en nombre de jours.

7

captureMode

F

Mode de remise en paiement de la transaction

8

customerEmail

F

Adresse électronique de l’Acheteur

9

customerId

F

Identifiant de l’Acheteur

10

customerIpAddress

F

Adresse IP de l’Acheteur

11

fromTransactionReference

F

Identifiant de la transaction initiale

12

merchantTransactionDateTime

F

Date et heure de la transaction, fixée par le Commerçant, présentée dans l’heure locale (fuseau horaire du Commerçant)

13

orderChannel

O

Canal de commande utilisé (Internet, téléphone, poste, télécopie etc.); Internet est la valeur par défaut

14

orderId

F

Numéro de commande associé à la transaction

15

returnContext

F

Contexte de la commande de l’Acheteur

16

transactionOrigin

F

Le Commerçant peut utiliser ce champ pour préciser l’origine de l’opération

17

fromMerchantId

F

Identifiant Mercanet du Commerçant de la transaction initiale

18

fraudData

F

Cf. champ fraudData

19..29

statementReference

F

 

30

s10TransactionReference

F

Cf. champ s10TransactionReference de l’opération remboursement

31..32

s10FromTransactionReference

F

Cf. champ s10FromTransactionReference

33..34

orderContext

F

Cf. champ orderContext

ND

travelContext

F

Cf. champ travelContext

ND

deliveryContact

F

Cf. champ deliveryContact

ND

deliveryAddress

F

Cf. champ deliveryAddress

ND

deliveryData

F

Cf. champ deliveryData

ND

holderContact

F

Cf. champ holderContact

ND

billingContact

F

Cf. champ billingContact

ND

billingAddress

F

Cf. champ billingAddress

ND

authenticationData

F

Cf. champ authenticationData

ND

holderAddress

F

Cf. champ holderAddress

ND

shoppingCartDetail

F

Cf. champ shoppingCartDetail

ND

Tableau : Champs d’une demande de duplication

Exemple d’une demande de duplication au format XML:

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

Exemple d’une demande de duplication au format CSV:

DUPLICATE;1;012323232323231;SIM201206810160;1000;978;1;VALIDATION;your.email@email.com;12345;127.0.0.1;SIM2012068102311;2012-06-07T11:30:47+02:00;MOTO;123;my context;SOB;;;;;;;;;;ATG,FRA,DNK;;;;;;;

Détails du champ frauddata

Important:

  1. Les éléments «autorisés» d’un type donné ne peuvent pas être fournis avec les élements «interdits» du même type. Par exemple, les champs allowedCardArea et deniedCardArea sont incompatibles.
  2. En ce qui concerne les listes, leurs élements doivent être présentés comme suit: <Listed’Élements><Nomd’Élement>valeur1</Nomd’Élement><Nomd’Élement>valeur2</Nomd’Élement>…</Listed’Élements>. Voir l’exemple ci-dessous.
  3. Dans le numéro de champ CSV, N dépend de la nature de l’opération (exemple: 19 pour duplication).

Champs

Présence (O/F)

Description

Numéro de champ CSV

Balise «fraudData»

F

Nom de l'élément

 

bypass3DS

F

Indicateur utilisé par le Commerçant pour passer outre la procédure 3-D

N

bypassCtrlList

F

Liste des contrôles anti-fraude fournis par le Commerçant pour passer outre les contrôles des transactions actuels

N+1

bypassInfoList

F

Liste des informations fournies par le Commerçant pour passer outre les informations sur la fraude

N+2

allowedCardCountryList

F

Liste des codes de pays autorisés à effectuer des paiements par carte

N+3

deniedCardCountryList

F

Liste des codes pays non autorisés à effectuer des paiements par carte

N+4

allowedCardArea

F

Identifiant de la liste prédéfinie des pays dont les cartes sont acceptées par le Commerçant Cette option est utilisée dans le cadre de la réglementation (par exemple pour les jeux en ligne) Utilisation future/non mise en œuvre

N+5

deniedCardArea

F

Identifiant de la liste prédéfinie des pays dont les cartes sont rejetées par le Commerçant Utilisation future/non mise en œuvre

N+6

allowedIpCountryList

F

Nom de la liste préétablie des codes IP des pays où les Acheteurs sont autorisés à effectuer des paiements

N+7

deniedIpCountryList

F

Liste des codes IP des pays où les Acheteurs ne sont pas autorisés à effectuer des paiements

N+8

allowedIpArea

F

Nom de la liste prédéfinie des codes IP des pays autorisés à effectuer le paiement Utilisation future/non mise en œuvre

N+9

deniedIpArea

F

Nom de la liste préétablie des codes IP des pays où les Acheteurs ne sont pas autorisés à effectuer des paiements Utilisation future/non mise en œuvre

N+10

riskManagementDynamicSettingList

F

 

ND

Tableau : Détails des champs de la demande d’opération de duplication/fraudData

Exemple d’une demande de duplication/fraudData au format XML:

<duplicate …>
…
  <fraudData>
       <deniedIpCountryList>
              <country>ATG</country>
              <country>FRA</country>
              <country>DNK</country>
       </deniedIpCountryList>
  </fraudData>
…
</duplicate>

Exemple d’une demande de duplication/fraudData au format CSV:

…;;;;;;;;;ATG,FRA,DNK;;…

Détails du champ riskManagementDynamicSettingList

Important : ce champ n’est pas disponible dans les fichiers CSV.

Champs :

Présence O/F

Commentaires

Numéro de champ CSV

balise riskManagementDynamicSettingList.

F

Nom de l'élément

 

riskManagementDynamicSetting

F

 

ND

Tableau - Détails du champ riskManagementDynamicSettingList dans fraudData

Champs

Présence O/F

Commentaires

Numéro de champ CSV

balise: RiskManagementDynamicSetting.

F

Nom de l'élément

 

riskManagementDynamicParam

F

 

ND

riskManagementDynamicValue

F

 

ND

Tableau - Détails du champ RiskManagementDynamicSetting de la demande riskManagementDynamicSettingList/fraudData

Exemple de demande fraudData/riskManagementDynamicSettingList au format XML :

<duplicate>
…
    <riskManagementDynamicSettingList>
      <riskManagementDynamicSetting>
         <riskManagementDynamicParam>AllowedIpCountryList</riskManagementDynamicParam>
         <riskManagementDynamicValue>FRA,BEL</riskManagementDynamicValue>
      </riskManagementDynamicSetting>
      <riskManagementDynamicSetting>
         <riskManagementDynamicParam>DeniedIpCountryList</riskManagementDynamicParam>
         <riskManagementDynamicValue>DEU</riskManagementDynamicValue>
      </riskManagementDynamicSetting>
    </riskManagementDynamicSettingList>
</fraudData> 
</duplicate>

Détails du champ s10FromTransactionReference

Important : pour le numéro de champ CSV, N représente le numéro du premier champ concernant l'opération (par ex. 33 pour l'opération duplicate).

Champs

Présence O/F

Commentaires

Numéro de champ CSV

Balise:s10FromTransactionReference.

F

Nom de l'élément

 

s10FromTransactionId

F

 

N

s10FromTransactionIdDate

F

 

N+1

Tableau - Détails du champ s10FromTransactionReference de la demande duplicate Exemple de demande duplicate/s10FromTransactionReference au format XML :

<duplicate …>
…
  <s10FromTransactionReference>
     <s10FromTransactionId>100206</s10FromTransactionId>
     <s10FromTransactionIdDate>20150203</s10FromTransactionIdDate>
  </s10FromTransactionReference>
…
</duplicate>

Exemple de demande duplicate/s10FromTransactionReference au format CSV:

…;100206;20150203;…

Détails du champ orderContext

Important : ce champ n’est pas disponible dans les fichiers CSV.


Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est orderContext.

Facultatif

Nom de l'élément

 

customerHostName

Facultatif

 

ND

customerBrowserType

Facultatif

 

ND

customerANI

Facultatif

 

ND

customerANIInformationIdentifier

Facultatif

 

ND

Tableau 19 - Détails du champ orderContext de la requête duplicate

Exemple de requête duplicate/orderContext au format XML :

<duplicate <strong>…</strong>>
…
 <orderContext>
 <customerHostName><strong>Pierre Durand</strong></customerHostName>
 <customerBrowserType> <strong>MOZILLA/4.0~(COMPATIBLE#059~MSIE~5.0#059~WINDOWS~95)</strong></customerBrowserType>
 <customerANI><strong>17A00206</strong></customerANI>
 <customerANIInformationIdentifier><strong>02</strong></customerANIInformationIdentifier>
 </orderContext>
…
</duplicate>

Détails du champ travelContext

Important : ce champ n’est pas disponible dans les fichiers CSV.


Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est travelContext.

Facultatif

Nom de l'élément

 

departureDate

Facultatif

   

passengerName

Facultatif

 

ND

originAirport

Facultatif

 

ND

numberOfRoutingCities

Facultatif

 

ND

routingCityList

Facultatif

 

ND

numberOfAirlineCarriers

Facultatif

 

ND

airlineCarrierList

Facultatif

 

ND

fareBasis

Facultatif

 

ND

numberOfPassengers

Facultatif

 

ND

destinationAirport

Facultatif

 

ND

reservationCode

Facultatif

 

ND

Tableau 20 - Détails du champ travelContext de la requête duplicate 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 au format XML :

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

Détails du champ deliveryContact

Important : ce champ n’est pas disponible dans les fichiers CSV.

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est deliveryContact.

Facultatif

Nom de l'élément

 

firstName

Facultatif

 

ND

lastName

Facultatif

 

ND

phone

Facultatif

 

ND

mobile

Facultatif

 

ND

Tableau 21 - Détails du champ deliveryContact de la requête duplicate

Exemple de requête duplicate/deliveryContact au format XML :

<duplicate <strong>…</strong>>
…
 <deliveryContact>
 <firstName>Pierre</firstName>
 <lastName>Dupont</lastName>
 <mobile>06666666</email>
 <phone>0521360011</phone>
 </deliveryContact>
…
</duplicate>

Détails du champ deliveryAddress

Important : ce champ n’est pas disponible dans les fichiers CSV.

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est deliveryAddress.

Facultatif

Nom de l'élément

 

additionalAddress1

Facultatif

 

ND

additionalAddress2

Facultatif

 

ND

additionalAddress3

Facultatif

 

ND

country

Facultatif

 

ND

zipCode

Facultatif

 

ND

Tableau 22 – Détails du champ deliveryAddress de la requête duplicate

Exemple de requête duplicate/deliveryAddress au format XML :

<duplicate <strong>…</strong>>
…
 <deliveryAddress>
 <additionalAddress1>80 Quai Voltaire, Bezons</additionalAddress1>
 <country>FRA</country>
 <zipCode>95870</zipCode>
 </deliveryAddress>
…
</duplicate>


Détails du champ deliveryData

Important : ce champ n’est pas disponible dans les fichiers CSV.

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est deliveryData.

Facultatif

Nom de l'élément

 

method

Facultatif

 

ND

Tableau 23 – Détails du champ deliveryData de la requête duplicate

Exemple de requête duplicate/deliveryData au format XML :

<duplicate <strong>…</strong>>
…
 <deliveryData>
 <method>A2</method>
 </deliveryData>
…

Détails du champ holderContact

Important : ce champ n’est pas disponible dans les fichiers CSV.


Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est holderContact.

Facultatif

Nom de l'élément

 

firstName

Facultatif

 

ND

lastName

Facultatif

 

ND

Tableau 24 - Détails du champ holderContact de la requête duplicate

Exemple de requête duplicate/holderContact au format XML :

<duplicate <strong>…</strong>>
…
 <holderContact>
 <firstName>Pierre</firstName>
 <lastName>Dupont</lastName>
 </holderContact>
…
</duplicate>

Détails du champ billingContact

Important : ce champ n’est pas disponible dans les fichiers CSV.


Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est billingContact.

Facultatif

Nom de l'élément

 

phone

Facultatif

 

ND

mobile

Facultatif

 

ND

Tableau 25 - Détails du champ billingContact de la requête duplicate

Exemple de requête duplicate/billingContact au format XML :

<duplicate <strong>…</strong>>
…
 <billingContact>
 <phone>0521360011</phone>
 <mobile>06666666</email>
 </billingContact>
…
</duplicate>


Détails du champ billingAddress

Important : ce champ n’est pas disponible dans les fichiers CSV.

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est billingAddress.

Facultatif

Nom de l'élément

 

additionalAddress1

Facultatif

 

ND

additionalAddress2

Facultatif

 

ND

additionalAddress3

Facultatif

 

ND

zipCode

Facultatif

 

ND

Tableau 26 – Détails du champ billingrAddress de la requête duplicate

Exemple de requête duplicate/billingAddress au format XML :

<duplicate <strong>…</strong>>
…
 <billingAddress>
 <additionalAddress1>80 Quai Voltaire, Bezons</additionalAddress1>
 <zipCode>95870</zipCode>
 </billingAddress>
…
</duplicate>

Détails du champ holderAddress

Important : ce champ n’est pas disponible dans les fichiers CSV.

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est holderAddress.

Facultatif

Nom de l'élément

 

additionalAddress1

Facultatif

 

ND

additionalAddress2

Facultatif

 

ND

additionalAddress3

Facultatif

 

ND

city

Facultatif

 

ND

country

Facultatif

 

ND

streetName

Facultatif

 

ND

streetNumber

Facultatif

 

ND

postbox

Facultatif

 

ND

state

Facultatif

 

ND

zipCode

Facultatif

 

ND

Tableau 27 – Détails du champ holderAddress de la requête duplicate

Exemple de requête duplicate/holderAddress au format XML :

<duplicate <strong>…</strong>>
…
 <holderAddress>
 <city>Bezons</city>
 <country>FRA</country>
 <streetName>Quai Voltaire</streetName>
 <streetNumber>80</streetNumber>
 <zipCode>95870</zipCode>
 </holderAddress>
…
</duplicate>


Détails du champ authenticationData

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est authenticationData.

Facultatif

Nom de l'élément

 

CardAuthPolicy

Facultatif

 

ND

Tableau 28 – Détails du champ authenticationData de la requête duplicate

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est cardAuthPolicy.

Facultatif

Nom de l'élément

 

checkAVS

Facultatif

 

ND

ignorePostcodeCheckResult

Facultatif

 

ND

ignorePostcodeCheckResult

Facultatif

 

ND

CardAuthPolicy

Facultatif

 

ND

Tableau 29 – Détails du champ cardAuthPolicy de la requête duplicate

Exemple de requête duplicate/authenticationData au format XML :

<duplicate …>
…
 <authenticationData>
 <CardAuthPolicy>
 <checkAVS>Y</checkAVS>
 <ignorePostcodeCheckResult>N</ignorePostcodeCheckResult>
 <ignoreAddressCheckResult>N</ignoreAddressCheckResult>
 <automaticReverse>N</automaticReverse>
 </CardAuthPolicy>
 </authenticationData>
…
</duplicate>

Format de la réponse à la duplication

La réponse contient tous les champs de la demande ainsi que les champs suivants:

Champs

Description

Numéro de champ CSV

Balise «duplicate»

Nom de l’opération

1

authorisationId

Identifiant d’autorisation renvoyé par l’Acquéreur

35

acquirerResponseCode

Code réponse de l’Acquéreur

36

complementaryCode

Code réponse supplémentaire du serveur Mercanet retourné dans la réponse.

37

complementaryInfo

Informations sur le code réponse supplémentaire du serveur Mercanet retourné dans la réponse.

38

responseCode

Code réponse Mercanet

39

scoreColor

Couleur associée au score

40

scoreInfo

Résultat de la vérification effectuée après le calcul du score ou ERROR si une erreur est survenue lors de la séquence des vérifications

41

scoreProfile

Nom associé au profil utilisé pour calculer le score de la transaction

42

scoreThreshold

Seuil associé au profil utilisé pour calculer le score de la transaction

43

scoreValue

Valeur du score de la transaction exprimée en nombre décimal

44

transactionDateTime

Date et heure du traitement de la transaction sur le serveur Mercanet (dans le fuseau horaire du serveur Mercanet)

45

officeBatchResponseCode

Code réponse pour l’opération de Mercanet Batch

46

maskedPan

Numéro PAN masqué

47

panExpiryDate

Date d’expiration du PAN

48

paymentMeanBrand

Nom du moyen de paiement utilisé par l’Acheteur

49

cardData

Cf. champ cardData

50..55

preAuthorisationProfile

 

ND

preAuthorisationProfileValue

 

ND

preAuthorisationRuleResultList

 

ND

paymentMeanBrandSelectionStatus

 

56

transactionPlatform

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

57

avsPostcodeResponseCode

 

58

avsAddressResponseCode

 

59

Tableau : Champs de la réponse à une duplication

Exemple d’une réponse à la duplication au format XML:

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

</table>

Exemple d’une réponse à la duplication au format CSV:

DUPLICATE;1;012323232323231;SIM201206810160;1000;978;1;VALIDATION;your.email@email.com;12345;127.0.0.1;SIM2012068102311;2012-06-07T11:30:47+02:00;MOTO;123;my context;SOB;;;;;;;;;;ATG,FRA,DNK;;;;;;;;009588;00;;;00;;;;;2013-10-30T16:40:00+02:00;00; 4907##########00;201610;VISA;F,VISA CLASSIC,C,VISA,00000,GRC;;PROD

Détails du champ cardData

Important : pour le numéro de champ CSV, N représente le numéro du premier champ concernant l'opération (par ex. 50 pour une réponse à l'opération duplicate).


Champs

Commentaires

Numéro de champ CSV

balise: cardData.

Nom de l'élément

 

cardProductCode

 

N

cardProductName

 

N+1

cardProductProfile

 

N+2

cardScheme

 

N+3

issuerCode

 

N+4

issuerCountryCode

 

N+5

Tableau : Détails du champ cardData de la réponse à la demande duplicate

Exemple de réponse à une demande duplicate/cardData au format XML:

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

Exemple de réponse à une demande duplicate/cardData au format CSV:

…;2;CARTE NATIONALE DE RETRAIT ET DE PAIEMENT;D;CB;10107;FRA;…

Détail du champs preAuthorisationRuleResultList

Champs

Commentaires

Numéro de champ CSV

balise est “preAuthorisationRuleResultList”

Nom de l’élement

 

ruleResult

 

ND

Tableau : Détails du champ preAuthorisationRuleResultList de la réponse de l’opération duplicate

Exemple du champs duplicate / preAuthorisationRuleResultList au format XML

<preAuthorisationRuleResultList>
        <ruleResult>
        …
        </ruleResult>
        <ruleResult>
        …
        </ruleResult>
</preAuthorisationRuleResultList>

Détail du champs ruleResult

Champs

Commentaires

Numéro de champ CSV

balise est “ruleResult”

Nom de l’élement

 

ruleCode

 

ND

ruleType

 

ND

ruleWeight

 

ND

ruleSetting

 

ND

ruleResultIndicator

 

ND

ruleDetailedInfo

 

ND

Tableau : Details du champs ruleResult de la réponse de l’opération duplicate

Exemple du champs duplicate /ruleResult au format XML

<ruleResult>
            <ruleCode>EC</ruleCode>
            <ruleType>NG</ruleType>
            <ruleWeight>D</ruleWeight>
            <ruleSetting>N</ruleSetting>
            <ruleResultIndicator>U</ruleResultIndicator>
            <ruleDetailedInfo>MAX=2:2</ruleDetailedInf>
</ruleResult>

Opération d’annulation

Cette fonction permet d’annuler totalement ou partiellement une transaction qui n’a pas encore été remise en banque (voir PRESENTATION FONCTIONNELLE).

Attention: Chaque opération de caisse de type ANNULATION traitée entre 22h00 et 3h00 (heure locale de France) retournera automatiquement le code réponse 24. L’opération ne sera pas traitée.

Format de la demande d’annulation

Champs

Présence (O/F)

Description

Numéro de champ CSV

Balise fixé à la valeur «cancel»

O

Nom de l’opération

1

recordSequence

O

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

2

merchantId

O

Identifiant Commerçant dans Mercanet

3

transactionReference

F

Identifiant unique de la transaction de paiement Facultatif pour un commerçant utilisant s10TransactionReference

4

amount

O

Montant à annuler

5

currencyCode

O

Devise du montant

6

operationOrigin

F

Le Commerçant peut utiliser ce champ pour préciser l’origine de l’opération

7

s10TransactionReference

F

Cf. champ s10TransactionReference de l’opération «remboursement»

8..9

Tableau : Champs prévus pour la demande d’opération d’annulation

Exemple d’une demande d’annulationau format XML:

<cancel recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <amount>1000</amount>
      <currencyCode>978</currencyCode>
      <operationOrigin>operationOrigin</operationOrigin>
</cancel>

Exemple d’une demande d’annulation au format CSV:

CANCEL;1;012323232323231;SIM201206810160;1000;978;operationOrigin;;

Format de la réponse à la demande d’annulation

La réponse contient tous les champs de la demande ainsi que les champs suivants:

Champs

Description

Numéro de champ CSV

Balise «cancel»

Nom de l’opération

1

operationDateTime

Date et heure de l’opération d’annulation effectuée par Mercanet dans le fuseau horaire du Commerçant

10

responseCode

Code réponse Mercanet

11

newStatus

Nouvel état de la transaction

12

newAmount

Montant final de la transaction suivant l’opération

13

officeBatchResponseCode

Code réponse pour l’opération de Mercanet Batch

14

Tableau : Champs pour la réponse à une opération d’annulation

Exemple d’une réponse à une demande d’annulation au format XML:

<cancel recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <amount>1000</amount>
      <currencyCode>978</currencyCode>
      <operationOrigin>operationOrigin</operationOrigin>
</cancel>

Exemple d’une réponse à une demande d’annulation au format CSV:

CANCEL;1;012323232323231;SIM201206810160;1000;978;operationOrigin;;

Opération création de paiement (cardOrder)

Cette fonction permet au Commerçant qui dispose de coordonnées bancaires de leurs clients d’effectuer lui-même les demandes d’autorisation (création de paiements)
Info.png Rappel

La réglementation PCI DSS interdit le stockage du cryptogramme visuel. Les opérations de paiement nécessitant la saisie du cryptogramme sont donc interdites via cette fonction.

Format de la demande création de paiement

Tous les enregistrements dans l’élément «body» doivent inclure les informations suivantes, la séquence de champs étant requise (Cf. document XSD en annexe) :

Champs

Présence (O/F)

Description

Numéro de champ CSV

Balise «cardOrder»

O

Nom de l’opération

1

recordSequence

O

Numéro de ligne permettant au Commerçant de rapprocher la réponse de la demande

2

merchantId

O

Identifiant Commerçant dans Mercanet

3

transactionReference

F

Identifiant unique de la transaction de paiement Facultatif pour un commerçant utilisant s10TransactionReference

4

amount

O

Montant de la transaction

5

captureDay

F

Délai de la remise en paiement en nombre de jours.

6

captureMode

F

Mode de remise en paiement de la transaction

7

cardCSCValue

F

Numéro CSC/CVV/CVC2 de la carte

8

cardEffectiveDate

F

Date d’entrée en vigueur de la carte

9

cardExpiryDate

O

Date d’expiration de la carte

10

CardNumber

O

Numéro de carte

11

cardSeqNumber

F

Numéro d’ordre de la carté attribué par l’émetteur

12

currencyCode

O

Devise du montant

13

customerEmail

F

Adresse électronique de l’Acheteur

14

customerId

F

Identifiant de l’Acheteur

15

customerIpAddress

F

Adresse IP de l’Acheteur

16

merchantTransactionDateTime

F

Date et heure de la transaction, fixée par le Commerçant, représentée dans l’heure locale (dans le fuseau horaire du Commerçant)

17

orderChannel

O

Canal de commande utilisé (Internet, téléphone, poste, télécopie etc.); Internet est la valeur par défaut

18

orderId

F

Numéro de commande associé à la transaction

19

paymentPattern

F

Type de paiement (par opération, 1er paiement, paiement récurrent etc.)

20

returnContext

F

Contexte de la commande de l’Acheteur

21

statementReference

F

Référence fournie par le Commerçant et envoyée dans le flux de remise en paiement. Cette référence apparaît sur les relevés de compte (implémenté selon l’acquéreur).

22

transactionOrigin

F

Le Commerçant peut utiliser ce champ pour identifier l’origine de l’opération

23

fraudData

F

Consultez fraudData dans l’opération de duplication

24..34

panType

F

 

35

paymentMeanData

F

Cf. champ paymentMeanData

36…37

holderData

F

Cf. champ holderData

38

s10TransactionReference

F

Cf. champ s10TransactionReference de l’opération «remboursement»

39...40

riskManagementCustomDataList

F

Cf. champ riskManagementCustomDataList

ND

shoppingCartDetail

F

Cf. champ shoppingCartDetail

ND

paymentMeanBrand

F

Cf. champ paymentMeanBrand

ND

paymentMeanBrandSelectionStatus

F

 

ND

orderContext

F

Cf. champ orderContext

ND

travelContext

F

Cf. champ travelContext

ND

deliveryContact

F

Cf. champ deliveryContact

ND

deliveryAddress

F

Cf. champ deliveryAddress

ND

deliveryData

F

Cf. champ deliveryData

ND

holderContact

F

Cf. champ holderContact

ND

billingContact

F

Cf. champ billingContact

ND

billingAddress

F

Cf. champ billingAddress

ND

authenticationData

F

Cf. champ authenticationData

ND

holderAddress

F

Cf. champ holderAddress

ND

Tableau : Champs prévus pour la demande d’opération de création de paiement

Exemple d’une demande création de paiement au format XML:

<cardOrder recordSequence=”1”>
      <amount>1000</amount>
      <captureDay>0</captureDay>
      <captureMode>VALIDATION</captureMode>
      <cardCSCValue>470</cardCSCValue>
      <cardEffectiveDate>201201</cardEffectiveDate>
      <cardExpiryDate>209910</cardExpiryDate>
      <cardNumber>4975497549754975</cardNumber>
      <cardSeqNumber>1</cardSeqNumber>
      <currencyCode>978</currencyCode>
      <customerEmail>test@worldline.com</customerEmail>
      <customerId>123</customerId>
      <customerIpAddress>127.0.0.1</customerIpAddress>
      <fraudData>
            <bypass3DS>all</bypass3DS>
            <allowedIpCountryList>
                 <country>fra</country>
            </allowedIpCountryList>
      </fraudData>
      <merchantId>012323232323231</merchantId>
      <merchantTransactionDateTime>2012-11-29T17:04:30Z</merchantTransactionDateTime>
      <orderChannel>INTERNET</orderChannel>
      <orderId>123456</orderId>
      <returnContext>context</returnContext>
      <transactionReference>201211218170401</transactionReference>
      <transactionOrigin>origin</transactionOrigin>
</cardOrder>

Exemple d’une demande création de paiement au format CSV:

CARDORDER;1;012323232323231;SIM201206810160;1000;0;VALIDATION;470;201201;209910;4975497549754975;1;978;test@worldline.com;123;127.0.0.1;2012-11-29T17:04:30Z;INTERNET;123456;;context;;origin;all;;;;;;;;;FRA;;;;;;

Détails du champ paymentMeanData de la demande

Important : pour le numéro de champ CSV, N représente le numéro du premier champ concernant l'opération (par ex. 36 pour l'opération cardOrder).

Champs

Présence O/F

Commentaires

Numéro de champ CSV

balise: paymentMeanData.

F

Nom de l'élément

 

accord

F

 

N

cofinoga

F

 

N+1

Tableau - Détails du champ paymentMeanData de la demande création de paiement

Champs

Présence O/F

Commentaires

Numéro de champ CSV

Balise: accord.

F

Nom de l'élément

 

settlementMode

F

Mode de paiement pour Accord ; Cf. guide utilisateur des moyens de paiement

N

Tableau - Détails du champ accord de la demande paymentMeanData /création de paiement

Exemple de demande création de paiement /paymentMeanData au format XML:

<cardOrder …>
…
  <paymentMeanData>
     <accord>
        <settlementMode>WEB3X</settlementMode>
     </accord>
  </paymentMeanData>
…
</cardOrder>

Exemple de demande création de paiement /paymentMeanData au format CSV:

…;WEB3X;…

Champs

Présence O/F

Commentaires

Numéro de champ CSV

balise: cofinoga.

F

Nom de l'élément

 

settlementMode

F

Mode de paiement pour Cofinoga; Cf. guide utilisateur des moyens de paiement

N+1

Tableau 1 - Détails du champ cofinoga de la demande paymentMeanData/cardOrder

Exemple de demande cardOrder/paymentMeanData au format XML:

<cardOrder …>
…
  <paymentMeanData>
     <cofinoga>
        <settlementMode>MR_COMP</settlementMode>
     </cofinoga>
  </paymentMeanData>
…
</cardOrder>

Exemple de demande cardOrder/paymentMeanData au format CSV:

…;MR_COMP;…

Détails du champ holderData

Important : pour le numéro de champ CSV, N représente le numéro du premier champ concernant l'opération (par ex. 38 pour l'opération cardOrder).

Champs

Présence O/F

Commentaires

Numéro de champ CSV

Balise: holderData.

F

Nom de l'élément

 

birthDate

F

 

N

Tableau - Détails du champ holderData de la demande création de paiement

Exemple de demande création de paiement /holderData au format XML:

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

Exemple de demande création de paiement /holderData au format CSV:

…;19450902;…

Détails du champ riskManagementCustomDataList

Important : ce champ n’est pas disponible dans les fichiers CSV.


Champs

Présence O/F

Commentaires

Numéro de champ CSV

balise: riskManagementCustomDataList.

F

Nom de l'élément

 

riskManagementCustomData

F

 

ND

Tableau - Détails du champ riskManagementCustomDataList de la demande création de paiement

Champs

Présence O/F

Commentaires

Numéro de champ CSV

Balise: riskManagementCustomData.

F

Nom de l'élément

 

riskManagementCustomSequence

F

 

ND

riskManagementCustomValue

F

 

ND

Tableau - Détails du champ riskManagementCustomData de la demande riskManagementCustomDataList/création de paiement

Exemple de demande création de paiement /riskManagementCustomDataList au format XML :

<cardOrder …>
…
  <riskManagementCustomDataList>
     <riskManagementCustomData>
        <riskManagementCustomSequence>1</riskManagementCustomSequence>
        <riskManagementCustomValue>1</riskManagementCustomValue>
     </riskManagementCustomData >
  </riskManagementCustomDataList>
…
</cardOrder>

Détails du champ shoppingCartDetail

Important : ce champ n’est pas disponible dans les fichiers CSV.

Champs

Présence O/F

Commentaires

Numéro de champ CSV

balise est shoppingCartDetail.

F

Nom de l'élément

 

shoppingCartTotalAmount

F

 

ND

shoppingCartTotalQuantity

F

 

ND

shoppingCartTotalTaxAmount

F

 

ND

mainProduct

F

 

ND

ShoppingCartItemList

F

 

ND

Tableau - Détails du champ shoppingCartDetail de la demande création de paiement

Champs

Présence O/F

Commentaires

Numéro de champ CSV

balise est shoppingCartItemList.

F

Nom de l'élément

 

shoppingCartItem

F

 

ND

Tableau - Détails du champ shoppingCartItemList de la demande shoppingCartDetail/création de paiement

Champs

Présence O/F

Commentaires

Numéro de champ CSV

balise est shoppingCartItem.

F

Nom de l'élément

 

productName

F

 

ND

productDescription

F

 

ND

productCode

F

 

ND

productSKU

F

 

ND

productUnitAmount

F

 

ND

productQuantity

F

 

ND

productTaxRate

F

 

ND

productUnitTaxAmount

F

 

ND

productCategory

F

 

ND

Tableau - Détails du champ shoppingCartItem

Exemple de demande création de paiement /riskManagementCustomDataList au format XML :

<cardOrder …>
…
  <riskManagementCustomDataList>
     <riskManagementCustomData>
        <riskManagementCustomSequence>1</riskManagementCustomSequence>
        <riskManagementCustomValue>1</riskManagementCustomValue>
     </riskManagementCustomData>
  </riskManagementCustomDataList>
…
</cardOrder>

Détails du champ authenticationData

Important : ce champ n’est pas disponible dans les fichiers CSV.

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est authenticationData.

Facultatif

Nom de l'élément

 

CardAuthPolicy

Facultatif

 

ND

Tableau 50 - Détails du champ authenticationData de la requête cardOrder

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est CardAuthPolicy.

Facultatif

Nom de l'élément

 

checkAVS

Facultatif

 

ND

ignoreCSCCheckResult

Facultatif

 

ND

ignorePostcodeCheckResult

Facultatif

 

ND

ignoreAddressCheckResult

Facultatif

 

ND

automaticReverse

Facultatif

 

ND

Tableau 51 - Détails du champ CardAuthPolicy

Exemple de requête cardOrder/ authenticationData au format XML :

<duplicate <strong>…</strong>>
…
 <authenticationData>
 <CardAuthPolicy>
 <checkAVS>Y</checkAVS>
 <ignoreCSCCheckResult>N</ignoreCSCCheckResult>
 <ignorePostcodeCheckResult>N</ignorePostcodeCheckResult>
 <ignoreAddressCheckResult>N</ignoreAddressCheckResult>
 <automaticReverse>Y</automaticReverse>
 </CardAuthPolicy>
 </authenticationData>
…
</duplicate>

Format de la réponse à la requête cardOrder

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

Champs

Commentaires

Numéro de champ CSV

Le nom de la balise est cardOrder.

Nom de l'opération

1

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.

2

merchantId

 

3

transactionReference

 

4

amount

 

5

captureDay

 

6

captureMode

 

7

currencyCode

 

8

customerEmail

 

9

customerId

 

10

customerIpAddress

 

11

merchantTransactionDateTime

 

12

orderChannel

 

13

orderId

 

14

paymentPattern

 

15

returnContext

 

16

statementReference

 

17

transactionOrigin

 

18

fraudData

Cf. champ fraudData de l'opération «duplicate»

19..29

panType

 

30

paymentMeanData

Cf. champ paymentMeanData

31..33

holderData

Cf. champ holderData

34

s10TransactionReference

Cf. champ s10TransactionReference de l’opération «refund»

35..36

orderContext

Cf. champ orderContext

ND

travelContext

Cf. champ travelContext

ND

deliveryContact

Cf. champ deliveryContact

ND

deliveryAddress

Cf. champ deliveryAddress

ND

deliveryData

Cf. champ deliveryData

ND

holderContact

Cf. champ holderContact

ND

billingContact

Cf. champ billingContact

ND

billingAddress

Cf. champ billingAddress

ND

authenticationData

 

ND

holderAddress

Cf. champ holderAddress

ND

acquirerResponseCode

 

37

authorisationId

 

38

complementaryCode

 

39

complementaryInfo

 

40

guaranteeIndicator

 

41

holderAuthentRelegation

 

42

holderAuthentStatus

 

43

maskedPan

 

44

officeBatchResponseCode

 

45

responseCode

 

46

transactionDateTime

 

47

tokenPan

 

48

acquirerResponseIdentifier

 

49

acquirerResponseMessage

 

50

paymentMeanTradingName

 

51

riskManagementCustomDataList

Cf. champ riskManagementCustomDataList

ND

shoppingCartDetail

Cf. champ shoppingCartDetail

ND

cardData

Cf. cardData dans la réponse à la requête duplicate; section 4.5.6

52..57

recurringResponseCode

 

58

preAuthorisationProfile

 

ND

preAuthorisationProfileValue

 

ND

preAuthorisationRuleResultList

Cf. preAuthorisationRuleResultList dans la réponse à la requête duplicate; section 4.5.6

ND

paymentMeanBrand

 

59

paymentMeanBrandSelectionStatus

 

60

transactionPlatform

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

61

cardCSCResultCode

 

62

avsPostcodeResponseCode

 

63

avsAddressResponseCode

 

64

Tableau 52 - Champs de la réponse à la requête cardOrder

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

<cardOrder <strong>recordSequence</strong>="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>

Exemple de réponse au format CSV à une requête cardOrder:

 ...
CARDORDER;1;012323232323231;SIM201206810160;1000;0;VALIDATION;978;test@worldline.com;123;127.0.0.1;20121129T17:04:30Z;INTERNET;123456;;context;;origin;all;;;;;;;;;FRA;;;;;;;;00;1234569654656;;;;;;160000.47;00;00;2012-06-14T16:00:00+02:00;;;;;F,VISA CLASSIC,C,VISA,00000,GRC;;;;PROD
 ...

Détails du champ paymentMeanData de la réponse

Important :

  1. pour le numéro de champ CSV, N représente le numéro du premier champ concernant l'opération (par ex. 31 pour une réponse à l'opération cardOrder.)

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est paymentMeanData.

Facultatif

Nom de l'élément

 

accord

Facultatif

 

N

cofinoga

Facultatif

 

N+2

Tableau 53 - Détails du champ paymentMeanData de la réponse à la requête cardOrder

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est accord.

Facultatif

Nom de l'élément

 

settlementMode

Facultatif

Mode de paiement pour Accord ; Cf. guide utilisateur des moyens de paiement

N

additionalAuthorisationNumber

Facultatif

 

N+1

Tableau 54 - Détails du champ accord de la réponse à la requête paymentMeanData/cardOrder

Exemple de réponse au format XMLà une requête cardOrder/paymentMeanData :

<cardOrder <strong>…</strong>>
…
 <paymentMeanData>
 <accord>
 <settlementMode>WEB3X</settlementMode>
 <additionalAuthorisationNumber>123456</additionalAuthorisationNumber>
 </accord>
 </paymentMeanData>
…
</cardOrder>

Exemple de réponse au format CSV à une requête cardOrder/paymentMeanData :

…;WEB3X;123456;…


Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est cofinoga.

Facultatif

Nom de l'élément

 

settlementMode

Facultatif

Mode de paiement pour Accord ; Cf. guide utilisateur des moyens de paiement

N+2

Tableau 55 - Détails du champ cofinoga de la réponse à la requête paymentMeanData/cardOrder

Exemple de réponse au format XMLà une requête cardOrder/paymentMeanData :

<cardOrder …>
…
 <paymentMeanData>
 <cofinoga>
 <settlementMode>MR_COMP</settlementMode>
 </cofinoga>
 </paymentMeanData>
…
</cardOrder>

Exemple de réponse au format CSVà une requête cardOrder/paymentMeanData :

…;MR_COMP;…


Opération création de paiement depuis un Wallet (walletOrder)

Cette fonction permet au commerçant possédant les informations Wallet d'un client d'effectuer personnellement des demandes d'autorisation.

Format de la requête walletOrder

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes, la séquence de champs étant requise (Cf. document XSD en annexe) :

Champs

Présence

Commentaires

Numéro de champ CSV

Le nom de la balise est walletOrder.

Obligatoire

Nom de l'opération

1

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.

2

merchantId

Obligatoire

 

3

transactionReference

Facultatif

 

4

amount

Obligatoire

 

5

captureDay

Facultatif

 

6

captureMode

Facultatif

 

7

currencyCode

Obligatoire

 

8

customerEmail

Facultatif

 

9

customerId

Facultatif

 

10

customerIpAddress

Facultatif

 

11

merchantTransactionDateTime

Facultatif

 

12

orderChannel

Obligatoire

 

13

orderId

Facultatif

 

14

paymentMeanId

Obligatoire

 

15

returnContext

Facultatif

 

16

statementReference

Facultatif

 

17

merchantWalletId

Obligatoire

 

18

transactionOrigin

Facultatif

 

19

cardCSCValue

Facultatif

 

20

paymentPattern

Facultatif

 

21

fraudData

Facultatif

Cf. champ fraudData de l'opération «duplicate»

22..32

s10TransactionReference

Facultatif

Cf. champ s10TransactionReference de l’opération«refund»

33..34

orderContext

Facultatif

Cf. champ orderContext de l'opération «duplicate»

ND

travelContext

Facultatif

Cf. champ travelContext de l'opération «duplicate»

ND

deliveryContact

Facultatif

Cf. champ deliveryContact de l'opération «duplicate»

ND

deliveryAddress

Facultatif

Cf. champ deliveryAddress de l'opération «duplicate»

ND

deliveryData

Facultatif

Cf. champ deliveryData de l'opération «duplicate».

ND

holderContact

Facultatif

Cf. champ holderContact de l'opération «duplicate».

ND

billingContact

Facultatif

Cf. champ billingContact de l'opération «duplicate»

ND

billingAddress

Facultatif

Cf. champ billingAddress de l'opération «duplicate»

ND

authenticationData

Facultatif

Cf. champ authenticationData de l'opération «cardOrder»

ND

holderAddress

Facultatif

Cf. champ holderAddress de l'opération «cardOrder»

ND

shoppingCartDetail

Facultatif

Cf. champ shoppingCartDetail de l'opération «cardOrder»

ND

Tableau 56 - Champs de la requête walletOrder

Exemple de requête walletOrder au format XML :

<walletOrder <strong>recordSequence</strong>="1">
 <amount>1000</amount>
 <captureDay>0</captureDay>
 <captureMode>VALIDATION</captureMode>
 <currencyCode>978</currencyCode>
 <customerEmail>test@worldline.com</customerEmail>
 <customerId>123</customerId>
 <customerIpAddress>127.0.0.1</customerIpAddress>
 <fraudData>
 <bypass3DS>all</bypass3DS>
 <allowedIpCountryList>
 <country>FRA</country>
 </allowedIpCountryList>
 </fraudData>
 <merchantId>012323232323231</merchantId>
 <merchantTransactionDateTime>2012-11-29T17:04:30Z</merchantTransactionDateTime>
 <orderChannel>INTERNET</orderChannel>
 <orderId>123456</orderId>
 <paymentMeanId>1</paymentMeanId>
 <returnContext>context</returnContext>
 <transactionReference>20121218170402</transactionReference>
 <merchantWalletId>2</merchantWalletId>
 <transactionOrigin>origin</transactionOrigin>
 <cardCSCValue>100</cardCSCValue>
 <paymentPattern>ONE_SHOT</paymentPattern >
</walletOrder>

Exemple de requête walletOrder au format CSV :

 ...
WALLETORDER;1;012323232323231;SIM201206810160;1000;0;VALIDATION;978;test@worldline.com;123;127.0.0.1;2012-11-29T17:04:30Z;INTERNET;123456;1;context;;2;origin;all;;;;;;;;;FRA;;;;100;ONE_SHOT
 ...

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

Numéro de champ CSV

Le nom de la balise est walletOrder.

Nom de l'opération

1

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.

2

merchantId

 

3

transactionReference

 

4

amount

 

5

captureDay

 

6

captureMode

 

7

currencyCode

 

8

customerEmail

 

9

customerId

 

10

customerIpAddress

 

11

merchantTransactionDateTime

 

12

orderChannel

 

13

orderId

 

14

paymentMeanId

 

15

returnContext

 

16

statementReference

 

17

merchantWalletId

 

18

transactionOrigin

 

19

paymentPattern

 

20

fraudData

Cf. champ fraudData de l'opération «duplicate»

21..31

s10TransactionReference

Cf. champ s10TransactionReference de l’opération«refund»

32..33

orderContext

Cf. champ orderContext de l'opération «duplicate»

ND

travelContext

Cf. champ travelContext de l'opération «duplicate»

ND

deliveryContact

Cf. champ deliveryContact de l'opération «duplicate»

ND

deliveryAddress

Cf. champ deliveryAddress de l'opération «duplicate»

ND

deliveryData

Cf. champ deliveryData de l'opération «duplicate».

ND

holderContact

Cf. champ holderContact de l'opération «duplicate».

ND

billingContact

Cf. champ billingContact de l'opération «duplicate»

ND

billingAddress

Cf. champ billingAddress de l'opération «duplicate»

ND

authenticationData

Cf. champ authenticationData de l'opération «cardOrder»

ND

holderAddress

Cf. champ holderAddress de l'opération «cardOrder»

ND

shoppingCartDetail

Cf. champ shoppingCartDetail de l'opération «cardOrder»

ND

acquirerResponseCode

 

34

authorisationId

 

35

complementaryCode

 

36

complementaryInfo

 

37

guaranteeIndicator

 

38

holderAuthentRelegation

 

39

holderAuthentStatus

 

40

maskedPan

 

41

officeBatchResponseCode

 

42

responseCode

 

43

transactionDateTime

 

44

tokenPan

 

45

cardData

Cf. champ cardData dans la réponse à la requête duplicate; section 4.5.6

46..51

preAuthorisationProfile

 

ND

preAuthorisationProfileValue

 

ND

preAuthorisationRuleResultList

Cf. champ preAuthorisationRuleResultList dans la réponse à la requête duplicate; section 4.5.6

ND

transactionPlatform

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

52

cardCSCResultCode

 

53

avsPostcodeResponseCode

 

54

avsAddressResponseCode

 

55

Tableau 57 - Champs de la réponse à la requête walletOrder

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

<walletOrder <strong>recordSequence</strong>="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>

Exemple de réponse au format CSVà une requête walletOrder:

 ...
WALLETORDER;1;012323232323231;SIM201206810160;1000;0;VALIDATION;978;test@worldline.com;123;127.0.0.1;20121129T17:04:30Z;INTERNET;123456;1;context;;2;origin;ONE_SHOT;all;;;;;;;;;FRA;;;; 00;1234569654656;;;;;;160000.47;00;00;2012-06-14T16:00:00+02:00;;;;;;;;PROD
 ...

Détails du champ paymentMeanData de la réponse

Important : pour le numéro de champ CSV, N représente le numéro du premier champ concernant l'opération (par ex. 31 pour une réponse à l'opération cardOrder.)


Champs

Présence O/F

Commentaires

Numéro de champ CSV

Balise: paymentMeanData.

F

Nom de l'élément

accord

F

N

cofinoga

F

N+2

Tableau - Détails du champ paymentMeanData de la réponse à la demande création de paiement

Champs

Présence O/F

Commentaires

Numéro de champ CSV

balise: accord.

F

Nom de l'élément

settlementMode

F

Mode de paiement pour Accord ; Cf. guide utilisateur des moyens de paiement

N

additionalAuthorisationNumber

F

N+1

Tableau - Détails du champ accord de la réponse à la demande paymentMeanData/ création de paiement

Exemple de réponse à une demande création de paiement /paymentMeanData au format XML:

<<cardOrder > …

<paymentMeanData>
<accord>
<settlementMode>WEB3X</settlementMode>
<additionalAuthorisationNumber>123456</additionalAuthorisationNumber>
</accord>
</paymentMeanData>

… </cardOrder>

Exemple de réponse à une demande création de paiement /paymentMeanData au format CSV:

…;WEB3X;123456;…

Champs

Présence O/F

Commentaires

Numéro de champ CSV

Balise: cofinoga.

F

Nom de l'élément

settlementMode

F

Mode de paiement pour Cofinoga ; Cf. guide utilisateur des moyens de paiement

N+2

Tableau - Détails du champ cofinoga de la réponse à la demande paymentMeanData/cardOrder

Exemple de réponse au format XMLà une requête cardOrder/paymentMeanData :

<cardOrder …> … <paymentMeanData>

<cofinoga>
<settlementMode>MR_COMP</settlementMode>
</cofinoga>

</paymentMeanData> … </cardOrder>

Exemple de réponse au format CSVà une requête cardOrder/paymentMeanData :

…;MR_COMP;…

Description du service "token"

Élément «File type» de la requête

Champs

Présence

Format

Description

Le nom de la balise est file.

Obligatoire

ANS20

Élément principal

type

Obligatoire

ANS20

Doit valoir request

format

Obligatoire

ANS20

Doit valoir token

version

Obligatoire

ANS20

Doit valoir 1

Tableau 71 - Champs de l'élément «file type» d’une requête Exemple au format XML:

 <file type="request" format="token" version=”1”>
 ...
 </file>

Élément «File type» de la réponse

Champs

Format

Description

Le nom de la balise est file.

ANS20

Élément principal

type

ANS20

Doit valoir response

format

ANS20

Doit valoir token

version

ANS20

Doit valoir 1

Tableau 72 - Champs de l'élément «file type» d’une réponse

Exemple au format XML:

 <file type="response" format="token" version=”1”>
 ...
 </file>

Opération de tokenisation (panToToken)

Cette opération permet de remplacer un numéro de carte par un token afin de désensibiliser les informations cartes.

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

 

userId

Obligatoire

 

pan

Obligatoire

 

Tableau 73 - Champs de la requête panToToken

Exemple de requête pantoToken au format XML:

<panToToken <strong>recordSequence</strong>="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 l'opération

merchantId

 

responseCode

 

tokenPan

 

officeBatchResponseCode

 

Tableau 74 - Champs de la réponse à la requête panToToken

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

<panToToken <strong>recordSequence</strong>="1">
 <merchantId>012323232323231</merchantId>
 <responseCode>00</responseCode>
 <tokenPan>497899AcDEF57631</tokenPan>
 <officeBatchResponseCode>00</officeBatchResponseCode>
</panToToken>

Description du service de gestion de liste grise

Element»File type» de la demande

Champs

Presence O/F

Format

Description

balise: file.

O

ANS20

Élément principal

type

O

ANS20

Doit valoir request

format

O

ANS20

Doit valoir fraud

version

O

ANS20

Doit valoir 2

Tableau - Champs de l'élément «file type» d’une demande Exemple au format XML:

<file type="request" format="fraud" version=”2”>
	...
</file>

Élément «File type» de la réponse

Champs

Format

Description

balise: file.

ANS20

Élément principal

type

ANS20

Doit valoir response

format

ANS20

Doit valoir fraud

version

ANS20

Doit valoir 2

Tableau - Champs de l'élément «file type» d’une réponse Exemple au format XML:

<file type="response" format="fraud" version=”2”>
	...		
</file>

Opération ajout liste grise (AddToFraudList)

Cette opération permet d'ajouter un numéro de transaction (tid/tdate ou tref) à une liste fraude (liste grise).

Format de la demande addToGreyList

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

Champs

Présence O/F

Commentaires

balise : addToFraudList.

O

Nom de l'opération

recordSequence

O

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

O

 

fraudListReasonCode

F

 

fraudListType

O

 

fraudListLevel

O

 

fraudListElementType

O

 

fraudListElementValue

O

 

Tableau - Champs de la demande addToFraudList

Exemple de demande addToFraudList au format XML :

<addToFraudList recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <fraudListReasonCode>FRAUD</fraudListReasonCode>
      <fraudListType>CARD_LIST</fraudListType>
      <fraudListLevel>BLACK</fraudListLevel>
      <fraudListElementType>PAN</fraudListElementType>
      <fraudListElementValue>4975497549754975</fraudListElementValue>
</addToFraudList>

Format de la réponse à la demande addTofraudlist

La réponse contient tous les champs suivants :

Champs

Commentaires

balise: addToFraudList.

Nom de l'opération

merchantId

 

fraudListType

 

fraudListLevel

fraudListElementType

 

fraudListElementValue

 

officeBatchResponseCode

 

responseCode

 

Tableau - Champs de la réponse à la demande addToFraudList

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

Opération Supression liste grise (RemoveFromFraudList)

Cette opération permet de supprimer une liste de numéro de cartes ou de tokens d'une liste grise.

Format de la demande removeFromfraudList

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

Champs

Présence O/F

Commentaires

balise: removeFromFraudList.

O

Nom de l'opération

recordSequence

O

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

merchantId

O

 

fraudListType

O

 

fraudListLevel

O

 

fraudListElementType

O

 

fraudListElementValue

O

 

Tableau - Champs de la demande removeFromFraudList

Exemple de demande removeFromFraudList au format XML :

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

La réponse contient tous les champs suivants :

Champs

Commentaires

balise: removeFromFraudList.

Nom de l'opération

merchantId

 

fraudListType

 

fraudListLevel

 

fraudListElementType

 

fraudListElementValue

 

responseCode

 

officeBatchResponseCode

 

Tableau - Champs de la réponse à la demande removeFromFraudList Exemple de réponse au format XML à une demande 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>

Description du service «wallet»

Élément «File type» de la demande

Champs

Presence O/F

Format

Description

balise: file.

O

ANS20

Élément principal

type

O

ANS20

Doit valoir request

format

O

ANS20

Doit valoir wallet

version

O

ANS20

Doit valoir 2

Tableau - Champs de l'élément «file type» d’une demande Exemple au format XML:

<file type="request" format="wallet" version=”2”>
	...
</file>

Élément «File type» de la réponse

Champs

Format

Description

balise: file.

ANS20

Élément principal

type

ANS20

Doit valoir response

format

ANS20

Doit valoir wallet

version

ANS20

Doit valoir 2

Tableau - Champs de l'élément «file type» d’une réponse Exemple au format XML:

<file type="response" format="wallet" version=”2”>
	...		
</file>

Opération ajout de carte (AddCard)

Cette opération permet d'ajouter une carte à un portefeuille, lequel sera créé s'il n'existe pas.

Format de la demande addCard

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

Champs

Présence O/F

Commentaires

balise: addCard.

O

Nom de l'opération

recordSequence

O

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

merchantId

O

 

merchantWalletId

O

 

paymentMeanAlias

F

 

cardExpiryDate

O

 

cardNumber

O

 

Tableau - Champs de la demande addCard


Exemple de demande addCard au format XML :

<addCard recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my VISA</paymentMeanAlias>
      <cardExpiryDate>209910</cardExpiryDate>
      <cardNumber>4975497549754975</cardNumber>
</addCard>

Format de la réponse à la demande addCard

La réponse contient tous les champs suivants :

Champs

Commentaires

balise: addCard.

Nom de l'opération

merchantId

 

merchantWalletId

 

paymentMeanAlias

 

cardExpiryDate

 

maskedPan

 

paymentMeanId

 

officeBatchResponseCode

 

responseCode

 

walletCreationDateTime

 

Tableau - Champs de la réponse à la demande addCard

Exemple de réponse au format XML à une demande addCard :

<addCard recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my VISA</paymentMeanAlias>
      <cardExpiryDate>209910</cardExpiryDate>
      <maskedPan>4975.75</maskedPan>
      <paymentMeanId>2</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletCreationDateTime>2014-06-14T16:00:00+02:00</walletCreationDateTime >
</addCard >

Opération suppression moyen de paiement (DeletePaymentMean)

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

Format de la demande deletePaymentMean

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

Champs

Présence O/F

Commentaires

balise: deletePaymentMean.

O

Nom de l'opération

recordSequence

O

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

merchantId

O

 

merchantWalletId

O

 

paymentMeanId

O

 

Tableau - Champs de la demande deletePaymentMean


Exemple de demande deletePaymentMean au format XML :

<deletePaymentMean recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanId>4</paymentMeanId>
</deletePaymentMean>

Format de la réponse à la demande deletePaymentMean

La réponse contient tous les champs suivants :

Champs

Commentaires

balise: deletePaymentMean.

Nom de l'opération

merchantId

 

merchantWalletId

 

paymentMeanId

 

officeBatchResponseCode

 

responseCode

 

walletActionDateTime

 

Tableau - Champs de la réponse à la demande deletePaymentMean

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

Opération Mise à jour moyen de paiement (UpdatePaymentMean)

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

Format de la demande updatePaymentMean

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

Champs

Présence O/F

Commentaires

balise: updatePaymentMean.

O

Nom de l'opération

recordSequence

O

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

merchantId

O

 

merchantWalletId

O

 

paymentMeanId

O

 

paymentMeanAlias

F

 

Tableau - Champs de la demande updatePaymentMean

Exemple de demande updatePaymentMean au format XML :

<updatePaymentMean recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanId>4</paymentMeanId>
      <paymentMeanAlias>my SDD</paymentMeanAlias>
</updatePaymentMean>

Format de la réponse à la demande updatePaymentMean

La réponse contient tous les champs suivants :

Champs

Commentaires

balise: updatePaymentMean.

Nom de l'opération

merchantId

 

merchantWalletId

 

paymentMeanAlias

 

paymentMeanId

 

officeBatchResponseCode

 

responseCode

 

walletActionDateTime

 

Tableau - Champs de la réponse à la demande updatePaymentMean

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

Opération de suppression d'un wallet (signOff)

Cette opération permet d'effacer un portefeuille avec tous les moyens de paiement qu'il contient.

Format de la demande signOff

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

Champs

Présence O/F

Commentaires

balise: signOff.

O

Nom de l'opération

recordSequence

O

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

merchantId

O

 

merchantWalletId

O

 

Tableau - Champs de la demande signOff Exemple de demande signOff au format XML :

<signOff recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
</signOff>

Format de la réponse à la demande signOff

La réponse contient tous les champs suivants :

Champs

Commentaires

Le nom de la balise est signOff.

Nom de l'opération

merchantId

 

merchantWalletId

 

officeBatchResponseCode

 

responseCode

 

walletActionDateTime

 

Tableau - Champs de la réponse à la demande signOff

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

Annexes

Définition des schémas XML

Service gestion de caisse

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

Service Token

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

</xs:schema>
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:choice>
   </xs:complexType>
 </xs:element>
 <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:schema>

Service liste grise

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

Service Wallet

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