extra.bank_statement
Present only on flows containing a bank-statement step.
Fields
Section titled “Fields”| Field | Type | Notes |
|---|---|---|
id | integer | Internal bank-statement analysis identifier. |
validation_pass | boolean | Overall validation outcome. |
validation | object | Per-check validation outcomes across all uploaded statements. |
validation_transaction_min_month | boolean | Whether the statements span the minimum number of months the flow requires. |
validation_transaction_latest_after | boolean | Whether the most recent transaction is recent enough. |
validation_transaction_oldest_before | boolean | Whether the oldest transaction reaches far enough back. |
validation_note | object | Why a check in validation failed, keyed by the same names. |
margin | object | Derived income and expenditure margins. |
casa_weighted_pct | objectnullable | Weighted current-and-savings-account share. null when not computed. |
documents | array<object> | One entry per uploaded statement. |
created_at | stringdate-time | When the analysis was created. |
deleted_at | stringnullabledate-time | Set when the analysis was soft-deleted. null otherwise. |
Reading it
Section titled “Reading it”| Path | Use |
|---|---|
validation_pass |
The single overall verdict |
validation.* |
Which individual checks passed |
validation_note.* |
Why a check failed |
documents[] |
One entry per uploaded statement |
documents[].transactions[] |
Parsed transaction lines |
documents[] entries carry OCR metadata (metadata_producer, metadata_created_date,
metadata_mod_date) alongside per-document validation flags such as
validation_same_creation_mod_date and validation_producer_check. Those exist to
surface tampering: a statement whose PDF producer or modification date looks wrong is
worth a human look even when the numbers parse cleanly.
When this object is absent
Section titled “When this object is absent”Omitted entirely on flows without a statement step. Guard every access:
extra?.bank_statement?.validation_pass