Skip to content

extra.bank_statement

Present only on flows containing a bank-statement step.

FieldTypeNotes
idintegerInternal bank-statement analysis identifier.
validation_passbooleanOverall validation outcome.
validationobjectPer-check validation outcomes across all uploaded statements.
validation_transaction_min_monthbooleanWhether the statements span the minimum number of months the flow requires.
validation_transaction_latest_afterbooleanWhether the most recent transaction is recent enough.
validation_transaction_oldest_beforebooleanWhether the oldest transaction reaches far enough back.
validation_noteobjectWhy a check in validation failed, keyed by the same names.
marginobjectDerived income and expenditure margins.
casa_weighted_pctobjectnullableWeighted current-and-savings-account share. null when not computed.
documentsarray<object>One entry per uploaded statement.
created_atstringdate-timeWhen the analysis was created.
deleted_atstringnullabledate-timeSet when the analysis was soft-deleted. null otherwise.
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.

Omitted entirely on flows without a statement step. Guard every access:

extra?.bank_statement?.validation_pass