Initier un paiement

 

Envoyer une demande d'initiation de paiement unique en € 

 

➤ Contexte

Cet appel permet d'envoyer à la banque teneur de compte (ASPSP) d'un client d'une banque (PAO) une demande d'initiation de paiement venant débiter le compte du PAO pour créditer le compte de l'usager du service de paiement (PSU) pour lequel le Prestataire de service de paiement (PISP) est connecté.

Dans un premier temps, seule l'initiation de paiement unique en euros est acceptée dans nos traitements.

A la soumission de la requête, et si toutes les données sont correctement formatées, une réponse (HTPP 201) vous sera retournée.

 

➤ Prérequis

Pour procéder à cette requête il est nécessaire de remplir les prérequis d’éligibilité pour le rôle TPP "PISP" (voir la section "Eligibilité"), et d'avoir récupéré le jeton d'accès OAUTH2.

 

➤ Requête POST

Le point d'entrée dépendra du code établissement.

Vous devez insérer la même valeur du paramètre <cdetab> que celle utilisée pour le jeton d'accès.

Pour rappel, la liste de nos établissements et les valeurs possibles des <cdetab> sont précisées dans la section "Limitations", cf. extrait ci-dessous :

 

   Code établissement <cdetab>

  Nom de l'établissement

30007

 Natixis Corporate & Investment Banking (CIB)

   ex - Natixis Trade Treasury Solution (TTS)

    ex - Natixis Global Trade (GTB)

30021

 Natixis Corporate & Investment Banking (Sandbox only)

 

Nous avons par exemple :

 

 

➤ Paramètres obligatoires ou facultatifs du body

La structure du body et les champs obligatoires sont décrits dans la norme STET.

Les informations suivantes doivent être valorisées dans la requête comme suit :

  • La donnée serviceLevel doit être renseigné à SEPA
  • La donnée currency doit être renseignée à EUR (pas de virements en devises)
  • La donnée requestedExecutionDate doit être égale ou supérieure à la date du jour
  • La requête doit contenir une demande d'initiation pour un seul paiement
  • La donnée numberOfTransactions doit être valorisée à "1"
  • La donnée executionRule doit être valorisée à "FWNG--following" (exécution le premier jour ouvré suivant) pour préciser les corrections de date d'exécution des paiements, si la date de traitement tombe un week-end ou un jour fermé pour la banque
  • La donnée frequency ne doit pas être alimentée, les virements récurrents n'étant pas autorisés
  • La donnée localInstrument ne doit pas être valorisée, seuls les SCT étant acceptés pour le moment
  • Seuls les IBAN sont supportés pour les données "Iban", "debtorAccount" et "creditorAccount"
  • La donnée "successfullReportUrl" est obligatoire pour le mode d'authentification REDIRECT mis en oeuvre
  • Si la donnée "unsuccessfullReportUrl" n'est pas renseignée, c'est la donnée valorisée au niveau de "successfullReportUrl" qui sera utilisée
  • La donnée supplementaryData doit être alimentée avec la valeur "REDIRECT"
  • La donnée scaHint est ignorée pour l'instant => les exemptions d'AF ne seront pas possibles en 2020
  • Le format autorisé pour la donnée creationDateTime est le format ISO8601. Les trois expressions régulières autorisées sont 
    • YYYY-MM-DDTHH:MM:SS.SSS+HH:MM 
    • YYYY-MM-DDTHH:MM:SS.SSS+HHMM
    • YYYY-MM-DDTHH:MM:SS.SSS
    • Exemples :
      • 2019-11-12T00:00:00.000+02:00
      • 2019-11-12T00:00:00.000+0200
      • 2019-11-12T00:00:00.000



➤ Codes erreur

Type d'erreur

Code HTTP

Libellé

Motif

Générique, mauvaise structure

400

Bad request

error code : FF01
message : RJCT

Mauvais format du BIC

400

Bad request

error code : FF01
message : RJCT
error : le champ creditorAgent.bicFi bicFi-Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362

Mauvais format du serviceLevel

400

Bad request

error code : FF01
message : RJCT
error : value not one of declared Enum instance names: [SEPA, NURG]

Mauvais format, chargeBearer autre que SLEV

400

Bad request

error code: FF01
message: RJCT
error: value not one of declared Enum instance names: [SLEV]

Mauvais format du schemeName

400

Bad request

error code: FF01
message : RJCT
error : le champ creditor.privateId.schemeName schemeName-Possible values BANK,COID,SREN,DSRET,NIDN,OAUT,CPAN

Mauvais format du purpose 400 Bad request error code: FF01
message: RJCT
error: value not one of declared Enum instance names: [TRPT, CASH, CPKC, ACCT, COMC]

Mauvais format du categoryPurpose

400

Bad request

error code: FF01
message: RJCT
error: value not one of declared Enum instance names: [CASH, DVPM]

Mauvais jeton d'accès, problème d'authentification

403

Forbidden

Request resource inconnu

404

Not Found

Mauvaise requête ou requête hors périmètre autorisé

405

Method not allowed

Message générique

500

Internal server error

Requête en doublon

500

Internal server error

error : Problème d'insertion en base de donnée, clé unique dupliquée



➤ Exemple

Requête : POST /stet/psd2/v1.6.2/payment-requests

Body :

{
"creationDateTime": "2019-03-13T12:56:11.122Z",
"numberOfTransactions": 1,
  "paymentInformationId": "123456789ABCD",
  "paymentTypeInformation": {
    "categoryPurpose": "CASH",
    "instructionPriority": "HIGH",
    "serviceLevel": "SEPA",
                "localInstrument": "INST"
  },
  "purpose": "ACCT",
  "beneficiary" : {
    "creditor": {
      "name": "John Doe",
      "postalAddress": {
        "addressLine": [
          "10 rue de la Rue","75001 Paris"
        ],
        "country": "FR"
      },
      "privateId": {
        "identification": "12345678900",
        "issuer": "FR",
        "schemeName": "SREN"
      }
    },
    "creditorAccount": {
      "iban": "FR7613825002000800000123456"

   },

    "creditorAgent": {
      "bicFi": "CEPAFRPP670"
    },
    "id": "string",
    "isTrusted": false
                },
    "debtor": {
    "name": "Janette Rees",
    "postalAddress": {
      "addressLine": [
        "12 rue de la DSP2","75006 Paris"
      ],
      "country": "FR"
    },
    "privateId": {
      "identification": "1447114700",
      "issuer": "FR",
      "schemeName": "COID"
    }
  },
  "debtorAccount": {
    "iban": "FR353000799999A40166510BB25"
  },
  "debtorAgent": {
    "bicFi": "NATXFRPPXXX"
    },
    "initiatingParty": {
    "name": "Small Heath",
    "organisationId": {
      "identification": "00987654321",
      "issuer": "FR",
      "schemeName": "BANK"
    },
    "postalAddress": {
      "addressLine": [
        "92 rue de la Banque","75000 Paris"
      ],
      "country": "FR"
    }
  },
  "booking": false,
  "chargeBearer": "SLEV",
  "requestedExecutionDate": "2023-03-13T12:56:11.122Z",
  "creditTransferTransaction": [
    {
      "instructedAmount": {
        "amount": "100",
        "currency": "EUR"
      },
      "paymentId": {
        "endToEndId": "987654321DCBA",
        "instructionId": "DCBA987654321"
      },
      "regulatoryReportingCodes": [
        "string"
      ],
      "remittanceInformation": [
        "Life always finds a way"
      ]
                  }
  ],
  "supplementaryData": {
    "acceptedAuthenticationApproach": [
      "REDIRECT"
    ],
    "appliedAuthenticationApproach": "REDIRECT",
    "scaHint": "noScaExemption",
    "successfulReportUrl": "https://www.successful.fr",
    "unsuccessfulReportUrl": "https://www.unsuccessful.fr"
  }
}

 

Résultat : Status code HTTP 201 

 {
  "appliedAuthenticationApproach": "REDIRECT",
  "_links": {
    "consentApproval": {
      "href": "TPPPISPurlConsentApproval/psuId.html?resourceId=0000000180-1551358254000131359238543&nonce=Id-2ed9775ce61639e9a3c94ecc",
      "templated": null
    }
  }
}