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
Start50010 MB
Pro1,50010 MB
Enterprise5,00010 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

NomEmplacementTypeObligatoireDescription
AuthorizationheaderstringOuiVotre clé API.
fileform-datafileOui.ofx, .qfx ou .qbo, jusqu'à 10 Mo.
outputform-datastringNoncsv, 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

NomEmplacementTypeObligatoireDescription
AuthorizationheaderstringOuiVotre clé API.
fileform-datafileOui.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

NomEmplacementTypeObligatoireDescription
AuthorizationheaderstringOuiVotre clé API.
fileIDquerystring (GUID)OuiID renvoyé par /upload.
outputquerystringNoncsv, 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

NomEmplacementTypeObligatoireDescription
AuthorizationheaderstringOuiVotre clé API.
fileform-datafileOui.pdf, jusqu'à 10 Mo.
outputform-datastringNoncsv, 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.

ChampTypeDescription
header.bankNamestringNom de la banque indiqué sur le relevé.
header.currencystringDevise du relevé (ex. USD).
header.serverDatedatetimeDate indiquée par le serveur de la banque.
header.hasInvestimentbooleantrue lorsque le relevé contient des transactions d'investissement.
bankAccount.typestringType de compte (ex. CHECKING).
bankAccount.bank.codeintegerCode de la banque.
bankAccount.accountCodestringNuméro de compte.
initialDate / finalDatedatetimePériode du relevé.
transactions[]arrayListe des transactions (voir ci-dessous).
transactions[].datedatetimeDate de la transaction.
transactions[].valuenumberMontant (négatif pour les débits).
transactions[].typestringType de transaction.
transactions[].descriptionstringDescription de la transaction.
transactions[].idstringIdentifiant de la transaction dans le fichier.
transactions[].checksumintegerSomme de contrôle utilisée pour détecter les doublons.
transactions[].units / price / comissionnumberChamps d'investissement ; null pour les transactions classiques.
transactions[].secName / tickerstringNom 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"
}
MessageStatut HTTPSignification
NO_API_KEY401L'en-tête Authorization est manquant.
UNAUTHORISED401Clé invalide, ou le compte n'est pas premium.
NO_FILE_ID401download a été appelé sans fileID.
FILE_NOT_FOUND401Aucun fichier avec ce fileID n'existe pour votre compte.
FILE_NOT_UPLOADED400Aucun fichier n'a été inclus dans la requête.
FILE_NOT_SUPPORTED400L'extension du fichier n'est pas acceptée par ce point de terminaison.
FILE_TOO_BIG400Le fichier dépasse la limite de 10 Mo.
BAD_FILE_FORMAT400Le fichier n'a pas pu être analysé (ex. un fichier OFX invalide).
SERVER_ERROR400Une erreur inattendue s'est produite lors du traitement du fichier.