Référence de l'API REST
Convertissez des relevés bancaires OFX, QFX, QBO et PDF en JSON, Excel ou CSV par programmation.
Aperçu
L'API REST d'OFXConverter vous permet de convertir des fichiers de relevés bancaires depuis vos propres applications. Envoyez un fichier et recevez les transactions extraites au format JSON structuré, ou sous forme de fichier Excel ou CSV encodé en Base64. L'API est disponible pour les comptes disposant d'un forfait payant.
L'API nécessite un forfait premium actif. Générez votre clé d'API depuis la page de profil de votre tableau de bord.
URL de base
Tous les points de terminaison sont relatifs à l'URL de base suivante. Toutes les requêtes doivent être effectuées via HTTPS.
https://www.ofxconverter.com/api/v1
Authentification
Authentifiez chaque requête en envoyant votre clé d'API dans l'en-tête Authorization. Utilisez la valeur brute de la clé, sans préfixe Bearer ni schéma.
Authorization: YOUR_API_KEY
Une requête sans clé renvoie NO_API_KEY ; une clé invalide, ou une clé d'un compte sans forfait premium, renvoie UNAUTHORISED. Les deux sont envoyées avec le statut HTTP 401.
Limites et quotas
L'utilisation est limitée par le quota mensuel de conversions de votre forfait : Start 500, Pro 1 500, Enterprise 5 000 conversions par mois. La taille maximale de fichier est de 10 Mo. Les fichiers envoyés et générés sont automatiquement supprimés après environ 30 minutes.
| Forfait | Conversions mensuelles | Taille maximale du fichier |
|---|---|---|
| Start | 500 | 10 MB |
| Pro | 1,500 | 10 MB |
| Enterprise | 5,000 | 10 MB |
Points de terminaison
Les requêtes qui envoient un fichier utilisent multipart/form-data. Le champ facultatif output sélectionne le format de la réponse : csv ou excel renvoient le fichier converti sous forme de chaîne Base64, tandis que toute autre valeur (ou son omission) renvoie les transactions extraites au format JSON.
post /api/v1/conversion
Convertit un fichier OFX, QFX ou QBO en une seule requête.
Paramètres de la requête
| Nom | Emplacement | Type | Obligatoire | Description |
|---|---|---|---|---|
Authorization | header | string | Oui | Votre clé API. |
file | form-data | file | Oui | .ofx, .qfx ou .qbo, jusqu'à 10 Mo. |
output | form-data | string | Non | csv, excel, ou à omettre pour du JSON. |
Exemple de requête
curl -X POST "https://www.ofxconverter.com/api/v1/conversion" \
-H "Authorization: YOUR_API_KEY" \
-F "file=@statement.ofx" \
-F "output=excel"
Exemple de réponse (excel / csv)
{
"error": false,
"message": "SUCCESS",
"fileID": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"extension": "ofx",
"filename": "statement.ofx",
"convertedFile": "UEsDBBQABgAIAAAAIQ...=="
}
Exemple de réponse (json)
{
"error": false,
"message": "SUCCESS",
"fileID": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"extension": "ofx",
"filename": "statement.ofx",
"convertedFile": {
"header": {
"status": "OK",
"language": "ENG",
"serverDate": "2024-01-31T00:00:00",
"bankName": "Bank of Example",
"currency": "USD",
"hasInvestiment": false
},
"bankAccount": {
"type": "CHECKING",
"agencyCode": "0001",
"bank": { "code": 1, "name": "Bank of Example" },
"accountCode": "1234567"
},
"status": "OK",
"initialDate": "2024-01-01T00:00:00",
"finalDate": "2024-01-31T00:00:00",
"transactions": [
{
"type": "DEBIT",
"date": "2024-01-05T00:00:00",
"value": -42.5,
"id": "202401050001",
"uniqueID": "202401050001",
"description": "Coffee Shop",
"checksum": 849302145,
"units": null,
"price": null,
"comission": null,
"secName": null,
"ticker": null
}
]
}
}
post /api/v1/upload
Stocke un fichier pour une conversion ultérieure. Renvoie un fileID que vous pouvez transmettre à GET /api/v1/download. Aucune conversion n'est effectuée à cette étape.
Paramètres de la requête
| Nom | Emplacement | Type | Obligatoire | Description |
|---|---|---|---|---|
Authorization | header | string | Oui | Votre clé API. |
file | form-data | file | Oui | .ofx, .qfx ou .qbo, jusqu'à 10 Mo. |
Exemple de requête
curl -X POST "https://www.ofxconverter.com/api/v1/upload" \
-H "Authorization: YOUR_API_KEY" \
-F "file=@statement.ofx"
Exemple de réponse
{
"error": false,
"message": "SUCCESS",
"fileID": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"extension": "ofx",
"filename": "statement"
}
get /api/v1/download
Convertit un fichier précédemment stocké avec POST /api/v1/upload. Le fichier doit appartenir au compte authentifié.
Paramètres de la requête
| Nom | Emplacement | Type | Obligatoire | Description |
|---|---|---|---|---|
Authorization | header | string | Oui | Votre clé API. |
fileID | query | string (GUID) | Oui | ID renvoyé par /upload. |
output | query | string | Non | csv, excel, ou à omettre pour du JSON. |
Exemple de requête
curl "https://www.ofxconverter.com/api/v1/download?fileID=3f2504e0-4f89-41d3-9a0c-0305e82c3301&output=csv" \
-H "Authorization: YOUR_API_KEY"
Exemple de réponse
Le corps de la réponse a la même structure que POST /api/v1/conversion. En plus des erreurs d'authentification, download renvoie NO_FILE_ID lorsque fileID est manquant et FILE_NOT_FOUND lorsqu'aucun fichier correspondant n'existe pour votre compte (les deux avec le statut HTTP 401).
post /api/v1/pdf/conversion bêta
Convertit un relevé bancaire au format PDF. Les relevés des banques prises en charge sont analysés directement ; les autres passent par l'OCR et l'extraction par IA, les résultats peuvent donc varier. Ce point de terminaison est expérimental et peut évoluer.
Paramètres de la requête
| Nom | Emplacement | Type | Obligatoire | Description |
|---|---|---|---|---|
Authorization | header | string | Oui | Votre clé API. |
file | form-data | file | Oui | .pdf, jusqu'à 10 Mo. |
output | form-data | string | Non | csv, excel, ou à omettre pour du JSON. |
Exemple de requête
curl -X POST "https://www.ofxconverter.com/api/v1/pdf/conversion" \
-H "Authorization: YOUR_API_KEY" \
-F "file=@statement.pdf"
Exemple de réponse (json)
{
"error": false,
"message": "SUCCESS",
"fileID": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"extension": "pdf",
"filename": "statement.pdf",
"convertedFile": {
"transactions": [
{
"date": "2024-01-05T00:00:00",
"value": -42.5,
"description": "Coffee Shop",
"type": "DEBIT"
}
]
}
}
Schéma de réponse
Pour une sortie JSON, les points de terminaison de conversion OFX et de téléchargement renvoient le relevé extrait dans convertedFile selon la structure suivante.
| Champ | Type | Description |
|---|---|---|
header.bankName | string | Nom de la banque indiqué sur le relevé. |
header.currency | string | Devise du relevé (ex. USD). |
header.serverDate | datetime | Date indiquée par le serveur de la banque. |
header.hasInvestiment | boolean | true lorsque le relevé contient des transactions d'investissement. |
bankAccount.type | string | Type de compte (ex. CHECKING). |
bankAccount.bank.code | integer | Code de la banque. |
bankAccount.accountCode | string | Numéro de compte. |
initialDate / finalDate | datetime | Période du relevé. |
transactions[] | array | Liste des transactions (voir ci-dessous). |
transactions[].date | datetime | Date de la transaction. |
transactions[].value | number | Montant (négatif pour les débits). |
transactions[].type | string | Type de transaction. |
transactions[].description | string | Description de la transaction. |
transactions[].id | string | Identifiant de la transaction dans le fichier. |
transactions[].checksum | integer | Somme de contrôle utilisée pour détecter les doublons. |
transactions[].units / price / comission | number | Champs d'investissement ; null pour les transactions classiques. |
transactions[].secName / ticker | string | Nom du titre et symbole boursier pour les transactions d'investissement. |
Le point de terminaison PDF renvoie une structure plus simple : convertedFile.transactions[] avec date, value, description et type.
Réponses d'erreur
Les erreurs renvoient un corps JSON avec "error": true et un code message. Les erreurs liées aux fichiers reprennent également fileID, extension et filename.
{
"error": true,
"message": "FILE_NOT_SUPPORTED",
"fileID": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"extension": "txt",
"filename": "statement.txt"
}
| Message | Statut HTTP | Signification |
|---|---|---|
NO_API_KEY | 401 | L'en-tête Authorization est manquant. |
UNAUTHORISED | 401 | Clé invalide, ou le compte n'est pas premium. |
NO_FILE_ID | 401 | download a été appelé sans fileID. |
FILE_NOT_FOUND | 401 | Aucun fichier avec ce fileID n'existe pour votre compte. |
FILE_NOT_UPLOADED | 400 | Aucun fichier n'a été inclus dans la requête. |
FILE_NOT_SUPPORTED | 400 | L'extension du fichier n'est pas acceptée par ce point de terminaison. |
FILE_TOO_BIG | 400 | Le fichier dépasse la limite de 10 Mo. |
BAD_FILE_FORMAT | 400 | Le fichier n'a pas pu être analysé (ex. un fichier OFX invalide). |
SERVER_ERROR | 400 | Une erreur inattendue s'est produite lors du traitement du fichier. |