80 French Invoices, One Spreadsheet
Batch AP Without Manual Entry
Most French SMEs receive between 150 and 500 supplier invoices (factures fournisseurs) per month. At 4 to 8 minutes per manual entry — reading the SIREN, checking the TVA intracommunautaire, splitting line items across multiple VAT rates, typing into the accounting software — that's 30 to 60 hours of data entry every month. The standard answer is a single-invoice scanner: open one PDF, scan it, confirm the fields, export, repeat. But at 80 invoices, that still leaves a full afternoon of clicking between documents and verifying that Facture #27's TVA breakdown on the 5.5% rate didn't accidentally merge into Facture #26's row. Batch processing removes every inter-document mechanical step. But batch processing French supplier invoices carries structural challenges that generic tools — built for single-rate English-language invoices — were never designed to handle. Here is what those challenges look like at scale and how to solve them.
Key Takeaways
- Process 80 French supplier factures the standard way — one file at a time — and the invoice that arrived on the 3rd burned 20 of its 30 legal payment days just waiting in your processing queue.
- A single tax column on a Metro facture merges four TVA (French VAT) rates — 20%, 10%, 5.5%, and 2.1% — into one number your expert-comptable cannot split across four separate CA3 declaration lines.
- Upload all 80 factures in one batch to ImageToTable.ai — TVA lands pre-split by rate with SIREN-VAT IDs auto-validated, but the operational shift is that every invoice enters your accounting system the same day, inside the 30-day délai de paiement.
When 80 Factures Arrive at Month-End — Why Batch Isn't "Single × 80"
Processing one invoice at a time works until the volume crosses a threshold where the time per invoice stops being dominated by actual data extraction and starts being dominated by the mechanical steps around it. For a French SME, that threshold lands somewhere between 40 and 60 factures per month — the point where opening, closing, naming, and mentally context-switching between files consumes more time than the extraction itself. At 80 invoices, four structural problems emerge that single-invoice workflows inherit and amplify:
Format drift across suppliers. When you enter data manually into Pennylane or Cegid, your brain compensates for differences in invoice layout — you see "N° Facture" on a Metro invoice and "Numéro de facture" on a Transgourmet invoice and know they're the same field. An automated batch extraction has no such intuition unless it reads field meaning, not field position. Eight French suppliers, eight layouts, and a batch output that mixes them all in one spreadsheet — without a mechanism that understands "Numéro facture," "N° Fact.," and "Facture N°" all refer to the same data point.
TVA fragmentation. A standard French supplier invoice from a wholesaler like Metro carries up to four VAT rates on the same document: 20% normal (taux normal) on equipment and packaging, 10% intermediate (taux intermédiaire) on prepared goods, 5.5% reduced (taux réduit) on food staples, and potentially 2.1% super-reduced (taux super-réduit) on specific items like medicines. A generic extraction tool that outputs one "tax" column collapses four distinct TVA bases into one number — and your accountant (comptable) cannot post a single tax figure to four different PCG accounts or file it correctly on the CA3. The mandatory fields under Article L441-9 of the Code de commerce and Article 289 of the CGI define what must be on every facture. Batch processing adds the demand that these fields stay semantically consistent across 80 rows from different suppliers.
Error propagation. When you enter 80 invoices manually, each is an independent operation — a typo in Facture #44's SIREN doesn't cascade into a typo in #45's. In a batch extraction, if the AI misidentifies the supplier name on one invoice because the logo placement shifted, you won't know until you review the entire output. Worse: if one supplier consistently formats their SIREN in a non-standard position (e.g., "SIREN 123 456 789" instead of "SIREN 123456789"), this error repeats across all invoices from that supplier — and a month-end verification that only spot-checks one row will miss all the others.
Traceability gaps. A merged spreadsheet of 80 rows needs to tell you which row came from which facture. If you need to go back to an original invoice to verify a TVA intracommunautaire against the VIES database or check a discount line, you need a reliable filename-to-row mapping. Without a source-document column, auditing a batch extraction becomes a scavenger hunt through your Messagerie or Downloads folder — and for a contrôle fiscal (tax audit), the auditor will request the original facture files, not your extraction spreadsheet.
None of these problems exist when you process three invoices. At 80, all four are active simultaneously. Solving them is what separates a batch processing workflow from "single extraction, repeated 80 times."
The Supplier Format Problem — One Spreadsheet, Eight Different French Layouts
A Metro invoice and a Transgourmet invoice share the same legal structure under Article L441-9 of the Code de commerce but look nothing alike. Metro places "N° Facture" in the top-right block alongside the SIREN; Transgourmet embeds it in a table header. A local producteur de fruits in Rungis might send a handwritten facture where the supplier address block has no explicit label at all — you recognise it because it sits in the top-left corner and starts with the street name. A Pomona delivery invoice uses a different layout again. This is the core argument against template-based batch extraction for French supplier invoices: every new fournisseur forces you to build and maintain a new extraction template.
To put that in perspective: a medium-sized French restaurant might receive invoices from Metro (food wholesale), Transgourmet (beverage), Pomona (produce and dairy), a local caviste (wine), a cleaning service, a maintenance company (entretien équipement), a marketing agency, and France Boissons — plus occasional one-off suppliers. That's eight distinct invoice formats before considering the variations within Metro itself (standard invoice, bon de livraison, facture d'avoir), which use the same brand layout but rearrange fields. Template-based tools require a separate configuration for each variant. With semantic extraction — where the AI locates fields by understanding what a label means — you define your column names once.
This is how Custom Column Extraction — the mechanism behind ImageToTable.ai — differs from template-matching at scale. You type the column names you want: "Invoice Number," "Supplier Name," "Supplier SIREN," "Supplier VAT ID," "Invoice Date," "Service Date," "HT Amount 20%," "TVA 20%," "HT Amount 10%," "TVA 10%," "HT Amount 5.5%," "TVA 5.5%," "TTC Total" — and the AI locates each value on every invoice in the batch by understanding what the label means, regardless of where it appears, whether the label text varies ("N° Facture" vs "Numéro de facture" vs "Facture N°"), or whether some invoices use a three-letter abbreviation others spell out. One column definition covers all eight supplier layouts in one batch upload.
The practical implication: you upload the month's entire dossier of factures fournisseurs — 80 PDFs, JPGs, and scanned documents from all suppliers — and get one merged spreadsheet where every row represents a facture with the same columns, regardless of format. No per-supplier template, no format pre-sorting, no "this fournisseur's invoices must be uploaded separately because the layout is different."
The TVA Rate Split Across 80 Invoices — Why One "Tax" Column Is Useless for a French Comptable
Now assume the batch extraction worked — all 80 factures are in your spreadsheet with consistent columns. The next problem is that a single TVA column on a French invoice can contain four different values — 20%, 10%, 5.5%, and 2.1% — and each one demands a different PCG accounting treatment. If you simply SUM the TVA column, you're adding together 20% normal-rate VAT going to compte 44566 (TVA déductible sur autres biens et services), 5.5% reduced-rate VAT that also goes to 44566 but affects different lines of the CA3, and potentially auto-liquidation under Article 283 of the CGI where VAT shifts to the buyer — meaning zero déduction and a separate reporting obligation.
The CA3 — France's monthly or quarterly VAT declaration, filed through impots.gouv.fr — requires VAT amounts to be reported by rate on separate lines:
| TVA Scenario | Taux | CA3 Line | PCG Account | What It Means in a Batch |
|---|---|---|---|---|
| Normal (taux normal) | 20% | Ligne 08 | 44566 | Reclaimable input VAT — the largest category for most businesses. SUM of all TVA 20% across batch → Ligne 08. |
| Intermediate (taux intermédiaire) | 10% | Ligne 08 (subset) | 44566 | Also reclaimable but your expert-comptable may want the split visible. Separate subtotal within Ligne 08. |
| Reduced (taux réduit) | 5.5% | Ligne 08 (subset) | 44566 | Same reclaim mechanism. The base HT (hors taxes) amounts differ, so tracking them separately matters for contrôle de coûts, not just TVA. |
| Super-reduced (taux super-réduit) | 2.1% | Ligne 08 (subset) | 44566 | Rare — applies to specific items like reimbursed medicines. Present mainly if you deal with pharmacies. |
| Auto-liquidation (Article 283 CGI) | 0% on invoice | Ligne 09 + Ligne 19 | 4452 | VAT obligation shifts to buyer. You self-assess and deduct in the same return — net zero but must be declared. |
| Franchise en base (VAT exemption) | 0% | N/A | Charge only | Supplier is a micro-entrepreneur under the franchise threshold (€85,000 for goods, €37,500 for services). No TVA to reclaim, but the charge remains a valid expense. |
A practical approach to handling this in a batch extraction: define an Inferred Column — a column where AI classifies the invoice based on its content rather than extracting a value that's explicitly on the page. For example, a column named VAT Type (options: 20% Normal/10% Intermédiaire/5.5% Réduit/2.1% Super-réduit/Auto-liquidation/Franchise en base) instructs the AI to read each invoice, determine which VAT regime applies, and output the correct category label. This gives you a filterable column — and from there, you can group by VAT type and sum each group's TVA separately for your CA3. The extraction and classification happen in one pass, not two separate operations.
This also matters for the expense side of your comptabilité. The HT (hors taxes) amount on a franchise-en-base invoice is still a charge d'exploitation (operating expense) under compte de classe 6, even though it carries zero deductible TVA — if you exclude it from your cost summary because "no VAT = not relevant," you're underreporting expenses. Batch extraction needs to capture the full financial picture, not just the VAT-reclaimable slice.
For invoices that carry mixed TVA rates — a Metro facture that charges 20% on kitchen equipment, 10% on prepared sauces, and 5.5% on fresh produce — define separate column pairs for each rate: "HT 20%," "TVA 20%," "HT 10%," "TVA 10%," "HT 5.5%," "TVA 5.5%." The AI extracts each rate group independently from the invoice. If an invoice only has 20% items, the other rate columns stay empty. In your batch output, each TVA rate forms its own column, so SUM(TVA 20%) and SUM(TVA 5.5%) are separate numbers ready for CA3 line mapping — no post-extraction splitting required.
SIREN Verification and Supplier Identity Across the Batch
A French invoice carries two identification numbers for the same supplier: the SIREN (9 digits, unique company identifier in the Sirene register managed by INSEE) and the TVA intracommunautaire (N° TVA intracommunautaire) (format: FR + 2-digit check key + SIREN, e.g., FR12 345 678 901). The TVA number is derived from the SIREN — the two-digit key is a mathematical check — which means you can verify that a supplier's TVA ID matches their SIREN without an external lookup. If the extracted SIREN is 345 678 901 and the extracted TVA ID is FR12 345 678 901, the check key 12 should validate against the SIREN using the official algorithm: (12 + 3) × 1 + (12 + 4) × 2... — but more practically, the EU VIES database confirms the pairing instantly.
In a batch of 80 factures from 30 different suppliers, this verification becomes both a control opportunity and a time sink. Manually checking 30 SIREN-TVA pairs against VIES takes 2-3 minutes per supplier — an extra hour on top of batch processing. But it's non-negotiable: a seller's TVA number that doesn't validate on VIES means the input VAT on that invoice may be disallowed, creating a liability in a contrôle fiscal. Under Article 1737 of the CGI, a missing or incorrect mention on a facture carries a penalty of €15 per item.
The batch-level approach: add a Computed Column that checks whether the TVA intracommunautaire contains the SIREN digits. If the SIREN column reads "345678901" and the VAT ID column reads "FR12 345 678 901", the computed column outputs "OK" — confirming internal consistency. If the SIREN digits don't appear in the VAT ID, it flags "VERIFY" — and only those rows need a manual VIES check. This cuts the verification workload from 30 suppliers to the 2-3 that flag a mismatch. The rest are auto-verified in the same batch pass that extracts their data.
The Workflow — How to Process 80 Fournisseur Invoices in One Go
With the structural challenges mapped — supplier format diversity, TVA fragmentation across four rates, and SIREN-TVA verification — here is the end-to-end batch workflow from a folder of 80 factures to a comptable-ready spreadsheet:
VAT Type (options: 20% Normal/10% Intermédiaire/5.5% Réduit/2.1% Super-réduit/Auto-liquidation/Franchise) to auto-classify each facture. Add a Computed Column to validate SIREN-TVA pairing: SIREN Check (SIREN digits found in VAT ID? OK : VERIFY). If exporting to Pennylane or Sage, align column names with the import schema — "Date Facture" not "Invoice Date," "Total TTC" not "Gross Total." This column definition is reused for every batch.Files are processed securely and not stored. Upload multiple factures to see batch extraction in action.
For the verification step specifically: the highest-risk items in a batch are not the ones that look wrong — they're the ones that look right but contain a field that was systematically misread because of a supplier-specific formatting quirk. A Metro invoice that places its TVA breakdown in a three-column table instead of a two-column layout won't show an error — the cells will contain numbers, and the numbers will look plausible. The check that catches this is the top-10-by-TTC-Total spot-check: open the original Metro facture, compare the TTC total to the extracted TTC total and the sum of HT per rate plus TVA per rate. If all three numbers match, the extraction is reliable. If they don't, there's a formatting quirk to investigate — and it likely affects all Metro invoices in the batch, not just one.
From Batch Output to Your Expert-Comptable — Export and CA3 Readiness
Extracting 80 factures into a spreadsheet solves the data entry problem. It does not automatically solve the handoff problem — the step where that spreadsheet needs to become something your chartered accountant (expert-comptable) can use without re-keying every row. French accounting firms use the following software ecosystems, and each has its own import expectations:
- Pennylane. The fastest-growing platform among French PMEs. Imports CSV with column mapping — Pennylane's import wizard lets you match your columns to its fields during upload. Align your extraction columns with Pennylane's schema: "Date de la facture," "Numéro de facture," "Fournisseur," "Total TTC," "SIREN fournisseur," and separate columns for "TVA 20%," "TVA 10%," "TVA 5.5%."
- Cegid / EBP. Traditional desktop software used by many cabinets d'expertise comptable. These tools typically import structured CSV with specific field ordering. Cegid expects "Code Journal" (ACH for achats), "Date," "N° Pièce," "Compte" (401 for the supplier, 6xx for the charge), "Libellé," "Débit," "Crédit" — one row per accounting entry. This means your batch extraction output needs to be pivoted from one-row-per-invoice to one-row-per-accounting-line before import.
- Sage 100 Cloud. Uses a CSV import format with a fixed column structure: "Type" (F for facture), "Date," "Référence," "Tiers," "Compte Général," "Libellé," "Montant HT," "Code TVA," "Montant TVA," "Montant TTC." Sage's import also requires the "Code TVA" to match its internal TVA rate table — typically "T20" for 20%, "T10" for 10%, "T55" for 5.5%.
The key insight: your extraction columns should mirror the import columns your accounting system expects. If your expert-comptable books supplier invoices to compte 401 (Fournisseurs) and splits TVA across compte 44566 (TVA déductible sur autres biens et services) and compte 44562 (TVA déductible sur immobilisations), design your extraction columns to produce data that maps directly to those accounts. A column called "Compte Charge" with the value "607" (Achats de marchandises) or "606" (Achats non stockés) eliminates the manual reclassification step. The extraction output is the import file — not a document that needs to be reformatted before it becomes usable.
France's phased e-invoicing mandate — mandatory receipt for all businesses from September 2026 (large companies) and September 2027 (PME/micro-entreprises) — is gradually introducing structured formats (Factur-X, UBL, CII) through Plateformes de Dématérialisation Partenaires (PDP) registered with the DGFiP. During the transition, your batch pipeline will handle a mix: some Factur-X PDFs (structured XML embedded), some plain PDFs, some scanned factures from fournisseurs who won't switch until 2027. The extraction workflow needs to handle all three formats in one upload, and the archiving obligation under Article L123-22 of the Code de commerce — 10 years for original documents — means the source files must be preserved alongside the extraction output.
For a batch of 80 factures heading to your expert-comptable, a column set aligned with French accounting might look like:
- Date Facture — JJ/MM/AAAA
- N° Facture — unique, sequential reference
- Fournisseur — dénomination sociale (legal name)
- SIREN Fournisseur — 9 digits, unspaced (e.g., 345678901)
- N° TVA Fournisseur — FR + 2-digit key + SIREN
- HT 20% / TVA 20%
- HT 10% / TVA 10%
- HT 5.5% / TVA 5.5%
- Total TTC — gross amount payable
- VAT Type — inferred classification for CA3 grouping
- Fichier Source — original filename for audit traceability
Payment Deadlines — Why Batch Processing Changes the Délai de Paiement Equation
Under French commercial law, the default payment deadline (délai de paiement) between professionals is 30 days from the invoice date (date d'émission). For periodic invoices (factures périodiques), the maximum is 45 days. For agricultural and food products, sector-specific rules extend to 60 days for non-perishable goods. These deadlines are not optional — exceeding them triggers automatic penalty interest (intérêts de retard) at three times the legal interest rate (taux d'intérêt légal), plus a fixed recovery indemnity of €40 per late invoice under Article D441-5 of the Code de commerce.
When you process 80 invoices one at a time, the invoice that arrived on the 3rd of the month sits in the queue behind the one that arrived on the 15th — and by the time you get to the early ones, 20 days of the 30-day clock have already passed. Batch processing compresses that queue into a single operation, and every invoice enters the accounting system on the same day — the day you run the batch. This doesn't change the legal deadline, but it eliminates the processing-sequence delay that silently eats into the délai de paiement before you've even looked at the invoice.
The commercial consequence: 86% of French companies experienced late payment in 2025, with an average delay of 39.5 days, according to Coface's annual payment survey. Late payments triggered a record 42,505 business failures in the first eight months of 2025 alone, with €3.6 billion in supplier debts at risk. For the SME receiving 80 invoices a month, batch processing doesn't just save data entry hours — it shortens the time from "invoice received" to "invoice entered and ready for payment," reducing exposure to penalty interest and the risk of supplier relationship damage that comes with repeated late payments. The 18x efficiency gain (3 minutes per invoice manually vs 5-10 seconds with extraction) is the headline number, but the deadline compression from sequential processing to parallel batch processing is what protects your délai de paiement compliance.
Frequently Asked Questions
Can I really process factures from Metro, Transgourmet, Pomona, and a local artisan in the same batch?
Yes. Because extraction is driven by column-name semantics — the AI reads field meaning, not field position — the same column definition works across different supplier layouts. You don't need a separate template per fournisseur. The one caveat: if two suppliers use an identical label for different things (e.g., both have a "Date" field but one means the date de facturation and the other means the date de livraison), define your columns precisely — "Invoice Date" and "Delivery Date" rather than a generic "Date."
How do I handle the TVA split when a Metro invoice has items at 20%, 10%, and 5.5%?
Define separate column pairs for each TVA rate: "HT 20%," "TVA 20%," "HT 10%," "TVA 10%," "HT 5.5%," "TVA 5.5%." The AI extracts each rate group independently. If an invoice only has items at 5.5% and 20%, the 10% columns remain empty — and vice versa. For complex invoices where the split isn't obvious — a restaurant order that mixes food (5.5%) and alcohol (20%) on the same line — add a Computed Column to recalculate the correct TVA split from line-item quantities and unit prices and cross-check against the facture's stated TVA récapitulatif.
What happens if one fournisseur's SIREN is misread — does it break the whole batch?
No — each facture in the batch is processed independently. If Facture #23's SIREN is misread (e.g., 345668901 instead of 345678901 — a common OCR confusion between 6 and 8), only that row is affected. The Computed Column for SIREN-TVA validation catches this by comparing the SIREN against the VAT ID: if the SIREN digits don't appear in the TVA number, the row flags "VERIFY." You can then correct that single cell manually (you likely know the fournisseur's SIREN from a previous invoice) without reprocessing the entire batch.
Can I export directly in a format Pennylane or Cegid will accept?
You can export to Excel (XLSX) or CSV. The batch extraction output is a structured spreadsheet — the columns you defined become the Excel columns. If you align your extraction columns with your accounting software's import schema (e.g., "Date Facture" in DD/MM/YYYY, "N° Facture," "Total TTC," "SIREN Fournisseur"), the export is structurally ready for import. Pennylane's import wizard maps columns during upload; Cegid and Sage expect specific fixed-order CSV formats. The tool does not natively produce Pennylane- or Cegid-format files, but with column names matched to the software's expected fields, the reformatting step is minimal — typically just column reordering and a Save As CSV. For more complex transformations, such as pivoting from one-row-per-invoice to one-row-per-accounting-entry for Cegid, this step requires manual spreadsheet work or a macro.
Does batch processing work with the new Factur-X structured PDFs and scanned paper invoices in the same upload?
Yes, the batch can contain a mix of Factur-X PDFs (with embedded XML), plain PDFs, JPG scans, and phone photos — the AI reads the visual layer of each document. For Factur-X invoices, it reads the visible PDF rendering; it does not parse the embedded XML. In practice, this means the extraction accuracy on a Factur-X invoice is determined by the visual layout quality, not by the XML presence — the same as a plain PDF. The advantage of Factur-X during the e-invoicing transition is backup: if the visual extraction misses a field, the structured XML inside the PDF serves as a reference for manual verification, not a dependency for automated processing. For pure XML e-invoices without a visual PDF layer, the tool is not designed to process them — use an XML parser or ask the fournisseur for the human-readable version.
How do I handle avoirs (credit notes) mixed in with regular factures in the batch?
A French credit note (avoir) carries the same mandatory fields as a regular facture but with negative amounts — an avoir for €150 TVA included means -€150 in the TTC column. If you batch your regular factures together with your avoirs, the AI will extract the negative values correctly. Define an inferred column Document Type (options: Facture/Avoir) to auto-classify each document. Then group by Document Type in your output: SUM(TTC) where Type = Facture gives you the total supplier liability; SUM(TTC) where Type = Avoir gives you total credits to offset. The most common batch error with avoirs is extracting them as positive numbers — if your batch output has a Total TTC column that doesn't match the sum of individual invoices you manually tallied, check whether an avoir was extracted as a positive instead of a negative value.
Getting Your Batch French Invoice Workflow Running
Batch processing French supplier factures sits at a specific intersection: it's the point where the number of invoices crosses from "manual entry is annoying but manageable" to "manual entry is a structural time sink." For most French SMEs, that line lands somewhere between 40 and 60 factures per month. Below that, the friction is from the workflow — opening the next PDF, typing fields into Pennylane, saving, repeating. Above it, the friction is systemic: supplier format diversity, four different TVA rates demanding separate columns, SIREN-TVA verification across 30 fournisseurs, and the CA3 deadline bearing down at month-end.
The batch processing approach outlined here — column-name-based extraction that works across supplier formats, inferred columns for automatic TVA rate classification, Computed Columns for SIREN validation, and expert-comptable-aligned export schemas — addresses the systemic problems, not just the per-invoice speed. The 18x efficiency gain (3 minutes per facture manually vs 5-10 seconds with extraction) is the headline number. But the larger operational shift is this: the entire month's factures fournisseurs become one operation. Not 80 operations performed faster — one operation that transforms a folder of mixed-format invoices into a spreadsheet where every row carries identical columns, TVA is split by rate ready for the CA3, and SIREN-TVA pairings are verified before your expert-comptable sees the file. And because processing 80 factures in a single batch compresses the délai de paiement window — every invoice enters your accounting system on the same day — you're not just saving time. You're protecting your company from the penalty interest and supplier friction that come with the 39.5-day average delay French businesses face today.
Upload multiple factures — free to try, no account required for the first 50 pages.