Document types

The 37 supported document types and their aliases.

Types are normalized automatically — bank-statement, Bank Statement, and bank_statement are all accepted. Common aliases like gis (→ general_information_sheet) and afs (→ audited_financial_statement) are also resolved.

CategoryTypes
Consumerbank_statement, bank_statement_summary (LDB: reducto-only summary + 3-tab workbook), bank_certificate, payslip, credit_card_statement, credit_report (extraction + fraud only), loan_statement, passbook (extraction + fraud only), remittance_slip, certificate_of_employment, tin_id
Businessaudited_financial_statement / afs (multi-pass extraction: balance sheet, income statement, cash flow, notes/schedules, qualitative data, financial ratios, completeness scoring), general_information_sheet (multi-pass extraction: company info, capital structure, stockholders, directors, officers, beneficial owners, compliance, risk signals, completeness scoring), bill_of_lading, bir_2303, business_permit, business_registration_dti, business_registration_sec, certificate_of_registration, mayors_permit, purchase_order, sales_invoice, secretarys_certificate, certificate_of_incorporation
Government / Legalbir_2307, government_id, income_tax_return, insurance_policy, land_title, loan_agreement, proof_of_billing, vehicle_registration
Otherreceipt, bill, slik, other_document, general_document

Bank Certificate Envelope

Type bank_certificate runs on the universal Qwen vision pipeline with Reducto disabled — single-page issuer-signed letters certifying an account. The envelope is nested under processed_data.bank_certificate_data:

{
  "bank_certificate_data": {
    "schema_version": 1,
    "certificate_metadata": {
      "reference_number": "S03-260217HAHVKPWF",
      "date_issued": "2026-02-18",
      "addressee_name": "ZED BANK",
      "addressee_address": "ORTIGAS, PASIG CITY, METRO MANILA, PHILIPPINES 1880",
      "stated_purpose": "requirement for credit card"
    },
    "bank_info": {
      "bank_name": "MariBank Philippines Inc.",
      "branch_name": null,
      "branch_address": "32 Rizal Street, Brgy. Poblacion II, Pagsanjan, Laguna 4008",
      "branch_phone": "+632 8424 8050",
      "branch_email": "info@maribank.com.ph",
      "regulator": "Bangko Sentral ng Pilipinas"
    },
    "account_holder": {
      "full_name": "MARY ANN LADIOS OLVINA",
      "address": null
    },
    "account_details": {
      "account_type": "savings",
      "account_number": "12258767750",
      "currency": "PHP",
      "date_opened": "2022-06-20",
      "account_balance": 34545.17,
      "balance_as_of_date": "2026-02-17",
      "average_daily_balance": 24933.05,
      "adb_period_start": "2025-08-22",
      "adb_period_end": "2026-02-17",
      "hold_status": null
    },
    "signatories": [
      { "name": "John Kenneth Vicente", "title": "Lead for Digital Operations", "signature_image_detected": true }
    ]
  },
  "bank_certificate_signals": {
    "signals": [
      { "name": "balance_freshness_days", "value": 1 },
      { "name": "account_age_days", "value": 1339 },
      { "name": "adb_to_balance_ratio", "value": 0.722 },
      { "name": "adb_window_days", "value": 179 },
      { "name": "has_multiple_signatories", "value": false },
      { "name": "signature_image_detected", "value": true },
      { "name": "issuer_contact_present", "value": true },
      { "name": "reference_number_format_ok", "value": true },
      { "name": "stated_purpose_category", "value": "credit_card" }
    ],
    "summary": { "balance_freshness_days": 1, "account_age_days": 1339, "stated_purpose_category": "credit_card" }
  }
}

Signal categories for stated_purpose_category: visa, credit_card, loan, employment, other.

Validators that fire on every cert (results in validation_flags[]):

  • field_presence — five core fields must be extracted (date issued, bank name, holder name, account number, balance).
  • period_consistency — ADB window length within [30, 400] days; date opened before date issued; balance-as-of within 30 days of date issued.
  • positive — account balance must be > 0.
  • field_cross_check — Gemini 2.5 Flash re-reads account number, balance, ADB, and date issued from the page image and flags mismatches with Stage 1 Qwen.

Cross-document verification: when a bank_certificate shares a doc set with a payslip, bank_statement, passbook, government_id, or certificate_of_employment, the API emits cross_doc_flags[] on BOTH documents indicating whether the account holder name matches. Account-number match against bank_statement / passbook also runs when bank names align.


On this page