Response schemas

The bank statement response contract, field by field.

When a bank statement finishes processing, the result includes these key fields:

{
  "status": "completed",
  "document_type": "bank_statement",
  "metadata": {
    "financial_institution": "BPI",
    "account_holder_name": "JUAN DELA CRUZ",
    "account_number": "1234567890",
    "statement_start_date": "01-01-2024",
    "statement_end_date": "01-31-2024",
    "opening_balance": 10000.00,
    "closing_balance": 35000.00
  },
  "transactions": [
    {
      "date": "01-05-2024",
      "description": "ATM WITHDRAWAL",
      "debit": 500.00,
      "credit": null,
      "balance": 9500.00,
      "category": "atm",
      "category_confidence": "h",
      "is_bounced": false,
      "is_reversed": false
    }
  ],
  "metrics": {
    "total_credits": 300000.00,
    "total_debits": 200000.00,
    "average_end_of_day_balance": 45000.00,
    "total_bounced_transactions": 2,
    "total_reversed_transactions": 1
  },
  "total_bounced_transactions": 2,
  "total_reversed_transactions": 1,
  "fraud_score": {
    "overall_score": 85,
    "risk_level": "low"
  },
  "fraud_detection": {
    "authenticity_score": 92,
    "risk_level": "low",
    "verdict": "Document appears authentic with minor or no flags.",
    "checks_passed": 6,
    "checks_warning": 0,
    "checks_failed": 1,
    "summary": {
      "total_signals": 1,
      "high_count": 1,
      "medium_count": 0,
      "low_count": 0,
      "critical_count": 0,
      "recommendation": "Document appears authentic with minor or no flags."
    },
    "category_scores": {
      "editing": { "score": 75, "weight": 0.333, "signals": 1 }
    },
    "integrity_checks": [
      {
        "key": "file_structure",
        "label": "File Structure",
        "status": "pass",
        "description": "No anomalies detected in file headers or structure."
      },
      {
        "key": "editing_software",
        "label": "Editing Software",
        "status": "fail",
        "description": "Document may have been modified with editing software."
      }
    ],
    "signals": [
      {
        "severity": "high",
        "category": "editing",
        "signal_id": "suspicious_producer_library",
        "message": "The PDF producer is identified as 'pdf-lib', a developer tool for modifying PDFs, rather than a banking system or professional scanner.",
        "recommendation": "action",
        "page": null,
        "confidence": 1,
        "details": null
      }
    ]
  }
}

Fraud detection fields:

  • verdict — human-readable overall assessment (same line shown in the portal's Fraud Check tab)
  • checks_passed / checks_warning / checks_failed — integrity check counts
  • integrity_checks[].description — human-readable explanation of each check result
  • signals[].signal_id — stable machine-readable identifier (e.g. suspicious_producer_library)
  • signals[].message — human-readable explanation of the finding
  • signals[].recommendation — suggested handling: action (high/critical severity), review (medium), info (low)
  • signals[].confidence — model confidence in the finding (0–1)
  • signals[].page — page number the finding relates to, when applicable

Bounced & Reversed Transactions

Bounced and reversed transactions are detected automatically during processing and surfaced in multiple places:

Per-transaction flags:

  • is_bounced (boolean) — NSF, dishonored checks, insufficient funds
  • is_reversed (boolean) — chargebacks, returned payments, rejected transfers

Aggregate counts:

  • total_bounced_transactions — top-level field in result
  • total_reversed_transactions — top-level field in result
  • Also available in metrics.total_bounced_transactions and metrics.total_reversed_transactions

In signals (cashflow analysis):

{
  "key": "bounced_reversed_transactions",
  "label": "Bounced / Reversed Transactions",
  "value": {
    "bounced_count": 2,
    "reversed_count": 1,
    "bounced_transactions": [
      { "row": 5, "date": "01-15-2024", "description": "PAYMENT RETURNED", "amount": 500.00 }
    ],
    "reversed_transactions": [
      { "row": 12, "date": "01-20-2024", "description": "CHARGEBACK", "amount": 1500.00 }
    ]
  },
  "status": "warning"
}

Detection methods:

  1. Keyword matching — scans descriptions for: bounced, nsf, insufficient, dishonor, reversal, reversed, chargeback, rejected, returned
  2. Pattern matching — detects bounced pairs (same amount, opposite direction, within 3 rows) and reversal pairs (matching debit-credit within 2 positions)

Filtering bounced transactions via SDK:

result = client.get_result(document_id)
bounced = [tx for tx in result["transactions"] if tx.get("is_bounced")]
reversed = [tx for tx in result["transactions"] if tx.get("is_reversed")]
print(f"{len(bounced)} bounced, {len(reversed)} reversed")

Full field reference

Every field the bank statement contract can return, grouped by where it sits in the response. Optional fields are omitted when unavailable.

Bank statement response contract

Bank statement content is nested under extracted_data. Optional fields are omitted when unavailable. Internal parser artifacts and validation-provider identifiers are never returned.
Envelope and metadata fields

response envelope

FieldTypeDescription
statusstringTerminal or current result status, such as completed, failed, or processing.
processing_statusstringProcessing lifecycle status. Falls back to status when no separate value is stored.
document_typestringAlways bank_statement for this schema.
document_idnumberUnique numeric document identifier.
filenamestringUploaded filename.
processing_time_secondsnumberEnd-to-end processing duration.
uploaded_atstringISO 8601 upload timestamp.
processing_started_atstringISO 8601 processing start timestamp when available.
parse_confidencenumber | nullOverall parse confidence from 0 to 1.
parse_confidence_detailobjectDetailed confidence object when the parser produced per-section confidence.
metadataobjectAccount, institution, statement period, currency, and balance metadata.
extracted_dataobjectContains transactions, metrics, daily_balances, and loan_activity.
fraud_detectionobjectDocument-integrity result. Omitted when there is no fraud data.
suspicious_accountsobject | nullStatistical transaction patterns and counts.
custom_reportsobjectOrganization-configured report output when configured and populated.

metadata

FieldTypeDescription
account_holder_namestringExtracted account holder.
account_namestringNormalized alias of account_holder_name.
account_numberstringAccount number exactly as extracted.
financial_institutionstringExtracted bank or financial institution.
bank_namestringNormalized alias of financial_institution.
statement_start_datestringStart of the statement period.
statement_end_datestringEnd of the statement period.
countrystringCountry or ISO country code when identified.
currencystringStatement currency when identified.
opening_balancenumberOpening statement balance.
closing_balancenumberClosing statement balance.
Transaction fields

extracted_data.transactions[]

FieldTypeDescription
datestringTransaction date, usually an ISO date or timestamp.
timestringTransaction time when present on the statement.
posting_datestringPosting date when the bank provides it separately.
descriptionstringTransaction narrative or bank operation description.
referencestringBank-supplied transaction reference when available.
debitnumberDebit amount. Zero is used when the row is a credit.
creditnumberCredit amount. Zero is used when the row is a debit.
balancenumberRunning balance after the transaction.
transaction_typestringDerived direction: debit, credit, or unknown.
categorystringNormalized transaction category.
category_confidencestringCategory confidence when available.
tamperedbooleanTrue when row-level balance or integrity checks identify a likely alteration.
is_bouncedbooleanTrue when the transaction is identified as bounced or returned.
is_reversedbooleanTrue when the transaction is identified as reversed.
is_outlierbooleanTrue when the row matches a statistical outlier.
outlier_reasonstring | nullHuman-readable outlier magnitude and baseline.
validation_flagstringNormalized row validation state when a discrepancy exists.
validation_reasonstringPublic explanation for a row validation issue.
[bank-specific fields]string | numberAdditional statement columns are preserved, such as branch/channel, sequence number, or subscriber/TIN number.
Cash-flow and balance metric fields

extracted_data.metrics

FieldTypeDescription
date_orderstringDetected source order: ascending, descending, or unknown.
cashflow_sourcestring | nullMethod used to derive validated inflow and outflow totals.
cashflow_reconciliationobject | nullBalance-derived versus row-derived reconciliation details when needed.
total_inflownumberTotal validated credits in the statement period.
total_outflownumberTotal validated debits in the statement period.
net_cash_flownumbertotal_inflow minus total_outflow.
ending_balancenumberEnding running balance.
average_balancenumberAverage extracted transaction balance.
avg_transactionnumberAverage absolute transaction amount.
maximum_balancenumberMaximum running balance.
minimum_balancenumberMinimum running balance.
period_start_datestring | nullValidated statement period start.
period_end_datestring | nullValidated statement period end.
cash_buffer_daysnumberEstimated days the ending balance can cover average daily outflow.
total_transactionsnumberNumber of transaction rows used in metrics.
opening_balancenumberOpening balance used for reconciliation.
closing_balancenumberClosing balance used for reconciliation.
distinct_monthsnumberNumber of represented calendar months.
total_debitsnumberAlias of total_outflow.
total_annualized_debitsnumberStatement-period debit run rate annualized to 12 months.
average_debits_per_monthnumberPeriod-adjusted monthly debit average.
total_creditsnumberAlias of total_inflow.
total_annualized_creditsnumberStatement-period credit run rate annualized to 12 months.
average_credits_per_monthnumberPeriod-adjusted monthly credit average.
average_eod_balancenumberAverage across the canonical carried-forward daily balance series.
signal_money_velocitynumber | nullMoney-velocity signal derived from transaction activity.
signal_inflow_concentration_pctnumber | nullLargest inflow concentration percentage.
signal_outflow_concentration_pctnumber | nullLargest outflow concentration percentage.
by_monthobjectStatement-period EOD and transaction aggregates. Field name retained for compatibility.
by_categoryobjectDynamic map keyed by normalized transaction category.
extended_metricsobjectBehavioral, EOD, reversal, and activity signals.
overall_health_scoreobjectWeighted health score and contributing signals.

nested metric objects

FieldTypeDescription
by_month.sum_eod_balancesnumberSum of all daily balances in the canonical period series.
by_month.average_eod_balancenumberAverage canonical daily balance.
by_month.ending_eod_balancenumberBalance on the final calendar day.
by_month.highest_eod_balancenumberHighest calendar-day balance.
by_month.lowest_eod_balancenumberLowest calendar-day balance.
by_month.number_of_transactionsnumberTotal transaction count.
by_month.sum_of_creditsnumberTotal credit amount.
by_month.number_of_creditsnumberCredit transaction count.
by_month.sum_of_debitsnumberTotal debit amount.
by_month.number_of_debitsnumberDebit transaction count.
by_month.returned_transaction_items_countnumberReturned-item count.
by_month.bounced_transactions_countnumberBounced transaction count.
by_month.distinct_days_with_creditnumberDistinct posting days containing a credit.
by_month.distinct_days_with_debitnumberDistinct posting days containing a debit.
by_category.<category>.countnumberTransactions assigned to the category.
by_category.<category>.debit_sumnumberCategory debit total.
by_category.<category>.credit_sumnumberCategory credit total.
by_category.<category>.net_amountnumbercredit_sum minus debit_sum.
by_category.<category>.percentagenumberShare of all transaction rows, expressed as a percentage.
overall_health_score.scorenumberComposite score from 0 to 100.
overall_health_score.details.weights_usedobjectSignal weights used in the score.
overall_health_score.details.weight_coveragenumberPercentage of expected scoring weight represented.
overall_health_score.details.contributing_signalsarrayRows with key, score, weight, and contribution.

extended_metrics

FieldTypeDescription
monthly_inflownumberPeriod-adjusted average monthly inflow.
inflow_frequencynumberPeriod-adjusted credit frequency.
flow_stabilitynumberInflow stability signal.
flow_through_intensitynumberSpeed at which incoming funds leave the account.
balance_floor_behaviornumberBehavioral balance-floor signal.
reversed_transaction_countnumberDetected reversed transaction count.
bounced_transaction_countnumberDetected bounced transaction count.
reversed_transactions_detailarrayReversed rows when detailed evidence is available.
bounced_transactions_detailarrayBounced rows when detailed evidence is available.
gambling_transaction_countnumberDetected gambling transaction count.
transactions_per_weeknumberPeriod-adjusted transaction frequency.
loan_repayment_burdennumberDetected repayment burden signal.
daily_average_balancenumberAverage canonical calendar-day balance.
daily_min_balancenumberMinimum canonical calendar-day balance.
daily_max_balancenumberMaximum canonical calendar-day balance.
daily_balance_volatilitynumberStandard deviation of calendar-day balances.
balance_trendstringImproving, declining, or stable balance trend.
days_below_openingnumberCalendar days with balance below the opening level.
days_with_transactionsnumberCalendar days containing one or more transactions.
days_without_transactionsnumberCalendar days using a carried-forward balance.
longest_low_balance_streaknumberLongest consecutive run below the daily average.
balance_recovery_avg_daysnumber | nullAverage days required to recover from a low-balance period.
Daily balance fields

extracted_data.daily_balances[]

FieldTypeDescription
datestringCalendar date in YYYY-MM-DD format.
balancenumberEnd-of-day balance, carrying the prior balance across days without transactions.
carried_forwardbooleanTrue when the day had no transaction and uses the previous known balance.
transaction_countnumberNumber of transactions assigned to the day.
Loan activity summary fields

extracted_data.loan_activity.summary

FieldTypeDescription
stream_countnumberTotal detected recurring repayment streams.
active_stream_countnumberStreams active as of the statement observation date.
total_monthly_obligationnumberSum of monthly-equivalent obligations for active streams.
total_paidnumberTotal successful repayments observed across all streams.
failed_payment_countnumberTotal failed repayment attempts.
failed_payment_ratenumberFailed attempts divided by all observed attempts, from 0 to 1.
debt_service_rationumber | nullActive monthly obligation divided by median monthly inflow.
median_monthly_inflownumber | nullMedian monthly inflow after excluding detected loan proceeds.
new_loans_in_periodnumberDetected disbursements in the statement period.
total_proceeds_amountnumberSum of detected loan disbursements.
monthly_debt_serviceobjectDynamic YYYY-MM map with paid, failed, inflow, and dsr.
Loan repayment stream fields

extracted_data.loan_activity.streams[]

FieldTypeDescription
streamstringNormalized repayment-stream label.
lenderstring | nullIdentified lender when supported by the statement evidence.
typical_amountnumberTypical successful repayment amount.
cadencestringweekly, fortnightly, monthly, or irregular.
cadence_daysnumber | nullObserved median interval in days.
paid_countnumberSuccessful repayments in the stream.
failed_countnumberFailed repayment attempts in the stream.
total_paidnumberSuccessful amount paid across the stream.
monthly_equivalentnumberCadence-normalized monthly obligation.
statusstringactive or inactive as of observed_through.
confidencestringDeterministic stream-detection confidence: high, medium, or low.
first_payment_datestringFirst observed repayment date.
last_payment_datestringMost recent observed repayment date.
observed_throughstringLast date used to determine active or inactive status.
monthly_timelineobjectDynamic YYYY-MM map of paid amount, successful count, and failed count.
paymentsarrayAll stream events with date, amount, and failed.
amortization_patternstringflat, declining, or increasing observed amount pattern.
linked_proceedsobject | nullLinked disbursement with date, amount, description, and detection_method.
estimated_total_installmentsnumber | nullEstimated original installment count when inferable.
estimated_installments_remainingnumber | nullEstimated remaining installments when inferable.
estimated_payoff_datestring | nullEstimated payoff date when inferable.
identity_validationobjectOptional retained-stream decision with decision, confidence, and reason_code.
Loan payment, proceeds, and validation fields

loan_activity nested fields

FieldTypeDescription
monthly_timeline.<YYYY-MM>.paidnumberSuccessful repayment amount in the month.
monthly_timeline.<YYYY-MM>.countnumberSuccessful repayment count in the month.
monthly_timeline.<YYYY-MM>.failednumberFailed attempt count in the month.
payments[].datestringRepayment event date.
payments[].amountnumberRepayment event amount.
payments[].failedbooleanWhether the event is a failed attempt.
identity_validation.decisionstringconfirmed, rejected, or uncertain. Rejected candidates are not retained as streams.
identity_validation.confidencestringConfidence in the identity decision.
identity_validation.reason_codestringTyped evidence reason; no free-form provider response is exposed.
proceeds[].datestringDetected disbursement date.
proceeds[].amountnumberDetected disbursement amount.
proceeds[].descriptionstringSource transaction description.
proceeds[].linked_streamnumber | nullZero-based index into streams when linked.
proceeds[].detection_methodstringkeyword, stream_reference, or balance_shape.
llm_validation.statusstringcompleted, disabled, unavailable, or not_applicable.
llm_validation.candidate_countnumberTotal deterministic candidates.
llm_validation.reviewed_countnumberCandidates reviewed by identity validation.
llm_validation.confirmed_countnumberCandidates confirmed as repayments.
llm_validation.rejected_countnumberHigh-confidence non-loan candidates removed.
llm_validation.uncertain_countnumberAmbiguous candidates retained conservatively.
llm_validation.unreviewed_countnumberCandidates retained without review.
monthly_debt_service.<YYYY-MM>.paidnumberSuccessful debt service in the month.
monthly_debt_service.<YYYY-MM>.failednumberFailed repayment count in the month.
monthly_debt_service.<YYYY-MM>.inflownumberMonthly inflow excluding detected loan proceeds.
monthly_debt_service.<YYYY-MM>.dsrnumber | nullMonthly paid debt service divided by inflow.
Fraud detection fields

fraud_detection

FieldTypeDescription
risk_levelstringOverall low, medium, high, or critical risk classification.
authenticity_scorenumberDocument authenticity score.
verdictstringHuman-readable review recommendation.
checks_passednumberIntegrity checks with pass status.
checks_warningnumberIntegrity checks with warning status.
checks_failednumberIntegrity checks with fail status.
is_standardizedbooleanWhether the statement matches a standardized recognized layout.
total_rowsnumberTransaction rows evaluated.
tamper_countnumberRows flagged as tampered.
manual_edit_countnumberDetected manual-edit signals.
summary_countnumberSummary rows identified and excluded from transactions.
summaryobjectSeverity counts, total_signals, and recommendation.
category_scoresobjectDynamic risk-category score map.
integrity_checksarrayChecks with key, label, status, and description.
signalsarraySignals with severity, category, signal_id, message, recommendation, page, confidence, and details.
Suspicious account fields

suspicious_accounts

FieldTypeDescription
outlier_transactionsarrayStatistically large transactions.
outlier_transactions[].descriptionstringTransaction narrative.
outlier_transactions[].amountnumberAbsolute transaction amount.
outlier_transactions[].typestringdebit or credit.
outlier_transactions[].datestringTransaction date.
outlier_transactions[].categorystringNormalized category.
outlier_transactions[].avg_amountnumberStatement-wide average amount used as baseline.
outlier_transactions[].multipliernumberAmount divided by the baseline average.
outlier_transactions[].flagstringoutlier.
frequent_descriptionsarrayDescriptions occurring unusually often.
frequent_descriptions[]objectdescription, normalized, count, total_debit, total_credit, avg_amount, and flag.
circular_transfersarrayPotential circular patterns.
circular_transfers[]objectid, type, count, total_debit, total_credit, description, and flag.
outlier_countnumberNumber of outlier transactions.
frequent_countnumberNumber of frequent-description patterns.
circular_countnumberNumber of circular-transfer patterns.
total_suspiciousnumberSum of outlier, frequent, and circular pattern counts.

Response examples by document type

A full worked response for each document type. These are examples of real output, not a contract: optional fields are omitted when unavailable.

Bank Statement
{
  "status": "completed",
  "processing_status": "completed",
  "document_type": "bank_statement",
  "document_id": 123,
  "filename": "statement.pdf",
  "processing_time_seconds": 12.5,
  "uploaded_at": "2026-01-31T10:30:00Z",
  "parse_confidence": 0.95,
  "metadata": {
    "account_holder_name": "Juan Dela Cruz",
    "account_name": "Juan Dela Cruz",
    "account_number": "1234567890",
    "financial_institution": "BDO",
    "bank_name": "BDO",
    "statement_start_date": "01-01-2026",
    "statement_end_date": "01-31-2026",
    "country": "PH",
    "currency": "PHP",
    "opening_balance": 50000,
    "closing_balance": 62000
  },
  "extracted_data": {
    "transactions": [
      {
        "date": "2026-01-02T00:00:00",
        "time": "09:15:00",
        "posting_date": "01/02/2026",
        "description": "ACME FINANCE LOAN PAYMENT",
        "reference": "REF-1001",
        "debit": 25000,
        "credit": 0,
        "balance": 55000,
        "transaction_type": "debit",
        "category": "loan",
        "category_confidence": "h",
        "tampered": false,
        "is_bounced": false,
        "is_reversed": false,
        "is_outlier": false,
        "outlier_reason": null
      }
    ],
    "metrics": {
      "total_inflow": 45000,
      "total_outflow": 33000,
      "net_cash_flow": 12000,
      "opening_balance": 50000,
      "closing_balance": 62000,
      "average_balance": 58000,
      "average_eod_balance": 57500,
      "minimum_balance": 42000,
      "maximum_balance": 80000,
      "period_start_date": "01-01-2026",
      "period_end_date": "01-31-2026",
      "total_transactions": 25,
      "cash_buffer_days": 8.4,
      "by_month": {
        "sum_eod_balances": 1782500,
        "average_eod_balance": 57500,
        "ending_eod_balance": 62000,
        "highest_eod_balance": 80000,
        "lowest_eod_balance": 42000,
        "number_of_transactions": 25,
        "sum_of_credits": 45000,
        "number_of_credits": 2,
        "sum_of_debits": 33000,
        "number_of_debits": 23,
        "distinct_days_with_credit": 2,
        "distinct_days_with_debit": 14
      },
      "by_category": {
        "loan": {
          "count": 1,
          "debit_sum": 25000,
          "credit_sum": 0,
          "net_amount": -25000,
          "percentage": 4
        }
      },
      "extended_metrics": {
        "balance_trend": "improving",
        "monthly_inflow": 45000,
        "days_with_transactions": 16,
        "days_without_transactions": 15,
        "bounced_transaction_count": 0,
        "reversed_transaction_count": 0,
        "loan_repayment_burden": 0.56
      },
      "overall_health_score": {
        "score": 68.4,
        "details": {
          "weights_used": { "cash_buffer": 0.2 },
          "weight_coverage": 100,
          "contributing_signals": [
            { "key": "cash_buffer", "score": 72, "weight": 0.2, "contribution": 14.4 }
          ]
        }
      }
    },
    "daily_balances": [
      {
        "date": "2026-01-31",
        "balance": 62000,
        "carried_forward": false,
        "transaction_count": 2
      }
    ],
    "loan_activity": {
      "streams": [
        {
          "stream": "ACME FINANCE LOAN PAYMENT",
          "lender": "Acme Finance",
          "typical_amount": 25000,
          "cadence": "monthly",
          "cadence_days": 30,
          "paid_count": 3,
          "failed_count": 0,
          "total_paid": 75000,
          "monthly_equivalent": 25000,
          "status": "active",
          "confidence": "high",
          "first_payment_date": "2025-11-02",
          "last_payment_date": "2026-01-02",
          "observed_through": "2026-01-31",
          "monthly_timeline": {
            "2026-01": { "paid": 25000, "count": 1, "failed": 0 }
          },
          "payments": [
            { "date": "2026-01-02", "amount": 25000, "failed": false }
          ],
          "amortization_pattern": "flat",
          "linked_proceeds": {
            "date": "2025-10-15",
            "amount": 300000,
            "description": "ACME LOAN DISBURSEMENT",
            "detection_method": "keyword"
          },
          "estimated_total_installments": 12,
          "estimated_installments_remaining": 9,
          "estimated_payoff_date": "2026-10-02",
          "identity_validation": {
            "decision": "confirmed",
            "confidence": "high",
            "reason_code": "financing_counterparty"
          }
        }
      ],
      "proceeds": [
        {
          "date": "2025-10-15",
          "amount": 300000,
          "description": "ACME LOAN DISBURSEMENT",
          "linked_stream": 0,
          "detection_method": "keyword"
        }
      ],
      "llm_validation": {
        "status": "completed",
        "candidate_count": 1,
        "reviewed_count": 1,
        "confirmed_count": 1,
        "rejected_count": 0,
        "uncertain_count": 0,
        "unreviewed_count": 0
      },
      "summary": {
        "stream_count": 1,
        "active_stream_count": 1,
        "total_monthly_obligation": 25000,
        "total_paid": 75000,
        "failed_payment_count": 0,
        "failed_payment_rate": 0,
        "debt_service_ratio": 0.56,
        "median_monthly_inflow": 45000,
        "new_loans_in_period": 1,
        "total_proceeds_amount": 300000,
        "monthly_debt_service": {
          "2026-01": { "paid": 25000, "failed": 0, "inflow": 45000, "dsr": 0.5556 }
        }
      }
    }
  },
  "fraud_detection": {
    "risk_level": "low",
    "authenticity_score": 92,
    "verdict": "No material authenticity issues detected.",
    "checks_passed": 7,
    "checks_warning": 0,
    "checks_failed": 0,
    "is_standardized": true,
    "total_rows": 25,
    "tamper_count": 0,
    "manual_edit_count": 0,
    "summary_count": 0,
    "summary": { "total_signals": 0, "recommendation": "No material authenticity issues detected." },
    "category_scores": {},
    "integrity_checks": [],
    "signals": []
  },
  "suspicious_accounts": {
    "outlier_transactions": [],
    "frequent_descriptions": [],
    "circular_transfers": [],
    "outlier_count": 0,
    "frequent_count": 0,
    "circular_count": 0,
    "total_suspicious": 0
  }
}
Payslip
{
  "status": "completed",
  "document_type": "payslip",
  "document_id": 456,
  "filename": "payslip.pdf",
  "processing_time_seconds": 8.3,
  "uploaded_at": "2024-01-15T10:30:00Z",
  "parse_confidence": 0.92,

  "extracted_data": {
    "employee_name": "Juan Dela Cruz",
    "employee_id": "EMP-001",
    "tax_id": "123-456-789",
    "position": "Software Engineer",
    "department": "Engineering",
    "date_of_joining": "2022-03-01",
    "employer_name": "Acme Corp",
    "employer_address": "123 Ayala Ave, Makati City",
    "employer_tin": "987-654-321-000",
    "period_start": "01-01-2024",
    "period_end": "01-15-2024",
    "pay_date": "01-15-2024",
    "pay_frequency": "semi-monthly",
    "currency": "PHP",
    "gross_pay": 30000,
    "total_earnings": 30000,
    "total_deductions": 3950,
    "net_pay": 26050,
    "ytd_gross": 30000,
    "ytd_net": 26050
  },

  "payslip_fields": {
    "gross_pay": 30000,
    "total_earnings": 30000,
    "total_deductions": 3950,
    "net_pay": 26050,
    "ytd_gross": 30000,
    "ytd_net": 26050
  },
  "payslips_list": [],

  "employee": {
    "employee_name": "Juan Dela Cruz",
    "employee_id": "EMP-001",
    "tax_id": "123-456-789",
    "position": "Software Engineer",
    "department": "Engineering",
    "date_of_joining": "2022-03-01"
  },
  "employer": {
    "employer_name": "Acme Corp",
    "employer_address": "123 Ayala Ave, Makati City",
    "employer_tin": "987-654-321-000"
  },
  "pay_period": {
    "period_start": "01-01-2024",
    "period_end": "01-15-2024",
    "pay_date": "01-15-2024",
    "pay_frequency": "semi-monthly",
    "currency": "PHP"
  },
  "earnings": [
    { "description": "Basic Pay", "amount": 25000 },
    { "description": "Overtime", "amount": 3000 },
    { "description": "Rice Allowance", "amount": 2000 }
  ],
  "deductions": [
    { "description": "SSS", "amount": 900 },
    { "description": "PhilHealth", "amount": 450 },
    { "description": "Pag-IBIG", "amount": 100 },
    { "description": "Withholding Tax", "amount": 2500 }
  ],

  "validation_flags": [],
  "fraud_score": { "overall_score": 96, "risk_level": "low" },
  "fraud_indicators": []
}
Utility Bill
{
  "status": "completed",
  "document_type": "bill",
  "document_id": 789,
  "filename": "bill.pdf",
  "processing_time_seconds": 6.1,
  "uploaded_at": "2024-01-15T10:30:00Z",
  "parse_confidence": 0.91,

  "extracted_data": {
    "biller_name": "Meralco",
    "biller_address": "Ortigas Ave, Pasig City",
    "biller_tin": "000-123-456-000",
    "customer_name": "Juan Dela Cruz",
    "customer_address": "123 Main St, Makati",
    "account_number": "1234567890",
    "service_address": "123 Main St, Makati",
    "billing_period_start": "12-01-2023",
    "billing_period_end": "12-31-2023",
    "due_date": "01-15-2024",
    "invoice_date": "01-02-2024",
    "invoice_number": "MR-2024-000123",
    "currency": "PHP",
    "subtotal": 3200.00,
    "tax_amount": 300.00,
    "previous_balance": 0,
    "total_amount_due": 3500.00,
    "amount_paid": 0,
    "balance": 3500.00
  },

  "bill_data": {
    "biller_name": "Meralco",
    "biller_address": "Ortigas Ave, Pasig City",
    "biller_tin": "000-123-456-000",
    "customer_name": "Juan Dela Cruz",
    "customer_address": "123 Main St, Makati",
    "account_number": "1234567890",
    "service_address": "123 Main St, Makati",
    "billing_period_start": "12-01-2023",
    "billing_period_end": "12-31-2023",
    "due_date": "01-15-2024",
    "invoice_date": "01-02-2024",
    "invoice_number": "MR-2024-000123",
    "currency": "PHP"
  },
  "line_items": [
    { "description": "Generation Charge", "quantity": 250, "unit_price": 8.50, "amount": 2125.00 },
    { "description": "Distribution Charge", "quantity": 250, "unit_price": 2.20, "amount": 550.00 },
    { "description": "System Loss",         "quantity": null, "unit_price": null, "amount": 200.00 }
  ],
  "totals": {
    "subtotal": 3200.00,
    "tax_amount": 300.00,
    "previous_balance": 0,
    "total_amount_due": 3500.00,
    "amount_paid": 0,
    "balance": 3500.00
  },

  "signals": [
    { "signal_id": "address_match", "label": "Address Verification", "value": true, "status": "pass" }
  ],
  "summary": {
    "overall_score": 85,
    "total_signals": 6,
    "passed": 5,
    "warnings": 1,
    "failed": 0,
    "risk_level": "low"
  },
  "warnings": [],

  "validation_flags": [],
  "fraud_score": { "overall_score": 88, "risk_level": "low" },
  "fraud_indicators": []
}
Credit Report
{
  "status": "completed",
  "document_type": "credit_report",
  "document_id": 321,
  "filename": "credit_report.pdf",
  "processing_time_seconds": 18.7,
  "uploaded_at": "2024-01-15T10:30:00Z",
  "parse_confidence": 0.94,

  "extracted_data": {
    "subject_name": "Dela Cruz, Juan",
    "source_bureau": "CIBI",
    "bureau_score": 650,
    "score_category": "Fair",
    "request_date": "2024-01-15",
    "report_date": "2024-01-15",
    "date_of_birth": "1990-05-15",
    "gender": "Male",
    "nationality": "Filipino",
    "address": "123 Main St, Makati"
  },

  "metadata": {
    "subject_name": "Dela Cruz, Juan",
    "source_bureau": "CIBI",
    "bureau_score": 650,
    "score_category": "Fair",
    "request_date": "2024-01-15",
    "report_date": "2024-01-15",
    "date_of_birth": "1990-05-15",
    "gender": "Male",
    "nationality": "Filipino",
    "address": "123 Main St, Makati"
  },

  "credit_report_data": {
    "report_metadata": {
      "source_bureau": "CIBI",
      "bureau_score_value": 650,
      "bureau_score_band": "Fair",
      "report_type": "Individual",
      "request_date": "2024-01-15",
      "page_count": 8
    },
    "accounts": [
      {
        "account_index": 1,
        "section_header": "Active Accounts",
        "provider": "BDO",
        "account_type": "Housing Loan",
        "contract_phase": "Active",
        "contract_status": "Current",
        "outstanding_balance": 1800000,
        "monthly_payment": 15000,
        "credit_limit": 2000000,
        "last_payment_status": "OK",
        "last_payment_date": "2024-01-05",
        "worst_status": "OK",
        "payment_history": [
          { "reference_date": "2024-01", "payment_status": "CURR", "outstanding_balance": 1800000, "overdue_amount": 0 },
          { "reference_date": "2023-12", "payment_status": "CURR", "outstanding_balance": 1815000, "overdue_amount": 0 }
        ]
      }
    ],
    "summary_tables": {
      "active_accounts_summary": [
        { "product_type": "Housing Loan", "count": 1, "total_outstanding": 1800000, "total_overdue": 0, "total_credit_limit": 2000000 }
      ],
      "summary_24m": [
        { "product_type": "Housing Loan", "count": 1, "total_past_due_amount": 0 }
      ],
      "summary_60m": [ "..." ],
      "overall_summary": [
        { "account_status": "Current", "count": 1, "percentage": 100 }
      ]
    },
    "kyc_data": {
      "addresses":          [ "..." ],
      "contacts":           [ "..." ],
      "identity_documents": [ "..." ],
      "relatives":          [ "..." ],
      "sole_traders":       [ "..." ],
      "employment":         [ "..." ]
    },
    "reason_codes": [
      { "code": "F1", "description": "Length of credit history" }
    ]
  },

  "fraud_indicators": [],
  "fraud_score": { "overall_score": 91, "risk_level": "low" }
}
Sales Invoice
{
  "status": "completed",
  "document_type": "sales_invoice",
  "document_id": 987,
  "filename": "invoice.pdf",
  "processing_time_seconds": 9.4,
  "uploaded_at": "2024-01-15T10:30:00Z",
  "parse_confidence": 0.93,

  "extracted_data": {
    "seller_name": "ABC Trading Corp",
    "seller_address": "789 Roxas Blvd, Manila",
    "seller_tin": "123-456-789-000",
    "seller_email": "billing@abctrading.ph",
    "seller_phone": "+63 2 1234 5678",
    "buyer_name": "XYZ Industries",
    "buyer_address": "456 EDSA, Quezon City",
    "buyer_tin": "987-654-321-000",
    "buyer_business_style": "Manufacturer",
    "invoice_number": "INV-2024-001",
    "invoice_date": "2024-01-15",
    "due_date": "2024-02-14",
    "po_number": "PO-XYZ-9912",
    "terms": "Net 30",
    "currency": "PHP",
    "subtotal": 50000,
    "vatable_sales": 50000,
    "vat_exempt": 0,
    "zero_rated": 0,
    "vat_amount": 6000,
    "discount": 0,
    "withholding_tax": 500,
    "total_amount_due": 55500
  },

  "invoice_data": {
    "invoice_number": "INV-2024-001",
    "invoice_date": "2024-01-15",
    "due_date": "2024-02-14",
    "po_number": "PO-XYZ-9912",
    "terms": "Net 30",
    "currency": "PHP"
  },
  "line_items": [
    { "description": "Product A", "quantity": 100, "unit_price": 500, "amount": 50000 }
  ],
  "totals": {
    "subtotal": 50000,
    "vatable_sales": 50000,
    "vat_exempt": 0,
    "zero_rated": 0,
    "vat_amount": 6000,
    "discount": 0,
    "withholding_tax": 500,
    "total_amount_due": 55500
  },

  "validation_flags": [],
  "fraud_score": { "overall_score": 88, "risk_level": "low" },
  "fraud_indicators": []
}
Audited Financial Statement
{
  "status": "completed",
  "document_type": "audited_financial_statement",
  "document_id": 555,
  "filename": "audited_financial_statement_2023.pdf",
  "processing_time_seconds": 45.2,
  "uploaded_at": "2024-03-20T14:00:00Z",
  "parse_confidence": 0.88,

  "extracted_data": {
    "company": {
      "company_name": "ABC Industries Inc.",
      "tin": "123-456-789-000",
      "sec_registration": "SEC-2020-001",
      "industry": "Manufacturing",
      "address": "123 Business Ave, Makati City",
      "entity_type": "Corporation"
    },
    "audit_info": {
      "auditor_name": "J. Santos",
      "auditor_firm": "Santos & Associates CPAs",
      "audit_opinion": "Unqualified",
      "going_concern": false,
      "report_date": "2024-03-15"
    },
    "officers": {
      "chairman": "Juan Dela Cruz",
      "ceo": "Juan Dela Cruz",
      "president": "Juan Dela Cruz",
      "cfo": "Maria Santos",
      "treasurer": "Maria Santos",
      "corporate_secretary": "Ana Reyes"
    },
    "balance_sheet": {
      "years": {
        "2025": {
          "year_label": "2025",
          "cash_and_equivalents": 5000000,
          "trade_receivables": 3000000,
          "other_receivables": null,
          "allowance_for_doubtful_accounts": null,
          "net_receivables": null,
          "inventory": 2000000,
          "prepayments": null,
          "other_current_assets": null,
          "total_current_assets": 10000000,
          "ppe_gross": null,
          "accumulated_depreciation": null,
          "ppe_net": 8000000,
          "investment_property": null,
          "intangible_assets": null,
          "right_of_use_assets": null,
          "deferred_tax_assets": null,
          "other_non_current_assets": null,
          "total_non_current_assets": 12000000,
          "total_assets": 22000000,
          "trade_payables": 2000000,
          "short_term_loans": null,
          "current_portion_long_term_debt": null,
          "accrued_expenses": null,
          "income_tax_payable": null,
          "other_current_liabilities": null,
          "total_current_liabilities": 5000000,
          "long_term_debt": 3000000,
          "lease_liabilities": null,
          "deferred_tax_liabilities": null,
          "retirement_benefit_obligation": null,
          "other_non_current_liabilities": null,
          "total_non_current_liabilities": 5000000,
          "total_liabilities": 10000000,
          "paid_up_capital": 5000000,
          "additional_paid_in_capital": null,
          "retained_earnings": 7000000,
          "revaluation_surplus": null,
          "other_equity_components": null,
          "total_equity": 12000000,
          "total_liabilities_and_equity": 22000000
        },
        "2024": { "year_label": "2024", "...same fields...": "..." }
      }
    },
    "income_statement": {
      "years": {
        "2025": {
          "year_label": "2025",
          "revenue": 50000000,
          "cost_of_sales": 30000000,
          "gross_profit": 20000000,
          "salaries_and_wages": null,
          "depreciation_and_amortization": null,
          "rent_expense": null,
          "utilities": null,
          "professional_fees": null,
          "other_operating_expenses": null,
          "total_operating_expenses": 12000000,
          "operating_income": 8000000,
          "interest_income": null,
          "interest_expense": 500000,
          "other_income": null,
          "other_charges": null,
          "income_before_tax": 7500000,
          "income_tax_expense": 1875000,
          "net_income": 5625000
        },
        "2024": { "year_label": "2024", "...same fields...": "..." }
      }
    },
    "cash_flow": {
      "years": {
        "2025": {
          "year_label": "2025",
          "depreciation_amortization": null,
          "changes_in_working_capital": null,
          "cash_from_operations": 8000000,
          "capex": -2000000,
          "proceeds_from_asset_sales": null,
          "cash_from_investing": -2000000,
          "loan_proceeds": null,
          "loan_repayments": null,
          "dividends_paid": null,
          "cash_from_financing": -1000000,
          "net_change_in_cash": 5000000,
          "beginning_cash": 3000000,
          "ending_cash": 8000000
        },
        "2024": { "year_label": "2024", "...same fields...": "..." }
      }
    },
    "notes": {
      "borrowings": [ { "lender": "BDO", "amount": 10000000, "terms": "5-year term" } ],
      "related_party_transactions": [
        { "party": "XYZ Holdings", "nature": "Advances", "amount": 2000000 }
      ],
      "receivables_aging": [ "..." ],
      "contingent_liabilities": []
    },
    "qualitative": {
      "business_description": {
        "nature_of_business": "Manufacturing of industrial components",
        "year_established": "2005",
        "principal_office": "123 Business Ave, Makati City"
      },
      "shareholders": [
        { "name": "Juan Dela Cruz", "shares": 500000, "percentage": 50.0 },
        { "name": "Maria Santos", "shares": 300000, "percentage": 30.0 }
      ],
      "equity_structure": {
        "authorized_capital": 10000000,
        "subscribed_capital": 8000000,
        "paid_up_capital": 8000000
      },
      "income_tax_details": { "tax_rate": 25, "income_tax_expense": 2500000 },
      "risk_management": {
        "credit_risk": "The company maintains diversified receivables...",
        "liquidity_risk": "Sufficient cash reserves maintained...",
        "market_risk": "Minimal foreign currency exposure..."
      },
      "capital_management": { "policy": "Maintain D/E below 2.0", "compliance": true },
      "subsequent_events": [ "..." ],
      "accounting_policies": { "..." : "..." }
    }
  },

  "metrics": {
    "liquidity": {
      "current_ratio": 1.5,
      "quick_ratio": 1.2,
      "cash_ratio": 0.8,
      "working_capital": 5000000,
      "working_capital_to_assets": 0.1
    },
    "leverage": {
      "debt_to_equity": 1.5,
      "debt_to_assets": 0.6,
      "interest_coverage": 5.0,
      "debt_service_coverage": 2.1,
      "net_debt": 22000000,
      "total_debt": 30000000
    },
    "profitability": {
      "gross_margin_pct": 31.25,
      "operating_margin_pct": 12.5,
      "net_margin_pct": 10.0,
      "ebitda": 14000000,
      "ebitda_margin_pct": 17.5,
      "roa_pct": 16.0,
      "roe_pct": 40.0
    },
    "efficiency": {
      "receivables_days": 22.8,
      "inventory_days": 45.0,
      "payables_days": 30.0,
      "cash_conversion_cycle": 37.8
    },
    "cash_flow_quality": {
      "ocf_to_net_income": 1.5,
      "free_cash_flow": 7000000,
      "capex_to_revenue_pct": 6.25,
      "fcf_to_debt": 0.23
    },
    "growth": {
      "revenue_growth_pct": 12.0,
      "net_income_growth_pct": 15.0,
      "asset_growth_pct": 11.1,
      "equity_growth_pct": 17.6
    },
    "risk_signals": [
      { "code": "high_related_party", "severity": "warning", "message": "Related party transactions exceed 10% of revenue" }
    ]
  },

  "enhanced_signals": {
    "financial_by_year": {
      "2023": {
        "revenue": 80000000,
        "cost_of_sales": 55000000,
        "gross_profit": 25000000,
        "net_income": 8000000,
        "total_assets": 50000000,
        "total_equity": 20000000,
        "paid_up_capital": 8000000,
        "retained_earnings": 12000000
      },
      "2022": { "..." : "..." }
    },
    "statement_tables": { "..." : "..." },
    "header_info": { "..." : "..." }
  },

  "data_validation": { "..." : "..." },

  "signals": {
    "profitability": { "gross_margin": 31.25, "net_margin": 10.0, "roe": 40.0 },
    "liquidity": { "current_ratio": 1.5, "quick_ratio": 1.2 },
    "leverage": { "debt_to_equity": 1.5, "debt_ratio": 60.0 }
  },

  "risk_flags": [
    { "code": "high_related_party", "severity": "warning", "message": "Related party transactions exceed 10% of revenue" }
  ],

  "completeness": {
    "overall_score": 87,
    "sections": {
      "company_info": { "score": 100, "weight": 10 },
      "balance_sheet": { "score": 95, "weight": 25 },
      "income_statement": { "score": 90, "weight": 20 },
      "cash_flow": { "score": 80, "weight": 10 },
      "notes": { "score": 75, "weight": 10 },
      "prior_year_data": { "score": 85, "weight": 10 },
      "qualitative": { "score": 90, "weight": 10 },
      "audit_info": { "score": 100, "weight": 5 }
    }
  },

  "fraud_detection": {
    "authenticity_score": 88,
    "risk_level": "low",
    "signals": [],
    "summary": { "..." : "..." }
  },

  "multi_year_trends": {
    "revenue": { "cagr_pct": 10.5, "direction": "up", "yoy_pairs": [ { "from": 2022, "to": 2023, "growth_pct": 12.0 } ] },
    "net_income": { "cagr_pct": 13.2, "direction": "up", "yoy_pairs": [ "..." ] },
    "total_assets": { "cagr_pct": 9.8, "direction": "up", "yoy_pairs": [ "..." ] }
  },

  "financial_tables": [
    {
      "page": 5,
      "table_type": "balance_sheet",
      "columns": ["Item", "2023", "2022"],
      "rows": [ "..." ]
    }
  ]
}
General Information Sheet (GIS)
{
  "status": "completed",
  "document_type": "general_information_sheet",
  "document_id": 800,
  "filename": "gis_2023.pdf",
  "processing_time_seconds": 22.1,
  "uploaded_at": "2024-04-10T09:00:00Z",
  "parse_confidence": 0.91,

  "metadata": {
    "company_name": "ABC Industries Inc.",
    "sec_registration": "SEC-2020-001"
  },

  "extracted_data": {
    "company": {
      "name": "ABC Industries Inc.",
      "sec_registration_number": "SEC-2020-001",
      "tin": "123-456-789-000",
      "principal_address": "123 Business Ave, Makati City",
      "industry": "Manufacturing"
    },
    "filing_info": {
      "fiscal_year_end": "December 31",
      "annual_meeting_date": "2024-06-15",
      "date_of_submission": "2024-04-10"
    },
    "capital_structure": {
      "authorized_capital": 10000000,
      "subscribed_capital": 8000000,
      "paid_up_capital": 8000000,
      "share_classes": [
        { "class": "Common", "par_value": 10, "authorized_shares": 1000000 }
      ]
    },
    "stockholders": [
      {
        "name": "Juan Dela Cruz",
        "nationality": "Filipino",
        "shares": 500000,
        "percentage": 50.0,
        "amount_paid": 5000000
      },
      {
        "name": "Maria Santos",
        "nationality": "Filipino",
        "shares": 300000,
        "percentage": 30.0,
        "amount_paid": 3000000
      }
    ],
    "directors": [
      {
        "name": "Juan Dela Cruz",
        "board_type": "regular",
        "is_independent": false,
        "attendance_pct": 100
      }
    ],
    "officers": [
      { "name": "Juan Dela Cruz", "position": "President/CEO", "tin": "123-456-789" },
      { "name": "Maria Santos", "position": "Treasurer/CFO", "tin": "987-654-321" }
    ],
    "beneficial_owners": [
      { "name": "Juan Dela Cruz", "percentage_of_capital": 50.0, "category": "direct" }
    ],
    "intercompany_relationships": [
      { "company_name": "XYZ Holdings", "relationship": "parent", "sec_registration": "SEC-2018-005" }
    ],
    "external_auditor": {
      "firm_name": "Santos & Associates CPAs",
      "accreditation_number": "CPA-2020-001",
      "contact": "audit@santos-cpa.com"
    },
    "compliance_info": {
      "compliance_officer": "Ana Reyes",
      "report_submissions": { "annual_report": true, "quarterly_reports": true },
      "pending_cases": []
    },
    "risk_signals": [
      { "signal": "high_foreign_ownership", "severity": "info", "message": "Foreign ownership at 20% (within limits)" },
      { "signal": "single_majority_stockholder", "severity": "warning", "message": "One stockholder holds >50% of shares" }
    ],
    "summary": {
      "total_stockholders": 4,
      "total_directors": 5,
      "total_officers": 3,
      "foreign_ownership_pct": 20.0,
      "filipino_ownership_pct": 80.0
    }
  },

  "completeness": {
    "overall_score": 92,
    "sections": {
      "company_info": { "score": 100, "weight": 15 },
      "capital_structure": { "score": 95, "weight": 15 },
      "stockholders": { "score": 100, "weight": 15 },
      "directors": { "score": 90, "weight": 10 },
      "officers": { "score": 95, "weight": 10 },
      "beneficial_owners": { "score": 85, "weight": 10 },
      "intercompany": { "score": 80, "weight": 5 },
      "auditor": { "score": 100, "weight": 5 },
      "compliance": { "score": 90, "weight": 10 },
      "filing_info": { "score": 100, "weight": 5 }
    }
  }
}
Other / General Document
{
  "status": "completed",
  "document_type": "other_document",
  "document_id": 700,
  "filename": "unknown.pdf",
  "processing_time_seconds": 7.2,
  "uploaded_at": "2024-01-15T10:30:00Z",
  "parse_confidence": 0.75,

  "metadata": { "..." : "..." },

  "extracted_data": {
    "..." : "AI-extracted fields (varies by content)",
    "general_signals": { "..." : "..." }
  },

  "fraud_detection": { "..." : "..." }
}
Schema-based (BIR, COE, Government ID, etc.)
{
  "status": "completed",
  "document_type": "bir_2303",
  "document_id": 654,
  "filename": "bir.pdf",
  "processing_time_seconds": 5.1,
  "uploaded_at": "2024-01-15T10:30:00Z",
  "parse_confidence": 0.90,

  "metadata": { "..." : "..." },

  "extracted_data": {
    "tin": "123-456-789-000",
    "registered_name": "ABC Corp",
    "registration_date": "2020-01-15",
    "business_address": "...",
    "lines_of_business": ["Retail Trade"],
    "tax_types": ["Income Tax", "VAT"]
  }
}

On this page