Document schemas · Income & Employment

Income & Employment

Prebuilt extractors for French income and employment documents: employment and secondment contracts, employer and social-body certificates, and personal and professional income tax returns. Each schema below previews the structured document_part the extraction will return. Any document type below can also be processed with a custom extractor returning your own schema.

PreviewThese schemas are preview contracts

The part_type values and field layouts on this page describe Holofin's upcoming prebuilt extractors for these document types. They are not yet emitted by workflow runs.

If your workflow processes one of these document types with a custom extractor, each extracted part carries that extractor's own part_type and schema, which may differ from this page. The authoritative schema is the one defined on the extractor in your workflow configuration.


Employment Contract (Contrat de travail)

part_typefr_contrat_travailPreviewIncome & Employment

The Contrat de travail is the French employment agreement between an employer and an employee. The extraction captures the parties, the nature of the contract, working time, and the agreed remuneration for income and employment verification.

Document structure

The Contrat de travail contains:

  • Employer block: Legal name, SIRET, and postal address
  • Employee block: Identity of the hired person
  • Contract terms: Type, start and end dates, trial period, and working time
  • Remuneration: Agreed gross salary and its period
  • Governing rules: Applicable collective agreement and classification

Data structure

Within the document_parts array, the fr_contrat_travail data object contains:

dataJSON
{
  "employer": {
    "name": "Ateliers Vernet SAS",
    "siret": "40123456700018",
    "address": "12 rue de la Fontaine, 69003 Lyon"
  },
  "employee": {
    "last_name": "MARTIN",
    "first_names": "Camille"
  },
  "job_title": "Chargée de clientèle",
  "classification": "Niveau IV, échelon 2",
  "contract_type": "cdi",
  "start_date": "2024-09-01",
  "end_date": null,
  "trial_period_months": 3,
  "gross_salary": {
    "amount": 2450.0,
    "period": "monthly"
  },
  "weekly_hours": 35,
  "collective_agreement": "Convention collective Syntec",
  "work_location": "69003 Lyon"
}

Field reference

FieldTypeDescription
employerobjectEmployer identification block
employer.namestringEmployer legal name
employer.siretstring | nullEmployer 14-digit SIRET establishment number
employer.addressstring | nullEmployer postal address
employeeobjectEmployee identity block
employee.last_namestringEmployee surname
employee.first_namesstringEmployee given name(s)
job_titlestringJob title or position held
classificationstring | nullCollective-agreement classification (level, coefficient, échelon)
contract_typestringContract type: cdi, cdd, or interim
start_datedateContract start date (YYYY-MM-DD)
end_datedate | nullContract end date for fixed-term contracts; null for open-ended (cdi)
trial_period_monthsnumber | nullTrial period duration in months, when stated
gross_salaryobjectAgreed gross remuneration
gross_salary.amountnumberGross salary amount
gross_salary.periodstringSalary period: monthly or annual
weekly_hoursnumberContractual weekly working hours
collective_agreementstring | nullApplicable collective agreement (convention collective)
work_locationstringPlace of work

Validation

Extraction results include validation_status and validation_codes reflecting coherence, completeness and authenticity controls. Anomalies are surfaced as graded alerts for human review.



Secondment Contract (Contrat de détachement)

part_typefr_contrat_detachementPreviewIncome & Employment

The Contrat de détachement documents the temporary posting of an employee by an origin employer to a host entity, often abroad. The extraction captures both parties, the posting terms, and whether the home social security scheme is maintained.

Document structure

The Contrat de détachement contains:

  • Origin employer: The posting company, its name and SIRET
  • Employee block: Identity of the posted person
  • Host details: Receiving entity and country of assignment
  • Posting terms: Job title, start and end dates, and duration
  • Coverage: Remuneration and whether the home social scheme is maintained

Data structure

Within the document_parts array, the fr_contrat_detachement data object contains:

dataJSON
{
  "origin_employer": {
    "name": "Groupe Belfort Ingénierie SA",
    "siret": "51234567800027"
  },
  "employee": {
    "last_name": "MARTIN",
    "first_names": "Camille"
  },
  "host_entity": "Belfort Engineering GmbH",
  "host_country": "DE",
  "job_title": "Ingénieure procédés",
  "start_date": "2025-01-06",
  "end_date": "2025-12-31",
  "duration_months": 12,
  "remuneration": {
    "amount": 3800.0,
    "period": "monthly"
  },
  "social_scheme_maintained": true,
  "work_location": "Stuttgart, Germany"
}

Field reference

FieldTypeDescription
origin_employerobjectPosting (home) employer block
origin_employer.namestringOrigin employer legal name
origin_employer.siretstring | nullOrigin employer 14-digit SIRET establishment number
employeeobjectPosted employee identity block
employee.last_namestringEmployee surname
employee.first_namesstringEmployee given name(s)
host_entitystringReceiving entity hosting the posted employee
host_countrystringCountry of assignment (ISO 3166 code or name)
job_titlestringJob title or position held during the posting
start_datedatePosting start date (YYYY-MM-DD)
end_datedate | nullPosting end date (YYYY-MM-DD)
duration_monthsnumber | nullPosting duration in months
remunerationobjectRemuneration during the posting
remuneration.amountnumberRemuneration amount
remuneration.periodstringRemuneration period: monthly or annual
social_scheme_maintainedbooleanWhether the home country social security scheme is maintained during the posting
work_locationstringPlace of work at the host location

Validation

Extraction results include validation_status and validation_codes reflecting coherence, completeness and authenticity controls. Anomalies are surfaced as graded alerts for human review.



Employment Certificate (Attestation de travail)

part_typefr_attestation_travailPreviewIncome & Employment

The Attestation de travail is a short employer-issued certificate confirming that a person is or was employed. The extraction captures the employer, the employee, the role, and the signatory who issued the certificate.

Document structure

The Attestation de travail contains:

  • Employer block: Legal name, SIRET, and postal address
  • Employee block: Identity of the certified person
  • Employment facts: Job title, hire date, and contract type
  • Issuance: Date, signatory, and presence of a company stamp

Data structure

Within the document_parts array, the fr_attestation_travail data object contains:

dataJSON
{
  "employer": {
    "name": "Ateliers Vernet SAS",
    "siret": "40123456700018",
    "address": "12 rue de la Fontaine, 69003 Lyon"
  },
  "employee": {
    "last_name": "MARTIN",
    "first_names": "Camille"
  },
  "job_title": "Chargée de clientèle",
  "hire_date": "2024-09-01",
  "contract_type": "cdi",
  "issue_date": "2025-06-15",
  "signatory": {
    "name": "DUBOIS Léa",
    "role": "Directrice des ressources humaines"
  },
  "stamp_present": true
}

Field reference

FieldTypeDescription
employerobjectEmployer identification block
employer.namestringEmployer legal name
employer.siretstring | nullEmployer 14-digit SIRET establishment number
employer.addressstring | nullEmployer postal address
employeeobjectEmployee identity block
employee.last_namestringEmployee surname
employee.first_namesstringEmployee given name(s)
job_titlestringJob title or position held
hire_datedateDate the employee was hired (YYYY-MM-DD)
contract_typestring | nullContract type as stated on the certificate (e.g. cdi, cdd)
issue_datedateDate the certificate was issued (YYYY-MM-DD)
signatoryobject | nullPerson who signed the certificate
signatory.namestringSignatory name
signatory.rolestring | nullSignatory role or function
stamp_presentbooleanWhether a company stamp is present on the certificate

Validation

Extraction results include validation_status and validation_codes reflecting coherence, completeness and authenticity controls. Anomalies are surfaced as graded alerts for human review.



France Travail Payment Statement (Attestation de paiement)

part_typefr_attestation_france_travailPreviewIncome & Employment

The Attestation de paiement issued by France Travail confirms unemployment allowance payments to a beneficiary for a given period. The extraction captures the beneficiary, the period, and the gross and net amounts paid.

Document structure

The France Travail Attestation de paiement contains:

  • Beneficiary block: Identity and identifier number
  • Period: Month and year covered by the payment
  • Allowance: Type of allowance and number of days paid
  • Amounts: Gross and net amounts and the payment date

Data structure

Within the document_parts array, the fr_attestation_france_travail data object contains:

dataJSON
{
  "beneficiary": {
    "last_name": "MARTIN",
    "first_names": "Camille"
  },
  "identifier_number": "1234567A",
  "period": {
    "month": 5,
    "year": 2025
  },
  "allowance_type": "ARE",
  "days_paid": 31,
  "gross_amount": 1512.30,
  "net_amount": 1398.75,
  "payment_date": "2025-06-05",
  "issue_date": "2025-06-06"
}

Field reference

FieldTypeDescription
beneficiaryobjectBeneficiary identity block
beneficiary.last_namestringBeneficiary surname
beneficiary.first_namesstringBeneficiary given name(s)
identifier_numberstring | nullFrance Travail beneficiary identifier number
periodobjectPayment period
period.monthnumberMonth covered (1-12)
period.yearnumberYear covered
allowance_typestring | nullAllowance type (e.g. ARE, ASS)
days_paidnumberNumber of days paid in the period
gross_amountnumberGross amount paid for the period
net_amountnumberNet amount paid for the period
payment_datedate | nullDate the payment was made (YYYY-MM-DD)
issue_datedateDate the statement was issued (YYYY-MM-DD)

Validation

Extraction results include validation_status and validation_codes reflecting coherence, completeness and authenticity controls. Anomalies are surfaced as graded alerts for human review.



Pension Payment Statement (Attestation de paiement de retraite)

part_typefr_attestation_retraitePreviewIncome & Employment

The Attestation de paiement de retraite confirms pension payments made to a beneficiary by a pension fund over a period. The extraction captures the beneficiary, the fund, the period, and the gross-to-net breakdown of withholdings.

Document structure

The Attestation de paiement de retraite contains:

  • Beneficiary block: Identity of the pensioner
  • Pension reference: Pension number and paying fund
  • Period: Start and end dates of the payment window
  • Amounts: Gross amount, itemized withholdings, and net amount

Data structure

Within the document_parts array, the fr_attestation_retraite data object contains:

dataJSON
{
  "beneficiary": {
    "last_name": "MARTIN",
    "first_names": "Camille"
  },
  "pension_number": "1 55 08 75 116 001",
  "pension_fund": "CNAV",
  "period": {
    "start_date": "2025-01-01",
    "end_date": "2025-03-31"
  },
  "gross_amount": 4260.00,
  "withholdings": [
    { "label": "CSG", "amount": 349.32 },
    { "label": "CRDS", "amount": 21.30 },
    { "label": "CASA", "amount": 12.78 }
  ],
  "net_amount": 3876.60,
  "issue_date": "2025-04-02"
}

Field reference

FieldTypeDescription
beneficiaryobjectPensioner identity block
beneficiary.last_namestringBeneficiary surname
beneficiary.first_namesstringBeneficiary given name(s)
pension_numberstring | nullPension account or reference number
pension_fundstring | nullPaying pension fund (e.g. CNAV, Agirc-Arrco)
periodobjectPayment period
period.start_datedatePeriod start date (YYYY-MM-DD)
period.end_datedatePeriod end date (YYYY-MM-DD)
gross_amountnumberGross pension amount for the period
withholdingsarrayItemized deductions applied to the gross amount
withholdings[].labelstringWithholding label (e.g. CSG, CRDS, CASA)
withholdings[].amountnumberWithholding amount
net_amountnumberNet pension amount paid for the period
issue_datedateDate the statement was issued (YYYY-MM-DD)

Validation

Extraction results include validation_status and validation_codes reflecting coherence, completeness and authenticity controls. Anomalies are surfaced as graded alerts for human review.



Income Tax Return (Déclaration 2042)

part_typefr_declaration_2042PreviewIncome & Employment

The Déclaration 2042 is the main French household income tax return. The extraction captures the declarants, the household composition, and the income categories reported for the tax year.

Document structure

The Déclaration 2042 contains:

  • Declarants: The first declarant and an optional second declarant
  • Household: Marital status and number of tax shares (parts)
  • Salaries and pensions: Employment and pension income per declarant
  • Other income: Investment income, property income, and additional entries

Data structure

Within the document_parts array, the fr_declaration_2042 data object contains:

dataJSON
{
  "declarant_1": {
    "last_name": "MARTIN",
    "first_names": "Camille"
  },
  "declarant_2": {
    "last_name": "MARTIN",
    "first_names": "Julien"
  },
  "income_year": 2024,
  "household_status": "married",
  "tax_shares": 2.5,
  "salaries": {
    "declarant_1": 29400,
    "declarant_2": 31200
  },
  "pensions": null,
  "investment_income": 1250,
  "property_income": 6800,
  "other_income": []
}

Field reference

FieldTypeDescription
declarant_1objectFirst declarant identity block
declarant_1.last_namestringFirst declarant surname
declarant_1.first_namesstringFirst declarant given name(s)
declarant_2object | nullSecond declarant identity block; null for a single-declarant household
income_yearnumberTax year the income relates to
household_statusstring | nullMarital status: single, married, pacs, divorced, or widowed
tax_sharesnumberNumber of tax shares (parts) for the household quotient
salariesobjectReported salary income per declarant
salaries.declarant_1numberSalary income of the first declarant
salaries.declarant_2number | nullSalary income of the second declarant; null when not applicable
pensionsobject | nullReported pension income per declarant; null when none is reported
investment_incomenumber | nullReported investment income (revenus de capitaux mobiliers)
property_incomenumber | nullReported property income (revenus fonciers)
other_incomearrayAdditional income entries, each with a label and amount

Validation

Extraction results include validation_status and validation_codes reflecting coherence, completeness and authenticity controls. Anomalies are surfaced as graded alerts for human review.



Self-Employed Income Return (2042 C PRO)

part_typefr_declaration_2042_c_proPreviewIncome & Employment

The Déclaration 2042 C PRO reports self-employed and non-salaried professional income as a complement to the main return. The extraction captures the declarant, the tax regime, and the reported professional income and boxes.

Document structure

The Déclaration 2042 C PRO contains:

  • Declarant: Identity of the self-employed person
  • Regime: Micro or actual (réel) tax regime and the income year
  • Income: Revenue, taxable professional income, and capital gains
  • Boxes: Raw form box codes and their amounts

Data structure

Within the document_parts array, the fr_declaration_2042_c_pro data object contains:

dataJSON
{
  "declarant": {
    "last_name": "MARTIN",
    "first_names": "Camille"
  },
  "income_year": 2024,
  "regime": "micro_bnc",
  "revenue": 42000,
  "taxable_professional_income": 29400,
  "capital_gains": null,
  "social_contributions": 9660,
  "boxes": [
    { "code": "5HQ", "amount": 42000 },
    { "code": "5HY", "amount": 9660 }
  ]
}

Field reference

FieldTypeDescription
declarantobjectSelf-employed declarant identity block
declarant.last_namestringDeclarant surname
declarant.first_namesstringDeclarant given name(s)
income_yearnumberTax year the income relates to
regimestringTax regime: micro_bic, micro_bnc, or reel
revenuenumberGross professional revenue reported
taxable_professional_incomenumberTaxable professional income after applicable allowance or expenses
capital_gainsnumber | nullProfessional capital gains, when reported
social_contributionsnumber | nullSocial contributions reported, when present
boxesarrayRaw form boxes as reported
boxes[].codestringForm box code (e.g. 5HQ)
boxes[].amountnumberAmount reported in the box

Validation

Extraction results include validation_status and validation_codes reflecting coherence, completeness and authenticity controls. Anomalies are surfaced as graded alerts for human review.



Property Income Return (Déclaration 2044)

part_typefr_declaration_2044PreviewIncome & Employment

The Déclaration 2044 reports income from unfurnished rental property under the actual regime (revenus fonciers). The extraction captures the declarant, the per-property breakdown, and the aggregated net property income.

Document structure

The Déclaration 2044 contains:

  • Declarant: Identity of the reporting person
  • Properties: One entry per property with receipts, expenses, and loan interest
  • Totals: Aggregated gross receipts, expenses, and loan interest
  • Result: Net property income for the tax year

Data structure

Within the document_parts array, the fr_declaration_2044 data object contains:

dataJSON
{
  "declarant": {
    "last_name": "MARTIN",
    "first_names": "Camille"
  },
  "income_year": 2024,
  "properties": [
    {
      "address": "8 rue des Lilas, 33000 Bordeaux",
      "gross_receipts": 9600,
      "expenses": 2140,
      "loan_interest": 3120
    },
    {
      "address": "25 avenue Jean Jaurès, 31000 Toulouse",
      "gross_receipts": 7200,
      "expenses": 1580,
      "loan_interest": 2040
    }
  ],
  "total_gross_receipts": 16800,
  "total_expenses": 3720,
  "total_loan_interest": 5160,
  "net_property_income": 7920
}

Field reference

FieldTypeDescription
declarantobjectDeclarant identity block
declarant.last_namestringDeclarant surname
declarant.first_namesstringDeclarant given name(s)
income_yearnumberTax year the income relates to
propertiesarrayPer-property income breakdown
properties[].addressstringProperty address
properties[].gross_receiptsnumberGross rental receipts for the property
properties[].expensesnumberDeductible expenses for the property
properties[].loan_interestnumberLoan interest deducted for the property
total_gross_receiptsnumberAggregated gross rental receipts across properties
total_expensesnumberAggregated deductible expenses across properties
total_loan_interestnumberAggregated loan interest across properties
net_property_incomenumberNet property income (revenu foncier net) for the year

Validation

Extraction results include validation_status and validation_codes reflecting coherence, completeness and authenticity controls. Anomalies are surfaced as graded alerts for human review.



BIC Return (Déclaration 2031-SD)

part_typefr_declaration_2031_bicPreviewIncome & Employment

The Déclaration 2031-SD reports industrial and commercial profits (bénéfices industriels et commerciaux, BIC) for an operator taxed under the actual regime. The extraction captures the operator, the fiscal year, and the reconciliation from accounting result to fiscal result.

Document structure

The Déclaration 2031-SD contains:

  • Operator: The reporting business, its name and SIRET
  • Fiscal year: Start and end dates of the reporting period
  • Regime and revenue: Applicable tax regime and reported revenue
  • Reconciliation: Accounting result adjusted by add-backs and deductions to the fiscal result

Data structure

Within the document_parts array, the fr_declaration_2031_bic data object contains:

dataJSON
{
  "operator": {
    "name": "Boulangerie du Marché SARL",
    "siret": "79345612800014"
  },
  "fiscal_year": {
    "start_date": "2024-01-01",
    "end_date": "2024-12-31"
  },
  "tax_regime": "reel_normal",
  "revenue": 486000,
  "accounting_result": 58200,
  "add_backs": 7400,
  "deductions": 3100,
  "fiscal_result": 62500
}

Field reference

FieldTypeDescription
operatorobjectReporting business block
operator.namestringOperator legal name
operator.siretstring | nullOperator 14-digit SIRET establishment number
fiscal_yearobjectReporting period
fiscal_year.start_datedateFiscal year start date (YYYY-MM-DD)
fiscal_year.end_datedateFiscal year end date (YYYY-MM-DD)
tax_regimestring | nullApplicable tax regime: reel_simplifie or reel_normal
revenuenumberReported revenue (chiffre d'affaires) for the period
accounting_resultnumberAccounting result before tax adjustments
add_backsnumberTax add-backs (réintégrations) applied to the accounting result
deductionsnumberTax deductions (déductions) applied to the accounting result
fiscal_resultnumberFiscal result (résultat fiscal) after add-backs and deductions

Validation

Extraction results include validation_status and validation_codes reflecting coherence, completeness and authenticity controls. Anomalies are surfaced as graded alerts for human review.