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_typeDescription
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:

FieldTypeDescription
keystringUnique segment identifier for this document part (e.g., segment_1, segment_2). Useful to correlate parts across multi-segment documents.
part_typestringSchema identifier for this document part. See the table above for available values.
labelstring | nullHuman-readable label identifying this part (e.g., account number for bank statements, form name for CERFA). May be null for some part types.
validation_statusstring | nullData validation result: OK (all consistency checks passed), WARNING (soft issues detected), or ERROR (validation errors detected, such as balance mismatches).
validation_codesarray of stringsStable 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.
checksarray of objectsThe 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.
pagesarray of integersPage numbers from the original document where this part appears.
versionstring | nullForm version year (e.g., "2024"). Only present for CERFA forms.
dataobjectThe 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.
      }
    }
  ]
}