Appearance
Factures
Ces endpoints permettent à un logiciel externe (comptabilité, ERP, outil de recouvrement…) de lister, filtrer et récupérer les factures d'une structure d'accueil, ainsi que leurs lignes, leurs paiements et leur PDF.
Toutes les URIs ci-dessous sont relatives à https://abcreche.com/api/v1.
{crecheUuid} est l'uuid de la structure d'accueil, récupéré via l'endpoint /me (propriété creches[].uuid).
Headers
| Header | Valeur |
|---|---|
Authorization | Bearer {token} |
Accept | application/json |
Liste des factures
Request
- HTTP Method:
GET - URI:
/{crecheUuid}/invoices
Les factures sont triées par référence décroissante (les plus récentes en premier) et paginées.
Pagination
| Property | Type | Required | Description |
|---|---|---|---|
page | Integer | false | Numéro de page. Défaut : 1. |
per_page | Integer | false | Nombre de factures par page. Défaut : 50. |
Filtres par période
| Property | Type | Required | Description |
|---|---|---|---|
billable_month | Date YYYY-MM-DD | false | Mois facturé (mois de prestation). N'importe quel jour du mois convient : 2026-05-01 retourne les factures de mai 2026. |
from | Date YYYY-MM-DD | false | Date de facture ≥ from. Si to n'est pas envoyé, to vaut automatiquement le dernier jour du mois de from. |
to | Date YYYY-MM-DD | false | Date de facture ≤ to. |
date_from / date_to | Date YYYY-MM-DD | false | Date de facture comprise entre ces bornes (sans le comportement automatique de from). |
due_date_from / due_date_to | Date YYYY-MM-DD | false | Date d'échéance comprise entre ces bornes. |
sent_at_from / sent_at_to | Date YYYY-MM-DD | false | Date d'envoi au parent comprise entre ces bornes. |
paid_at_from / paid_at_to | Date YYYY-MM-DD | false | Date de paiement complet comprise entre ces bornes. |
Mois facturé vs date de facture
billable_month correspond au mois des prestations (ex. : la facture de mai), date à la date d'émission de la facture (souvent début du mois suivant). Pour une synchronisation comptable, filtrez plutôt sur date_from / date_to.
Filtres par statut et montant
| Property | Type | Required | Description |
|---|---|---|---|
status | Integer | false | Statut de la facture (voir Statuts). Avec status=0 (impayé), seules les factures déjà envoyées sont retournées. |
min_total | Integer | false | Montant total minimum, en centimes. |
max_total | Integer | false | Montant total maximum, en centimes. |
onlyOverdue | Boolean | false | Uniquement les factures impayées ou partiellement payées dont l'échéance est dépassée. |
onlyNotSent | Boolean | false | Uniquement les factures pas encore envoyées au parent. |
onlyWithPayments | Boolean | false | Uniquement les factures ayant au moins un paiement. |
onlyWithoutPayments | Boolean | false | Uniquement les factures sans aucun paiement. |
Filtres par destinataire et type
| Property | Type | Required | Description |
|---|---|---|---|
search | String | false | Recherche dans la référence de facture, la communication structurée, la référence (interne ou externe) de l'inscription, ou le prénom/nom de l'enfant. |
registration_uuid | UUID | false | Uniquement les factures individuelles d'une inscription (un enfant). |
parent_uuid | UUID | false | Uniquement les factures adressées à ce parent. |
classroom_uuids[] | Array of UUIDs | false | Uniquement les factures d'enfants inscrits dans ces sections. |
onlyGrouped | Boolean | false | Uniquement les factures groupées (une facture pour plusieurs enfants d'un même parent). |
onlyCaution | Boolean | false | Uniquement les factures de caution (garantie). |
onlyEvent | Boolean | false | Uniquement les factures liées à une inscription à un événement. |
onlySEPA | Boolean | false | Uniquement les factures dont le parent paie par domiciliation SEPA. |
onlyToParentNoEmail | Boolean | false | Uniquement les factures dont le parent ne reçoit pas ses factures par email. |
Filtres sur meta
| Property | Type | Required | Description |
|---|---|---|---|
meta[{clé}] | String | false | Uniquement les factures dont meta.{clé} vaut cette valeur. Ex. : meta[erp_id]=F-42. Les booléens se comparent en texte : meta[erp_imported]=true. Plusieurs clés peuvent être combinées. |
without_meta | String | false | Uniquement les factures sans la clé meta.{clé}. Ex. : without_meta=erp_imported retourne les factures pas encore importées. |
Les booléens s'envoient sous la forme 1 / 0 (ou true / false). Les filtres sont cumulables.
Exemples
Factures émises en juin 2026 :
http
GET /9928c211-abd9-4902-8db3-d3e8d2b89b0a/invoices?date_from=2026-06-01&date_to=2026-06-30&per_page=100Factures en retard de paiement de plus de 50 € :
http
GET /9928c211-abd9-4902-8db3-d3e8d2b89b0a/invoices?onlyOverdue=1&min_total=5000Factures payées la semaine dernière :
http
GET /9928c211-abd9-4902-8db3-d3e8d2b89b0a/invoices?paid_at_from=2026-10-19&paid_at_to=2026-10-25Response
json
{
"data": [
{
"uuid": "b1e4c9a2-6f1d-4c1b-9a77-3f0e2d5c8a10",
"reference": "2026-000123",
"invoicable": {
"uuid": "4a1f0c3e-2b7d-4e8a-9c55-1d2e3f4a5b6c",
"reference": "INS-0042",
"reference_external": "CLIENT-981",
"baby": {
"uuid": "c3d2e1f0-...",
"first_name": "Emma",
"last_name": "Dupont"
}
},
"parent": {
"uuid": "7d6c5b4a-3e2f-4a1b-8c9d-0e1f2a3b4c5d",
"first_name": "Julie",
"last_name": "Dupont",
"email": "[email protected]",
"phone": null,
"mobile": "+32470123456",
"street": "Rue des Fleurs",
"street_number": "8",
"postal_code": "1000",
"city": "Bruxelles",
"bank_account": "BE71096123456769",
"language": "fr",
"...": "..."
},
"total": 45230,
"paid_total": 20000,
"currency": "EUR",
"receiver_info": "...",
"sender_info": "...",
"note": null,
"meta": {},
"communication": "+++123/4567/89012+++",
"tos": null,
"pdf_path": "...",
"date": "2026-06-01T00:00:00.000000Z",
"due_date": "2026-06-15T00:00:00.000000Z",
"billable_month": "2026-05-01T00:00:00.000000Z",
"paid_at": null,
"sent_at": "2026-06-01 09:12:44",
"created_at": "2026-06-01T07:30:02.000000Z",
"lines": [
{
"id": 9812,
"invoice_id": 4510,
"description": "Journée complète",
"quantity": 18,
"price": 2450,
"tax": 0,
"tax_percentage": 0,
"meta": null
}
],
"payments": [
{
"uuid": "e8f7a6b5-...",
"amount": 20000,
"communication": "+++123/4567/89012+++",
"note": null,
"status": 1,
"payment_date": "2026-06-10",
"billable_month": "2026-05-01"
}
],
"status": 1,
"status_label": "Partiellement payé",
"iban": "BE68539007547034"
}
],
"links": {
"first": "https://abcreche.com/api/v1/{crecheUuid}/invoices?page=1",
"last": "https://abcreche.com/api/v1/{crecheUuid}/invoices?page=4",
"prev": null,
"next": "https://abcreche.com/api/v1/{crecheUuid}/invoices?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 4,
"per_page": 50,
"to": 50,
"total": 187
}
}Pour récupérer toutes les factures, suivez links.next jusqu'à ce qu'il vaille null.
Champs retournés
| Property | Type | Description |
|---|---|---|
uuid | UUID | Identifiant unique de la facture. À utiliser comme clé de synchronisation. |
reference | String | Numéro de facture lisible. |
invoicable | Object | Objet facturé : une inscription (facture individuelle, avec l'enfant facturé dans baby) ou un parent (facture groupée, les enfants sont dans registrations du détail). Pour connaître le parent facturé, utilisez plutôt parent. |
parent | Object/null | Parent facturé : le parent à qui la facture est adressée (uuid, first_name, last_name, email, phone, mobile, adresse street / street_number / postal_code / city, bank_account, language…). Présent pour les factures individuelles comme pour les factures groupées. null si aucun parent n'est désigné. |
total | Integer | Montant total TTC, en centimes (45230 = 452,30 €). |
paid_total | Integer | Montant déjà payé, en centimes. Le solde restant dû est total - paid_total. |
currency | String | Devise ISO 4217 (EUR). |
communication | String/null | Communication structurée à utiliser pour le paiement. |
date | Date | Date d'émission. |
due_date | Date/null | Date d'échéance. |
billable_month | Date/null | Mois des prestations facturées (1er jour du mois). |
sent_at | DateTime/null | Date d'envoi au parent. null = pas encore envoyée. |
paid_at | Date/null | Date à laquelle la facture a été entièrement payée. |
status | Integer | Statut (voir ci-dessous). |
status_label | String | Libellé du statut en français. |
iban | String/null | IBAN sur lequel le paiement est attendu. |
lines | Array | Lignes de la facture. price et tax sont en centimes, price est le prix unitaire TTC. |
payments | Array | Paiements enregistrés sur la facture. amount en centimes. |
note | String/null | Note libre ajoutée par le gestionnaire. |
meta | Object/null | Données complémentaires au format JSON. Contient des clés gérées par ABCreche (lecture seule, voir Clés réservées) et les clés écrites par votre logiciel (voir Écrire dans meta). |
Statuts
| Valeur | Description |
|---|---|
0 | Impayé |
1 | Partiellement payé |
2 | Payé |
3 | Payé avec surplus |
4 | Annulé |
5 | Clôturé |
Détail d'une facture
Request
- HTTP Method:
GET - URI:
/{crecheUuid}/invoices/{invoiceUuid}
Retourne une seule facture, avec les mêmes champs que la liste, plus :
creche: la structure d'accueil émettrice ;registrations: pour une facture groupée, la liste des inscriptions (enfants) concernées ;activities: l'historique des actions sur la facture (création, envoi, paiements…).
http
GET /9928c211-abd9-4902-8db3-d3e8d2b89b0a/invoices/b1e4c9a2-6f1d-4c1b-9a77-3f0e2d5c8a10json
{
"data": {
"uuid": "b1e4c9a2-6f1d-4c1b-9a77-3f0e2d5c8a10",
"reference": "2026-000123",
"...": "..."
}
}Télécharger le PDF d'une facture
Request
- HTTP Method:
GET - URI:
/{crecheUuid}/invoices/{invoiceUuid}/pdf
La réponse est le fichier PDF (Content-Type: application/pdf), identique à celui reçu par le parent.
http
GET /9928c211-abd9-4902-8db3-d3e8d2b89b0a/invoices/b1e4c9a2-6f1d-4c1b-9a77-3f0e2d5c8a10/pdfÉcrire dans meta
Votre logiciel peut enregistrer ses propres informations sur une facture, dans l'objet JSON meta : identifiant de la facture dans votre système, date d'import, numéro de pièce comptable… Ces données n'ont aucun effet sur la facture elle-même (montant, statut, envoi au parent).
Request
- HTTP Method:
PATCH - Content Type:
application/json - URI:
/{crecheUuid}/invoices/{invoiceUuid}/meta
Body
| Property | Type | Required | Description |
|---|---|---|---|
meta | Object | true | Les clés à ajouter ou modifier (50 clés max par requête). |
Comportement :
- Fusion : seules les clés envoyées sont modifiées, les autres clés de
metasont conservées. - Suppression : envoyez une clé avec la valeur
null(ou une chaîne vide) pour la retirer. - Valeurs : texte, nombre, booléen, tableau ou objet.
- Noms de clés : lettres, chiffres et
_, commençant par une lettre, 64 caractères max. - Taille : l'objet
metacomplet ne peut pas dépasser 10 000 caractères une fois encodé en JSON.
Préfixez vos clés
Préfixez vos clés avec le nom de votre logiciel (ex. : monerp_id, monerp_imported_at) pour éviter les collisions avec d'autres intégrations.
Clés réservées
Les clés suivantes sont gérées par ABCreche et ne peuvent pas être modifiées. Une requête qui en contient une est refusée (422).
| Clé | Description |
|---|---|
is_deposit | Facture de caution. |
is_event_registration | Facture d'inscription à un événement. |
is_monthly_bill | Facture mensuelle générée automatiquement. |
ubl_xml, ubl_path | Document de facturation électronique (Peppol). |
imported_at, imported_by_user_id | Facture importée par fichier dans ABCreche. |
Exemple
http
PATCH /9928c211-abd9-4902-8db3-d3e8d2b89b0a/invoices/b1e4c9a2-6f1d-4c1b-9a77-3f0e2d5c8a10/metajson
{
"meta": {
"monerp_id": "F-2026-0042",
"monerp_imported_at": "2026-10-26 14:05:00"
}
}Response
La facture mise à jour, au même format que le détail d'une facture :
json
{
"data": {
"uuid": "b1e4c9a2-6f1d-4c1b-9a77-3f0e2d5c8a10",
"meta": {
"is_monthly_bill": true,
"monerp_id": "F-2026-0042",
"monerp_imported_at": "2026-10-26 14:05:00"
},
"...": "..."
}
}Erreur : clé non autorisée
json
{
"message": "Clés non autorisées : is_deposit",
"errors": {
"meta": ["Clés non autorisées : is_deposit"]
}
}Utilisation typique : import incrémental
- Récupérer les factures pas encore importées :http
GET /{crecheUuid}/invoices?without_meta=monerp_id - Importer chaque facture dans votre logiciel.
- Une fois l'import réussi, enregistrer votre identifiant sur la facture :http
PATCH /{crecheUuid}/invoices/{invoiceUuid}/meta {"meta": {"monerp_id": "F-2026-0042"}}
Si l'import échoue, n'écrivez rien : la facture sera reprise au prochain passage.
Pour retrouver plus tard une facture ABCreche à partir de votre identifiant :
http
GET /{crecheUuid}/invoices?meta[monerp_id]=F-2026-0042TIP
Écrivez dans meta facture par facture, au fur et à mesure de l'import, plutôt qu'en fin de traitement : en cas d'interruption, seules les factures déjà importées seront marquées.
Gestion des erreurs
| Code | Signification | Action recommandée |
|---|---|---|
401 | Token absent, invalide ou expiré. | Se ré-authentifier via /authenticate. |
403 | L'utilisateur n'a pas accès à cette structure d'accueil. | Vérifier l'uuid de la structure et les droits de l'utilisateur. |
404 | Structure d'accueil ou facture introuvable. | Vérifier les UUIDs utilisés. |
422 | Paramètre invalide (ex. : date au mauvais format, registration_uuid inconnu). | Corriger la requête selon les erreurs retournées. |
Implémentation recommandée
Import initial
- Appelez
/mepour obtenir l'uuid de chaque structure d'accueil. - Pour chaque structure, parcourez toutes les pages de
/{crecheUuid}/invoices(avecdate_fromsi vous ne voulez pas tout l'historique). - Enregistrez chaque facture avec son
uuidcomme identifiant unique.
Synchronisation régulière
L'API ne propose pas de filtre « modifié depuis ». Une facture existante peut changer après sa création (paiement reçu, envoi, annulation). Nous recommandons :
- Nouvelles factures : interroger chaque jour les factures émises récemment, par exemple
date_from= il y a 2 mois. - Paiements : interroger les factures payées récemment via
paid_at_from, ou re-synchroniser les factures encore ouvertes (status=0etstatus=1). - Mettre à jour votre copie locale sur base de l'
uuid(créer si inconnu, mettre à jour sinon).
Montants en centimes
Tous les montants (total, paid_total, lines[].price, lines[].tax, payments[].amount, min_total, max_total) sont exprimés en centimes. Divisez par 100 pour obtenir le montant en euros.