result.submission_packet answers what no single document can.
| Field | What it says |
|---|---|
intake | When and how it arrived (received_at, source), who sent it (broker_email: the form field, or the email’s sender), the merchant it is filed under (business_identity: EIN, else your merchant id, else the application’s EIN, else the statements, else the name), what each file was declared to be (file_declarations; recorded, never used in place of the classifier) and request_content_sha256. |
documents | Every typed document in packet order (packet_index), with its kind, type, pages, fingerprints, status and excluded_reason. |
statement_exclusions | Which documents the decision is not computed from, and why (below), plus missing_months only an excluded statement covered. Any exclusion sends the packet to review. |
submission_intelligence | company_profile: business, address and owner fields, each resolved (your request, else the application, else the statements’ majority) with every source it was read from, never more than the SSN’s last four digits. transaction_coverage: per account, month by month, covered, reconciled or missing. |
mode_u | Whether the decision statements are one account’s continuous history (periods day after day, each closing balance the next opening), and if not, why. |
cross_statement | balance_chain (each seam between consecutive statements) and missing_account_join (accounts the merchant’s own transfers mention that were not submitted). |
packet_fraud | Cross-document signals (edited resubmissions, balance-chain breaks, mismatched identities, overstated declared revenue): {fraud_score, severity, reasons}. high or critical sends the packet to review (packet_cross_document_fraud). |
review_reasons | The packet’s own reasons; they are also in the job’s review_reasons. |
Exclusion reasons
| Code | The document is not used because |
|---|---|
duplicate_document | The same statement appears again in the packet; one copy is used. |
statement_excluded_parse_failed | Its read failed: nothing usable could be read from it. |
statement_excluded_unreconciled | It was read, but its ledger did not verify. |
activity_printout_unverified | It is an online-banking activity printout without a complete running-balance chain, so there is nothing to verify it against. |
unclassified_document | It is neither a bank statement nor an application. |
period_overlaps_another_statement | Its period overlaps another statement of the same account. |
account_holder_mismatch | Its holder shares no word with the merchant’s names (application business and owners, the declared name) nor with any other statement’s holder. Otherwise a differing holder is only flagged. |
Reading it
curl -sS "$API/v1/jobs/$JOB_ID" -H "X-API-Key: $KEY" | jq '{
documents: .result.submission_packet.document_count,
excluded: [.result.submission_packet.statement_exclusions.excluded_documents[]? | {packet_index, reason_code}],
fraud: .result.submission_packet.packet_fraud.severity,
review: .result.review_reasons}'