Documentation de l’API BankConv
L’API REST BankConv convertit les relevés bancaires PDF en données structurées. Envoyez un PDF avec la clé API de votre équipe, interrogez le statut jusqu’à la fin de la conversion, puis obtenez les opérations en lignes JSON propres, ou téléchargez du CSV, OFX, QFX, QBO ou CSV Xero.
URL de base : https://bankconv.com/api/v1
Spécification OpenAPI : openapi.json
Authentification
Chaque requête demande une clé API d’équipe, envoyée comme jeton Bearer :
Authorization: Bearer sk_live_your_api_keyLes clés API appartiennent à une équipe. Créez-les dans l’application BankConv, dans les réglages de votre équipe. La clé complète n’est affichée qu’une fois, à sa création : gardez-la en lieu sûr. Les conversions par l’API utilisent le quota de pages de votre équipe ; voir la facturation.
Démarrage rapide
1. Envoyer un relevé
curl -X POST https://bankconv.com/api/v1/conversions \
-H "Authorization: Bearer sk_live_your_api_key" \
-F "[email protected]"L’API répond 201 Created avec la nouvelle conversion :
{
"data": {
"id": "9a8b7c6d-…",
"status": "processing",
"pages_count": 3,
"created_at": "2026-10-11T12:00:00Z",
"input": {
"filename": "statement.pdf",
"pages_count": 3
}
}
}2. Interroger le statut
curl https://bankconv.com/api/v1/conversions/9a8b7c6d-… \
-H "Authorization: Bearer sk_live_your_api_key"Répétez toutes les quelques secondes jusqu’à ce que status vaille completed ou failed.
3. Télécharger les résultats
# JSON (default)
curl https://bankconv.com/api/v1/conversions/9a8b7c6d-…/download \
-H "Authorization: Bearer sk_live_your_api_key"
# CSV, with matching tables merged into one transaction list
curl "https://bankconv.com/api/v1/conversions/9a8b7c6d-…/download?format=csv&view=merged" \
-H "Authorization: Bearer sk_live_your_api_key" \
-o statement.csv
# QBO for QuickBooks Desktop (also ofx, qfx or xero)
curl "https://bankconv.com/api/v1/conversions/9a8b7c6d-…/download?format=qbo" \
-H "Authorization: Bearer sk_live_your_api_key" \
-o statement.qboPoints d’accès
Tous les chemins sont relatifs à https://bankconv.com/api/v1.
| Méthode | Chemin | Ce qu’il fait |
|---|---|---|
POST | /conversions | Envoyer un PDF et lancer une conversion |
GET | /conversions | Lister les conversions de votre équipe (paginé) |
GET | /conversions/{id} | Obtenir le statut d’une conversion |
GET | /conversions/{id}/transactions | Obtenir les opérations en lignes JSON propres |
GET | /conversions/{id}/download | Télécharger en JSON, CSV, OFX, QFX, QBO ou CSV Xero |
DELETE | /conversions/{id} | Supprimer une conversion |
GET | /credits | Consulter votre solde de pages |
GET | /credits/usage | Pages utilisées sur la période en cours |
Créer une conversion
POST /conversions prend un corps multipart/form-data.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
file | file | Oui | Le relevé PDF, jusqu’à 30 Mo |
password | string | Non | Le mot de passe d’un PDF protégé, pour ouvrir le fichier. |
Pour un relevé protégé par mot de passe, envoyez le mot de passe avec le fichier :
curl -X POST https://bankconv.com/api/v1/conversions \
-H "Authorization: Bearer sk_live_your_api_key" \
-F "[email protected]" \
-F "password=the_pdf_password"Si vous ne connaissez pas le mot de passe, les pages des banques donnent les formats utilisés par les banques quand nous avons pu les confirmer.
Lister les conversions
GET /conversions renvoie les conversions de votre équipe, de la plus récente à la plus ancienne.
| Paramètre | Par défaut | Description |
|---|---|---|
page | 1 | Numéro de page |
per_page | 15 | Résultats par page, jusqu’à 100 |
status | aucun | Filtrer par pending, processing, completed ou failed |
sort | -created_at | Champ de tri ; un - en tête trie par ordre décroissant |
Obtenir les opérations
GET /conversions/{id}/transactions renvoie les opérations du relevé prêtes à l’emploi : de vraies dates, un seul montant signé (entrées en positif, sorties en négatif), le solde courant, et sans le solde d’ouverture ni les lignes de total. Les montants sont des chaînes décimales dans la devise du relevé.
curl https://bankconv.com/api/v1/conversions/9a8b7c6d-…/transactions \
-H "Authorization: Bearer sk_live_your_api_key"{
"data": {
"tables": "0:1,1:0",
"institution": "JPMorgan Chase Bank, N.A.",
"country": "US",
"account_type": "checking",
"account_number": "XXXX4821",
"currency": "USD",
"period": { "start": "2026-01-03", "end": "2026-01-31" },
"transaction_count": 42,
"transactions": [
{ "date": "2026-01-03", "description": "Payroll deposit", "reference": null, "amount": "3200.00", "balance": "4450.00" },
{ "date": "2026-01-04", "description": "Coffee shop", "reference": null, "amount": "-4.80", "balance": "4445.20" }
],
"warnings": []
}
}BankConv choisit le groupe de tableaux qui donne le plus d’opérations et vous dit lequel dans tables (index de page et de tableau, à partir de 0). Pour lire d’autres tableaux, passez-les, par exemple ?tables=2:0,3:0. S’ils ne peuvent pas être lus comme des opérations, comme un récapitulatif de compte, la réponse est 422 unreadable_statement avec la raison.
Télécharger les résultats
GET /conversions/{id}/download fonctionne une fois la conversion completed.
| Paramètre | Par défaut | Description |
|---|---|---|
format | json | json, csv, ofx, qfx (Quicken), qbo (QuickBooks Web Connect) ou xero (CSV Xero) |
view | raw | Pour le CSV : raw garde chaque tableau tel qu’extrait, page par page ; merged réunit les tableaux aux mêmes colonnes en une seule liste |
tables | choisis pour vous | Pour OFX, QFX, QBO et Xero : les tableaux à utiliser, comme dans Obtenir les opérations |
La réponse JSON contient chaque page extraite avec ses blocs (tableaux et texte), pour que vous fassiez vous-même la correspondance des colonnes. Pour des lignes toutes prêtes, utilisez plutôt Obtenir les opérations.
Les téléchargements OFX, QFX, QBO et Xero portent les éventuels avertissements, comme une banque absente de la liste QuickBooks, sous forme de tableau JSON dans l’en-tête X-BankConv-Warnings.
Crédits et consommation
GET /credits renvoie votre solde de pages pour la période de facturation en cours :
{
"data": {
"total": 1000,
"remaining": 842,
"bonus": 50,
"bonusRemaining": 50
}
}GET /credits/usage renvoie les pages utilisées depuis le début de la période :
{
"data": {
"period_start": "2026-09-11",
"period_end": "2026-10-11",
"pages_used": 158
}
}Réponses et erreurs
Les réponses réussies placent le résultat sous une clé data. Les listes ajoutent les informations de pagination :
{
"data": [ … ],
"links": { … },
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 15,
"total": 72
}
}Les erreurs ont toutes la même forme :
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits. You have 2 remaining but need 5.",
"status": 422
}
}| Code | Statut | Signification |
|---|---|---|
unauthenticated | 401 | Clé API absente ou invalide |
not_found | 404 | La conversion n’existe pas ou appartient à une autre équipe |
gone | 410 | La conversion a été supprimée selon votre durée de conservation |
validation_error | 422 | Paramètres invalides, par exemple un fichier manquant ou un mauvais mot de passe |
insufficient_credits | 422 | Pas assez de pages restantes pour tout le document |
payment_failed | 402 | Le dernier paiement de l’abonnement a échoué et la formule est suspendue ; billing_url ouvre le portail de facturation. Les conversions refusées entre-temps sont lancées une fois le paiement passé, si c’est dans votre durée de conservation des données |
not_ready | 422 | La conversion est encore en cours, ou les détails du relevé sont encore en cours de lecture (opérations et formats comptables uniquement, jusqu’à cinq minutes après la fin) |
unreadable_statement | 422 | Les tableaux ne peuvent pas être lus comme des opérations ; failure_class dit pourquoi |
rate_limited | 429 | Trop de requêtes ; attendez le nombre de secondes indiqué dans Retry-After |
Limites de débit
Chaque clé API peut faire 60 requêtes par minute. Les réponses portent les en-têtes X-RateLimit-Limit et X-RateLimit-Remaining, et une réponse 429 inclut Retry-After avec le nombre de secondes à attendre.
Facturation
Chaque page d’un PDF converti utilise une page du quota mensuel de votre formule. Une conversion demande assez de pages restantes pour tout le document ; aucune conversion partielle n’est faite, et la requête renvoie insufficient_credits à la place. Si le paiement de votre abonnement a échoué, la requête renvoie payment_failed jusqu’à la mise à jour de la carte.
| Formule | Pages par mois | Prix |
|---|---|---|
| Starter | 500 | 29 €/mois, ou 19 €/mois en facturation annuelle |
| Professional | 1 000 | 49 €/mois, ou 29 €/mois en facturation annuelle |
| Business | 5 000 | 79 €/mois, ou 49 €/mois en facturation annuelle |
Comparez les formules sur la page des tarifs.
Conservation des données
Les conversions sont supprimées automatiquement selon la durée de conservation de votre équipe : 24, 48 ou 72 heures, 24 par défaut. Ensuite, les demandes de téléchargement renvoient 410 Gone. Téléchargez ce dont vous avez besoin avant, ou supprimez vous-même une conversion avec DELETE /conversions/{id}. Voir sécurité et traitement des données.