Guide d'intégration · API Datacopro

Données bancaires de portefeuille

Comment récupérer, pour un ensemble de copropriétés, la liste de leurs comptes bancaires, leur solde théorique et leur état de rapprochement comptable.

À propos de ce guide

Ce document décrit uniquement le contrat de l'API Datacopro : quels appels effectuer, dans quel ordre, avec quels paramètres, et pourquoi. Aucune connaissance d'un logiciel de gestion de copropriétés en particulier n'est nécessaire pour le suivre — un tel logiciel n'est cité qu'à titre d'illustration, pour montrer un enchaînement d'appels réellement utilisé en production.

Modèle & périmètre

Le sujet met en jeu cinq objets. Chacun est décrit ici par ce que l'API renvoie réellement, pas par sa structure interne.

périmètre : une copropriété

Compte bancaire

Un compte bancaire réel rattaché à une copropriété.

  • IBAN, BIC, titulaire, mandataire
  • libellé (nom de la banque) et complément de libellé (nom usuel donné au compte)
  • destination : opérations courantes, espèces, compte legacy exclu des tableaux de bord, ou autre
  • actif / inactif, référence interne, date de création
  • relevés : un montant réel connu et sa date (point d'ancrage du calcul de solde)
  • solde bancaire théorique, calculé à la date demandée
  • le compte de trésorerie lié, utilisé pour rattacher les écritures comptables à ce compte précis
périmètre : un compte bancaire

Transaction bancaire

Un mouvement brut du relevé bancaire (import comptable, saisie manuelle ou agrégateur bancaire).

  • date, débit, crédit, commission
  • description et identité de la contrepartie (libellé, IBAN, BIC source)
  • référence comptable, date de mise à jour
périmètre : un exercice comptable

Écriture de trésorerie

Une écriture comptable rattachée à un compte de trésorerie (donc à un compte bancaire), portée par un exercice.

  • débit, crédit, libellé
  • le compte de trésorerie concerné
périmètre : une copropriété

Exercice comptable

Une période comptable de la copropriété.

  • date de début, date de fin, libellé
  • statut clôturé (oui/non)
agrégat calculé

Solde par exercice

Le cumul crédit/débit du compte de trésorerie lié à un compte bancaire, pour un exercice donné et à une date donnée.

  • n'est pas une entité en soi : c'est une vue agrégée renvoyée par l'appel qui combine compte bancaire × exercice

Contrôle d'accès

Chaque route est bornée à une copropriété (idCopro dans le chemin). Le client doit être autorisé sur cette copropriété précise, sinon la réponse est un 403. Toute ressource imbriquée (un compte, un exercice) est en plus vérifiée comme appartenant réellement à la copropriété passée dans l'URL : un identifiant valide mais rattaché à une autre copropriété est refusé, même si le client y est par ailleurs autorisé.

Base URL

Toutes les routes de ce guide sont préfixées /v2 et servies depuis https://syndic.datacopro.org en production, ou https://preprod-syndic.datacopro.org sur la plateforme de test.

Parcours 1 — Comptes bancaires d'une copropriété, avec écart de rapprochement

Cas d'usage : afficher, pour une copropriété donnée et à une date donnée, la liste de ses comptes bancaires avec deux soldes en regard — le solde théorique côté banque et le solde reconstitué côté comptabilité — pour repérer les comptes dont l'écart dépasse ce qu'explique le rapprochement en attente. Illustration : c'est ainsi qu'un logiciel de gestion de copropriétés existant construit cet écran.
  1. Récupérer la fiche de la copropriété
    GET /v2/copro/{idCopro}

    Cette réponse porte, entre autres, la liste complète des exercices comptables de la copropriété (dates, statut clôturé) — la suite du parcours en a besoin pour savoir sur quels exercices interroger.

    Limite

    Cet appel n'est pas un GET pur : selon la fraîcheur du cache serveur, il peut déclencher en effet de bord la création des exercices comptables à venir manquants et la mise à jour, en base, du statut actif/clôturé de la copropriété. Un appel répété n'est donc pas garanti idempotent au sens strict, même si son intention est la lecture.

  2. Récupérer les comptes bancaires à la date demandée
    GET /v2/copro/{idCopro}/comptes?date=2026-09-05

    date fixe le jour auquel le solde bancaire théorique de chaque compte est calculé — pas seulement un filtre de sélection.

    Pourquoi cette date

    Le solde théorique n'est pas stocké tel quel : il est reconstitué à partir du dernier relevé connu (un montant et sa date), en ajoutant ou retranchant les mouvements bancaires survenus entre ce relevé et la date demandée. Changer date change donc le solde renvoyé, pas seulement l'ensemble de comptes affichés.

  3. Isoler les exercices ouverts pour cette date

    Sans nouvel appel : parmi les exercices renvus à l'étape 1, ne garder que ceux non clôturés dont la date de début précède ou égale la date demandée. C'est le socle des étapes 4 et 6.

  4. Pour chaque exercice ouvert, récupérer les écritures de trésorerie en attente de rapprochement
    GET /v2/copro/{idCopro}/exercice/{idExercice}/ecrituresbanque

    Renvoie, par défaut, uniquement les écritures pas encore rapprochées de cet exercice.

    Limite

    Cette route ne prend pas de compte bancaire en paramètre : elle renvoie les écritures de trésorerie de tous les comptes bancaires de la copropriété pour cet exercice. Si la copropriété a plusieurs comptes, un filtre supplémentaire côté client est nécessaire pour ne garder que les écritures dont le compte de trésorerie correspond à celui du compte bancaire affiché (le compte de trésorerie lié, renvoyé à l'étape 2). Sans ce filtre, le nombre et le montant affichés mélangent tous les comptes.

    Limite

    Si aucune écriture de trésorerie n'existe pour l'exercice (par ex. un exercice sans mouvement bancaire), la réponse est simplement un tableau vide — pas d'erreur distincte à intercepter.

  5. Récupérer les transactions bancaires non rapprochées du compte
    GET /v2/copro/{idCopro}/compte/{idCompte}/transactions?rapprochees=0&date=2026-09-05

    rapprochees=0 ne garde que les transactions non rapprochées ; rapprochees=1 ne garderait que celles déjà rapprochées ; en l'absence du paramètre, aucun filtre de rapprochement n'est appliqué. date exclut toute transaction postérieure à cette date.

    Limite

    La réponse ne porte aucun champ indiquant si une transaction donnée est rapprochée : le statut sert uniquement à filtrer côté serveur, il n'est pas exposé comme attribut. Pour connaître le détail d'un rapprochement précis (montant rapproché, date), il faut interroger GET /v2/copro/{idCopro}/compte/{idCompte}/transaction/{idTransaction}/rapprochements transaction par transaction.

  6. Pour chaque exercice couvrant la période, récupérer le solde du compte de trésorerie
    GET /v2/copro/{idCopro}/exercice/{idExercice}/compte/{idCompte}?date=2026-09-05&cloture=0&displays[]=compte5120.credit&displays[]=compte5120.debit

    compte5120 est le nom de champ réel, dans la réponse JSON, du compte de trésorerie lié — hérité du plan comptable belge/français, où la classe 512 désigne les comptes bancaires. C'est ce nom qu'il faut utiliser dans displays, pas un nom fonctionnel de son choix.

    cloture=0 exclut les écritures de clôture du cumul crédit/débit renvoyé — utile pour lire un solde "brut", avant l'écriture de clôture de l'exercice. Trier les exercices couvrant la période par date de fin et cumuler leurs crédit/débit donne le solde comptable total.

    À ne pas confondre

    Le paramètre cloture ne porte pas sur le statut clôturé de l'exercice (utilisé à l'étape 3 pour sélectionner les exercices ouverts) : il indique seulement si les écritures comptables de clôture, elles-mêmes, doivent entrer dans le cumul crédit/débit. Un exercice non clôturé peut très bien contenir de telles écritures (clôture anticipée d'un compte précis), et un exercice clôturé reste interrogeable avec cloture=0.

    Limite

    Passer une liste displays non vide bascule cet appel en mode liste blanche : tout champ de premier niveau absent de la liste est retiré de la réponse, y compris soldeBancaire. Avec la liste ci-dessus, le champ soldeBancaire n'apparaît donc pas du tout dans la réponse (pas de valeur obsolète ni nulle : la clé elle-même est absente) — voir la section Paramètres transverses.

    Limite

    Si le compte bancaire n'a pas de compte de trésorerie lié, cette route ne renvoie aucun solde comptable exploitable — un compte peut donc afficher un solde bancaire sans jamais avoir de contrepartie comptable calculable.

  7. Calculer l'écart, côté client

    Écart = (solde bancaire théorique, ajusté du montant des transactions non rapprochées) − (solde comptable, ajusté du montant des écritures de trésorerie non rapprochées). Un écart nul ou expliqué entièrement par le rapprochement en attente est normal ; un écart résiduel signale une anomalie à vérifier.

Parcours 2 — Tableau de bord agrégé sur un portefeuille de copropriétés

Cas d'usage : donner une vision de synthèse sur un ensemble de copropriétés — solde bancaire cumulé, solde comptable cumulé, nombre et montant total des écritures et transactions en attente de rapprochement.

Même séquence que le Parcours 1, répétée pour chaque copropriété et chaque compte bancaire du portefeuille, puis sommée. Deux nuances propres à l'agrégation :

Pourquoi filtrer certains comptes

Un compte marqué comme legacy ("ancienne banque") est en général exclu de l'agrégat : il ne reflète plus une activité bancaire réelle et fausserait le solde cumulé si on le laissait entrer dans le calcul.

Limite

Sur un grand portefeuille, ce parcours multiplie les appels (fiche copropriété × comptes × exercices × transactions × solde par exercice, pour chaque copropriété). Il n'existe pas de route agrégée côté serveur : la synthèse est entièrement reconstruite côté client, appel après appel.

Référence des endpoints

MéthodeRouteRôle
GET/v2/copro/{idCopro}Fiche de la copropriété : porte la liste de ses exercices comptables.
GET/v2/copro/{idCopro}/comptesListe des comptes bancaires de la copropriété, avec solde théorique à une date donnée.
GET/v2/copro/{idCopro}/compte/{idCompte}/transactionsTransactions bancaires d'un compte, filtrables par statut de rapprochement et par date.
GET/v2/copro/{idCopro}/compte/{idCompte}/transaction/{idTransaction}/rapprochementsDétail des rapprochements enregistrés pour une transaction précise.
GET/v2/copro/{idCopro}/exercice/{idExercice}/ecrituresbanqueÉcritures de trésorerie d'un exercice, en attente de rapprochement par défaut.
GET/v2/copro/{idCopro}/exercice/{idExercice}/compte/{idCompte}Solde crédit/débit du compte de trésorerie lié, pour un exercice donné.

Paramètres transverses

displays

Liste de champs à inclure explicitement (ex. displays[]=compte5120.credit) ou à exclure en préfixant par ! (ex. displays[]=!documents). Sans ce paramètre, tous les champs par défaut de la ressource sont renvoyés.

Coût réel, pas seulement de forme

Sur l'appel de solde par exercice, dès qu'une seule inclusion positive est présente dans displays, tout champ non listé est retiré de la réponse — y compris soldeBancaire, qui n'est alors ni recalculé ni renvoyé, sauf s'il figure lui-même explicitement dans la liste. Une liste composée uniquement d'exclusions (!...) ne déclenche pas ce comportement : les champs par défaut restent tous présents, exclusions mises à part. Ne pas passer displays du tout recalcule systématiquement le solde bancaire, ce qui coûte plus cher : un compte avec beaucoup de transactions historiques implique de les parcourir toutes pour reconstituer le solde théorique à la date demandée.

Limites & pièges connus

Questions de validation

1. Comment savoir si une transaction précise est rapprochée, avec le montant exact rapproché ?
Pas directement dans la liste des transactions (voir Parcours 1, étape 5) : ce champ n'existe pas sur l'objet transaction. Il faut appeler la route de détail des rapprochements pour cette transaction précise (Référence des endpoints), ou se contenter d'un filtre binaire rapproché/non rapproché via rapprochees.
2. En demandant le solde d'un compte pour un exercice avec displays limité aux champs crédit/débit, le solde bancaire sera-t-il aussi à jour dans la même réponse ?
Non (voir Paramètres transverses) : une liste d'inclusions qui ne mentionne pas explicitement soldeBancaire fait disparaître ce champ de la réponse — la clé est absente, pas seulement non recalculée ou nulle. Si les deux soldes sont nécessaires dans le même flux, soit ajouter soldeBancaire à displays, soit le récupérer séparément via la liste des comptes (Parcours 1, étape 2).
3. Que se passe-t-il si une copropriété a plusieurs comptes bancaires et qu'on demande les écritures de trésorerie à rapprocher d'un exercice ?
La réponse contient les écritures de tous les comptes de la copropriété pour cet exercice, pas seulement celles du compte affiché (voir Parcours 1, étape 4). Un filtrage côté client sur le compte de trésorerie lié au compte bancaire visé est nécessaire avant d'afficher un nombre ou un montant par compte.