Aller au contenu

Comment automatiser le rapprochement bancaire

Un versement de l’opérateur de paiement — un « virement » dans le vocabulaire de Stripe — arrive sur le compte bancaire du business en une seule ligne, alors qu’il regroupe de nombreux paiements. Cet article décrit comment le rapprocher par API des factures ProAbono qu’il règle, à partir de l’un ou l’autre côté :

  • les données de l’opérateur : chaque paiement créé dans Stripe ou GoCardless par ProAbono porte des métadonnées pa_, dont pa_invoice_id, qui le rattachent à sa facture ProAbono ;
  • les données de ProAbono : la liste des transactions automatisées donne, pour chaque transaction, sa facture et son identifiant chez l’opérateur.

Les métadonnées et la liste sont présentées dans Métadonnées ProAbono dans Stripe et Métadonnées ProAbono dans GoCardless.

  • Un compte Stripe ou GoCardless connecté au business ProAbono.
  • Un accès à l’API de l’opérateur : une clé d’API Stripe, ou un jeton d’accès GoCardless.
  • Les clés d’API ProAbono : voir Comment récupérer mes clés API.

L’API de l’opérateur liste ce que contient un versement :

  • chez Stripe, l’API Balance Transactions, filtrée sur le virement par le paramètre payout, un filtre réservé aux virements automatiques. La propriété source de chaque transaction désigne l’objet qui en est à l’origine, par exemple ch_… pour un paiement ou re_… pour un remboursement ;
  • chez GoCardless, l’API Payout Items (GET /payout_items?payout=…), qui ne répond que pour les versements créés au cours des 6 derniers mois. Le lien links.payment de chaque élément désigne le paiement concerné.

2. Lire les métadonnées de chaque paiement

Section titled “2. Lire les métadonnées de chaque paiement”

L’objet metadata de chaque paiement porte pa_invoice_id, la clé du rapprochement : cet identifiant désigne une seule facture ProAbono.

  • Chez Stripe, la charge (ch_…) et son PaymentIntent (pi_…) portent tous deux les métadonnées ; la charge s’obtient dans la requête de l’étape 1, en développant source (expand[]=data.source).
  • Chez GoCardless, le paiement désigné par links.payment se lit par l’API Payments.

La valeur de pa_invoice_id se passe telle quelle comme IdInvoice à l’appel de récupération d’une facture.

Requête

GET https://api-42.proabono.com/v1/Invoice/4574980

Réponse

{
"Id": 4574980,
"IdSegment": 69,
"IdCustomer": 133700,
"ReferenceSegment": "demo-eur",
"ReferenceCustomer": "cust-42",
"FullNumber": "S-69.00000175",
"AmountTotal": 45480,
"Currency": "EUR",
"…": "…"
}

Chaque ligne du versement est ainsi rattachée à une facture ProAbono, identifiée par le numéro imprimé sur le document (FullNumber) et par son client (ReferenceCustomer).

1. Extraire les transactions automatisées

Section titled “1. Extraire les transactions automatisées”

Les transactions automatisées d’une période s’extraient par l’API BackOffice. DateCreationMin et DateCreationMax bornent la date de création des transactions, et chaque paramètre Extra ajoute un objet à chaque transaction : son client (Customer), sa facture (Invoice) et sa référence chez l’opérateur (TransactionSpecific).

Les résultats sont paginés comme dans l’API Live : Page sélectionne la page, SizePage fixe le nombre de transactions par page — 10 par défaut —, TotalItems donne le nombre total de transactions, et le lien next de Links mène à la page suivante.

Requête

GET https://via.proabono.com/Gateway/GatewayTransactions?DateCreationMin=2026-07-01T00:00:00.00Z&DateCreationMax=2026-08-01T00:00:00.00Z&Page=1&IdBusiness=42&Extra=Customer&Extra=TransactionSpecific&Extra=Invoice

Réponse

{
"Page": 1,
"SizePage": 10,
"Count": 10,
"TotalItems": 23,
"DateGenerated": "2026-08-01T08:00:00.00Z",
"Items": [
{
"Id": 1214730,
"DateCreation": "2026-07-15T09:12:00.00Z",
"IdBusiness": 42,
"IdSegment": 69,
"IdCustomer": 133700,
"IdInvoice": 4574980,
"Amount": 45480,
"TypePayment": "DirectDebit",
"TypeGateway": "DirectDebitGoCardlessSepaV2",
"TypeTransaction": "Debit",
"StateTransaction": "Success",
"ReferenceTransaction": "PM01K8Z3QH7R2X5V9C4N6B1T0WAD",
"NameReference": "payment_id",
"Customer": {
"Id": 133700,
"ReferenceCustomer": "cust-42",
"Name": "John Doe",
"…": "…"
},
"TransactionSpecific": {
"Name": "payment_id",
"Value": "PM01K8Z3QH7R2X5V9C4N6B1T0WAD"
},
"Invoice": {
"Id": 4574980,
"FullNumber": "S-69.00000175",
"Status": "Paid",
"AmountTotal": 45480,
"…": "…"
},
"…": "…"
},
"…"
],
"Links": [
{
"rel": "next",
"href": "/Gateway/GatewayTransactions?DateCreationMin=2026-07-01T00:00:00.00Z&DateCreationMax=2026-08-01T00:00:00.00Z&Page=2&IdBusiness=42&Extra=Customer&Extra=TransactionSpecific&Extra=Invoice"
}
]
}

Les paiements du versement se listent par l’API de l’opérateur, comme à l’étape 1 de la procédure précédente.

La jointure se fait sur l’identifiant de la transaction chez l’opérateur : ReferenceTransaction côté ProAbono, source côté Stripe (ch_…), links.payment côté GoCardless (PM…). Chaque paiement du versement est ainsi rattaché à sa facture ProAbono, dont l’objet Invoice donne le numéro (FullNumber).