CIIFragments Studio est agréée CII : récupérez jusqu'à 20 % de vos dépenses en développement logicielEn savoir plus

Intégration API GoCardless

Nous développons votre connecteur GoCardless

Nous développons le connecteur GoCardless pour signer des mandats SEPA, prélever à l'échéance réelle et suivre rejets et reversements.

  • Équipe produit senior
  • intégrations de paiement en production
  • du cadrage au monitoring
En bref

À quoi sert l'API GoCardless et pourquoi encaisser par prélèvement bancaire ?

GoCardless est un opérateur de prélèvement SEPA et ACH utilisé pour les paiements récurrents : abonnements, factures mensuelles, règlements d'échéanciers. L'API permet à votre application de créer un mandat de prélèvement en ligne, de programmer des échéances et d'être notifié de chaque règlement ou échec. On l'intègre quand la carte bancaire n'est pas le bon moyen de paiement : montants élevés, clientèle B2B, abonnements longue durée, et qu'on veut encaisser sans que le client renouvelle sa carte ou saisisse ses coordonnées à chaque fois.

Cas d'usage

Ce que nos clients construisent sur l'API GoCardless

01

Abonnement B2B en prélèvement SEPA

Mandat signé en parcours hébergé, échéancier calé sur 1 jour ouvré interbancaire avant l'échéance, plus de carte à relancer.

02

Paiement en plusieurs fois

Formation, travaux, matériel : chaque échéance est un paiement suivi, avec relance branchée sur details.cause, pas sur un code banque.

03

Cotisations et adhésions

Appel annuel, notification préalable automatique, gestion des mandats révoqués. Le PDF signé et le tableur d'IBAN disparaissent.

04

Reversement d'apporteurs

Paiements sortants créés puis approuvés à deux niveaux dans le back-office. Une référence métier empêche le double virement.

Pour vous

Ce que ça change dans votre recouvrement

La technique au service d'un résultat mesurable : moins d'impayés carte, un mandat vivant, une trésorerie lisible.

Plus de carte qui expire

Le prélèvement SEPA tient tant que le mandat tient. Le taux d'échec devient un problème de solde, pas de cycle de vie de carte.

Un échéancier que la banque peut honorer

Soumission 1 jour ouvré interbancaire avant l'échéance, notification 2 jours ouvrés avant. Vous arrêtez de promettre un débit immédiat.

Le rejet a une cause lisible

details.cause est normalisé, contrairement au code banque. La relance dit la vraie raison, pas un libellé technique.

La trésorerie, pas les factures émises

confirmed, paid_out, failed, charged_back : le tableau de bord montre ce qui est encaissé, pas ce qui a été facturé.

Méthode

Comment nous livrons votre connecteur GoCardless

01

Cadrage

Billing Requests ou pages approuvées, schéma SEPA, calendrier interbancaire, paiements sortants. On tranche la contrainte de production d'abord.

02

Développement

Connecteur typé, GoCardless-Version sur chaque appel, Idempotency-Key métier, webhook HMAC avec réponse 498.

03

Recette

Mandat, rejet, 409 traité comme un succès, événement received out of order, IBAN invalide bloqué avant création.

04

Monitoring

Alertes sur événement non traité, journal des mandats, tableau de bord de santé. Vous savez qu'un flux est cassé avant vos clients.

Ce que permet l'API

Ce que permet l'API GoCardless

Billing Requests et parcours hébergé
Cycle pending, ready_to_fulfil, fulfilled, cancelled. GoCardless recommande les Billing Request Flows pour la conversion et la conformité.
Prélèvements et abonnements SEPA
Paiements, abonnements adossés à un mandat. Les subscription_request des Billing Requests ne couvrent pas SEPA (ACH et PAD seulement).
Contrôle d'IBAN
bank_details_lookups vérifie clé et atteignabilité avant de créer un mandat. Un IBAN faux coûte un cycle bancaire entier.
Paiements sortants
Création puis approbation. Les POST sortants partagent 300 requêtes par minute, soit environ 150 paiements (créer puis approuver).
Lexique

Le vocabulaire de l'API GoCardless

GoCardless-Version
En-tête obligatoire, une seule version publiée : 2015-07-06. Sans lui, missing_version_header. Les ajouts arrivent sans changer la date.
Idempotency-Key
Jusqu'à 128 caractères, honorée au moins 30 jours. Un conflit renvoie 409 idempotent_creation_conflict avec links.conflicting_resource_id : c'est un succès.
details.cause
Clé normalisée, indépendante du schéma bancaire. details.reason_code change d'une banque à l'autre : une machine à états branchée dessus se brise en changeant de pays.
meta.webhook_id
Identifie la tentative de livraison, pas l'événement. La déduplication se fait sur event.id. Dédupliquer ici ne se voit qu'en incident.
498 Token Invalid
Réponse attendue si la signature est invalide : GoCardless journalise et ne retente pas. Un 200 ferait croire que la livraison a réussi.
Billing Request
Objet moderne (pending, ready_to_fulfil, fulfilled, cancelled). En production sans pages approuvées, c'est le seul chemin légal pour créer un mandat.
À savoir

Les contraintes réelles de l'API GoCardless

01

Livraison hors ordre, au moins une fois

payment.confirmed peut arriver avant payment.created. GoCardless ne garantit pas exactly-once. On relit la ressource via l'API à chaque webhook, on ne déduit rien de la séquence.

02

La prod n'est pas le bac à sable

Sans approbation de vos pages par la banque de parrainage, création de client, de compte bancaire et de mandat sont interdites hors Billing Requests. Un prototype bac à sable peut être illégal tel quel.

03

Trois plafonds de débit, pas un

1 000 requêtes par minute en standard, 60 sur GET /balances, 300 POST partagés sur les paiements sortants (environ 150 paiements). Le 429 arrive trop tard : on lit ratelimit-*.

04

Le 409 est une bonne nouvelle

idempotent_creation_conflict pointe vers la ressource déjà créée. Le traiter comme une erreur relance un second prélèvement ou bloque la file. Les SDK qui génèrent la clé tout seuls sont un piège.

Deux chemins mandat

Billing Requests ou endpoints directs ?

Deux façons de créer un mandat. En production, le choix n'est souvent pas un choix.

CritèreBilling RequestsParcours hébergéEndpoints directsClient, compte, mandat
Production sans pages approuvéesAutoriséInterdit
Bank AuthorisationsUniquement via les interfaces hébergéesNon créables hors parcours GoCardless
Conversion et conformitéParcours optimisé par GoCardlessÀ faire valider par la banque de parrainage
Abonnement SEPAObjet Subscription classique ensuiteIdem, une fois le mandat créé
Bac à sableAccessibleAccessible, trompeur pour la prod
Flux JavaScriptHors de ce cheminRestreint en production
Le bon casPresque tous les projets françaisPages déjà approuvées, partenaire whitelabel

Nous posons cette restriction au premier rendez-vous. Un prototype construit sur les endpoints directs est souvent à jeter avant la mise en production.

Notre expertise

Ce que nous mesurons sur une intégration GoCardless

15 j
premier flux GoCardless en production
100 %
des événements dédupliqués sur event.id
< 1 min
latence entre l'événement et votre application
4
développeurs seniors sur le projet

On combine GoCardless avec

La stack qui entoure GoCardless sur nos projets.

  • Pennylane
  • Stripe
  • HubSpot
  • PostgreSQL
  • Node.js
FAQ

Intégration GoCardless : vos questions

Trois étapes. D'abord un jeton Bearer et l'en-tête GoCardless-Version : 2015-07-06 sur chaque requête. Ensuite Billing Request plus parcours hébergé pour le mandat, puis paiements ou abonnements, avec une Idempotency-Key dérivée de la facture, pas celle générée par le SDK. Enfin les webhooks : HMAC-SHA256 sur le corps brut, 498 si la signature est invalide, 204 sur un type inconnu, déduplication sur event.id, relecture de la ressource parce que les événements n'arrivent ni une seule fois ni dans l'ordre. La partie sensible n'est pas l'appel, c'est la contrainte de production et le calendrier SEPA.

Cela dépend du parcours mandat et du recouvrement. Un abonnement B2B avec parcours hébergé et échéancier SEPA est plus court qu'un outil avec paiements sortants, relances par cause et tableau de trésorerie. Un premier flux utile se livre en deux à trois semaines. Une chaîne complète demande plutôt six à huit semaines. La restriction de production (Billing Requests sans pages approuvées) se tranche au cadrage, pas en recette. Nous donnons une estimation ferme avant de commencer.

Billing Requests plus Billing Request Flows sont le parcours hébergé, obligatoire en production tant que vos pages de paiement n'ont pas été approuvées par la banque de parrainage. Les endpoints de création de client, de compte bancaire et de mandat, et tout le flux JavaScript, sont alors interdits. Le bac à sable les expose tous, ce qui trompe. Les Bank Authorisations ne se créent que depuis les interfaces hébergées. Pour un projet français standard, on part des Billing Requests. Les endpoints directs se discutent seulement si vos pages sont déjà conformes.

Vérifier Webhook-Signature en HMAC-SHA256 hexadécimal sur le corps brut, répondre 2xx après persistance, 498 sur signature invalide. Dédupliquer sur event.id, jamais sur meta.webhook_id (c'est la tentative). Relire le paiement via l'API, parce qu'un confirmed peut précéder le created. L'Idempotency-Key métier (prelevement:{facture}:{echeance}) plus le traitement du 409 comme un succès évitent le second prélèvement après un timeout. Le handler reste sous 10 secondes : vérifier, enfiler, répondre. Le métier se fait en tâche de fond.

Oui. Nous poussons chaque paiement confirmed ou paid_out avec la référence de facture vers Pennylane ou votre outil, et les rejets (failed, charged_back) alimentent la relance. Un contrôle de cohérence périodique signale l'écart entre prélèvements et écritures, sans correction silencieuse. Le calendrier SEPA (soumission 1 jour ouvré interbancaire avant, notification 2 jours ouvrés avant) se reflète dans l'échéancier affiché : on ne promet pas un débit le jour même que la banque ne peut pas honorer.

Un projet d'intégration GoCardless ?

Parlons-en. 30 minutes pour cadrer mandats et prélèvements, vérifier ce que l'API permet vraiment et vous dire franchement ce qui est faisable.

Parler de mon projet GoCardless
Parler de mon projet GoCardless