Schema Part Types
When extracting documents, the API returns results in a document_parts array. Each part has a part_type field that identifies its schema structure.
Overview
The part_type field is a string identifier that tells you what kind of data to expect in that document part. Use this field to determine how to parse and display the extraction results.
Available Part Types
The table below shows all supported part types and their corresponding schemas.
| part_type | Description |
|---|---|
| bank-statement | Bank account statement with transactions, balances, and account details. View schema |
| utility_bill | Utility bill (electricity, gas, water) with consumption periods, meter readings, and delivery point details. View schema |
| bilan-actif | Generic French balance sheet - Assets (Bilan Actif). View schema |
| bilan-passif | Generic French balance sheet - Liabilities (Bilan Passif). View schema |
| CERFA-2033-A | Simplified balance sheet (Bilan Simplifié) - Regime Simplifie d'Imposition. View schema |
| CERFA-2033-B | Simplified income statement (Compte de Resultat Simplifie). View schema |
| CERFA-2033-C | Fixed assets and depreciation (Immobilisations et Amortissements). View schema |
| CERFA-2033-D | Provisions, accelerated depreciation and loss carryforwards (Relevé des provisions). View schema |
| CERFA-2033-E | Added value determination for CVAE (Détermination de la valeur ajoutée produite). View schema |
| CERFA-2050 | Balance sheet - Assets (Bilan Actif) - Regime Reel Normal. View schema |
| CERFA-2051 | Balance sheet - Liabilities (Bilan Passif) - Regime Reel Normal. View schema |
| CERFA-2052 | Income statement (Compte de Resultat) - Regime Reel Normal. View schema |
| CERFA-2053 | Income statement continued (Compte de Resultat suite) - Regime Reel Normal. View schema |
| CERFA-2059-G | Subsidiaries and equity holdings (Filiales et Participations). View schema |
Document Part Fields
Each item in the document_parts array contains the following common fields:
| Field | Type | Description |
|---|---|---|
| key | string | Unique segment identifier for this document part (e.g., segment_1, segment_2). Useful to correlate parts across multi-segment documents. |
| part_type | string | Schema identifier for this document part. See the table above for available values. |
| label | string | null | Human-readable label identifying this part (e.g., account number for bank statements, form name for CERFA). May be null for some part types. |
| validation_status | string | null | Data validation result: OK (all consistency checks passed), WARNING (soft issues detected), or ERROR (validation errors detected, such as balance mismatches). |
| validation_codes | array of strings | Stable upper-snake tokens describing decisions taken during validation. Always present, may be empty. Includes errors that fired (e.g. BALANCE_MISMATCH), warnings, and neutral notes such as the savings-account waiver (SAVING_ACCOUNT_WO_START_BALANCE_IS_EXPECTED) or the securities / compte-titres waiver (SECURITIES_ACCOUNT_WO_START_BALANCE_IS_EXPECTED). Parts whose schema declares a field typed siren additionally carry the company-registry outcome: SIREN_RESOLVED when the registry recognises the number, SIREN_NOT_FOUND when it does not or the printed value is not a usable SIREN / SIRET, and SIREN_ENRICHMENT_UNAVAILABLE when the lookup could not be performed. The last two are errors. Branch on codes; rely on validation_status for the rolled-up verdict. |
| checks | array of objects | The full rule inventory for this part: one flat array of every check that ran: passed, failed and skipped alike. Each entry carries type (extraction, business or id_verification), code, label, description, status (passed / failed / skipped), severity, message and reason. Extraction checks judge whether the document was read correctly; business checks judge your own acceptance rules; id_verification checks carry the identity-verification provider's verdict on identity documents. The code is the same token used in validation_codes, so the two join directly. A category that ran no checks contributes no entries. Organizations with rule details enabled additionally receive formula, values, expected, actual and tolerance per entry where available; absent keys uniformly mean the data is not available. |
| pages | array of integers | Page numbers from the original document where this part appears. |
| version | string | null | Form version year (e.g., "2024"). Only present for CERFA forms. |
| data | object | The extracted data. Structure varies by part_type. See individual schema documentation for details. |
Usage Example
Here's how to use the part_type field to process document parts:
{
"extraction_id": "wea_iMaUbZDZoLfWZcKh",
"document_name": "testhabib4.pdf",
"category": "BANK_STATEMENT",
"extraction_date": "2025-12-17T14:22:21.249137+00:00",
"review_status": "NOT_REVIEWED",
"reviewed_by_user": null,
"reviewed_at": null,
"rejected_by_user": null,
"rejected_at": null,
"document_parts": [
{
"key": "segment_1",
"part_type": "bank-statement",
"label": "Qonto - My Corp",
"validation_status": "OK",
"validation_codes": [],
"checks": [
{ "type": "extraction", "code": "BALANCE_EQUATION", "label": "Balance equation",
"description": null, "status": "passed", "severity": "error",
"message": null, "reason": null }
],
"pages": [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19
],
"data": {
"bank_name": "Qonto",
"currency": "EUR",
"account_type": "current",
"account_name": "My Corp",
"client_name": "My Corp SARL",
"client_names": ["My Corp SARL"],
"account_number": "FR7630004020360001026054720",
"advisor_name": "Jean Dupont",
"branch_name": "Paris Opéra",
"start_balance": 2450.75,
"end_balance": 5825.25,
"start_date": "2024-01-01",
"end_date": "2024-01-31",
"transactions": [
// ...
]
}
},
{
"key": "segment_2",
"part_type": "CERFA-2033-A",
"validation_status": "OK",
"validation_codes": [],
"pages": [1, 2],
"version": "2024",
"data": {
// ...
}
},
{
"key": "segment_3",
"part_type": "bank-statement",
"label": "Livret A",
"validation_status": "OK",
"validation_codes": ["SAVING_ACCOUNT_WO_START_BALANCE_IS_EXPECTED"],
"checks": [
{ "type": "extraction", "code": "BALANCE_EQUATION", "label": "Balance equation",
"description": null, "status": "passed", "severity": "error",
"message": null, "reason": null }
],
"pages": [20, 21],
"data": {
"account_type": "savings",
"end_balance": 8214.36,
// start_balance was not declared on the document. Acceptable for
// savings accounts; surfaced via the validation_codes entry.
}
}
]
}