GFS API Documentation
Convertissez n'importe quel fichier comptable vers FEC, SAF-T, JSON ou CSV. 27+ pays EU, conformité ViDA intégrée.
Authentification
L'API utilise deux modes d'authentification selon l'endpoint :
Mode 1 — JWT Supabase (endpoints `/gfs-engine`)
Envoyez votre JWT Supabase dans le header Authorization. Le token est obtenu après connexion via supabase.auth.signInWithPassword().
Authorization: Bearer <votre_jwt_supabase>
Content-Type: application/json
Mode 2 — Clé API (intégrations machine-to-machine)
Pour les intégrations sans session utilisateur, utilisez votre clé API GFS dans le header X-GFS-API-Key. Générez vos clés depuis le dashboard GFS → Paramètres → Clés API.
X-GFS-API-Key: gfs_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
Base URL
Tous les endpoints sont servis depuis l'infrastructure Supabase EU North (Stockholm, Suède). Les données ne quittent jamais l'Union Européenne.
POST /gfs-engine
Endpoint principal de conversion. Prend un fichier comptable source, détecte le format, mappe les comptes via IA, et retourne le fichier converti au format cible.
Corps de la requête
| Paramètre | Type | Description |
|---|---|---|
| fileContentrequis | string | Contenu brut du fichier comptable (UTF-8). Formats acceptés : CSV, TXT, FEC (pipe-séparé). Taille max : 50 Mo. |
| countryrequis | string | Code pays source. Voir liste des codes pays. Ex : fr, es, de |
| formatrequis | string | Format de sortie souhaité : fec · saft · json · csv |
| companyoptionnel | string | Nom de la société. Utilisé dans les métadonnées du fichier de sortie. Défaut : Entreprise |
| yearoptionnel | string | Exercice comptable (YYYY). Défaut : 2024 |
| currencyoptionnel | string | Code devise ISO 4217. Défaut : EUR |
| languageoptionnel | string | Langue de l'analyse IA retournée. Codes : fr · es · en · de · it · pt. Défaut : fr |
| user_idoptionnel | string | UUID Supabase de l'utilisateur. Requis pour le compteur de quota (plan Solo). Ignoré pour le plan API. |
Exemple de requête
curl -X POST \
https://hxktqzpkupvlfyzifjfd.supabase.co/functions/v1/gfs-engine \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"fileContent": "numero_cuenta;debe;haber;fecha;concepto\n430;1500.00;;20240101;Vente client A",
"country": "es",
"format": "fec",
"company": "ACME España SL",
"year": "2024",
"currency": "EUR",
"language": "fr"
}'
Structure de la réponse (200 OK)
La réponse est encapsulée dans un tableau content compatible format Anthropic Messages API. L'objet de données est dans content[0].text sous forme de JSON stringifié.
{
"content": [{
"type": "text",
"text": "{
\"analysis\": {
\"detected_format\": \"PGC Spain\",
\"detected_country\": \"es\",
\"separator\": \";\",
\"encoding\": \"UTF-8\",
\"quality_score\": 92,
\"ai_comment\": \"Fichier PGC espagnol détecté. 1 200 lignes converties...\",
\"language\": \"fr\"
},
\"mapping\": [
{\"source_account\": \"430\", \"target_account\": \"411\",
\"target_label\": \"Clients\", \"confidence\": \"high\"}
],
\"validation\": [
{\"type\": \"ok\", \"message\": \"Balance équilibrée : 45 230.00 €\"},
{\"type\": \"warn\", \"message\": \"12 lignes sans numéro de TVA — impact SII espagnol\"}
],
\"vida_compliance\": {
\"status\": \"warn\",
\"format\": \"SII\",
\"vat_rate\": \"21%\",
\"missing_fields\": [\"numero_iva\"],
\"notes\": \"Champ NIF manquant sur 12 lignes. Requis pour déclaration SII.\"
},
\"stats\": {
\"lines_converted\": 1200,
\"total_input_lines\": 1200,
\"accounts_mapped\": 45,
\"balance_check\": \"équilibré\",
\"coverage_pct\": 94,
\"total_debit\": 45230.00,
\"total_credit\": 45230.00,
\"truncated\": false
},
\"output_preview\": \"JournalCode|JournalLib|EcritureNum|...\",
\"output_full\": \"<base64 du fichier FEC complet>\",
\"output_filename\": \"GFS_ACME_España_SL_2024.fec\",
\"output_mime\": \"text/plain\"
}"
}]
}
Champs de réponse — stats
| Champ | Type | Description |
|---|---|---|
| lines_converted | integer | Nombre total de lignes parsées et converties |
| total_input_lines | integer | Nombre de lignes dans le fichier source (hors header) |
| accounts_mapped | integer | Nombre de comptes ayant reçu un mapping IA |
| coverage_pct | integer | Pourcentage de lignes avec mapping appliqué (0-100) |
| balance_check | string | équilibré ou déséquilibré |
| total_debit | float | Total débit en devise source |
| total_credit | float | Total crédit en devise source |
| truncated | boolean | true si le fichier de sortie est limité à 10 000 lignes inline |
| lines_in_download | integer | Lignes réellement présentes dans output_full |
Décodage du fichier converti
Le champ output_full contient le fichier converti encodé en Base64 (UTF-8). Pour le décoder :
// JavaScript / Node.js
const fileContent = decodeURIComponent(escape(atob(response.output_full)));
// Python
import base64
file_content = base64.b64decode(response['output_full']).decode('utf-8')
// curl + bash
echo "<base64_string>" | base64 -d > output.fec
POST /stripe-checkout
Crée une session Checkout Stripe avec le user_id en metadata. Garantit que le webhook Stripe met à jour le bon profil après paiement.
| Paramètre | Type | Description |
|---|---|---|
| planrequis | string | cabinet · cabinet_pro · api |
| productrequis | string | gfs · fintusk |
| success_urloptionnel | string | URL de redirection après paiement. Défaut : confirmation page GFS. |
| cancel_urloptionnel | string | URL de redirection en cas d'abandon. |
Réponse
{ "url": "https://checkout.stripe.com/...", "session_id": "cs_live_..." }
Formats supportés
Formats d'entrée
| Format | Séparateurs détectés | Encodages | Taille max |
|---|---|---|---|
| FEC (DGFiP France) | | (pipe) | UTF-8, ISO-8859-1 | 50 Mo |
| CSV générique | ; , | tab | UTF-8, ISO-8859-1, Windows-1252 | 50 Mo |
| TXT export ERP | Détection auto | UTF-8 | 50 Mo |
| Excel (via CSV) | Auto après export | UTF-8 | 50 Mo |
Formats de sortie
| Code | Format | Standard | Extension |
|---|---|---|---|
| fec | Fichier des Écritures Comptables | DGFiP France | .fec |
| saft | Standard Audit File for Tax | OCDE / UE (XML) | .xml |
| json | JSON structuré GFS | Propriétaire Fintusk | .json |
| csv | CSV normalisé UTF-8 | Générique | .csv |
Codes pays
| Code | Pays | Plan comptable | ViDA |
|---|---|---|---|
| fr | France | PCG | e-facture Sep. 2026 |
| es | Espagne | PGC | SII actif |
| de | Allemagne | SKR03 / SKR04 | eRechnung Jan. 2025 |
| it | Italie | PdC | FatturaPA actif |
| pt | Portugal | SNC/NCRF | SAF-T-PT actif |
| be | Belgique | PCMN | Peppol 2026 |
| nl | Pays-Bas | RGS | Peppol actif |
| pl | Pologne | KSR | KSeF Fév. 2026 |
| ch | Suisse | KMU | — |
| se | Suède | BAS | — |
| ro | Roumanie | OMFP | RO e-Factura actif |
| ohada | Zone OHADA (17 pays) | SYSCOHADA | — |
Liste complète des 27+ pays disponibles sur demande à api-gfs@fintusk.fr.
Codes d'erreur
| Code HTTP | Code erreur | Description | Action |
|---|---|---|---|
| ● 200 | — | Conversion réussie | — |
| ● 400 | no_file_content | Le champ fileContent est vide | Vérifiez que le contenu du fichier est bien transmis |
| ● 401 | unauthorized | Token JWT absent ou invalide | Vérifiez votre Authorization header |
| ● 429 | quota_exceeded | Quota mensuel atteint (plan Solo : 50/mois) | Passez au plan Cabinet Pro pour des conversions illimitées |
| ● 500 | internal_error | Erreur serveur interne | Contactez api-gfs@fintusk.fr avec les détails de la requête |
Structure d'une réponse d'erreur
{
"error": "quota_exceeded",
"message": "Limite de 50 conversions/mois atteinte pour le plan Solo.",
"quota": { "used": 50, "limit": 50, "plan": "cabinet" }
}
Quotas et limites
| Plan | Conversions/mois | Taille max fichier | Lignes inline max |
|---|---|---|---|
| Cabinet Solo (149 €) | 50 | 50 Mo | 10 000 |
| Cabinet Pro (499 €) | Illimité | 50 Mo | 10 000 |
| API (1 990 €) | Illimité | 50 Mo | 10 000 |
SLA & disponibilité
| Métrique | Engagement (Plan API) |
|---|---|
| Disponibilité mensuelle | ≥ 99,5 % |
| Temps de réponse p95 | < 8 secondes |
| Temps de réponse p50 | < 4 secondes |
| Délai de réponse support P1 | < 1 heure |
| Délai de réponse support P2 | < 4 heures |
| Délai de réponse support P3 | < 24 heures ouvrées |
Le SLA complet (compensations, procédures, exclusions) est disponible en téléchargement sur demande à api-gfs@fintusk.fr.
Changelog
v5 — Mars 2026
Agent Compliance ViDA avec validation proactive chiffrée. Compteur de quota par plan. Log des conversions en BDD. Paramètre user_id ajouté. Gestion HTTP 429 quota dépassé.
v4 — Février 2026
Parser multi-langue 100+ aliases (ES, DE, IT, NL, PL...). Format montants européens 1.234,56. Paramètre language pour l'analyse IA. Limite inline 10k lignes avec safeBase64.
v3 — Janvier 2026
Parser côté serveur pour les fichiers 50 000 lignes. Mapping par préfixe de compte. Support SAF-T XML complet.
GFS — Global Financial Standard · by Fintusk