Relevé de compte
Ce qui répond à « d'où vient mon solde ? ». Ouverture, mouvements dans l'ordre avec un solde qui court, clôture — la forme d'un relevé bancaire, faite pour être versée dans une comptabilité.
GET /v1-statements?from=2026-09-01&to=2026-09-30
Authorization: Bearer vp_sk_test_…
{
"object": "statement",
"from": "2026-09-01",
"to": "2026-09-30",
"currency": "XOF",
"opening_balance": 100000,
"closing_balance": 138000,
"total_in": 50000,
"total_out": 12000,
"data": [
{ "object": "statement_line", "date": "2026-09-02T14:21:03Z",
"description": "Encaissement confirmé",
"reference": "txn_6INMt2lIL1Pv_y6RgqZvag",
"in": 50000, "out": 0, "balance": 150000 },
{ "object": "statement_line", "date": "2026-09-04T09:12:44Z",
"description": "Remboursement", "reference": null,
"in": 0, "out": 12000, "balance": 138000 }
],
"total_count": 2, "limit": 100, "offset": 0, "has_more": false
}
L'invariant sur lequel vous pouvez bâtir
opening_balance + total_in − total_out = closing_balance
Et un relevé arrêté aujourd'hui clôture exactement sur votre solde disponible. C'est ce qui permet de rapprocher : si les deux divergent, c'est nous qui avons un problème, pas votre code.
Les quatre bornes portent sur la PÉRIODE, pas sur la page
opening_balance, closing_balance, total_in et total_out ne bougent pas quand vous paginez. N'additionnez pas data pour les recalculer : vous obtiendriez un total faux dès la deuxième page. total_count compte les mouvements de la période entière, has_more vous dit s'il en reste.
Deux colonnes, jamais un montant signé
in et out plutôt qu'un seul champ négatif ou positif. Un signe se perd à la relecture — dans un export, dans un tableur, dans une conversion. Deux colonnes ne se confondent pas.
Ce que ce relevé n'est pas
Ce n'est pas « le relevé d'un règlement ». Un règlement est un retrait d'un montant que vous choisissez sur votre disponible, pas une clôture de période. Prétendre qu'il « couvre » telles transactions serait une fiction. Il figure donc ici comme une sortie, à sa date, comme tout le reste.
Les refus
| Code | Quand | Ce qu'il faut faire |
|---|---|---|
invalid_period | from/to absent, mal formé, ou début après la fin | Deux dates AAAA-MM-JJ, dans l'ordre. Un intervalle inversé est refusé plutôt que rendu vide : un relevé vide se lirait « ce compte n'a pas bougé » |
insufficient_scope | La clé n'a pas la portée collect | Cette route lit ; elle n'exige pas une clé qui fait sortir de l'argent |
Une période sans mouvement n'est pas une erreur : les bornes valent zéro et data est vide. « Rien n'a bougé » est une réponse.
Version d'API 2026-08-25 ·
changements ·
spécification OpenAPI