Document schemas · Banking & Wealth

Banking & Wealth

Prebuilt extractors for banking and wealth documents: bank certificates, transfer orders, amortization schedules, and wealth statements. Each schema below shows the document_part the extractor returns. 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.


Bank Certificate (Attestation bancaire)

part_typefr_attestation_bancairePreviewBanking & Wealth

The attestation bancaire is a document issued by a bank confirming the existence of an account, the identity of its holder, and optionally the account balance or the fact that the account is domiciled with the institution. It is commonly requested to prove banking domiciliation, solvency, or account ownership. The extraction returns the issuing institution, account identifiers, the stated purpose of the certificate, and signature details.

Document structure

  • Issuing bank: The institution that produced the certificate
  • Account holder: The named owner of the account
  • Account identifiers: IBAN, BIC, and optionally the domestic account number, type, and opening date
  • Purpose and balance: The stated reason for the certificate and, when present, the confirmed balance
  • Signature block: Signatory name and role, and whether a stamp is present

Data structure

Within the document_parts array, the fr_attestation_bancaire data object contains:

dataJSON
{
  "issuing_bank": "Banque Populaire Rives de Paris",
  "account_holder": "MARTIN Camille",
  "iban": "FR76 3000 4000 0100 0001 2345 678",
  "bic": "BNPAFRPPXXX",
  "account_number": "00012345678",
  "account_type": "compte courant",
  "account_opened_date": "2019-06-14",
  "certificate_purpose": "domiciliation",
  "balance": null,
  "issue_date": "2026-02-03",
  "signatory": {
    "name": "DUBOIS Anne",
    "role": "Directrice d'agence"
  },
  "stamp_present": true
}

Field reference

FieldTypeDescription
issuing_bankstringName of the bank issuing the certificate
account_holderstringName of the account holder
ibanstringInternational Bank Account Number of the certified account
bicstringBank Identifier Code (SWIFT) of the institution
account_numberstring | nullDomestic account number, when stated separately from the IBAN
account_typestring | nullType of account as described on the certificate (e.g., compte courant, livret)
account_opened_datedate | nullDate the account was opened (YYYY-MM-DD), when stated
certificate_purposestringPurpose of the certificate: domiciliation, balance, or account_existence
balancenumber | nullConfirmed account balance, when the certificate states one
issue_datedateDate the certificate was issued (YYYY-MM-DD)
signatoryobjectSignatory block with name and role
stamp_presentbooleanWhether a bank stamp is present on the document

Validation

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



Transfer Order (Ordre de virement)

part_typefr_ordre_virementPreviewBanking & Wealth

The ordre de virement is an instruction to a bank to transfer a stated amount from a payer's account to a beneficiary's account. The extraction returns the payer and beneficiary identities and account numbers, the amount and currency, an optional reference and purpose, and the requested execution date.

Document structure

  • Payer: The name and account (IBAN) the funds are debited from
  • Beneficiary: The name, IBAN, and BIC the funds are credited to
  • Amount: The transfer amount and currency
  • Instruction details: Optional reference and purpose, and the requested execution date
  • Signature: Whether the order carries a signature

Data structure

Within the document_parts array, the fr_ordre_virement data object contains:

dataJSON
{
  "payer": {
    "name": "MARTIN Camille",
    "iban": "FR76 3000 4000 0100 0001 2345 678"
  },
  "beneficiary": {
    "name": "SCI Les Tilleuls",
    "iban": "FR76 1027 8060 4100 0200 3456 789",
    "bic": "CMCIFR2AXXX"
  },
  "amount": 1450.00,
  "currency": "EUR",
  "reference": "Loyer mars 2026",
  "purpose": "Paiement loyer",
  "execution_date": "2026-03-05",
  "signature_present": true
}

Field reference

FieldTypeDescription
payerobjectPayer block with name and iban
beneficiaryobjectBeneficiary block with name, iban, and bic
amountnumberTransfer amount
currencystringISO 4217 currency code of the amount (e.g., EUR)
referencestring | nullTransfer reference or label carried on the instruction
purposestring | nullStated purpose of the transfer, when present
execution_datedateRequested execution date (YYYY-MM-DD)
signature_presentbooleanWhether a signature is present on the order

Validation

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



Amortization Schedule Extract (Extrait d'échéancier)

part_typefr_extrait_echeancierPreviewBanking & Wealth

The extrait d'échéancier is the amortization schedule of a loan, listing each installment with its split between principal, interest, and insurance, and the outstanding balance after payment. The extraction returns the loan terms, the per-installment breakdown, and the current outstanding balance.

Document structure

  • Loan header: Lending bank, borrower, and loan number
  • Terms: Initial amount, interest rate, duration in months, and monthly payment
  • Installments: One row per scheduled payment, split into principal, interest, and insurance
  • Outstanding balance: Remaining balance after each installment and the current outstanding balance

Data structure

Within the document_parts array, the fr_extrait_echeancier data object contains:

dataJSON
{
  "bank": "Crédit Agricole Île-de-France",
  "borrower": "MARTIN Camille",
  "loan_number": "PR-2021-0045678",
  "initial_amount": 180000.00,
  "interest_rate_pct": 1.35,
  "duration_months": 240,
  "monthly_payment": 812.45,
  "installments": [
    {
      "due_date": "2026-01-05",
      "principal": 610.12,
      "interest": 172.33,
      "insurance": 30.00,
      "outstanding_balance": 152430.88
    },
    {
      "due_date": "2026-02-05",
      "principal": 610.81,
      "interest": 171.64,
      "insurance": 30.00,
      "outstanding_balance": 151820.07
    }
  ],
  "current_outstanding_balance": 151820.07
}

Field reference

FieldTypeDescription
bankstringLending institution
borrowerstringName of the borrower
loan_numberstringLoan reference number
initial_amountnumberOriginal principal amount borrowed
interest_rate_pctnumberNominal annual interest rate, as a percentage (e.g., 1.35)
duration_monthsnumberTotal loan duration in months
monthly_paymentnumberScheduled monthly payment amount
installmentsarrayArray of installment objects (see below)
current_outstanding_balancenumberRemaining balance owed as of the most recent installment

Installment object structure

Each installment object in the installments array contains the following fields:

FieldTypeDescription
due_datedatePayment due date (YYYY-MM-DD)
principalnumberPrincipal repaid in this installment
interestnumberInterest paid in this installment
insurancenumberInsurance premium included in this installment
outstanding_balancenumberRemaining loan balance after this installment

Validation

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



Wealth Statement (Relevé de patrimoine)

part_typefr_releve_patrimoinePreviewBanking & Wealth

The relevé de patrimoine is a snapshot of a person's assets and liabilities at a given date, typically produced by a wealth manager or private bank. The extraction returns the holder, the reference date, the itemized financial and real-estate assets, the liabilities, and the gross and net wealth totals.

Document structure

  • Holder and date: The person the statement is drawn up for and the reference date
  • Financial assets: Bank accounts, savings, and securities holdings, itemized with a value
  • Real-estate assets: Properties with an address and a value
  • Other assets and holdings: Optional additional asset lists
  • Liabilities: Outstanding debts, itemized by type
  • Totals: Gross wealth and net wealth

Data structure

Within the document_parts array, the fr_releve_patrimoine data object contains:

dataJSON
{
  "holder": "MARTIN Camille",
  "as_of_date": "2026-01-31",
  "financial_assets": [
    { "type": "livret", "label": "Livret A", "value": 22950.00 },
    { "type": "securities", "label": "PEA", "value": 48300.00 }
  ],
  "real_estate_assets": [
    { "address": "12 rue des Lilas, 75011 Paris", "value": 540000.00 }
  ],
  "holdings": null,
  "other_assets": [
    { "type": "vehicle", "label": "Véhicule", "value": 18000.00 }
  ],
  "liabilities": [
    { "type": "mortgage", "outstanding": 151820.07 }
  ],
  "gross_wealth": 629250.00,
  "net_wealth": 477429.93
}

Field reference

FieldTypeDescription
holderstringName of the person the statement is drawn up for
as_of_datedateReference date of the valuation (YYYY-MM-DD)
financial_assetsarrayFinancial asset lines, each with type, label, and value
real_estate_assetsarrayReal-estate lines, each with address and value
holdingsarray | nullCorporate or equity holdings, when itemized on the statement
other_assetsarray | nullAdditional assets not covered by the other categories
liabilitiesarrayLiability lines, each with type and outstanding
gross_wealthnumberTotal asset value before deducting liabilities
net_wealthnumberNet wealth after deducting liabilities

Validation

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



Wealth Profile Sheet (Fiche patrimoniale)

part_typefr_fiche_patrimonialePreviewBanking & Wealth

The fiche patrimoniale is a client profile sheet used in wealth advisory and lending, summarizing income, charges, assets, and liabilities together with derived affordability indicators. The extraction returns the client identity, marital status, monthly income and charge breakdowns, asset and liability lists, and the computed debt ratio, disposable income, and savings capacity.

Document structure

  • Client: Name and marital status
  • Monthly income: Salary, other income, and total
  • Monthly charges: Credit payments, rent, other charges, and total
  • Assets and liabilities: Itemized asset and liability lists
  • Affordability indicators: Debt ratio, disposable income, and savings capacity

Data structure

Within the document_parts array, the fr_fiche_patrimoniale data object contains:

dataJSON
{
  "client": {
    "last_name": "MARTIN",
    "first_names": "Camille"
  },
  "marital_status": "marié(e)",
  "monthly_income": {
    "salary": 3200.00,
    "other": 250.00,
    "total": 3450.00
  },
  "monthly_charges": {
    "credit_payments": 812.45,
    "rent": 0.00,
    "other": 180.00,
    "total": 992.45
  },
  "assets": [
    { "type": "real_estate", "label": "Résidence principale", "value": 540000.00 },
    { "type": "savings", "label": "Livret A", "value": 22950.00 }
  ],
  "liabilities": [
    { "type": "mortgage", "outstanding": 151820.07 }
  ],
  "debt_ratio_pct": 23.5,
  "disposable_income": 2457.55,
  "savings_capacity": 1465.10
}

Field reference

FieldTypeDescription
clientobjectClient block with last_name and first_names
marital_statusstringMarital status as stated on the sheet
monthly_incomeobjectIncome breakdown with salary, other, and total
monthly_chargesobjectCharge breakdown with credit_payments, rent, other, and total
assetsarrayItemized asset lines held by the client
liabilitiesarrayItemized liability lines owed by the client
debt_ratio_pctnumberDebt-to-income ratio, as a percentage
disposable_incomenumberIncome remaining after monthly charges
savings_capacitynumber | nullEstimated monthly savings capacity, when computed on the sheet

Validation

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