Document schemas · Identity & KYC

Identity & KYC Schemas

This page previews the prebuilt extractors for the French and international identity documents used in KYC and onboarding (identity cards, passports, driving licences and residence documents), with their field contracts and machine-readable zone parsing. 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.


National Identity Card (Carte nationale d'identité)

part_typefr_carte_nationale_identitePreviewIdentity & KYC

The Carte nationale d'identité (CNI) is the French national identity card. The extraction returns the cardholder identity, the document numbers and dates, and the parsed machine-readable zone (MRZ). It is used to establish and verify the identity of a natural person during onboarding and KYC review.

Document structure

The CNI contains:

  • Holder identity: Surname, given names, gender, date and place of birth, nationality
  • Document details: Card number, issue date, expiry date, issuing authority
  • Physical attributes: Height when printed on the card
  • Machine-readable zone: The TD1 (current, three-line) or legacy two-line French format printed on the reverse

Data structure

Within the document_parts array, the fr_carte_nationale_identite data object contains:

dataJSON
{
  "last_name": "MARTIN",
  "first_names": ["Camille", "Alex"],
  "gender": "F",
  "birth_date": "1990-05-12",
  "birth_place": "LYON (69)",
  "nationality": "FRA",
  "document_number": "SPECIMEN0000",
  "issue_date": "2021-06-01",
  "expiry_date": "2031-05-31",
  "issuing_authority": "Préfecture du Rhône",
  "height_cm": 170,
  "mrz": {
    "format": "TD1",
    "lines": [
      "IDFRASPECIMEN0000<<<<<<<<<<<<<<",
      "9005120F3105319FRA<<<<<<<<<<<4",
      "MARTIN<<CAMILLE<ALEX<<<<<<<<<<<"
    ]
  }
}

Field reference

FieldTypeDescription
last_namestringCardholder surname (nom)
first_namesarray of stringsGiven names (prénoms) in printed order
genderstringSex as printed: F or M
birth_datedate (ISO 8601 string)Date of birth (YYYY-MM-DD)
birth_placestringPlace of birth as printed (commune and department code)
nationalitystringNationality as an ISO 3166-1 alpha-3 code (e.g. FRA)
document_numberstringCard number as printed on the document
issue_datedate (ISO 8601 string)Date the card was issued
expiry_datedate (ISO 8601 string)Date the card expires
issuing_authoritystringAuthority that issued the card (e.g. a préfecture)
height_cmnumber | nullHolder height in centimetres when printed, otherwise null
mrzobjectParsed machine-readable zone (see below)
mrz.formatstringMRZ layout: TD1 (current three-line card) or legacy_2x36 (former two-line French format)
mrz.linesarray of stringsRaw MRZ lines as read from the document

Validation

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



Passport (Passeport)

part_typepassportPreviewIdentity & KYC

The Passport (passeport) is an international travel and identity document. The extraction returns the holder identity, the passport number and dates, the issuing country and authority, and the parsed TD3 machine-readable zone. It is used to establish and verify the identity of a natural person during onboarding and KYC review.

Document structure

The passport contains:

  • Document type: Document code and issuing country
  • Holder identity: Surname, given names, nationality, gender, date and place of birth
  • Document details: Passport number, issue date, expiry date, issuing authority
  • Machine-readable zone: The two-line TD3 format printed at the foot of the identity page

Data structure

Within the document_parts array, the passport data object contains:

dataJSON
{
  "document_code": "P",
  "issuing_country": "FRA",
  "passport_number": "SPECIMEN0000",
  "last_name": "MARTIN",
  "first_names": ["Camille", "Alex"],
  "nationality": "FRA",
  "birth_date": "1990-05-12",
  "gender": "F",
  "birth_place": "LYON",
  "issue_date": "2022-09-15",
  "expiry_date": "2032-09-14",
  "authority": "Préfecture du Rhône",
  "mrz": {
    "format": "TD3",
    "lines": [
      "P<FRAMARTIN<<CAMILLE<ALEX<<<<<<<<<<<<<<<",
      "SPECIMEN00004FRA9005120F3209147<<<<<<<<<<<<<<06"
    ]
  }
}

Field reference

FieldTypeDescription
document_codestringDocument type code, P for a passport
issuing_countrystringIssuing country as an ISO 3166-1 alpha-3 code (e.g. FRA)
passport_numberstringPassport number as printed on the document
last_namestringHolder surname (nom)
first_namesarray of stringsGiven names (prénoms) in printed order
nationalitystringHolder nationality as an ISO 3166-1 alpha-3 code
birth_datedate (ISO 8601 string)Date of birth (YYYY-MM-DD)
genderstringSex as printed: F or M
birth_placestringPlace of birth as printed
issue_datedate (ISO 8601 string)Date the passport was issued
expiry_datedate (ISO 8601 string)Date the passport expires
authoritystringAuthority that issued the passport
mrzobjectParsed machine-readable zone (see below)
mrz.formatstringMRZ layout, TD3 for a passport
mrz.linesarray of 2 stringsRaw MRZ lines as read from the document

Validation

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



Driving Licence (Permis de conduire)

part_typefr_permis_conduirePreviewIdentity & KYC

The Permis de conduire is the French driving licence. The extraction returns the holder identity, the licence number and dates, the issuing authority, and the list of vehicle categories with their own dates and restrictions. It is used as a supporting identity document during onboarding and KYC review.

Document structure

The driving licence contains:

  • Holder identity: Surname, given names, date and place of birth
  • Document details: Licence number, issue date, expiry date, issuing authority
  • Categories: One entry per vehicle category with its obtained date, validity, and restrictions

Data structure

Within the document_parts array, the fr_permis_conduire data object contains:

dataJSON
{
  "last_name": "MARTIN",
  "first_names": ["Camille", "Alex"],
  "birth_date": "1990-05-12",
  "birth_place": "LYON",
  "licence_number": "SPECIMEN0000",
  "issue_date": "2010-07-20",
  "expiry_date": "2025-07-19",
  "issuing_authority": "Préfecture du Rhône",
  "categories": [
    {
      "code": "B",
      "obtained_date": "2010-07-20",
      "valid_until": null,
      "restrictions": []
    },
    {
      "code": "A2",
      "obtained_date": "2018-03-05",
      "valid_until": null,
      "restrictions": ["01"]
    }
  ]
}

Field reference

FieldTypeDescription
last_namestringHolder surname (nom)
first_namesarray of stringsGiven names (prénoms) in printed order
birth_datedate (ISO 8601 string)Date of birth (YYYY-MM-DD)
birth_placestringPlace of birth as printed
licence_numberstringLicence number as printed on the document
issue_datedate (ISO 8601 string)Date the licence was issued
expiry_datedate (ISO 8601 string)Date the licence expires
issuing_authoritystringAuthority that issued the licence
categoriesarray of objectsVehicle categories held (see below)
categories[].codestringCategory code (e.g. A, A2, B, C, D)
categories[].obtained_datedate (ISO 8601 string)Date the category was obtained
categories[].valid_untildate (ISO 8601 string) | nullCategory validity end date, or null when unrestricted
categories[].restrictionsarray of stringsHarmonised restriction codes for the category (may be empty)

Validation

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



Residence Permit (Titre de séjour)

part_typefr_titre_sejourPreviewIdentity & KYC

The Titre de séjour is the French residence permit issued to foreign nationals. The extraction returns the holder identity, the permit number, type and mention, the validity dates, the issuing prefecture, and the parsed machine-readable zone. It is used to establish identity and residence status during onboarding and KYC review.

Document structure

The residence permit contains:

  • Holder identity: Surname, given names, date and place of birth, nationality
  • Permit details: Permit number, permit type, the mention printed on the card
  • Validity: Start and end dates, issuing prefecture
  • Machine-readable zone: The MRZ printed on the reverse of the card

Data structure

Within the document_parts array, the fr_titre_sejour data object contains:

dataJSON
{
  "last_name": "MARTIN",
  "first_names": ["Camille", "Alex"],
  "birth_date": "1990-05-12",
  "birth_place": "DAKAR",
  "nationality": "SEN",
  "permit_number": "SPECIMEN0000",
  "permit_type": "Carte de séjour pluriannuelle",
  "mention": "Salarié",
  "valid_from": "2023-01-10",
  "valid_until": "2027-01-09",
  "issuing_prefecture": "Préfecture du Rhône",
  "mrz": {
    "format": "TD1",
    "lines": [
      "ITFRASPECIMEN0000<<<<<<<<<<<<<<",
      "9005120F2701099SEN<<<<<<<<<<<2",
      "MARTIN<<CAMILLE<ALEX<<<<<<<<<<<"
    ]
  }
}

Field reference

FieldTypeDescription
last_namestringHolder surname (nom)
first_namesarray of stringsGiven names (prénoms) in printed order
birth_datedate (ISO 8601 string)Date of birth (YYYY-MM-DD)
birth_placestringPlace of birth as printed
nationalitystringHolder nationality as an ISO 3166-1 alpha-3 code
permit_numberstringPermit number as printed on the document
permit_typestringCategory of permit (e.g. carte de séjour temporaire, carte de séjour pluriannuelle)
mentionstringMention printed on the card describing the grounds of stay (e.g. Salarié, Étudiant, Vie privée et familiale)
valid_fromdate (ISO 8601 string)Start date of the permit validity
valid_untildate (ISO 8601 string)End date of the permit validity
issuing_prefecturestringPrefecture that issued the permit
mrzobjectParsed machine-readable zone with format and lines

Validation

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



Resident Card (Carte de résident)

part_typefr_carte_residentPreviewIdentity & KYC

The Carte de résident is the long-duration French resident card, typically valid for ten years or issued as an EU long-term resident card. The extraction returns the holder identity, the card number and type, the validity dates, the issuing prefecture, and the parsed machine-readable zone. It is used to establish identity and residence status during onboarding and KYC review.

Document structure

The resident card contains:

  • Holder identity: Surname, given names, date and place of birth, nationality
  • Card details: Card number and card type
  • Validity: Start and end dates, issuing prefecture
  • Machine-readable zone: The MRZ printed on the reverse of the card

Data structure

Within the document_parts array, the fr_carte_resident data object contains:

dataJSON
{
  "last_name": "MARTIN",
  "first_names": ["Camille", "Alex"],
  "birth_date": "1990-05-12",
  "birth_place": "DAKAR",
  "nationality": "SEN",
  "card_number": "SPECIMEN0000",
  "card_type": "resident_10_years",
  "valid_from": "2022-04-01",
  "valid_until": "2032-03-31",
  "issuing_prefecture": "Préfecture du Rhône",
  "mrz": {
    "format": "TD1",
    "lines": [
      "ITFRASPECIMEN0000<<<<<<<<<<<<<<",
      "9005120F3203319SEN<<<<<<<<<<<8",
      "MARTIN<<CAMILLE<ALEX<<<<<<<<<<<"
    ]
  }
}

Field reference

FieldTypeDescription
last_namestringHolder surname (nom)
first_namesarray of stringsGiven names (prénoms) in printed order
birth_datedate (ISO 8601 string)Date of birth (YYYY-MM-DD)
birth_placestringPlace of birth as printed
nationalitystringHolder nationality as an ISO 3166-1 alpha-3 code
card_numberstringCard number as printed on the document
card_typestringType of card: resident_10_years or long_term_resident_eu
valid_fromdate (ISO 8601 string)Start date of the card validity
valid_untildate (ISO 8601 string)End date of the card validity
issuing_prefecturestringPrefecture that issued the card
mrzobjectParsed machine-readable zone with format and lines

Validation

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



Residence-Permit Renewal Attestation (Attestation de renouvellement)

part_typefr_attestation_renouvellement_titre_sejourPreviewIdentity & KYC

The Attestation de renouvellement is a prefecture-issued document confirming that a residence-permit renewal request is being processed and extending the holder's right to stay in the meantime. The extraction returns the beneficiary identity, the file reference, the requested permit type, the decision and its validity, and the issuing prefecture. It is used as an interim residence-status document during onboarding and KYC review.

Document structure

The renewal attestation contains:

  • Beneficiary: Surname, given names, date of birth, nationality
  • File reference: The AGDREF number identifying the foreign national's file
  • Request: The requested permit type and the decision taken
  • Validity: Decision date, attestation validity end date, issuing prefecture

Data structure

Within the document_parts array, the fr_attestation_renouvellement_titre_sejour data object contains:

dataJSON
{
  "beneficiary": {
    "last_name": "MARTIN",
    "first_names": ["Camille", "Alex"],
    "birth_date": "1990-05-12",
    "nationality": "SEN"
  },
  "agdref_number": "SPECIMEN0000",
  "requested_permit_type": "Carte de séjour pluriannuelle",
  "decision": "renewal_in_progress",
  "decision_date": "2026-01-15",
  "attestation_valid_until": "2026-07-14",
  "issuing_prefecture": "Préfecture du Rhône"
}

Field reference

FieldTypeDescription
beneficiaryobjectIdentity of the renewal beneficiary (see below)
beneficiary.last_namestringBeneficiary surname (nom)
beneficiary.first_namesarray of stringsGiven names (prénoms) in printed order
beneficiary.birth_datedate (ISO 8601 string)Date of birth (YYYY-MM-DD)
beneficiary.nationalitystringBeneficiary nationality as an ISO 3166-1 alpha-3 code
agdref_numberstringAGDREF number identifying the foreign national's file
requested_permit_typestringPermit type the renewal request applies to
decisionstringDecision recorded on the attestation (e.g. renewal in progress)
decision_datedate (ISO 8601 string)Date the decision was recorded
attestation_valid_untildate (ISO 8601 string)Date until which the attestation extends the right to stay
issuing_prefecturestringPrefecture that issued the attestation

Validation

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