60 French Payslips,
One Spreadsheet
Silae processes over 7 million payslips (bulletins de paie) per month. It calculates every cotisation, applies every collective bargaining agreement (convention collective), and generates the DSN (Déclaration Sociale Nominative) file that French employers transmit monthly to URSSAF, CNAV, CPAM, and France Travail under Décret n°2016-611. What it does not do is merge those 60 payslips into one spreadsheet. Nor does PayFit. Nor does Sage Paie. The PDF-per-employee architecture that makes DSN transmission possible is the same architecture that leaves HR with 60 separate files every month — and 720 by year-end.
Key Takeaways
- 36 hours a year — how long a 60-employee French company spends transferring payroll numbers from machine-generated PDFs into a spreadsheet the payroll software refuses to produce.
- A template calibrated on Silae fails on PayFit because the Code du travail mandates sixteen fields without dictating positions — three compliant payroll platforms produce three incompatible PDF layouts.
- When every monthly payroll sits in one structured table, DSN cross-checking takes seconds and a departing employee's compensation history surfaces with a single query instead of a multi-day hunt through twelve months of PDFs.
Why French Payroll Systems Export Separate Files — Not One Spreadsheet
The DSN, mandatory for all private-sector employers since January 2017, is a monthly electronic file where each employee occupies an individual record block. Every cotisation line — Santé, Retraite, Famille, Chômage, CSG/CRDS — is transmitted per employee, per month. The payroll software's primary output is not a spreadsheet. It is a DSN file that passes validation through net-entreprises.fr. The PDF bulletin de paie each employee receives is a byproduct of that compliance workflow — formatted as a legal document under Article R3243-1 of the Code du travail, with sixteen mandatory fields per bulletin.
This architecture creates a structural gap. The DSN needs individual records per employee. The payroll software produces individual PDFs per employee. But HR, finance, and the expert-comptable (chartered accountant) need consolidated views: total gross salary (salaire brut) by department, total employer contributions (cotisations patronales) for the month, a single table to cross-check against the DSN totals before transmission. Every internal month-end report starts the same way: open 60 PDFs, locate the same sixteen fields in each, type the numbers into a spreadsheet.
At three minutes per bulletin — a conservative estimate that accounts for locating the correct net taxable (net imposable) versus net pay (net à payer), verifying the CSG base is 98.25% of gross, and confirming the prevoyance line items — a 60-employee company spends three hours every month on data transfer alone. Over twelve payroll cycles, that is thirty-six hours. And that is before anyone attempts DSN reconciliation.
The three dominant payroll platforms on the French market — Silae, PayFit, and Sage Paie — each generate structurally different PDFs from the same legal template. Silae, dominant in cabinets d'expertise comptable with over 7 million bulletins processed monthly, produces a multi-block layout with employer information top-left, employee identity top-right, cotisations grouped by risk category in the body, and annual cumuls in the footer. PayFit, built for SMEs internalizing payroll, arranges the same information in a modern single-column layout with progressive disclosure. Sage Paie follows a more traditional accounting format. All three are compliant with Article R3243-1. None standardizes field positions across providers. A template-based extraction tool calibrated on Silae output will not read a PayFit PDF — and a company that switched payroll providers mid-year now has two structurally different PDF formats for the same employee within the same fiscal year.
When One Employee Is Not One Row — Contract Types and Cadre Status That Break Batch Formulas
A single payslip (bulletin de paie) is a snapshot of one employee, one month. Scaling to 60 means the extraction tool must handle structural differences that individual processing can ignore. The first difference: not all sixty rows use the same cotisation structure.
Cadre versus non-Cadre. Under the unified AGIRC-ARRCO regime — the mandatory supplementary pension scheme for all private-sector employees since the 2019 merger of the two former schemes — the contribution rates are technically identical for cadres and non-cadres. But cadre status triggers an additional contribution: the Apec (Association pour l'emploi des cadres) cotisation at 0.024% for the employee share (part salariale) and 0.036% for the employer share (part patronale). This line appears on a cadre's payslip and does not appear on a non-cadre's. A batch extraction that defines a fixed set of deduction columns for all sixty rows must handle the fact that rows 1-15 (cadres) contain an Apec deduction and rows 16-60 (non-cadres) do not — without misaligning the subsequent columns.
CDI, CDD, and interim (temporary). A permanent employee (CDI — Contrat à Durée Indéterminée) and a fixed-term employee (CDD — Contrat à Durée Déterminée) generate payslips with the same sixteen mandatory fields. But a CDD carries an additional end-of-contract payment: the indemnité de précarité (precariousness indemnity), equal to 10% of total gross remuneration paid during the contract under Article L1243-8 of the Code du travail. This indemnity appears as a separate line item on the final bulletin de paie — a line absent from all preceding months and absent from CDI bulletins. An interim employee (intérimaire), employed by a temporary employment agency (ETT — Entreprise de Travail Temporaire), receives a bulletin de paie from the agency, not the user company — but if the user company's HR is consolidating workforce cost data, those agency bulletins still need to enter the same spreadsheet.
Variable primes across employees. Two employees with identical base salaries can produce materially different bulletins because of variable pay elements: prime d'ancienneté (seniority bonus, mandatory under many conventions collectives), prime de performance, prime de vacances (holiday bonus, mandatory in some sectors like Syntec), indemnité de transport, and tickets restaurant (meal vouchers, typically 50-60% employer-funded). Each prime occupies its own line in the earnings block. A batch column definition that includes "Base Salary (Salaire de Base)" and "Gross Salary (Salaire Brut)" as separate columns must handle the fact that the gap between them — the sum of all accessory payments (accessoires de salaire) — varies by employee, by month, and by convention collective.
The manual spreadsheet user accommodates all of these differences by reading each payslip individually and typing the relevant numbers into the right cells. A batch extraction that applies a fixed formula or a fixed set of column positions across all sixty rows breaks the moment it encounters a cadre with Apec, a CDD with indemnité de précarité, or a non-cadre with a prime de vacances that another employee does not receive. The extraction mechanism must read each payslip by field meaning — locating "Net à payer" regardless of whether it appears on page 1, page 2, or in an appended table — not by field position.
Three Problems Batch Processing Solves That Single-Bulletin Extraction Ignores
Extracting data from one French payslip is a solved problem. Doing it for sixty is a different problem entirely — and the difference is not simply sixty times the effort.
Employee-to-row matching. Silae exports payslip PDFs with filenames like bulletin_salarie_202605.pdf. PayFit uses Bulletin_de_paie_Mai_2026_Dupont_Marie.pdf. Sage Paie defaults to an employee-number-based scheme. When sixty of these files land in a folder, no filename convention guarantees correct attribution. An extraction tool that outputs rows without an employee name or identifier column forces the user to cross-reference each row back to each PDF manually — negating the time saved by batch processing. The tool must extract the employee name (nom du salarié), employee number (matricule), or NIR (numéro de sécurité sociale) from each payslip and include it as a dedicated column in every output row.
Layout heterogeneity across payroll providers. A company that uses Silae for permanent employees but receives contractor payslips from a portage salarial company gets two structurally different PDF formats in the same monthly batch. A company that migrated from Sage Paie to PayFit mid-year has six months of Sage-format PDFs and six months of PayFit-format PDFs for the same employees and the same reporting exercise. A template-based extraction tool — calibrated on one layout — fails on the other. A semantic extraction tool that reads field labels by meaning ("Salaire Brut" and "Brut" and "Salaire de base imposable" all refer to the same concept) handles mixed-format batches without additional configuration.
Verification without re-reading every PDF. You can spot-check two or three payslips after a single-document extraction. You cannot spot-check sixty. The batch output must make anomalies visible at a glance: zero or negative net pay values, rows where employer contributions do not approximately match expected ratios, employees whose gross salary changed by more than 15% from the previous month. This shifts verification from re-reading all sixty PDFs to scanning the output for outliers — a workflow that only works when the extraction output is structured consistently enough for column-level sorting and filtering.
For a deeper look at the field-level complexity of a single French bulletin de paie — the sixteen mandatory fields, the five cotisation groups, and the net imposable versus net à payer distinction — see our guide on extracting French payslip data into Excel. The same extraction mechanisms that work for one bulletin scale to sixty. But the batch context adds the three problems above — problems that exist only when multiple files enter the same processing queue.
How to Batch Process French Payslips into One Consolidated Table
The extraction approach that handles sixty heterogeneous payslip PDFs from multiple payroll providers is Custom Column Extraction — the mechanism where you type the field names you want and the AI locates each value by understanding what the label means, not where it sits on the page. You define the columns once. The AI reads every payslip in the batch against the same column definitions. One spreadsheet emerges, with one row per employee, regardless of whether employee 1's payslip came from Silae, employee 32's came from PayFit, and employee 47's came from a portage salarial PDF that looks like neither.
CSG Check (Salaire Brut * 0.9825 * 0.092) versus the extracted CSG total. Another: Net Verif (Net Imposable - PAS Amount) versus the extracted Net à Payer — the difference should equal reimbursements like transport indemnity (indemnité de transport). Rows where these computed checks differ by more than €1 are the rows that need manual review. Instead of checking sixty rows, you check three flagged rows.Files are processed securely and not stored.
Year-End and Employee Departure — When Batch Payroll Data Pays Off Twice
Monthly batch processing builds an asset that compounds in value at two inflection points: year-end reconciliation and employee departure.
Year-end DSN consolidation. Each January, the expert-comptable or finance team must reconcile twelve months of DSN transmissions against the general ledger (grand livre). The DSN totals — gross salary, employee contributions, employer contributions, net taxable — must match the payroll register. If you have been batch-processing monthly, each month's Excel export becomes one sheet in a workbook. Twelve sheets, one pivot table: the annual reconciliation that would otherwise require re-entering 720 rows from twelve months of individual PDFs collapses into an afternoon of verification. For a deeper look at batch processing French financial documents, see how batch processing handles eighty French supplier invoices — the same principle of single-batch consolidation applies to supplier invoice PDFs as to payslip PDFs.
Solde de tout compte (final settlement). When an employee leaves — whether by resignation (démission), dismissal (licenciement), or end of a CDD — the employer must issue three mandatory documents on the last day of the contract: the work certificate (certificat de travail), the France Travail certificate (attestation France Travail, formerly attestation Pôle emploi), and the receipt for the solde de tout compte — a complete statement of all sums paid at termination. The solde de tout compte must account for the final month's salary, any outstanding paid leave (congés payés), the indemnité de licenciement (severance pay) if applicable, and for CDD employees, the indemnité de précarité. The employee has six months to contest the settlement. A batch extraction archive — with every monthly payslip already digitised — means the employer can produce the complete compensation history for any departing employee in seconds. No digging through archived PDF folders. No reconstructing twelve months of data. The solde de tout compte is the last payslip. The batch archive proves the first eleven were correct.
Attestation France Travail accuracy. The employer certificate for unemployment benefits requires the employer to report the employee's gross salary for the last twelve months and the reason for contract termination. The salary figures on this certificate directly determine the employee's unemployment benefit amount (allocation chômage) calculated by France Travail. An error — a single wrong month's gross salary — can delay the employee's benefits by weeks while the employer issues a corrected attestation. Batch extraction produces a twelve-month salary history where every row is pulled from the original payslips, not manually transcribed, minimizing the transcription errors that cause attestation corrections.
Multi-year payroll archive. French employers must retain payroll records for five years under Article L3243-4 of the Code du travail. A single sixty-employee year generates 720 PDFs — 2,160 over three years, 3,600 over five years. Converting each batch into a structured Excel archive as you go means that by year five, you have a searchable digital payroll register, not a folder of 3,600 PDFs. The audit trail required by a contrôle URSSAF or a DSN compliance review is already structured, column by column, month by month, employee by employee.
For teams building a consolidated payroll register from individual records, batch extraction provides the row-level data that feeds into the register structure. For one-off extraction of individual pay stub data into Excel, the same Custom Column Extraction mechanism applies — the difference is scale. Where the same extraction principle applied to Korean payslips — see batch processing Korean employee payslips — the regulatory framework changes but the batch workflow remains identical: define columns, upload the batch, export one table.
FAQ
Can I batch process payslips from Silae, PayFit, and Sage Paie in the same run?
Yes. Custom Column Extraction reads field labels by meaning, not position. "Salaire Brut" in a Silae layout, "Brut" in a PayFit layout, and "Salaire de base imposable" in a Sage Paie layout are all recognized as gross salary. Define your column once — the AI handles the layout variance across payroll providers within the same batch queue.
What happens when a row is missing data — for example, a non-Cadre employee has no Apec contribution?
The cell is left empty for that row. Cadre employees get an Apec value in their Apec column; non-Cadre employees get a blank. The column structure remains consistent across all sixty rows — empty cells are intentional and traceable, not data errors. For CDD employees whose indemnité de précarité only appears on the final bulletin, that column is blank for months 1 through N and populated only in the termination month.
How accurate is the extraction for French payslips with dense numerical tables?
Printed text and numeric tables on French bulletins de paie achieve up to 99% accuracy. The denser the cotisation block — where some Silae-generated PDFs pack fifteen deduction lines into a single table — the more important the DSN cross-check computed column becomes. A row where the extracted CSG total differs from the computed CSG (Salaire Brut × 98.25% × 9.2%) by more than €1 is flagged for manual review. This shifts verification from checking all sixty rows to checking the flagged rows — typically fewer than five per batch.
Does batch extraction handle scanned or photographed paper payslips?
Yes. The AI reads the visual content of the page — text, tables, numbers — not the text layer embedded in a PDF. Scans and smartphone photos of printed bulletins de paie work alongside native digital PDFs in the same batch. This is particularly relevant for legacy archives: paper bulletins from years before a company adopted Silae or PayFit can be scanned and batch-extracted into the same spreadsheet structure as current digital PDFs.
Does this replace the payroll software?
No. Silae, PayFit, and Sage Paie calculate salaries, apply tax rates, manage DSN transmission, and handle the regulatory updates that change every January. Batch extraction takes the PDF output from those systems and consolidates it into one spreadsheet for internal reporting, DSN cross-checking, and archival — a consolidation step that the payroll software itself does not perform across individual employee files.
What about multi-page payslips — some Silae bulletins run to three pages for senior employees?
Multi-page payslips are handled as a single document. The AI reads all pages of the PDF sequentially before extracting fields. The net à payer on page 2 is extracted into the same row as the employee name on page 1 and the cotisation detail on page 3. No field is lost because it appeared on a different page than another field in the same bulletin.
60 payslips, twelve months, 720 rows — the time difference between extracting and typing is measured in dozens of hours per year. But the operational shift is what matters: when monthly payroll consolidation takes minutes instead of hours, the finance team reviews the DSN before transmission instead of after. When every historical payslip sits in a structured archive, a solde de tout compte or a contrôle URSSAF triggers a query instead of a multi-day document hunt. Batch processing does not change what data is on the payslip. It changes when that data becomes available to act on.