Skip to main content

fec-lint

English · Français

Technical check, not tax advice. fec-lint checks the structure of a file against the published FEC format. It does not certify a file or replace an accountant's review.

Contrôle technique, pas un conseil fiscal. fec-lint vérifie la structure d'un fichier au regard du format FEC publié. Il ne certifie pas un fichier et ne remplace pas la revue d'un expert-comptable.


English

Free structural linter for French FEC files (Fichier des Écritures Comptables, art. A47 A-1 LPF), as a command line tool and an MCP server.

What file does it check?

The FEC your accounting software exports (look for "FEC" or "Export DGFiP" in its year-end menu); you don't build it by hand. It is a text file named SIRENFECAAAAMMJJ.txt (SIREN, FEC, closing date), tab- or pipe-separated, with this header and one line per accounting line:

JournalCode|JournalLib|EcritureNum|EcritureDate|CompteNum|CompteLib|CompAuxNum|CompAuxLib|PieceRef|PieceDate|EcritureLib|Debit|Credit|EcritureLet|DateLet|ValidDate|Montantdevise|Idevise
VE|Ventes|000039|20250610|411000|Clients|CLI001|Atelier Durand|F2025-06|20250610|Facture F2025-06 Atelier Durand|3960,00|0,00|||20250610||

Dates are AAAAMMJJ; amounts use a decimal comma and no thousands separator. CompAuxNum/CompAuxLib, EcritureLet/DateLet and Montantdevise/Idevise may be empty, but only in pairs; every other field is required. The FEC Checker page has the full column-by-column table. Synthetic examples are in tests/fixtures/.

Install

pipx install fec-lint

Command line

fec-lint 123456782FEC20251231.txt
123456782FEC20251231.txt: FAILED (encoding utf-8, separator pipe, lines 214)
  error date_invalid x3: Non-existent date in EcritureDate. - line(s) 21, 22, 23
  error date_format x3: Wrong date format in EcritureDate (expected AAAAMMJJ). - line(s) 64, 65, 66
Structure has errors. Full pre-audit (balance, numbering, risk signals): https://apify.com/highfiddle/fec-checker
  • --json prints the full result: {ok, file, errors[], warnings[], stats}.
  • --name 123456782FEC20251231.txt sets the name checked against SIRENFECAAAAMMJJ.txt.
  • --quiet hides the last line.
  • Exit code: 0 when the structure is OK, 1 on errors, 2 when a file cannot be read. Several files can be given at once.
  • A .zip holding exactly one .txt FEC is unpacked first.

MCP server

Add it to your MCP client (Claude Desktop, Claude Code, Cursor…):

{
    "mcpServers": {
        "fec-lint": {
            "command": "uvx",
            "args": ["--from", "fec-lint", "fec-lint-mcp"]
        }
    }
}

Without uv, install with pipx install fec-lint and use "command": "fec-lint-mcp". The server exposes one tool, lint_fec(path), which takes a local file path and returns the same JSON as --json.

Full pre-audit as a hosted MCP server. The paid FEC Checker (balance, numbering, risk signals, AI fix list) runs on Apify and is reachable over MCP. Users sign in with Apify OAuth; agents can pay with x402 by adding &payment=x402:

claude mcp add --transport http fec-checker "https://mcp.apify.com/?tools=highfiddle/fec-checker"

Free vs full pre-audit

Check fec-lint (free) FEC Checker on Apify
File name SIRENFECAAAAMMJJ.txt, SIREN key ✅ ✅
Encoding, separator, 18 headers ✅ ✅
Field formats: dates, amounts, mandatory fields, pairs ✅ ✅
Balance per entry and for the whole file — ✅
EcritureNum gaps and duplicates, ValidDate chronology — ✅
Risk signals: weekends, holidays, round amounts, Benford, cash 53x, suspense 471, after year end — ✅
Verdict, 0-100 score, AI-written fix list (FR/EN) — ✅
Runs locally, nothing leaves your machine on Apify, pay per file

Français

Linter structurel gratuit pour les FEC (Fichier des Écritures Comptables, art. A47 A-1 LPF), en ligne de commande et en serveur MCP.

Quel fichier contrôle-t-il ?

Le FEC exporté par votre logiciel comptable (cherchez « FEC » ou « Export DGFiP » dans le menu de clôture) ; vous ne le construisez pas à la main. C'est un fichier texte nommé SIRENFECAAAAMMJJ.txt (SIREN, FEC, date de clôture), séparé par tabulations ou barres verticales, avec l'en-tête et le type de ligne montrés plus haut.

Les dates sont au format AAAAMMJJ ; les montants utilisent la virgule décimale, sans séparateur de milliers. CompAuxNum/CompAuxLib, EcritureLet/DateLet et Montantdevise/Idevise peuvent être vides, mais seulement par paires ; tous les autres champs sont obligatoires. La page FEC Checker détaille chaque colonne. Des exemples fictifs sont dans tests/fixtures/.

Installation

pipx install fec-lint

Ligne de commande

fec-lint 123456782FEC20251231.txt
  • --json affiche le résultat complet : {ok, file, errors[], warnings[], stats}.
  • --name 123456782FEC20251231.txt indique le nom à contrôler selon SIRENFECAAAAMMJJ.txt.
  • --quiet masque la dernière ligne.
  • Code de sortie : 0 si la structure est correcte, 1 en cas d'erreur, 2 si un fichier est illisible. Plusieurs fichiers peuvent être passés à la fois.
  • Un .zip contenant un seul FEC .txt est décompressé d'abord.

Les messages sont en anglais ; les codes de règle (date_invalid, header_missing…) sont stables.

Serveur MCP

Ajoutez-le à votre client MCP (Claude Desktop, Claude Code, Cursor…) avec la configuration ci-dessus. L'outil lint_fec(path) prend le chemin d'un fichier local et renvoie le même JSON que --json.

Pré-audit complet en serveur MCP hébergé. Le FEC Checker payant (équilibre, numérotation, signaux de risque, plan de correction IA) tourne sur Apify et s'utilise en MCP via https://mcp.apify.com/?tools=highfiddle/fec-checker (connexion Apify OAuth ; les agents peuvent payer en x402 avec &payment=x402).

Gratuit ou pré-audit complet

Contrôle fec-lint (gratuit) FEC Checker sur Apify
Nom SIRENFECAAAAMMJJ.txt, clé du SIREN ✅ ✅
Encodage, séparateur, 18 colonnes ✅ ✅
Formats : dates, montants, champs obligatoires, couples de champs ✅ ✅
Équilibre par écriture et du fichier — ✅
Ruptures et doublons d'EcritureNum, chronologie de ValidDate — ✅
Signaux de risque : week-ends, jours fériés, montants ronds, Benford, caisse 53x, attente 471, après clôture — ✅
Verdict, score 0-100, plan de correction rédigé par IA (FR/EN) — ✅
Exécution en local, rien ne quitte votre machine sur Apify, paiement par fichier

Development

python -m venv .venv
.venv/bin/pip install -e ".[test]"   # Windows: .venv\Scripts\pip
pytest

The fixtures in tests/fixtures/ are synthetic FEC files (fictitious SIREN 123456782). MIT license.

Metadata

Release files for fec-lint 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fec-lint 0.1.2
File Size Uploaded Provenance Actions
fec_lint-0.1.2.tar.gz 20.4 kB With provenance Details for fec_lint-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fec-lint 0.1.2
File Interpreter ABI Platform Actions
fec_lint-0.1.2-py3-none-any.whl Python 3 none any Details for fec_lint-0.1.2-py3-none-any.whl

Total release size: 33.4 kB

Release files / fec_lint-0.1.2.tar.gz

Download URL fec_lint-0.1.2.tar.gz
Size 20.4 kB
Tags Source
SHA-256 checksum
How to use checksums
929b42d99da51b804ac7736514e3018567c155e31fa2be081e561275c44f6b34
BLAKE2b-256 checksum
How to use checksums
40f4fd1e2f3caae0c906d64988856e911ad5fb57186bbdcfc01747f192e27f12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / fec_lint-0.1.2-py3-none-any.whl

Download URL fec_lint-0.1.2-py3-none-any.whl
Size 12.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20deda025487b278fdca228933faadd84080eb2124069d8dbba55326ba4b77af
BLAKE2b-256 checksum
How to use checksums
640463ccbf3ad7aa94380769205767ad6f79d1370e930166ec00c6961c241865
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Security for fec-lint 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for fec_lint-0.1.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page