DAC7 · checked against the sources on
DAC7 for small marketplaces: the French file
A marketplace resident in France reports what each seller earned through it to the DGFiP by 31 January: 31 January 2027 for 2026. No platform is too small; only sellers fall below thresholds. The DGFiP takes an XML file to its own schema, which departs from the OECD's, named to its rule, gzipped, then encrypted to its public key; or, for a platform selling goods with at most 50 sellers, an online form. dac7-report builds the file from your sellers and payouts CSVs on your machine and sends nothing: you file it yourself.
“no later than 31 January of the year following the calendar year”
Council Directive (EU) 2021/514 (DAC7), Annex V (read 9 Oct 2026)
Not tax advice. The platform operator files its own DAC7 report and answers for what it says; what the tool writes is a draft to check.
Why a generic DAC7 file will not do
The DGFiP collects with its own schema, stricter than the OECD's: no “:v1” in the namespace URIs, TaxesQn where the OECD has TaxQn, one platform operator per file, version 1.0 on the root, MessageRefId and DocRefId in its own forms, and the sequences “--”, “&#” and “/*” forbidden anywhere. The file is named DPIDAC7_<year>_<SIREN>_<000>_<timestamp>.xml, gzipped, then encrypted to the DGFiP's public key. Stripe's platform tax reporting, in early access, writes the Dutch schema for the EU, not this one: see Stripe's docs.
Who is left out
A seller of goods with fewer than 30 sales and no more than EUR 2,000 in the year; governmental and listed entities; an entity with more than 2,000 rentals of one property; a seller resident outside the EU, except for property it rents in the EU. Everyone else paid in the year is reported, quarter by quarter.
Filing
Only through the Espace professionnel on impots.gouv.fr, in the Tiers déclarants service, which your company joins once with an activation code sent by post. Test on the DGFiP's test platform first. Give each seller its copy by 31 January too, and keep the records for five to ten years. A platform selling goods with at most 50 sellers can use the DGFiP's online form instead (its guide).
Free routes
backmarket-oss/dac7 is a free Python tool that builds, names and encrypts the French file from JSON, with GnuPG installed. dac7-report takes CSVs, needs only Node.js, and is free for up to 25 reportable sellers; both are open source.
Build the file on your machine
npx --allow-remote=root https://agentwares.vercel.app/dl/dac7-report-0.1.0.tgz init
npx --allow-remote=root https://agentwares.vercel.app/dl/dac7-report-0.1.0.tgz check
npx --allow-remote=root https://agentwares.vercel.app/dl/dac7-report-0.1.0.tgz build --key DGFIP_TIERSDECLARANTS_PROD.asc- Write the files to fill: dac7-report.json (your SIREN, legal name and address) and the headers of sellers.csv and transactions.csv.
- One seller per row in sellers.csv, and one payment per row in transactions.csv (the net amount paid to the seller, your fees, the activity).
- Build and check: each error is named by file, line and column, and nothing is written while one stands.
- With the DGFiP's public key (the .asc from its zip), the file is encrypted, ready to deposit in the Espace professionnel, Tiers déclarants service.
It reads your files on your machine and writes the XML, its gzipped copy and, with the DGFiP's key, the encrypted file to deposit, plus a statement per seller and a validation log. It files nothing, sends nothing and calls no payment API. It needs Node.js 20 or later.
Free for up to 25 reportable sellers in a reporting year. Above 25, it takes a paid unlock for the reporting year, which is not on sale yet: no price is set and nothing is charged. The code is MIT and public, so the limit is a courtesy line, not a lock.
I would pay for the unlockFree elsewhere:
- the DGFiP's own online form (Espace professionnel, Tiers déclarants): sale of goods only, up to 50 sellers, typed in by hand;
- backmarket-oss/dac7, a Python tool (Apache-2.0) that builds, names and encrypts the French file from JSON, with GnuPG installed.
A kept DAC7 record, held for the years the law asks (the seller details, the tax-ID collection log and every filing), is not built. A platform keeps its DAC7 records for five to ten years. What exists today is this tool and the files it writes on your own disk. If you would pay for a record kept for you, say so with one click: no price is set, and it gets built only if enough people ask.
Count me inSources
- Council Directive (EU) 2021/514 (DAC7), Annex V (read 9 Oct 2026)
- Code général des impôts, art. 1649 ter A à 1649 ter E (Légifrance) (en vigueur depuis le 1er janvier 2023; read 9 Oct 2026)
- DGFiP : cahier des charges DPI-DAC7, revenus 2025, v1.6 (5 Nov 2025; read 9 Oct 2026)
- DGFiP : description du module EFI DAC7 (le formulaire en ligne), v1.0 (read 9 Oct 2026)
- Stripe : platform tax reporting (Connect) (read 9 Oct 2026)
- backmarket-oss/dac7 (Apache-2.0) (pushed 8 Oct 2026; read 9 Oct 2026)
Other DAC7 guides
- DAC7 : le fichier XML de la DGFiP, construit sur votre machine
- DAC7 : générer la déclaration XML pour la DGFiP depuis un export Stripe Connect
- DAC7 pour les petites plateformes : qui doit déclarer, et quand
- DAC7 et Sharetribe : préparer la déclaration de votre place de marché
A draft for the filer to check; not tax advice. The platform operator files its own DAC7 report and answers for what it says.