Les bénéfices attendus

    Exploitons ensemble les possibilités offertes par l’ouverture des données de paiement de nos clients communs.

    Ce produit API AISP DSP2 vous permet d’accéder de façon sécurisée aux données des transactions des comptes de paiement des clients de tous les établissements du réseau Banque Populaire.

    Image
    Safe and secure

    Accès aux données sécurisé

    Accédez aux informations de compte de paiement des clients au travers d’un dispositif sécurisé et conforme à la réglementation.

    Image
    treasury

    Création de valeur

    Améliorez vos offres et produits pour mieux servir vos clients au travers de cas d’usage innovants.

     

    La connexion se fait au travers d’un dispositif sécurisé conforme aux exigences du régulateur européen. 
    En accédant à ce service d’information sur les comptes vos clients pourront consulter leurs informations de comptes de paiement au sein de votre environnement : liste des comptes, soldes, transactions (date, description et montant), etc. 
    Vous serez ainsi en mesure de renforcer la valeur ajoutée de vos produits / services pour servir vos clients au travers de cas d’usage innovants : consolidation des comptes, rapprochement comptable, enrichissement de la connaissance client, analyses et prévisions budgétaires, etc.

    Les différents cas d’usage possibles

    Ensemble, créons de la valeur pour nos clients communs.

    Consolidation

    Permettez à vos clients d’agréger leurs comptes de paiement afin de disposer d’une vision consolidée et en temps réel de leurs transactions.
     

    Réconciliation comptable

    Permettez à vos clients personnes morales de rapprocher leurs factures et dépenses professionnels avec leurs transactions de paiement.
     

    Connaissance client

    Comprenez et apprenez du comportement de paiement de vos clients particuliers ou personnes morales.
     

    Pilotage business

    Appuyez-vous sur les données de paiement clients pour construire des tableaux de bord de pilotage à forte valeur ajoutée.
     

    Comment accéder au produit ?

    Pour accéder à l'API Information sur Compte, les développeurs et les entreprises doivent suivre les étapes ci-dessous.

    • Prise de contact

      Prenez contact avec les Responsables Produit.

      Contactez-nous

    • Accès

      Enrôlez-vous directement depuis le processus dédié (acteurs régulés).

    • Intégration & Tests

      Intégrez le service dans votre solution et faites-nous part de vos cas d’usage pour assurer la qualité du service

    • Go Live !

    Documentation
    DSP2
    AIS
    déprécié

    Comment agréger les données

    Un client multi bancarisé souhaite accéder à l’ensemble de ses données afin d’en avoir une vision consolidée.

    Via cette API « information sur compte » mise à disposition par les teneurs de comptes, vous pouvez demander en temps réel l’accès à l’une et/ou l’autre des données que le client a autorisé SANS lui demander ses identifiants de connexion en ligne.

    Les ressources de cette API ne peuvent être consommées que si vous avez obtenu le rôle de prestataire de Services d’Information sur les Comptes (« TPP AISP »), ce prérequis étant décrit dans voir la rubrique « Éligibilité » .

    Le processus global est le suivant :

    Image
    Process global PISP

    Le client souhaite utiliser vos services afin de consolider des informations d’un ou plusieurs comptes de paiement détenus auprès de banques, dont l’une d’entre elles est le Crédit Coopératif. Il vous l’indique donc laquelle à travers vos interfaces.

    Lors de ce premier échange, vous allez faire une demande de jeton d’autorisation (et un jeton de rafraichissement). Le principe de base est, qu’en tant que TPP AISP, vous devez obtenir ces jetons AVANT de consommer des ressources de l’API. Ce jeton est généré par le teneur de compte (ASPSP) APRES avoir identifié et authentifié le client.

    En tant que teneur de compte :

    • nous allons vérifier vos certificats et agréments
    • et via le jeu de la redirection, nous allons identifier et authentifier fortement le client afin de pourvoir générer le jeton d’accès

    Si l’autorisation est accordée par le client, vous pourrez alors récupérer les jetons OAuth2 via des échanges sécurisés avec la plateforme BPCE API (voir la rubrique « Cas d'usage » > « Récupérer votre jeton » ).

    En présentant ce jeton d’autorisation, vous pourrez alors consommer les ressources de l’API « information sur compte » afin de :

    • demander la liste des comptes éligibles
    • nous transmettre le consentement client
    • accéder de manière sécurisée aux données dont l’accès a été autorisé (voir la rubrique « Vue d’ensemble » > « Comment consommer l’API ? » ).

    Au bout du délai réglementaire de 180 jours, ce processus devra être reconduit (voir la rubrique « Cas d'usage » > « Rafraîchir votre jeton »).

    NB : le gestionnaire de compte ASPSP a la possibilité de vous refuser l’accès pour différents motifs justifiés (API non conforme, compte bloqué entre-temps, etc.).

    Consommer l'API

    Afin d’interroger une API, la version de l’API inclut le numéro de version dans l’URI appelée, soit par exemple : /stet/psd2/v1.4.2/accounts.

    La description des services proposés ci-après n’est que purement fonctionnelle. Les aspects techniques sont répertoriés dans la rubrique « Cas d’usage » qui sont plus détaillées.

    Vous devez aussi être familier avec la terminologie DSP2 et les abréviations utilisées. Vous pouvez également utiliser la foire aux questions (FAQ).

    Pour rappel, il faudra que vous :

    • exécutiez une authentification mutuelle avec vos certificats
    • fassiez une demande de jeton d’accès (Oauth2) via le mode « redirection »
    • récupéreriez la liste des comptes courants
    • demandiez le consentement client et le transmettre au teneur de compte (ASPSP).

    Une fois fait, l’objectif de cette API concerne l’obtention d’informations consenties en fonction des choix du client sur son ou ses comptes de paiement :

    • le solde
    • et/ou l’historique des transactions
    • et/ou le nom et prénom du détenteur du compte
    • et/ou la liste des bénéficiaires de confiance

    Certains de ces services peuvent présenter des limitations : s’ils ne sont pas proposés via la banque à distance, ils ne le seront pas via cette API (voir la rubrique « Limitations » ), ce qui est le cas par exemple des deux derniers services listés ci-dessus.

    Dans l’environnement d’assemblage/sandbox, l’accès aux données de tests se fait via le point d’entrée www.<codetab>.sandbox.api.89C3.com (voir la rubrique « Comment tester l’API ? » ).

    Dans l’environnement de production, l’accès aux données de production se fait via le point d’entrée www.<codetab>.live.api.89C3.com (voir la rubrique « Limitations »).

     

    Obtenir la liste des comptes d’un client

    Description

    Ce premier appel permet de récupérer la liste des comptes du client usager d’un service de paiement (PSU) chez le teneur de compte (ASPSP) pour lequel le TPP (AISP) est connecté.

    Prérequis

    • Le TPP est présent dans le référentiel des tiers agréés avec un rôle d’AISP
    • Le TPP et le PSU sont liés à l’ASPSP par un contrat
    • Lors de cette étape, un jeton d’autorisation OAuth2 (ou token d’accès) a été délivré au TPP par l’ASPSP (voir le cas d’usage technique associé)
    • Le TPP et l’ASPSP se sont mutuellement contrôlés et authentifiés
    • Le TPP a fourni son jeton d’autorisation à l’ASPSP pour pouvoir consommer les ressources de cette API

    Echange de données

    Le TPP envoie une requête GET à l’ASPSP pour récupérer la liste des comptes du PSU. L’ASPSP obtient cette liste en retour et la présente au client afin que celui puisse choisir les comptes et données auxquels il autorise l’accès (voir le cas d’usage technique associé).

     

    Enregistrer le consentement d’un client (AISP)

    Description

    Cette seconde requête rendue obligatoire par le teneur de compte (ASPSP) permet de lui transmettre la liste des comptes et des données consenties afin qu’il puisse enregistrer ces informations du client (PSU) pour lequel le prestataire de service (AISP) est connecté.

    Ce consentement contient le détail des accès consentis par le PSU à l’AISP.

    Un enregistrement du consentement est donc réalisé pour un PSU donné, un AISP donné, une opération donnée et un compte donné.

    Chaque nouvel appel de l’AISP au service d’enregistrement du consentement pour un PSU donné, annulera et remplacera le consentement précédent le cas échéant.

    Par ailleurs, à la demande du PSU, le consentement pourra être modifié ultérieurement par type d’opération : par exemple, le consentement pour l’accès à l’historique des transactions peut être révoqué alors que le consentement pour les soldes reste actif.

    Le consentement est vérifié à chaque requête passée d’accès à ces informations.

    Prérequis

    Le TPP a présenté une première demande de récupération de la liste des comptes d’un PSU et les a présentés au client pour finaliser son consentement.

    Le PSU communique à l’AISP la liste des comptes et des fonctionnalités pour lesquels un consentement est donné.

    Echange de données

    L’AISP transmet ces informations à l’ASPS via une requête PUT en incluant la liste des comptes et des données consenties par le PSU (voir le cas d’usage technique associé).

     

    Obtenir le solde d’un compte

    Description

    Cet appel permet de récupérer le solde comptable (« CLBD » dans la norme STET) d’un compte du PSU pour lequel l’AISP est connecté.

    Prérequis

    Le TPP aura récupéré auparavant la liste des comptes disponibles pour le PSU et a transmis les informations consenties à l’ASPSP.

    Echange de données

    L’AISP sollicite l’ASPSP pour l’un des comptes consentis du PSU et demande le solde.

    L’ASPSP doit fournir au minimum le solde comptable du compte (voir le cas d’usage technique associé).

     

    Obtenir la liste des transactions d’un client

    Description

    Cet appel permet de récupérer la liste des opérations d’un compte du PSU pour lequel l’AISP est connecté.

    Les transactions obtenues sont inférieures ou égales à 90 jours par rapport à la date du jour.

    Prérequis

    Le TPP aura récupéré auparavant la liste des comptes disponibles pour le PSU et a transmis les informations consenties à l’ASPSP.

    Echange de données

    L’AISP sollicite l’ASPSP pour l’un des comptes à vue du PSU. Il peut fournir certains critères de sélection.

    L’ASPSP répond avec une liste de transactions correspondant à la requête (voir le cas d’usage technique associé).

     

    Récupérer l’identité du client

    Vous récupérez l’identité du PSU connecté via un accès à la méthode GET /end-user-identity (voir le cas d’usage technique associé).

    Utiliser le fallback

    Principe

    Conformément à la réglementation, les établissements du Groupe BPCE ont mis en place une interface dédiée aux prestataires de services de paiement : il s’agit des API REST DSP2 publiées.

    Si l’infrastructure de production « passerelle BPCE API Live » exposant les API DSP2 est défaillante, le prestataire des services de paiements pourra utiliser la solution couvrant les « mesures d’urgence applicables à une interface dédiée » (ou « fallback ») dont le principe est le suivant :

     

    Image
    Principe du fallback

     

    Cette solution répond aux exigences règlementaires de la DSP2 (article 33 des RTS). Vous pourrez l’utiliser avec les mêmes conditions et prérequis décrits dans la rubrique « Eligibilité ».

     

    Roadmap

    Retrouvez ci-dessous les éléments de notre trajectoire prévisionnelle :

    VersionFonctionnalités

    Sandbox

    Date de déploiement

    BPCE  API Dev Portal & Sandbox

    Live

    Date de déploiement

    BPCE Live API Gateway

    Toute version API DSP2Fallback (*)Non applicableFin Septembre 2019

    Exemple

    1. Dans le cas où les API DPS2 sont indisponible de façon imprévue ou le système tomberait en panne (voir critères dans le texte RTS Art. 33), le TPP peut alors envoyer la requête :

    POST https://www.17515.live.api.89c3.com/stet/psd2/oauth/token

    avec :

    • son certificat eIDAS QWAC de production
    • le paramètre header (fallback: »1″)
    Image
    example of header for the fallback

     

    POST /stet/psd2/oauth/token HTTP/1.1

    Content-Type: application/x-www-form-urlencoded

    X-Request-ID: 1234

    fallback: 1

    User-Agent: PostmanRuntime/7.16.3

    Accept: */*

    Cache-Control: no-cache

    Host: www.17515.live.api.caisse-epargne.fr

    Accept-Encoding: gzip, deflate

    Content-Length: 67

    Connection: keep-alive

    client_id=PSDFR-ACPR-12345&grant_type=client_credentials&scope=aisp

    2. Si les vérifications sont positives, nous allons vous renvoyer dans le header une url de type à utiliser dans le cadre de la redirection vers l’environnement de la banque en ligne, et qui contient un jeton JWT (champs « &fallback= ») qui doit être aussi utilisé dans ce cadre :

    HTTP/1.1 302 Found

    Date: Tue, 25 May 2021 21:46:59 GMT

    Location: https://www.caisse-epargne.fr/se-connecter/sso?service=dei&cdetab=17515&fallback=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImhF

    Content-Length: 870

    Connection: close

    Content-Type: text/html; charset=iso-8859-1

    </head><body>

    <h1>Found</h1>

    <p>The document has moved <a href= »/www.17515.live.api.caisse-epargne.fr&fallback=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImhF… »>here</a>.</p>

    </body></html>

     

    3. Une fois redirigé, le TPP doit utiliser ensuite les identifiants du PSU via sa méthode propriétaire

    Pour plus de détails sur la requête POST, voir spécifications STET 

     

    Limites

    Les contraintes de cette solution sont les suivantes :

    • Pas de réutilisation du contexte de l’interface dédiée, ni du jeton d’accès (valable 180 jours actuellement)
    • Seules les fonctionnalités DSP2 présentes sur la banque en ligne (référence: banque à distance sur internet fixe) sont accessibles via le fallback. Par exemple, les services de banque en ligne ne proposent pas de paiement e-commerce (cette fonctionnalité PISP n’est donc pas disponible en mode fallback)
    • Le client utilisateur des services (PSU) doit être connecté à l’application du TPP (pas de possibilité de traitement batch AISP pour venir récupérer les données consenties du client). La DSP2 imposant également un renforcement des moyens d’authentification forte (AF/SCA) systématique pour les accès à la banque à distance/en ligne, les moyens d’authentification fournis aux clients PSU seront utilisés (liste non exhaustive) :
      • Soft token Sécur’Pass
      • OTP SMS
      • Clé physique (pour les entreprises)

    Activer l'App2App

    Introduction

    Cette fonctionnalité permet d’activer automatiquement l’app bancaire du client à toutes fins d’identification et d’authentification.

     

    Prérequis

    Le client doit avoir chargé et utilisé au moins une fois la dernière version de l’application bancaire sur les magasins d’applications Android et Apple (version V6.4.0 et plus).

    Note : les segment clients PRO & ENT ne sont pas activés

    Le lien de retour (Universal link) doit être définie en avance par le TPP sur le même principe qu’une url de callback :

    • si ce lien / cette url a déjà été déclarée sur notre passerelle BPCE API, il n’y a rien d’autre à faire
    • sinon le TPP doit le déclarer en utilisant notre API Enregistrement DSP2

    Nos liens « Universal links » ont été déclarés sur les plateformes iOS et Android. Ce n’est pas la peine d’y accéder via par exemple https://www.<codetab>.live.api.caisse-epargne.fr/89C3api/accreditation/v2/.well-known/apple-app-site-association qui renverra une erreur.

     

    Requête

    L’activation de la fonctionnalité App2App s’effectuera en production via l’envoi d’une requête par l’app du TPP au format STET suivant :

    BrandApp2App endpoint
    Banque Palatinewww.40978.live.api.palatine.fr/stet/psd2/oauth/authorize
    Banque Populaire

    .live.api.banquepopulaire.fr/stet/psd2/oauth/authorize” >www.<codetab>.live.api.banquepopulaire.fr/stet/psd2/oauth/authorize

    (see <codetab> values on Banque Populaire API product data sheet)

    Banque de Savoiewww.10548.live.api.banque-de-savoie.fr/stet/psd2/oauth/authorize
    Caisse d'Epargne

    www.<codetab>.live.api.caisse-epargne.fr/stet/psd2/oauth/authorize

    (see <codetab> values on Caisse d’Epargne API product data sheet)

    Banque BCPwww.12579.live.api.banquebcp.fr/stet/psd2/oauth/authorize
    Crédit Coopératifwww.42559.live.api.credit-cooperatif.coop/stet/psd2/oauth/authorize
    BTP Banquewww.30258.live.api.btp-banque.fr/stet/psd2/oauth/authorize
    Natixis CIBwww.18919.live.api.natixis.com/stet/psd2/oauth/authorize

    Sinon, une webview sera affichée via le navigateur du smartphone du client dans les cas suivants :

    • si l’app bancaire n’est pas chargée sur le smartphone du client

    ou

    • si l’app bancaire chargée n’est pas compatible avec l’App2App (voir les prérequis)

    ou

     

    Publications réglementaires

     

    PériodeDocument
    Disponibilité des APIs DSP2 à dateTélécharger le document
    Statistiques T1 2025Télécharger le document
    Statistiques T4 2024Télécharger le document
    Statistiques T3 2024Télécharger le document
    Statistiques T2 2024Télécharger le document
    Statistiques T1 2024Télécharger le document
    Statistiques T4 2023Télécharger le document
    Statistiques T3 2023Télécharger le document
    Statistiques T2 2023Télécharger le document
    Statistiques T1 2023Télécharger le document
    Statistiques T4 2022Télécharger le document
    Statistiques T3 2022Télécharger le document
    Statistiques T2 2022Télécharger le document
    Statistiques T1 2022Télécharger le document
    Statistiques T4 2021Télécharger le document
    Statistiques T3 2021Télécharger le document
    Statistiques T2 2021Télécharger le document
    Statistiques T1 2021Télécharger le document
    Statistiques T4 2020Télécharger le document
    Statistiques T3 2020Télécharger le document
    Statistiques T2 2020Télécharger le document
    Statistiques T1 2020Télécharger le document

    Récupérer votre jeton

    L’accès aux API « information sur compte » ou « disponibilité des fonds » vous est autorisé via un jeton d’accès (access_token) qui peut être obtenu en appliquant le standard de place OAuth2.

     

    Cinématique de récupération du jeton d’autorisation

    1. Notre client (PSU) vous indique l’identité de son établissement de compte.

    2. Vous initiez la séquence de récupération du jeton d’accès OAuth2 en redirigeant le client (PSU), via son navigateur internet, vers l’infrastructure informatique d’autorisation de l’établissement teneur de compte (ASPSP) et en utilisant la commande : GET /authorize

    Voir aussi la spécification de place STET

    3. Le teneur de compte (ASPSP) va :

    • Identifier et authentifier son client par l’une des méthodes d’authentification forte qu’elle propose et qu’il présente au client ;
    • Effectuer des vérifications liées à votre profil en tant qu’AISP ou CBPII (validité de vos certificats QWAC et QSEALC et de votre rôle, non révocation de votre profil, etc.)

    4. Une fois ces vérifications effectuées et si elles sont concluantes, l’établissement bancaire va rediriger le client (PSU) vers votre site en utilisant votre URL de « call-back » (redirection) que vous nous aurez transmise lors du processus de « Go Live ».

    En effet, l’AISP doit préciser pour son APP consommatrice, une URL qui sera appelée par l’établissement bancaire :

    • Si le PSU a autorisé la récupération de ses données par l’AISP
    • Ou en cas de refus du consentement
    • Ou si la cinématique d’identification et d’authentification est interrompue à l’une de ses étapes (exemple : timeout sur l’écran d’identification ou sur l’écran d’authentification forte).

    Si le PSU vous a autorisé à récupérer ses données chez son teneur de compte, vous trouverez dans la réponse à cet appel un code à utilisation unique qui a une durée de vie courte.

    5. Via un appel de type POST /token, vous allez pouvoir alors demander directement au teneur de compte votre jeton d’accès OAuth2 (access_token) avec les éléments reçus précédemment dont le code à utilisation unique.

    NB : les requêtes /token du flow Authorization Code doivent être envoyée SANS le paramètre « scope ».

    Voir aussi la spécification de place STET

    6. L’établissement teneur de compte (ASPSP) va :

    • Effectuer des vérifications liées à votre profil en tant qu’AISP ou CBPII (validité des certificats et de votre agrément, non révocation de votre profil, etc.)
    • Vous identifier et vous authentifier en tant qu’AISP ou CBPII via votre certificat que vous mettrez à disposition pour sécuriser l’échange mutuel.

    7. Une fois ces vérifications effectuées et si elles sont concluantes, le teneur de compte va vous renvoyer une réponse HTTP200 (OK) contenant, entres autres, le jeton d’accès OAuth2 (access_token).

    Voir aussi la spécification de place STET 1.4.0.47 / Part I / section 3.4.3.2 / page 23 

    8. Dès que le jeton d’accès OAuth2 (access_token) délivré par la banque a été récupéré par vos soins, vous pourrez le présenter pour pouvoir consommer les ressources de l’API.

    Ce jeton est accompagné d’un refresh_token valable 180 jours que vous devez conserver. Lorsque votre access_token arrive à expiration, vous pouvez en redemander un nouveau en suivant la rubrique « Cas d'usage » > « Rafraîchir votre jeton ».

    Au bout de 180 jours votre refresh_token arrive à expiration. Pour en récupérer un nouveau, vous devrez reprendre cette cinématique« Récupérer votre jeton » et passer, de facto, par une nouvelle étape d’authentification forte du client auprès de son établissement bancaire (cf. point 3. ci-dessus).

    Pour plus de détails, voir aussi OAuth 2.0 Authorization Framework : https://tools.ietf.org/html/rfc6749#section-4.1

     

    Exemple

    Un exemple de requête est fourni dans la rubrique « Comment tester l’API ? » > « Assemblage sandbox ».

    Obtenir la liste des comptes

    Ce service permet :

    • de lister tous les comptes éligibles*
    • de récupérer les soldes des comptes
    • de récupérer les URI pour les méthodes GET /accounts/balances et GET /accounts/transactions
    • de récupérer l’URI pour la méthode GET /end-user-identity

    * : comptes de paiements actifs et accessibles en ligne, soit des comptes de dépôt pour les clients particuliers, et des comptes courants pour les professionnels et entreprises.

     

    Prérequis

    Pour procéder à cette requête il est nécessaire de remplir les prérequis d’éligibilité et d’avoir récupéré le jeton d’accès OAuth2 (voir la rubrique « Cas d'usage » > « Récupérer votre jeton »).

     

    Requête

    GET /accounts

    Voir aussi la spécification de place STET 

     

    Paramètres obligatoires ou facultatifs du body requis pour l’appel de ce service

    Aucun paramètre spécifique n’est requis pour l’appel de ce service.

     

    Résultat retourné

    En cas de première utilisation de cette requête (et donc si vous n’avez pas transmis au préalable d’information via la méthode PUT /consents), ou que tous les comptes consentis ont été révoqués suite au dernier appel à la méthode PUT /consents :

    • Cet appel vous permet de récupérer la liste de tous les comptes de notre client sans leurs soldes, sans les URI pour les méthodes GET /accounts/balancesGET /accounts/transactions et GET /end-user-identity

    Si vous avez transmis au préalable au moins un compte consenti par notre client via la méthode PUT /consents, et que tous les comptes consentis n’ont pas été révoqués suite au dernier appel à la méthode PUT /consents, alors :

    • Cet appel vous permet de récupérer la liste de tous les comptes consentis du client détenteur avec :
      • Leurs soldes si le compte fait parti de la liste « balances » transmise via la méthode PUT /consents
      • L’URI pour la méthode GET /accounts/balances si le compte fait parti de la liste « balances » transmise via la méthode PUT /consents
      • L’URI pour la méthode GET /accounts/transactions si le compte fait parti de la liste « transactions » transmise via la méthode PUT /consents
      • L’URI pour la méthode GET /accounts/end-user-identity si la rubrique « psuIdentity » a été alimentée avec la valeur TRUE via la méthode PUT /consents
    • Cet appel ne vous permet pas de récupérer les informations pour les comptes non consentis ou non éligibles.

    Un lien self sera également présent pour revenir à la page obtenue juste après exécution de la requête.

    Vos accès à cette méthode sont limités à 4 accès batch maximum par jour, pour un client donné. En revanche, le nombre d’accès n’est pas limité lorsque c’est le client connecté qui interroge directement ses comptes.

     

    Exemple

    Un exemple de requête est fourni dans la rubrique « Comment tester l’API ? » > « Assemblage sandbox » .

    Les jeux de données de tests sont décrits dans la rubrique « Comment tester l’API ? » > « Tester nos persona  » .

    Remarque :

    • Le champ « currency » a été déplacé au niveau de l’ »accountId« .

    Voir aussi la spécification de place STET 

     

    Tests d’acceptance

    Ces cas de tests ont pour objectif de vous permettre d’effectuer un minimum de tests afin de prendre en main cette API et d’y accéder depuis votre application.

    Ils devront être validés avant tout déploiement applicatif en production.

    Le scope OAuth2 = aisp sauf indication contraire.

     

    DESCRIPTION DU TESTJEU DE DONNÉES ET RÉSULTAT ATTENDU
    Récupération de toutes les transactions d’un PSU Sur un compte autorisé

    Persona : GEORGES

    Résultat : historique des transactions retourné

    Récupération des transactions sur un compte non authorisé (ou inconnu) d’un PSU

    Persona : LEA

    Résultat : HTTP code 404  – AccountId inconnu

    Requête HTTP avec un jeton d’accès non autorisé pour la ressource (scope erroné)

    Persona : LEA

    Prérequis : scope OAuth2 <> aisp

    Résultat : message d’erreur HTTP code 403 => accès à la ressource refusé

    Passage d’une mauvaise requête HTTP POST

    Persona : LEA

    Résultat : message d’erreur HTTP code 405  => méthode non autorisée

    Récupération des transactions avec le paramètre « dateFrom »

    Persona : GEORGES

    Résultat : historique des transactions retourné à partir de la date spécifiée en paramètre d’entrée

    Récupération des transactions avec le paramètre « dateTo »

    Persona : GEORGES

    Résultat : historique des transactions retourné jusqu’à la date spécifiée en paramètre d’entrée

    Récupération des transactions avec les paramètres « dateFrom » et « dateTo »

    Persona : GEORGES

    Résultat : historique des transactions retourné entre les dates spécifiées en paramètres d’entrée

    Récupération des transactions avec le champ optionnel « entryReference » vide

    Persona : GEORGES

    Résultat : historique des transactions retourné avec le champs spécifié vide

    Récupération des transactions avec le paramètre d’entrée « dateFrom » supérieur à 62 jours

    Persona : LEA

    Résultat : message d’erreur HTTP code 400

    Pas de transactions disponible

    Persona : CLAIRE / account FR7617515900000400358074026

    Résultat : message HTTP code 204

    Transmettre la liste des comptes

    Ce service obligatoire (via le « consentement mixte AISP » imposé) vous permet de transmettre à la banque (ASPSP) les comptes pour lesquels son détenteur (PSU) vous a consenti à consulter en détail les soldes et / ou les transactions.

     

    Prérequis

    Il est nécessaire de remplir les prérequis d’éligibilité et d’avoir récupéré le jeton d’accès OAuth2 (voir la rubrique « Cas d'usage » > « Récupérer votre jeton »).

    Vous pouvez récupérer la liste des comptes de paiements éligibles du client après avoir appelé une première fois la requête GET /accounts : vous y trouverez l’IBAN associé à chaque compte, c’est à dire « accountId »: {« iban »: » » }.

    Cependant, si vous connaissez déjà le ou les IBAN des comptes de paiements du client, vous pouvez nous les transmettre directement via la méthode PUT /consents.

    ATTENTION : tant que vous n’aurez pas communiqué au teneur de compte (ASPSP) au moins un compte consenti avec la méthode PUT /consents, ou si aucun compte n’est consenti, la méthode GET /accounts ne restituera pas les informations demandées mais uniquement la liste de tous les comptes courants (principe du « consentement mixte AISP »).

     

    Requête

    PUT /consents 

    Voir aussi la spécification de place STET

    Cet appel nous permettra d’enregistrer les comptes que notre client vous a consenti pour le rôle « AISP ». Notre client peut vous consentir 4 types d’accès :

    • « balances » => accès aux soldes d’un ou plusieurs comptes : le solde des comptes est accessible via la méthode GET /accounts/balances pour les comptes consentis uniquement
    • « transactions » => accès à l’historique des transactions d’un ou de plusieurs comptes : les transactions des comptes sont accessibles via la méthode GET /accounts/transactions pour les comptes consentis uniquement
    • « psuIdentity » => accès à l’identité de notre client (nom et prénom pour un client de type « particulier », ou la raison sociale pour une personne morale)
    • « trustedBeneficiaries » => accès à la liste des bénéficiaires de confiance : cette fonctionnalité n’est pas gérée dans la banque en ligne (quelque soit la valeur de ce champs true ou false, elle n’est donc pas prise en compte)

    Il est possible d’appeler plusieurs fois la méthode PUT /consents si notre client a modifié son consentement via votre intermédiaire : chaque nouvel appel de la méthode PUT /consents annule et remplace les consentements précédents.

    Le consentement enregistré du client est vérifié à chaque requête passée pour les méthodes GET /accountsGET /accounts/balances et GET /accounts/transactions.

    Par ailleurs, à la demande du client, le consentement pourra être modifié ultérieurement par type d’opération : par exemple, le consentement pour l’accès à l’historique des transactions peut être révoqué alors que le consentement pour les soldes reste actif.

    ATTENTION :

    • Si vous ne transmettez aucun compte via la méthode PUT /consents, alors que des comptes avaient été consentis via le dernier appel à cette méthode, cela signifie que le client a révoqué tous les comptes consentis
    • Si aucun compte n’est consenti ou si le client a révoqué tous les comptes consentis, la méthode GET /accounts vous permet de récupérer la liste de tous les comptes, mais l’accès au solde et à l’historique des transactions n’est pas/plus possible
    • La résultante est que, pour récupérer des nouveaux comptes, il faut envoyer un PUT /consents à vide au préalable

     

    Paramètres obligatoires ou facultatifs du body requis pour l’appel de ce service

    • balances : tableau obligatoire mais qui peut être vide : liste des comptes accessibles pour la fonctionnalité « soldes »
      ⇒ iban – obligatoire : Numéro de compte bancaire international (IBAN)
    • transactions : tableau obligatoire mais qui peut être vide : liste des comptes accessibles pour la fonctionnalité « transactions »
      ⇒ iban – obligatoire : Numéro de compte bancaire international (IBAN)
    • trustedBeneficiaries : obligatoire : valeur (true ou false) indiquant si l’accès à la liste des bénéficiaires de confiance est autorisé pour l’AISP par le client
    • psuIdentity : obligatoire : valeur (true ou false) indiquant si l’accès à l’identité du client (prénom, nom) est autorisé pour l’AISP par le client
    • Paramètre facultatif : PSU-IP-ADDRESS => à alimenter si le client est connecté

     

    Résultat retourné

    Status code « 201 – Created » lors de l’enregistrement du consentement

    Status code « 403 – Forbidden » en cas d’échec de l’enregistrement

     

    Exemple

    Un exemple de requête est fourni dans la rubrique « Comment tester l’API ? » > « Assemblage Sandbox ».

    Les jeux de données de tests sont décrits dans la rubrique « Comment tester l’API ? » > « Tester nos persona ».

    Voir aussi la spécification de place STET

     

    Tests d’acceptance

    Ces cas de tests ont pour objectif de vous permettre d’effectuer un minimum de tests afin de prendre en main cette API et d’y accéder depuis votre application.

    Ils devront être validés avant tout déploiement applicatif en production.

    Le scope OAuth2 = aisp sauf indication contraire.

    DESCRIPTION DU TESTJEU DE DONNÉES ET RÉSULTAT ATTENDU
    Enregistrement de données de consentement d’un client

    Persona : LEA

    Prérequis : scope OAuth2 = aisp

    Résultat : message d’erreur HTTP 201 => OK, consentement enregistré

    Passage d’une requête HTTP avec un jeton d’accès non autorisé pour la ressource (scope erroné)

    Persona : LEA

    Prérequis : scope OAuth2 <> aisp

    Résultat : message d’erreur HTTP 403 => accès à la ressource refusé

    Passage d’une requête HTTP POST

    Persona : LEA

    Prérequis : scope OAuth2 = aisp

    Résultat : message d’erreur HTTP 405 => méthode non autorisée

    Obtenir les soldes

    Ce service permet de lister les soldes d’un compte de paiement d’un client.

    Ce type de compte est soit un compte de dépôt pour les particuliers, soit un compte courant pour les professionnels et les personnes morales.

     

    Prérequis

    Pour récupérer le solde d’un compte :

    • L’IBAN du compte doit nous avoir été transmis dans la liste « balances » de la méthode PUT /consents et ne doit pas avoir été révoqué depuis (<=> pas d’annule et remplace via PUT /consents sans cet IBAN dans la liste « transactions »)
    • L’ »accountResourceId » permettant d’interroger cette méthode pour ce compte courant, est récupéré via le résultat de la requête GET /accounts dans la rubrique « resourceId » pour le compte correspondant à cet IBAN, c’est-à-dire tel que « accountId »: {« iban »: » » }
    • L’URI pour l’accès à cette méthode est donnée via la rubrique « _links »: {« balances »: »{« href »: …}} en résultat de la requête GET /accounts pour le « resourceId » du compte

     

    Requête

    Requête « GET /accounts/{accountResourceId}/balances »

    Voir aussi la spécification de place STET 

     

    Paramètres obligatoires ou facultatifs du body requis pour l’appel de ce service

    Paramètre accountResourceId : compte pour lequel on veut consulter le solde.

    Cette donnée correspond à la rubrique « resourceId » obtenue dans la page de résultat de la requête GET /accounts.

    Cet appel permet de récupérer la liste des soldes d’un compte du PSU (usager d’un service de paiement) pour lequel l’AISP (prestataire de service de paiement) est connecté.

    Ce service fait suite à la restitution de la liste des comptes d’un client : un identifiant de ressource correspondant à un compte doit être fourni pour obtenir la liste des soldes.

    Un seul type de solde sera retourné dans le cas d’un compte passé en paramètre : le solde Comptable (« CLBD » dans la norme STET).

    Il correspond au solde comptable en fin de période (fin de semaine, fin de mois, fin de trimestre, fin de semestre, fin d’année).

    Vos accès à cette méthode sont limités à 4 accès batch maximum par jour, pour un client et pour un compte.

    En revanche, lorsque c’est notre client connecté qui interroge directement ses comptes, le nombre d’accès n’est pas limité.

     

    Exemple

    Un exemple de requête est fourni dans la rubrique « Comment tester l’API ? » > « Assemblage sandbox ».

    Les jeux de données de tests sont décrits dans la rubrique « Comment tester l’API ? » > « Tester nos persona ».

    Voir aussi la spécification de place STET 

     

    Tests d’acceptance

    Ces cas de tests ont pour objectif de vous permettre d’effectuer un minimum de tests afin de prendre en main cette API et d’y accéder depuis votre application. Ils devront être validés avant tout déploiement applicatif en production.

    DESCRIPTION DU TESTJEU DE DONNÉES ET RÉSULTAT ATTENDU

    Récupération du solde d’un compte

    => Vérification du solde négatif

    Contexte de prise en charge du PSU = BY-AISP
    scope OAuth2 = aisp

    Persona : LEA

    Résultat : restitution du solde d’un compte de dépôt

    Récupération du solde liés à un compte inconnu

    => Un code HTTP 404 est renvoyé : compte inconnu

    Persona : Inconnu – 038-CPT30014684067

    Résultat : un message d’erreur HTTP 404 est retourné

    Requête HTTP avec un jeton d’accès non autorisé pour la ressource (scope erroné)

    => L’accès à la ressource est refusé : code HTTP 403

    Persona : LEA

    Résultat : un message d’erreur HTTP 403 est retourné

    Passage d’une requête HTTP POST

    => Un code HTTP 405 est renvoyé

    Persona : LEA

    Résultat : un message d’erreur HTTP 405 est retourné

    Récupération du solde d’un compte

    => Vérification du solde nul

    Contexte de prise en charge du PSU = BY-AISP
    scope OAuth2 = aisp

    Persona : CLAIRE – FR7617515900000400358074026

    Résultat : restitution du solde d’un compte de dépôt

    Récupération du solde d’un compte

    => Vérification du solde positif

    Contexte de prise en charge du PSU = BY-AISP
    scope OAuth2 = aisp

    Persona : CLAIRE – FR7617515900000800358074006

    Résultat : restitution du solde d’un compte de dépôt

    Obtenir les transactions

    Ce service permet de lister les transactions d’un compte de paiments éligible DSP2 du client.

    Le type de compte est soit un compte de dépôt pour les particuliers, soit un compte courant pour les professionnels et les personnes morales.

     

    Prérequis

    Pour récupérer les transactions d’un compte de dépôt ou d’un compte courant :

    • L’IBAN du compte doit nous avoir été transmis dans la liste « transactions » de la méthode PUT /consents et ne doit pas avoir été révoqué depuisATTENTION : pas d’annule et remplace via PUT /consents SANS cet IBAN dans la liste « transactions »
    • L’ »accountResourceId » permettant d’interroger cette méthode est récupéré via le résultat de la requête GET /accounts, rubrique « resourceId » pour le compte correspondant à cet IBAN, c’est-à-dire que « accountId » : {« iban »: »<IBAN du compte> »}
    • L’URI pour l’accès à cette méthode est donnée via la rubrique « _links » : {« transactions »: {« href »: …}} en résultat de la requête GET /accounts pour le « resourceId » du compte.

     

    Requête

    GET /account/{accoundResourceId}/transactions

    Voir aussi la spécification de place STET 

     

    Paramètres obligatoires ou facultatifs du body requis pour l’appel de ce service

    Paramètres obligatoires : accountResourceId => compte éligible DSP2 pour lequel on veut consulter les opérations.

    Paramètres facultatifs supportés:

    • dateFrom => date limite de début pour les transactions recherchées. Les transactions ayant une date d’imputation égale au paramètre dateFrom sont restituées dans le résultat
    • dateTo => date limite de fin pour les transactions recherchées. Les transactions ayant une date d’imputation égale au paramètre dateTo ne sont pas restituées dans le résultat.
    • PSU-IP-ADDRESS => à alimenter si le client est connecté

    Paramètres facultatifs non supportés :

    • entryReferenceFrom
    • entryReferenceTo

    Le format pour les données dateFrom et dateTo est l’ISO 8601 avec les trois expressions régulières autorisées qui sont :

    • YYYY-MM-DDTHH:MM:SS.SSS ou YYYY-MM-DDTHH:MM:SS.SSSZ
    • YYYY-MM-DDTHH:MM:SS.SSS+HHMM
    • YYYY-MM-DDTHH:MM:SS.SSS+HH:MM

     

    Résultat retourné

    Cet appel permet de récupérer la liste des opérations pour le compte passé en paramètre.

    La date des transactions obtenue est inférieure ou égale à 90 jours par rapport à la date du jour.

    Un lien « self » sera également présent pour revenir à la page obtenue juste après exécution de la requête.

    Vos accès à cette méthode sont limités à 4 accès batch maximum par jour, pour un client et pour un compte donné. En revanche, lorsque c’est notre client connecté qui interroge directement ses comptes, le nombre d’accès n’est pas limité.

    La donnée optionnelle STET entryReference a été ajoutée pour toutes les opérations sachant qu’elle est :

    • unique durant le cycle de vie de la transaction à débit différé (*)
    • identique avant et après imputation pour les opérations suivantes qui passeront du statut « OTHR » à « BOOK » :
      • carte à débit différé
      • virement différé (SEPA SCT Core)
      • prélèvement 

    (*) NB 1 : cette donnée sera identique pour toutes les échéances d’un même virement permanent

    NB 2 : les autres typologies d’opérations (par exemple les opérations de carte à débit immédiat, les virements immédiats, etc…) n’auront cette donnée qu’au statut « BOOK » sauf celles refusées

    Les longueurs et formats sont différents suivant le type d’opérations :

     

    typelongueurexemple
    Virement différé 25 caractères1310400000123480007081059
    Prélèvement 30 caractères131040000012342014185G10004997
    Carte à débit différé 40 caractères1310400000123420140720170000234978987654
    Autres opérations 40 caractères131040000012342021-02-08-09.33.46.621234

    La donnée optionnelle STET Bank Transaction Code (BTC) a été rajoutée seulement pour les segments clients PRO et ENT (= abonnés CE Net ou ayant souscrit une offre équivalente), par exemple pour le cas d’un virement SEPA SCT :

    « bankTransactionCode »: {

    « domain »: « PMNT »,

    « family »: « RCDT »,

    « subFamily »: « ESCT »,

    « code »: « 05 »,

    « issuer »: « SI MYSYS – Caisse d’Epargne »

    }

     

    Exemple

    Un exemple plus complet de requête est fourni dans la rubrique « Comment tester l’API ? » > « Assemblage sandbox ».

    Les jeux de données de tests sont décrits dans la rubrique « Comment tester l’API ? » > « Tester nos persona ».

    Voir aussi la spécification de place STET

     

    Tests d’acceptance

    Ces cas de tests ont pour objectif de vous permettre d’effectuer un minimum de tests afin de prendre en main cette API et d’y accéder depuis votre application.

    Ils devront être validés avant tout déploiement applicatif en production.

     

    DESCRIPTION DU TESTJEU DE DONNÉES ET RÉSULTAT ATTENDU

    Récupération de toutes les transactions d’un compte (< 90 jours)

     

    => Vérification transactions présentes dans le résultat de la requête

    Persona : LEA

    Prérequis : scope OAuth2 = aisp

    Résultat : message d’erreur HTTP 200 => OK
    Restitution des transactions du compte de dépôt

    Requête HTTP avec un jeton d’accès non autorisé pour la ressource (scope erroné, par exemple « extended_transaction_history » qui n’est pas géré par les Caisses d’Epargne)

    Persona : LEA

    Prérequis : scope OAuth2 <> aisp

    Résultat : message d’erreur HTTP 403 => accès à la ressource refus

    Passage d’une requête HTTP POST

    Persona : LEA

    Prérequis : scope OAuth2 = aisp

    Résultat : message d’erreur HTTP 405 => méthode non autorisée

    Récupérer la liste des transactions en précisant une date de début

     

    => Vérification que le filtre est bien appliqué

    Persona : LEA

    Prérequis : scope OAuth2 = aisp

    Résultat : message d’erreur HTTP 200 => OK

    Restitution des transactions ultérieures à la date donnée en entrée

    Récupérer la liste des transactions en précisant une date de fin et une référence d’incrément minimum pour l’identifiant technique

     

    => Vérification que le filtre est bien appliqué

    Persona : LEA

    Prérequis : scope OAuth2 = aisp

    Résultat : message d’erreur HTTP 200 => OK

    Restitution des transactions ayant un incrément supérieur à celui donné en entrée et une date inférieure à celle donnée en entrée

    Passage d’une requête pour avec une période de transactions demandée supérieure à 90 jours

    Persona : LEA

    Prérequis : scope OAuth2 = aisp

    Résultat : message d’erreur HTTP 400 => requête erronée, période non autorisée

    Passage d’une requête de récupération des transactions avec une date au format incorrect

    Persona : LEA

    Prérequis :  scope OAuth2 = aisp

    Résultat : message d’erreur HTTP 400 => requête erronée

    Obtenir l'identité du client

    Cas d’usage

    Ce service permet de récupérer l’identité d’un client qui vous a donné son consentement pour le faire.

     

    Prérequis

    Pour procéder à cette requête il est nécessaire de remplir les prérequis d’éligibilité et d’avoir récupéré le jeton d’accès OAuth2 (voir la rubrique « Cas d'usage » > « Récupérer votre jeton »).

    Pour récupérer l’identité d’un PSU :

    • L’autorisation de transmettre au TPP ces informations d’identité doit nous avoir été transmis via la valorisation à true de l’attribut « psuIdentity » de la méthode PUT /consents et ne doit pas avoir été révoqué depuis (c’est à dire pas d’annule et remplace via PUT /consents avec un attribut « psuIdentity » valorisé à false)
    • L’URI pour l’accès à cette méthode est donnée via la rubrique « _links« : {« endUserIdentity »: {« href »: …}} en résultat de la requête GET /accounts.

     

    Requête

    GET /end-user-identity

    Voir aussi la spécification de place STET 

     

    Paramètres obligatoires ou facultatifs du body requis pour l’appel de ce service

    Paramètres obligatoires : PSU-IP-ADDRESS => à alimenter si le PSU est connecté.

     

    Résultat retourné

    Cet appel permet de récupérer l’identité du client final.

    Un lien self sera également pour revenir à la page obtenue après exécution de la requête.

    Vos accès à cette méthode sont limités à 4 accès batch maximum par jour calendaire, pour un client. En revanche, lorsque c’est le client connecté qui interroge directement ses comptes à vue, le nombre d’accès n’est pas limité.

     

    Exemple

    Requête

    GET /stet/psd2/v1.4.2/end-user-identity

    Un exemple plus complet de requête est fourni dans la rubrique « Comment tester l’API ? » > « Assemblage sandbox ».

    Voir aussi la spécification de place STET

    Rafraîchir votre jeton

    Principe

    Les jetons OAuth2 ayant une durée de vie limitée, il vous est nécessaire d’en demander le rafraîchissement avant son expiration.

     

    Règles de base

    Le teneur de compte (ASPSP) dispose au plus d’un jeton d’accès (access_token) et d’un jeton de rafraîchissement (refresh_token) valides par triplet client PSU / TPP / rôle AISP ou CBPII.

    • Le jeton d’accès a une durée de validité courte (de l’ordre d’une heure max) sur un périphérique ou une application de notre client
    • Le jeton de rafraîchissement a une durée de vie de 180 jours
    • Le jeton de rafraîchissement et le jeton d’accès doivent pouvoir être révoqués à tout moment
    • Si le jeton d’accès est révoqué alors le jeton de rafraîchissement doit l’être aussi et réciproquement

     

    Cinématique du rafraîchissement de votre jeton d’accès (access_token)

    1. Vous demandez le renouvellement du jeton d’accès auprès de l’ASPSP

    2. L’ASPSP initie le renouvellement du jeton d’accès

    3. L’ASPSP récupère le certificat du TPP auprès du référentiel de place

    4. L’ASPSP contrôle la validité et la non révocation du certificat présenté

    5. L’ASPSP contrôle la date de la dernière authentification (< 180 jours)

    6. L’ASPSP vous transmet le nouveau jeton d’accès et l’ancien jeton de rafraîchissement

    7. Vous stockez le jeton d’autorisation et l’ancien jeton de rafraîchissement de façon sûre

    8. L’ASPSP invalide l’ancien jeton d’autorisation

     

    Révocation des jetons

    Une révocation des jetons d’accès (valable 180 jours) est possible avant l’expiration du jeton, voir la spécification STET V1.4.2 / partie 1 « Framework » / paragraphe 3.4.2.8  « Refresh token revocation ».

     

    Exemple

    Un exemple de requête est fourni dans la rubrique « Comment tester l’API ? » > « Assemblage sandbox ».

    Assemblage sandbox

    Introduction

    La sandbox BPCE API peut être utilisée de 2 manières directement via votre application : c’est le mode assemblage décrit ci-après

    Les données utilisées sont fictives (voir la rubrique « Comment tester l’API ? » > « Tester nos persona »). Elles permettront de choisir des profils spécifiques de façon à mieux cibler vos tests.

     

    Prérequis

    Vous devez déclarer votre APP sur le portail BPCE API (menu « Mes applications » ) et nous transmettre :

    • votre identifiant fourni par votre autorité compétente (Organization Identifier = OID)
    • les clés publiques de vos certificats QWAC et QSEALC (jeu de certificats de production dédié aux tests)
    • votre uri de redirection (redirect_uri) qui sera appelée par l’ASPSP :
      • si le PSU a autorisé la récupération de ses données par l’AISP
      • ou en cas de refus du consentement
      • ou si la cinématique ci-dessous est interrompue (par exemple : timeout sur les écrans)

    Rappel : vous devez être accrédité pour le rôle « AISP ».

     

    Enchaînement des étapes pour tester l’accès à l’API AISP depuis votre APP

    1ère étape : demande de jeton d’accès

    Ceci est nécessaire afin d’obtenir un jeton d’accès à toutes fins de consommer les ressources de l’API, et permet de déclencher la redirection du PSU chez l’ASPSP.

    La description de la fonctionnalité est décrite dans la rubrique « Cas d'usage » > « Récupérer votre jeton ».

    NB : Le PSU peut domicilier ses comptes dans plusieurs banques du Groupe BPCE. Il vous faudra un jeton différent pour accéder à chacune de ces banques –> cet appel est donc à répéter pour chacun des établissements concernés.

    Notre point d’entrée dépend du code établissement www.<cdetab>.sandbox.api.89C3.com , et pour l’assemblage sandbox, le seul <cdetab> est fixé à 17515 (Caisse d’Epargne Ile de France).

    Exemple de requête en assemblage sandbox :

    GET https://www.17515.sandbox.api.89C3.com/stet/psd2/oauth/authorize

    Headers :

    Content-Type:application/x-www-form-urlencoded; charset=utf-8

    Params:

    response_type:code

    client_id:PSDFR-ACPR-13807

    redirect_uri:https://myAPP.fr/Home/OAuth2Callback

    scope:aisp

    Remarque sur l’alimentation des champs :
     

    • client_id: identifiant fourni par votre autorité nationale compétente (PSDXX-YYYY-ZZZZZ)
    • redirect_uri: URL de redirection prédéclarée dans votre application consommatrice ET à communiquer à l’ASPSP pour toute une demande d’assemblage ou de Go Live

     

    2ème étape : redirection vers les écrans d’authentification forte (AF/SCA)

    Une fois redirigé vers l’ASPSP, celui-ci va afficher des écrans d’identification et d’authentification au PSU.

    La cinématique nominale des enchaînements de ces écrans est résumée par le schéma ci-dessous :

    Image
    Cinématique nominale des enchaînements des écrans d’identification et d’authentification forte

     

    1. Le PSU est redirigé vers un écran d’identification proposé par ASPSP.

    L’identifiant banque à distance du PSU est à saisir :

    Image
    example of connexion page

    NB : si le PSU est un professionnel ou une entreprise, il y aura un numéro d’usager à saisir en sus de l’identifiant banque à distance.

    2. Le PSU se voit afficher alors un écran d’authentification forte proposé par l’ASPSP pour valider son identité.

    La cinématique dépend aussi de la méthode d’authentification forte (AF/SCA) mise à disposition par l’ASPSP (exemple d’un OTP par SMS, voir exemple ci-dessous) :

    Image
    example of screen with SMS OTP

    ou pour la sandbox

    Image
    first authentication screen with SMS number

    NB : Dans certains cas, une notification peut être envoyée vers le PSU afin qu’il active son moyen d’AF/SCA sur son smartphone pour terminer cette étape :

    Image
    Confirmation page that the authentication is done

     

    3ème étape : récupération du jeton d’accès / access_token

    Cet appel permet à l’AISP de récupérer le jeton d’accès pour pouvoir accéder aux données.

    La description de la fonctionnalité est décrite dans la rubrique « Cas d'usage » > « Récupérez votre jeton ».

    Le certificat QWAC est à fournir dans cette requête POST /stet/psd2/oauth/token pour établir l’authentification mutuelle avec l’ASPSP. Le certificat doit correspondre à celui-ci que le PSP a fourni:

    • lors de l’étape goAssemblage (resp. goLive en production) si le TPP a été enregistré par la procédure via le portail BPCE API
    • ou via l’API Enregistrement DSP2 si le TPP (auto-enrôlement automatisé)

    Si le client a autorisé le TPP à récupérer ses données pour un établissement, vous trouverez dans la réponse à l’appel précédent, le code à utilisation unique qui permet de récupérer un access_token. Cet access_token est valable 1h et est un prérequis pour chaque accès à l’une des méthodes de l’API d’information sur compte. La description de la fonctionnalité et des champs de la requête est décrite dans le cas d’usage « Récupérer votre jeton » .Ce jeton est accompagné d’un refresh_token valable 180 jours que vous devez conserver. Lorsque votre access_token arrive à expiration, vous pouvez en redemander un nouveau en suivant la cinématique « Rafraîchir votre acces_token » ci-après.

    Au bout de 180 jours votre refresh_token arrive à expiration. Pour en récupérer un nouveau, vous devez reprendre la cinématique « Récupérer un jeton d’accès  » et passer par une nouvelle étape d’authentification forte du client auprès de l’établissement bancaire.

    Exemple de requête en assemblage sandbox :

    POST https://www.17515.sandbox.api.89C3.com/stet/psd2/oauth/token

    Header:

    Content-Type:application/x-www-form-urlencoded; charset=utf-8

    Params:

    client_id:PSDFR-ACPR-13807

    grant_type:authorization_code

    code:NnZx1hqHY2CLkCFjiTwhJeflgFedCBa

    redirect_uri:https://myAPP.fr/Home/OAuth2Callback

    Remarques sur l’alimentation des champs :

    • client_id : numéro donné par votre autorité compétente lors de votre demande d’agrément (PSDXX-YYYY-ZZZZZ)
    • code : récupéré dans l’url de callback
    • redirect_uri : il faut que cette « redirect_uri » soit identique à celle envoyée dans la requête GET /authorize !!!
    • le certificat eiDAS QWAC doit être envoyé avec cette requête

    Réponse :

    {

       « access_token »:« KXZyspFBZ1R6NqWQdmsZhfdo1nbjK7MoI0Kr2rSi1mSCFNehAbCdEf »,
    « token_type »:« Bearer »,
    « expires_in »:3600,
    « scope »:« aisp »,
    « refresh_token »:« KUZyspFBZ1R6NqWQdmsZhfdo1nbjK7MoD0Kr2rSi1mSCFNewRfrsH »

    }

     

    4ème étape : consommation des méthodes de l’API

    1) Obtenir la liste des comptes à vue d’un PSU

    Une fois le jeton d’accès récupéré après l’authentification forte du PSU, cet appel vous permet de lister les comptes du PSU connecté lors de la première connexion.

    La description de la fonctionnalité est décrite dans le cas d’usage « Obtenir la liste des comptes », notamment sur la pemière utilisation de cette méthode avant un PUT /consents.

    La séquence est :

    1. GET /accounts pour récupérer les comptes sans les soldes et sans les links vers les soldes et transactions
    2. affichage des comptes au client par le TPP pour récupérer son consentement
    3. PUT /consents pour transmettre le consentement sur les comptes
    4. GET /accounts pour récupérer les comptes consentis et les links vers le solde (si donnée consentie) et/ou vers les transactions (si données consenties)

    Exemple de requête en assemblage sandbox SANS PUT /Consent au préalable:

    GET https://www.17515.sandbox.api.89C3.com/stet/psd2/v1.4.2/accounts

    Header :

    Authorization: Bearer KXZyspFBZ1R6NqWQdmsZhfdo1nbjK7MoI0Kr2rSi1mSCFNehAbCdEf

    X-Request-ID: id-1234567890111121 1 

    Signature: keyId=\ »https://<www.myUrlPath.to>/myQsealCertificate_‎<empreinte sha256>\ », algorithm=\ »rsa-sha256\ », headers=\ »(request-target) psu-ip-address psu-ip-port psu-http-method psu-date psu-user-agent psu-referer psu-accept psu-accept-charset psu-accept-encoding psu-accept-language digest\ », signature=\ »LbkxgICM48J6KdWNaF9qT7OWEorNlAwWNo6R+KkP7cP4TIGkk8wxcsGQXJ9ZnC+ZiA8mjL5S8WQyL41M7iPt+vJX4xh679gdGwmlKzn7E+ZtZ1I4qalRxcdLp4gBL7fll+C2lVBNJrViMJBezFK7AYVjnSWH7t1QiMViAmthebEst=\ »

    Psu-IP-Address:192.168.0.1

    Pas de corps de requête

    Remarques sur l’alimentation des champs :

    • Authorization : Bearer < access_token précédemment récupéré>
    • X-Request-ID : <en-tête de corrélation de la requête émise>
    • Signature : <signature de la requête émise>
    • Psu-Ip-Address => permet de différencier les appels batch et les appels avec le PSU connecté : ce champ est à alimenter pour un PSU connecté

    Réponse : 200 (=> OK)

    Header :

    X-request-id:id-1234567890111121 1

    Body :

    {

       « _links »:{

          « self »:{

             « templated »:false,
    « href »:« /stet/psd2/v1.4.2/accounts »
     

       }

     

    },
    « accounts »:[

          {

    « cashAccountType »:« CACC »,
    « accountId »:{

     

                « iban »:« FR7617515000920400430518020 »
     

    },
    « usage »:« PRIV »,
    « psuStatus »:« Account Holder »,
    « name »:« LEA SANDBOXA »,
    « currency »:« EUR »

     

    },
    {

    « cashAccountType »:« CACC »,
    « accountId »:{

     

                « iban »:« FR7617515000920400851811524 »

     

    },
    « usage »:« PRIV »,
    « psuStatus »:« Account Holder »,
    « name »:« LEA SANDBOXA »,
    « currency »:« EUR »

    }

    ]

    }

     

    Exemple de requête en assemblage sandbox AVEC la méthode PUT /Consent au préalable:

    GET https://www.17515.sandbox.api.89C3.com/stet/psd2/v1.4.2/accounts

    Header :

    Authorization: Bearer KXZyspFBZ1R6NqWQdmsZhfdo1nbjK7MoI0Kr2rSi1mSCFNehAbCdEf

    X-Request-ID: id-1234567890111121 1 

    SignaturekeyId=\ »https://<www.myUrlPath.to>/myQsealCertificate_‎<empreinte sha256>\ », algorithm=\ »rsa-sha256\ », headers=\ »(request-target) psu-ip-address psu-ip-port psu-http-method psu-date psu-user-agent psu-referer psu-accept psu-accept-charset psu-accept-encoding psu-accept-language digest\ », signature=\ »LbkxgICM48J6KdWNaF9qT7OWEorNlAwWNo6R+KkP7cP4TIGkk8wxcsGQXJ9ZnC+ZiA8mjL5S8WQyL41M7iPt+vJX4xh679gdGwmlKzn7E+ZtZ1I4qalRxcdLp4gBL7fll+C2lVBNJrViMJBezFK7AYVjnSWH7t1QxinDocH1ne=\ »

    Psu-IP-Address:192.168.0.1

    Pas de corps de requête

    Remarques sur l’alimentation des champs :

    • Authorization : Bearer < access_token précédemment récupéré>
    • X-Request-ID : <en-tête de corrélation de la requête émise>
    • Signature : <signature de la requête émise>
    • Psu-Ip-Address => permet de différencier les appels batch et les appels avec le PSU connecté : ce champ est à alimenter pour un PSU connecté

    Réponse : 200 (=> OK)

    Header :

    X-request-id:id-1234567890111121 1

    Body :

    {

       « _links »:{

          « self »:{

             « templated »:false,
    « href »:« /stet/psd2/v1.4.2/accounts »
     

    }

     

    },
    « accounts »:[

     {

    « cashAccountType »:« CACC »,
    « accountId »:{

     

                « iban »:« FR7617515000920400430518020 »

    },
    « resourceId »: »175150009204004305180″,
    « _links »:{

                « balances »:{

                   « templated »:false,
    « href »:« /stet/psd2/v1.4.2/accounts/175150009204987654321/balances »

    },
    « transactions »:{

                   « templated »:true,
    « href »:« /stet/psd2/v1.4.2/accounts/175150009204987654321/transactions »

    }

     

    },
    « usage »:« PRIV »,
    « psuStatus »:« Account Holder »,
    « name »:« LEA SANDBOXA »,
    « currency »:« EUR »

    },
    {
     

    « cashAccountType »:« CACC »,
    « accountId »:{

     

                « iban »:« FR7617515000920400851811524 »

    },
    « resourceId »: »175150009204008518115″,
    « _links »:{

                « balances »:{

                   « templated »:false,
    « href »:« /stet/psd2/v1.4.2/accounts/175150009204897654312/balances »

    },
    « transactions »:{

                   « templated »:true,
    « href »:« /stet/psd2/v1.4.2/accounts/175150009204897654312/transactions »

    }

     

    },
    « usage »:« PRIV »,
    « psuStatus »:« Account Holder »,
    « name »:« LEA SANDBOXA »,
    « currency »:« EUR »

    }

    ]

    }

    2) Transmettre la liste des comptes consentis par le PSU
     

    Cet appel vous permet de transmettre à l’ASPSP la liste des comptes consentis par le PSU.

    La description de la fonctionnalité est décrite dans le cas d’usage « Transmettre la liste des comptes ».

    Exemple de requête en assemblage sandbox :

    PUT https://www.17515.sandbox.api.89C3.com/stet/psd2/v1.4.2/consents

    Headers :

    Authorization: Bearer KXZyspFBZ1R6NqWQdmsZhfdo1nbjK7MoI0Kr2rSi1mSCFNehAbCdEf

    X-Request-ID: id-1234567890111121 2

    Signature: keyId=\ »https://<www.myUrlPath.to>/myQsealCertificate_‎<empreinte sha256>\ »,algorithm=\ »rsa-sha256\ »,headers=\ »(request-target) psu-ip-address psu-ip-port psu-http-method psu-date psu-user-agent psu-referer psu-accept psu-accept-charset psu-accept-encoding psu-accept-language digest\ »,signature=\ »LbkxgICM48J6KdWNaF9qT7OWEorNlAwWNo6R+KkP7cP4TIGkk8wxcsGQXJ9ZnC+ZiA8mjL5S8WQyL41M7iPt+vJX4xh679gdGwmlKzn7E+ZtZ1I4qalRxcdLp4gBL7fll+C2lVBNJrViMJBezFK7AYVjnSWH7t1QinCept10n=\ »

    Psu-IP-Address:192.168.0.1

    Body :
    {

       « balances »:[

          {

             « iban »:« FR76175150009204987654321 »
     

    },
    {

             « iban »:« FR76175150009204897654312 »

    }

    ],
    « transactions »:[

          {

             « iban »:« FR76175150009204987654321 »

    },
    {

             « iban »:« FR76175150009204897654312 »

    }

     

    ],
    « trustedBeneficiaries »:false,
    « psuIdentity »:false

    }

     

    Réponse : 201 (=> created)

    Headers :

    X-Request-ID : id-1234567890111121 2

    Pas de body 

    3) Obtenir le solde

    Cet appel vous permet d’obtenir le solde d’un compte consenti.

    La description de la fonctionnalité est décrite dans le cas d’usage « Obtenir les soldes d’un compte », et cette information n’est remontée que si un consentement PSU a été reçu au préalable par l’ASPSP via la méthode PUT /consents.

     

    Exemple de requête en assemblage sandbox avec un {accountResourceId} = numéro de compte ciblé :

    GET https://www.17515.sandbox.api.89C3.com/stet/psd2/v1.4.2/accounts/175150009204004305180/balances

    Headers :

    Authorization: Bearer KXZyspFBZ1R6NqWQdmsZhfdo1nbjK7MoI0Kr2rSi1mSCFNehAbCdEf

    X-Request-ID: id-1234567890111121 2

    Signature: keyId=\ »https://<www.myUrlPath.to>/myQsealCertificate_‎<empreinte sha256>\« ,algorithm=\ »rsa-sha256\ »,headers=\ »(request-target) psu-ip-address psu-ip-port psu-http-method psu-date psu-user-agent psu-referer psu-accept psu-accept-charset psu-accept-encoding psu-accept-language digest\ »,signature=\ »LbkxgICM48J6KdWNaF9qT7OWEorNlAwWNo6R+KkP7cP4TIGkk8wxcsGQXJ9ZnC+ZiA8mjL5S8WQyL41M7iPt+vJX4xh679gdGwmlKzn7E+ZtZ1I4qalRxcdLp4gBL7fll+C2lVBNJrViMJBezFK7AYVjnSWH7t1Qincept10n=\ »

    Réponse :

    200 OK

    Headers :

    X-Request-ID:id-1234567890111121 2

    Body :

    {

    « balances »: [

    {

    « balanceType »: « CLBD »,

    « name »: « Solde comptable au 28/09/2018 »,

    « balanceAmount »: {

    « amount »: « -150.00 »,

    « currency »: « EUR »

    }

    }

    ],

    « _links »: {

    « self »: {

    « templated »: false,

    « href »: « /stet/psd2/v1.4.2/accounts/175150009204987654321/balances »

    },

    },

    « parent-list »: {

    « templated »: false,

    « href »: « /stet/psd2/v1.4.2/accounts »

    }

    }

    }

    4) Obtenir les transactions

    Cet appel vous permet d’obtenir les transactions d’un compte consenti.

    La description de la fonctionnalité est décrite dans le cas d’usage « Obtenez les transactions », et ces informations ne sont remontéee que si un consentement PSU a été reçu au préalable par l’ASPSP via la méthode PUT /consents.

    Exemple de requête en assemblage sandbox avec un {accountResourceId} = numéro de compte ciblé :

    GET https://www.17515.sandbox.api.89C3.com/stet/psd2/v1.4.2/accounts/175150009204004305180/transactions

    Headers :

    Authorization: Bearer KXZyspFBZ1R6NqWQdmsZhfdo1nbjK7MoI0Kr2rSi1mSCFNehAbCdEf

    X-Request-ID: id-1234567890111121 1

    Signature: keyId=\ »https://<www.myUrlPath.to>/myQsealCertificate_‎<empreinte sha256>\« ,algorithm=\ »rsa-sha256\ »,headers=\ »(request-target) psu-ip-address psu-ip-port psu-http-method psu-date psu-user-agent psu-referer psu-accept psu-accept-charset psu-accept-encoding psu-accept-language digest\ »,signature=\ »LbkxgICM48J6KdWNaF9qT7OWEorNlAwWNo6R+KkP7cP4TIGkk8wxcsGQXJ9ZnC+ZiA8mjL5S8WQyL41M7iPt+vJX4xh679gdGwmlKzn7E+ZtZ1I4qalRxcdLp4gBL7fll+C2lVBNJrViMJBezFK7AYVjnSWH7t1T0tOtuTuT1ti=\ »

    Psu-IP-Address:192.168.0.1

    Pas de body

    Réponse : 200 (=> OK)

    Headers :

     X-Request-ID : id-1234567890111121 1

    Body :

    {

       « _links »:{

          « balances »:{

             « templated »:false,
    « href »:« /stet/psd2/v1.4.2/accounts/175150009204987654321/balances »

    },
    « self »:{

             « templated »:true,
    « href »:« /stet/psd2/v1.4.2/accounts/175150009204987654321/transactions »

    },
    « parent-list »:{

             « templated »:false,
    « href »:« /stet/psd2/v1.4.2/accounts »

    }

    },
    « transactions »:{

     

    « resourceId »:null,
    « remittanceInformation »:[

     

                « Retrait Carte »
     

    ],
    « entryReference »: »751040043051802019-09-08-05.33.46.621234″,

    « transactionAmount »:{

    « amount »:« 13.00 »,
    « currency »:« EUR »

     

    },

    « bookingDate »:« 2019-09-05 »,
    « creditDebitIndicator »:« DBIT »,
    « status »:« BOOK »

    }

     

    }

    5) Obtenir l’identité du client

    Cet appel vous permet d’obtenir l’identité du PSU connecté (qui n’est pas forcément le client possédant le compte).

    La description de la fonctionnalité est décrite dans le cas d’usage « Obtenir l’identité du client », et cette information n’est remontée que si un consentement PSU a été reçu au préalable par l’ASPSP via la méthode PUT /consents.

     

    Exemple de requête en assemblage sandbox :

    GET https://www.17515.sandbox.api.89C3.com/stet/psd2/v1.4.2/end-user-identity

    6) Rafraîchir le jeton d’accès

    Cet appel vous permet de rafraichir le jeton d’accès avec le refresh-token.

    La description de la fonctionnalité est décrite dans la rubrique « Cas d'usage » > « Rafraîchir votre jeton ». 

     

    Exemple de requête en assemblage sandbox :

    POST https://www.17515.sandbox.api.89C3.com/stet/psd2/oauth/token

     

    Header : 

    Content-Type : application/x-www-form-urlencoded; charset=utf-8

    Params:

    client_id:PSDFR-ACPR-13807

    grant_type:refresh_token

    refresh_token:KUZyspFBZ1R6NqWQdmsZhfdo1nbjK7MoD0Kr2rSi1mSCFNehAbCdEf

     

    Réponse : 

    {

       « access_token »:« 4s2Bt3MRL7nlPUZcRTPe5Tjs0v8p7ZOXOyEKs1juYesR2bel0t3v1aAp1s »,
    « token_type »:« Bearer »,
    « expires_in »:3600,
    « scope »:« aisp offline_access »,
    « refresh_token »:« KUZyspFBZ1R6NqWQdmsZhfdo1nbjK7MoD0Kr2rSi1mSCFNehAbCdEf »

    }

    Tester nos persona

    Conformément à la réglementation DSP2 (cf. RTS Art. 30 (5)), nous devons, en tant qu’ASPSP, mettre à disposition un dispositif d’essai comprenant une assistance et permettant des tests de connexion et de fonctionnement afin que les TPP qui ont demandé l’agrément nécessaire puissent tester les logiciels et applications qu’ils utilisent pour proposer un service de paiement aux utilisateurs.

    Il est aussi demandé l’utilisation de données fictives. C’est l’objectif de ces données de tests sous forme de « persona » qui rassemblent divers clients sur base de :

    • segment de clientèle (étudiant, actif, retraité, entrepreneur individuel, etc..) ;
    • caractéristiques de leurs comptes (mono-compte, multi-comptes, solde qui est statique) ;
    • le consentement PSU a déjà été donné ;
    • données utiles attendues en entrée par les API (identifiant banque à distance, IBAN).

    Ce jeu de données évoluera au cours du temps avec rajout de données additionnelles (autres clients, nombre de transactions, profondeur d’historique). Revenez régulièrement sur cette section pour être à jour !

    Les identifiants et données ci-dessous sont des données fictives et ne peuvent pas être utilisées en production.

     

    Persona

    Image
    Illustration
    Image
    Illustration

    LEA SANDBOXA

    Etudiante
    1 seul compte de paiement (abonné PART)

    CLAIRE RECETTEB

    Actif et entrepreneur individuel
    2 comptes de paiement  PART et un PRO/EI (abonné PART)

    Image
    Illustration
    Image
    Illustration

    GEORGES PERSONAC

    Actif
    1 seul compte joint de paiement
    Mr OU Mme (abonné PART)
    200 transactions disponibles sur
    l’IBAN FR7617515000920400085945890

    GILLES TESTUNID

    Retraité
    3 comptes de paiement PART (abonné PART) :
    Mr, Mr OU Mme, Mr ET Mme

    NB : pour tous ces persona, il vous faudra saisir le code SMS = « 12345678 » dans l’écran d’authentification proposé en mode assemblage.

     

    ATTENTION : NOUVEAUX IDENTIFIANTS  

    PERSONASEGMENTNOUVEL IDENTIFIANTCODETABIBANDÉTENTEURCONSENTEMENT :
    SOLDE /
    TRANSACTIONS /
    IDENTITÉ
    SOLDEDEVISE
    LEA SANDBOXAParticulier999999990117515FR7617515000920400430518020Mme LEA SANDBOXATRUE
    TRUE
    FALSE
    -150.00EUR
    CLAIRE RECETTEBParticulier999999990217515FR7617515900000400358074026Mme CLAIRE RECETTEBTRUE
    TRUE
    FALSE
    0.00EUR
    CLAIRE RECETTEBEntrepreneur individuel999999990217515FR7617515900000800358074006Mme CLAIRE RECETTEBTRUE
    TRUE
    FALSE
    +23766.98EUR
    GEORGES PERSONACParticulier999999990317515FR7617515000920400085945890Mr et Mme GEORGES PERSONACTRUE
    TRUE
    FALSE
    +10.00EUR
    GILLES TESTUNIDParticulier999999990417515FR7617515000920440878790811Mr GILLES TESTUNIDTRUE
    TRUE
    FALSE
    +11880.30EUR
    GILLES TESTUNIDParticulier999999990417515FR7617515000920402428687756Mr OU Mme GILLES TESTUNIDTRUE
    TRUE
    FALSE
    0.00EUR
    GILLES TESTUNIDParticulier999999990517515FR7617515000920402428748381Mr ET Mme GILLES TESTUNIDTRUE
    TRUE
    FALSE
    +5879.22EUR

    Politique de décommissionnement des versions de l’API

    La politique du décommissionnement (= arrêt d’une version d’une API sur les environnements de production et sandbox) est fonction du cycle de vie des API, et il est prévu une phase de tuilage entre deux versions majeures d’API comme indiqué dans le schéma ci-dessous :

    Image
    Planning de mise en place d'une nouvelle version de l'API

     

    La communication du décommissionnement d’une version N se fera à la date de déploiement de la version N+1. 

    Le canal de communication privilégié est ce portail Groupe BPCE API Store dans la partie « Roadmap » de l’API impactée. 

    Une communication via courriel vers les correspondants des prestataires enrôlés sur le portail BPCE API pourra venir compléter ce dispositif.

    Planning des évolutions fonctionnelles à venir de l’API

    L’API d’Information sur compte fait l’objet d’améliorations et d’évolutions continues tout au long de l’année*.

    (*) NB : l’article 30 (4) des RTS précise que des changements significatifs de l’API peuvent intervenir sans délai. Nous appliquons cette clause dans les cas suivants :
     

    • problème bloquant impactant de façon généralisée au moins l’un des segments de clients majeur (particuliers, professionnels, entreprises),
    • problème de sécurité,
    • évolutions demandées par les autorités nationales compétentes pour répondre à la trajectoire réglementaire.

    Retrouvez ci-dessous notre roadmap prévisionnelle.

     

    VERSION DE
    L’API
    VERSION DE LA NORME STETFONCTIONNALITÉS

    SANDBOX

    DATE DE DÉPLOIEMENT
    BPCE API DEV PORTAL & SANDBOX

    LIVE

    DATE DE DÉPLOIEMENT
    BPCE LIVE API GATEWAY

    LIVE

    DATE DE DÉCOMMISSIONNEMENT

    v1.4.2v1.4.2.17

    API version v1

    • Obtention de la liste des comptes de paiements
    • Transmission de la liste des comptes et des informations consenties par le client (solde comptable et/ou l’historique des transactions exécutées)
    • Obtention des informations demandées en fonction des choix du client
    • Modèle « Mixte AISP » : le consentement client récupéré par le prestataire AISP, doit être fourni au teneur de compte ASPSP par le TPP

    v1 plus :

    • Alignement sur la spécification STET V1.4.2 dont Obtenir l’identité du PSU
    • Parcours clients revus
    17 juillet 202022 octobre 2020non encore annoncée


     

    Limitations fonctionnelles

    Limitations de cette API DSP2 

    • Ne s’applique qu’aux comptes de paiements (le critère déterminant réside dans la faculté d’exécuter des opérations de paiement quotidiennes à partir d’un tel compte géré par le système d’information central « backend », source des informations remontées par les API), en euros et éligibles (compte de paiements actif – non bloqué ni sous séquestre-, et accessible en ligne, cf. texte de la Directive DSP2)
    • N’utilise que le mode d’authentification par redirection (Authentification Forte du client demandée et gérée via la banque teneur de compte du client utilisateur du service de paiement)
      NB : le TPP n’a pas la possibilité de fournir à l’ASPSP les données de sécurité personnalisées du client à des fins d’authentification, et donc, seuls les écrans de redirection et d’authentification forte (SCA) de l’ASPSP doivent être utilisés (l’encapsulage de ces écrans par le TPP est interdit au regard des articles PSD2 #97.5 et RTS #31)
    • N’implémente que le mode de consentement « mixte AISP » via la méthode PUT /consents qui est obligatoire :
      • par défaut, lorsqu’aucun consentement n’a été transmis, tous les comptes de paiements sont remontés
      • mais le détail des soldes et transactions exécutées n’est accessible que pour les comptes de paiements dont le consentement a été transmis par le PSU via le TPP
    • Ne fixe pas de limite d’accès (rate limit) lorsque c’est le PSU connecté qui interroge ses comptes de paiements (PSU-IP-ADDRESS fourni), sinon limité à 4 accès à l’initiative du TPP (cf. texte de la Directive DSP2) :
      • par jour calendaire (00h00 – 23h59:59:999)
      • par TPP OID
      • par ASPSP / point d’accès
      • par PSU ID
      • par IBAN
      • par méthode API AIS (/!\ méthode /transactions avec ou sans dateFrom / dateTo = considérée une seule et même méthode)
    • Ne permet l’accès au compte que via l’IBAN du compte de paiement
    • Seules les méthodes GET /accountsPUT /consentsGET /balancesGET /transactions et GET /end-user-identity sont disponibles :
      • Le mode « aisp extended_transaction_history » n’est pas supporté : la profondeur d’historique des transactions est à l’identique de celle de la banque en ligne internet fixe, soit un maximum de 62 jours pour les PART et EI/PRO (pas de pagination gérée par l’API), et 90 jours pour les ENT (limitation à 500 comptes, sans pagination gérée par l’API)
      • Ne permet pas de récupérer la liste des bénéficiaires de confiance d’un client (cette notion n’existe pas pour les établissements listés ci-dessous)
    • La donnée optionnelle « entryReference » ne s’applique qu’aux opérations des clients abonnés à DEI PART et DEI PRO/EI (voir le périmètre fonctionnel exact dans le cas d’usage « Obtenir les transactions »)
      NB : comme cette donnée est générée à la volée via API, la recherche par les paramètres « entryReferenceFrom » et/ou « entryReferenceto » n’est pas supportée

     

    Limitations liées aux segments de clientèle 

    Sont couverts par l’API les segments clients suivants :

    • Client « particulier » (y compris compte joint et mineur rattaché) ayant un abonnement à la banque en ligne « DEI PART » et un compte commençant par 04
       

    NB 1 : est non compris à ce jour le tuteur de personne protégée/sous tutelle ou curatelle utilisant la solution Web Protexion   

    • Client « entrepreneur individuel » (EI) et « petit professionnel » ayant un abonnement à la banque en ligne « DEI PRO » et un compte commençant par 04 ou 08

    NB 2 : le particulier (PART) est une personne physique catégorisée comme « majeur capable ». Le PART peut aussi avoir des activités dans le cadre d’une entreprise individuelle (EI) = une entreprise dirigée par une seule personne, et qui n’a pas le statut de  « personne morale » bien qu’elle soit inscrite au répertoire des métiers ou au Registre du Commerce et des Sociétés (RCS, exemples : artisan ou profession libérale). Dans ce cas, l’EI est considéré comme un PART

    • Client « gros professionnel », « entreprise » et « association » ayant un accès direct à la banque en ligne « CE Net » (ayant un abonnement « CE Net Compte » et un compte commençant par 08 autorisant les virement et prélèvements électroniques)

          NB 3 : les catégories « professionnel » (PRO), « entreprise » (ENT) et « association » (ASSOC) couvrent les personnes morales.  

     

    Limitations liées au moyen d’authentification forte (pour l’accès banque en ligne et les API) en fonction du segment client

    • PART: équipement avec [Mot de Passe + OTP SMS] (à venir : soft token [Sécur’Pass] comme métode principale)
    • EI : équipement avec [Mot de Passe + OTP SMS] (méthode principale) et [lecteur CAP]
    • PRO, ENT et ASSOC : [certificat matériel] (méthode principale) ou [lecteur CAP] et/ou [Mot de Passe + OTP SMS]

    NB : le moyen certificat ne s’applique pas si le client utilise son téléphone portable / mobile

    Accès aux données de production

    Conformément à la réglementation, les modes de test Try-it et Assemblage n’utilisent que des données fictives. Ces données de tests sont décrites dans la rubrique « Comment tester l’API ? ».

    Pour accéder aux données de production, l’utilisation de l’API Enregistrement DSP2 est un prérequis.

    NB : La plage hebdomadaire du lundi matin de minuit à 06h00 est utilisée pour la maintenance des infrastructures des systèmes d’information (tous composants, y compris le système central/backend, les passerelles, etc…) et peut engendrer des requêtes API en erreur ou des indisponibilités le temps des interventions (de même pour des traitements bancaires programmés en début et fin de journée/mois/trimestre/année).

    Le code établissement (voir ci-dessous) permettra d’adresser le bon backend via le « endpoint » www.<cdetab>.live.api.89c3.com (ou www.<cdetab>.live.api.caisse-epargne.fr aligné sur le nom de domaine de l’accès direct www.caisse-epargne.fr). Une fois choisi, ce point d’accès doit être conservé pour toutes les requêtes sous-jacentes.

     

    CDETABNOM DE L’ÉTABLISSEMENTNOM ABRÉGÉDISPONIBLE EN TRY-IT ET ASSEMBLAGEDISPONIBLE EN PRODUCTION
    11315Caisse d’Epargne Provence Alpes CorseCEPACOui
    11425Caisse d’Epargne NormandieCENOui
    12135Caisse d’Epargne Bourgogne Franche-ComtéCEBFCOui
    14445Caisse d’Epargne Bretagne-Pays de LoireCEBPLOui
    13135Caisse d’Epargne Midi-PyrénéesCEMPOui
    13335Caisse d’Epargne Aquitaine Poitou-CharentesCEAPCOui
    13485Caisse d’Epargne Languedoc-RoussillonCELROui
    13825Caisse d’Epargne Rhône AlpesCERAOui
    14265Caisse d’Epargne Loire Drôme ArdècheCELDAOui
    14505Caisse d’Epargne Loire-CentreCELCOui
    17515Caisse d’Epargne Ile De FranceCEIDFOuiOui
    18315Caisse d’Epargne Côte d’AzurCECAZOui
    18715Caisse d’Epargne Auvergne et LimousinCEPALOui
    15135Caisse d’Epargne Grand Est EuropeCEGEEOui
    16275Caisse d’Epargne Hauts de FranceCEHDFOui
    12579Banque BCPBBCPOui
    30258BTP BanqueBTPBOui
    42559Crédit CoopératifCCOOui

    Eligibilité

    Les ressources de l’API “Agrégation de comptes” ne peuvent être consommées que par des PSP ayant le rôle d’agrégateur (AISP). Ce statut est délivré par les autorités financières du pays dans lequel la demande est effectuée ; en France il s’agit de l’Autorité de Contrôle Prudentiel et de Résolution (ACPR), liée à la Banque de France.

    L’obtention et la conservation d’un agrément relèvent de procédures rigoureuses afin d’apporter des garanties fortes aux utilisateurs des services de paiements, les formulaires étant disponibles sur le site de l’ACPR : https://acpr.banque-france.fr/autoriser/procedures-secteur-banque/tous-les-formulaires.

    Une fois l’agrément donné, le format de cet identifiant (Organisation Identifier = OID) fourni par l’autorité compétente est :

    PSDXX-YYYYYYYY-ZZZZZZZZ:

    XX => code ISO 3166 du pays de l’autorité compétente
    hyphen-minus « – » (0x2D (ASCII), U+002D (UTF-8))
    YYYYYYYY => 2-8 caractères du l’identifiant de l’autorité compétente (A-Z, pas de séparateur)
    hyphen-minus « – » (0x2D (ASCII), U+002D (UTF-8))
    ZZZZZZZZ => identifiant du PSP spécifié par l’autorité nationale compétente (sans restriction sur le nombre – ou sur le type – de caractère utilisé)

    Cet identifiant OID est important à 2 titres :

    • il servira à vous identifier lors des appels dans les requêtes des API STET (via le paramètre « client_id »)
    • il devra être présent dans les certificats eIDAS que vous fournirez au teneur de compte (voir ci-dessous)

    De plus, vous devez disposer de certificats délivrés par une autorité de certification reconnue (Qualified Certification Service Providers – QTSP: https://webgate.ec.europa.eu/tl-browser/#/) conformes au règlement eIDAS (electronic IDentification And trust Services : https://www.ssi.gouv.fr/entreprise/reglementation/confiance-numerique/le-reglement-eidas/) et respectant la norme ETSI (https://www.etsi.org/deliver/etsi_ts/119400_119499/119495/01.02.01_60/ts_119495v010201p.pdf).

    Afin de consommer les API DSP2 proposées sur ce portail, le TPP doit enrôler son app et nous transmettre via notre API Enregistrement DSP2 des certificats de production signés par une autorité de certification agréée :

    • un premier jeu de certificats QWAC (pour l’authentification mutuelle TLS) et QSEALC (à charger sur notre passerelle via l’API Enregistrement DSP2) pour la sandbox
    • un autre jeu de certificats QWAC (pour l’authentification mutuelle TLS) et QSEALC (à charger sur notre passerelle via l’API Enregistrement DSP2) pour la production

    NB IMPORTANT : en cas de renouvellement de certificat, et si l’autorité de certification (QTSP) est différente (ou c’est la même entreprise QTSP mais qui utilise des clés racines différentes), le TPP doit avertir le support API disponible via ce site de 2 mois avant à toutes fins de vérifier que les élements de la nouvelle autorité de certification sont bien chargés sur nos infrastuctures. 

    Un identifiant keyID devra aussi être fourni dans un format conforme à la spécification STET intégrant une empreinte SHA256 après le caractère « _ » char,  voir exemple dans la documentation STET Part 3 / Interaction Examples : keyId=https://path.to/myQsealCertificate_612b4c7d103074b29e4c1ece1ef40bc575c0a87e.

    Seules les clés publiques au format .pem sont nécessaires. Des contrôles sur les données des certificats seront effectués à partir des registres Français (REGAFI : https://www.regafi.fr) et Européen (ABE ou EBA : https://euclid.eba.europa.eu/register/pir/disclaimer).

    Historique

    Version de la norme STET utilisée pour l’API

    Cette API REST est conforme à la spécification interbancaire française STET (https://www.stet.eu/en/psd2/), version v.1.4.2.17, afin de répondre aux exigences règlementaires de la DSP2. Elle tient compte des limitations fonctionnelles propres aux Caisses d’Epargne.

    Image
    Logo Directive Services de Paiements (DSP2)

    Pour rappel : 

    En France, l’ordonnance n° 2017-1252 du 9 août 2017 transpose la directive DSP2 dans la partie législative du code monétaire et financier. L’ordonnance est complétée au plan réglementaire par les décrets n° 2017-1313 et n° 2017-1314 du 31 août 2017 et les cinq arrêtés du 31 août 2017.

    Les utilisateurs peuvent également consulter l’assistant virtuel en cliquant sur le pictogramme sur la page d’accueil du portail.

     

    Description du support

    Conformément à l’article 30 (5) des RTS, une assistance pour les prestataires PSP tiers est mise à disposition. Ce support est accessible via le formulaire sur ce portail BPCE API, ou via https://www.api.89c3.com/fr/nous-contacter. Les réponses se font pendant les heures de travail ouvrées.

    Le principe général du support est schématisé ci-dessous en prenant en compte les délais réglementaires prévus à l’article 30 (4) des RTS :

    Image
    Présentation de la politique de décommissionnement d'une API

     


     

    Principaux changements effectués depuis la première version publiée

    MÉTHODE(S)DATEDESCRIPTION DE L’ÉVOLUTION
    Toutes30 octobre 2020 Documentation : voir toutes les évolutions éditoriales précédentes sur la fiche V1.4.0 (API version V1)

    Toutes

     

    GET /accounts/../transactions

    21 décembre 2020

     Rajout d’un point d’accès / voir section « limitations »

     

    Changement du statut « PDNG » par « OTHR »

    Toutes29 janvier 2021 Rajout de segments clients / voir section « limitations »
    GET /accounts/../transactions03 février 2021 Rajout de la donnée « entryReference » / voir cas d’usage « obtenir les transactions d’un compte » et section « limitations »
    GET /accounts/../transactions14 septembre 2021 Rajout de la donnée « BankTransactionCode » / voir cas d’usage « obtenir les transactions d’un compte »

    GET /accounts/../transactions

     

    Fallback

    Jetons d’accès

    29 septembre 2021

     Rajout de la donnée optionnelle « bankTransactionCode » (PRO et ENT)

     

    Précision de l’impact de la nouvelle solution de banque en ligne

    Jetons d’accès : précision sur la révocation des jetons

    Roadmap30 octobre 2021 Précision sur les modifications sans délai non soumises au préavis réglementaire
    Toutes03 janvier 2022 Changements éditoriaux et précisions sur l’authentification forte
    Vue d’ensemble28 août 2022Changements éditoriaux, rajout du cas App2App