Comment enregistrer, consulter, supprimer et recomptabiliser un mouvement de trésorerie entre deux comptes bancaires d'une copropriété.
Un transfert représente un mouvement de trésorerie entre deux comptes bancaires d'une même copropriété — par exemple du compte courant vers un compte d'épargne. Tous les appels de ce guide sont adressés à une copropriété précise (idCopro) et à un exercice comptable précis (idExercice) de cette copropriété : c'est le périmètre racine de chaque route. Un transfert appartient à l'exercice ciblé au moment de sa création, et sa date doit tomber dans les bornes de cet exercice — faute de quoi la création échoue.
Un mouvement de fonds entre deux comptes bancaires de la copropriété, sur un exercice donné.
jeuxDecritures liste les écritures comptables déjà générées pour ce transfert (lecture seule).
estRapproche n'est vrai que si l'ensemble des écritures bancaires du transfert sont couvertes par un rapprochement dont le solde correspond exactement — une seule écriture non couverte suffit à le faire passer à faux. Ce n'est pas le même critère que celui qui bloque la suppression (voir estSupprimable ci-dessous), qui se déclenche dès qu'une seule écriture est rapprochée : un transfert peut donc être estRapproche: false tout en étant déjà non supprimable.
estSupprimable n'est pas un indicateur stocké : il reflète, au moment de la lecture, le résultat des mêmes règles que celles appliquées à la suppression (exercice clôturé, ou écriture déjà rapprochée — voir Limites & pièges connus). Il n'existe pas de champ équivalent estModifiable, cohérent avec l'absence de route de modification (voir Parcours D).
note, libelle, tags et validation sont des champs libres, sans effet sur les règles de création ou de suppression décrites dans ce guide. comptabilite, présent dans le corps de création (Parcours B), est un indicateur de commande et non un champ persistant : il ne réapparaît jamais dans les réponses de lecture — pour savoir si un transfert a été comptabilisé, il faut regarder si jeuxDecritures est vide.
Le moyen utilisé pour le mouvement — chèque, virement, prélèvement. Se récupère via une route de référence globale plutôt que d'être codé en dur.
Son id est le paramètre de chemin attendu à la création d'un transfert (Parcours B).
Le compte comptable qui émet, et celui qui reçoit le mouvement. Doivent être deux comptes bancaires de la copropriété, et impérativement différents l'un de l'autre.
Chaque appel nécessite un jeton d'accès OAuth2, et le client doit être explicitement autorisé sur la copropriété visée par idCopro, sinon la réponse est un 403. Toute ressource imbriquée dans l'URL (l'exercice, le transfert) est en plus vérifiée comme appartenant réellement à la copropriété — et, pour un transfert, à l'exercice — passés dans le chemin : un identifiant valide mais rattaché ailleurs est refusé, même si le client est par ailleurs autorisé sur la copropriété.
/v2 et servies depuis https://syndic.datacopro.org en production, ou https://preprod-syndic.datacopro.org sur la plateforme de test.
Ces quatre parcours suivent le cycle de vie réel d'un transfert : de sa consultation à sa saisie, sa comptabilisation, jusqu'à sa suppression.
Cas d'usage : afficher l'historique des mouvements de trésorerie entre comptes bancaires d'une copropriété, sur un exercice donné.
Un transfert appartient à un seul exercice : afficher tous les transferts d'une copropriété suppose de répéter cet appel pour chaque exercice à couvrir — il n'existe pas de route qui liste directement tous les transferts d'une copropriété tous exercices confondus.
Cas d'usage : enregistrer un virement interne — par exemple la constitution d'une épargne travaux à partir du compte courant — et déclencher (ou non) la génération immédiate des écritures comptables.
{
"transfert": {
"date": "2026-09-10 00:00:00",
"montant": 500000,
"planComptableSource": 55010,
"planComptableDestination": 55020,
"referenceComptable": "VIR-2026-0091",
"note": "Constitution de l'épargne travaux",
"tags": [],
"comptabilite": 1
}
}
planComptableSource et planComptableDestination sont obligatoires ; les montants s'expriment en centimes. {idCstModePaiement}, dans le chemin, désigne le mode de paiement du mouvement — à obtenir via /v2/type/mode-paiement.json plutôt qu'à coder en dur.
comptabilite: 1 déclenche la génération immédiate des écritures comptables du transfert ; à 0, le transfert est enregistré sans aucune écriture — la comptabilisation peut être déclenchée plus tard (Parcours C).
date doit tomber dans les bornes de l'exercice ciblé par la route (entre sa date de début et sa date de fin) au moment de la création. planComptableSource et planComptableDestination doivent être deux comptes distincts : la création échoue avec une erreur explicite s'ils sont identiques. numero n'est conservé que si le mode de paiement choisi est un chèque : pour tout autre mode, une valeur soumise pour numero est silencieusement ignorée et remplacée par une chaîne vide, sans erreur.
Cas d'usage : déclencher la comptabilisation d'un transfert créé sans comptabilité immédiate (comptabilite: 0), ou recalculer ses écritures après une correction faite ailleurs dans le dossier comptable qui les affecte indirectement.
Ce point d'entrée est générique : le même chemin sert à rejouer les écritures de plusieurs types d'objets comptables d'un exercice. Pour un transfert, la valeur littérale transfert est attendue dans le segment de type, et l'identifiant du transfert dans le segment suivant.
Cas d'usage : annuler un transfert saisi par erreur.
400 dans deux cas indépendants : l'exercice du transfert est déjà clôturé, ou l'une des écritures comptables du transfert est déjà couverte par un rapprochement bancaire. Dans ce second cas, le rapprochement concerné doit d'abord être défait avant de pouvoir supprimer le transfert.
| Méthode | Route | Rôle |
|---|---|---|
| GET | /v2/copro/{idCopro}/exercice/{idExercice}/transferts.json | Liste des transferts d'un exercice |
| GET | /v2/copro/{idCopro}/exercice/{idExercice}/transfert/{idExerciceTransfert}.json | Détail d'un transfert |
| POST | /v2/copro/{idCopro}/exercice/{idExercice}/transfert/paiement/{idCstModePaiement}.json | Crée un transfert |
| DELETE | /v2/copro/{idCopro}/exercice/{idExercice}/transfert/{idExerciceTransfert}.json | Supprime un transfert |
| POST | /v2/copro/{idCopro}/exercice/{idExercice}/ecritures/transfert/{idExerciceTransfert}/rejouer.json | Régénère les écritures comptables du transfert |
| GET | /v2/type/mode-paiement.json | Liste des modes de paiement disponibles (route de référence, hors périmètre copropriété) |
Toutes ces routes attendent une extension de format explicite en fin de chemin (par exemple .json).
La liste des transferts d'un exercice accepte les mêmes familles de paramètres de requête génériques que le reste de l'API :
filters — restreint les résultats, par exemple filters[modePaiement.id]==3.sorts / pagination — ordonnancement et découpage en pages de la liste.displays — restreint ou ouvre l'ensemble des champs renvoyés, parmi ceux déjà présents dans la réponse de la route appelée.numero n'est conservé que pour le mode de paiement chèque ; pour tout autre mode, il est silencieusement vidé sans erreur (Parcours B).planComptableSource et planComptableDestination doivent être deux comptes distincts, sinon la création échoue (Parcours B).estRapproche et estSupprimable ne réagissent pas au même seuil de rapprochement : un transfert peut déjà être bloqué en suppression (une seule écriture rapprochée, même partiellement) tout en restant estRapproche: false (qui exige que toutes les écritures bancaires soient intégralement couvertes). Ne pas utiliser estRapproche pour anticiper si une suppression réussira — seul estSupprimable le reflète (Modèle & périmètre).comptabilite: 0 pour le saisir sans le comptabiliser tout de suite. Comment déclencher la comptabilisation ensuite ?comptabilite: 1. La même route sert aussi à recalculer des écritures déjà existantes — dans ce cas, elles sont d'abord annulées puis reconstruites, pas simplement complétées ; si un rapprochement bancaire existant ne peut pas être réassocié automatiquement aux nouvelles écritures, il est supprimé sans avertissement. Pour un transfert créé avec comptabilite: 0 ce risque ne se pose pas (il n'y a encore rien à rapprocher), mais il devient réel dès que la route est utilisée pour recalculer des écritures déjà rapprochées. Parcours C400 même si l'exercice est encore ouvert. Le champ estSupprimable renvoyé en lecture reflète cette même règle au moment de l'appel, mais reste un indicateur calculé — il peut changer d'un appel à l'autre si le rapprochement évolue entre-temps. Parcours D, Modèle & périmètre