Response schemas
The bank statement response contract, field by field.
When a bank statement finishes processing, the result includes these key fields:
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 countsintegrity_checks[].description— human-readable explanation of each check resultsignals[].signal_id— stable machine-readable identifier (e.g.suspicious_producer_library)signals[].message— human-readable explanation of the findingsignals[].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 fundsis_reversed(boolean) — chargebacks, returned payments, rejected transfers
Aggregate counts:
total_bounced_transactions— top-level field in resulttotal_reversed_transactions— top-level field in result- Also available in
metrics.total_bounced_transactionsandmetrics.total_reversed_transactions
In signals (cashflow analysis):
Detection methods:
- Keyword matching — scans descriptions for:
bounced,nsf,insufficient,dishonor,reversal,reversed,chargeback,rejected,returned - 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:
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
extracted_data. Optional fields are omitted when unavailable. Internal parser artifacts and validation-provider identifiers are never returned.Envelope and metadata fields
response envelope
| Field | Type | Description |
|---|---|---|
status | string | Terminal or current result status, such as completed, failed, or processing. |
processing_status | string | Processing lifecycle status. Falls back to status when no separate value is stored. |
document_type | string | Always bank_statement for this schema. |
document_id | number | Unique numeric document identifier. |
filename | string | Uploaded filename. |
processing_time_seconds | number | End-to-end processing duration. |
uploaded_at | string | ISO 8601 upload timestamp. |
processing_started_at | string | ISO 8601 processing start timestamp when available. |
parse_confidence | number | null | Overall parse confidence from 0 to 1. |
parse_confidence_detail | object | Detailed confidence object when the parser produced per-section confidence. |
metadata | object | Account, institution, statement period, currency, and balance metadata. |
extracted_data | object | Contains transactions, metrics, daily_balances, and loan_activity. |
fraud_detection | object | Document-integrity result. Omitted when there is no fraud data. |
suspicious_accounts | object | null | Statistical transaction patterns and counts. |
custom_reports | object | Organization-configured report output when configured and populated. |
metadata
| Field | Type | Description |
|---|---|---|
account_holder_name | string | Extracted account holder. |
account_name | string | Normalized alias of account_holder_name. |
account_number | string | Account number exactly as extracted. |
financial_institution | string | Extracted bank or financial institution. |
bank_name | string | Normalized alias of financial_institution. |
statement_start_date | string | Start of the statement period. |
statement_end_date | string | End of the statement period. |
country | string | Country or ISO country code when identified. |
currency | string | Statement currency when identified. |
opening_balance | number | Opening statement balance. |
closing_balance | number | Closing statement balance. |
Transaction fields
extracted_data.transactions[]
| Field | Type | Description |
|---|---|---|
date | string | Transaction date, usually an ISO date or timestamp. |
time | string | Transaction time when present on the statement. |
posting_date | string | Posting date when the bank provides it separately. |
description | string | Transaction narrative or bank operation description. |
reference | string | Bank-supplied transaction reference when available. |
debit | number | Debit amount. Zero is used when the row is a credit. |
credit | number | Credit amount. Zero is used when the row is a debit. |
balance | number | Running balance after the transaction. |
transaction_type | string | Derived direction: debit, credit, or unknown. |
category | string | Normalized transaction category. |
category_confidence | string | Category confidence when available. |
tampered | boolean | True when row-level balance or integrity checks identify a likely alteration. |
is_bounced | boolean | True when the transaction is identified as bounced or returned. |
is_reversed | boolean | True when the transaction is identified as reversed. |
is_outlier | boolean | True when the row matches a statistical outlier. |
outlier_reason | string | null | Human-readable outlier magnitude and baseline. |
validation_flag | string | Normalized row validation state when a discrepancy exists. |
validation_reason | string | Public explanation for a row validation issue. |
[bank-specific fields] | string | number | Additional statement columns are preserved, such as branch/channel, sequence number, or subscriber/TIN number. |
Cash-flow and balance metric fields
extracted_data.metrics
| Field | Type | Description |
|---|---|---|
date_order | string | Detected source order: ascending, descending, or unknown. |
cashflow_source | string | null | Method used to derive validated inflow and outflow totals. |
cashflow_reconciliation | object | null | Balance-derived versus row-derived reconciliation details when needed. |
total_inflow | number | Total validated credits in the statement period. |
total_outflow | number | Total validated debits in the statement period. |
net_cash_flow | number | total_inflow minus total_outflow. |
ending_balance | number | Ending running balance. |
average_balance | number | Average extracted transaction balance. |
avg_transaction | number | Average absolute transaction amount. |
maximum_balance | number | Maximum running balance. |
minimum_balance | number | Minimum running balance. |
period_start_date | string | null | Validated statement period start. |
period_end_date | string | null | Validated statement period end. |
cash_buffer_days | number | Estimated days the ending balance can cover average daily outflow. |
total_transactions | number | Number of transaction rows used in metrics. |
opening_balance | number | Opening balance used for reconciliation. |
closing_balance | number | Closing balance used for reconciliation. |
distinct_months | number | Number of represented calendar months. |
total_debits | number | Alias of total_outflow. |
total_annualized_debits | number | Statement-period debit run rate annualized to 12 months. |
average_debits_per_month | number | Period-adjusted monthly debit average. |
total_credits | number | Alias of total_inflow. |
total_annualized_credits | number | Statement-period credit run rate annualized to 12 months. |
average_credits_per_month | number | Period-adjusted monthly credit average. |
average_eod_balance | number | Average across the canonical carried-forward daily balance series. |
signal_money_velocity | number | null | Money-velocity signal derived from transaction activity. |
signal_inflow_concentration_pct | number | null | Largest inflow concentration percentage. |
signal_outflow_concentration_pct | number | null | Largest outflow concentration percentage. |
by_month | object | Statement-period EOD and transaction aggregates. Field name retained for compatibility. |
by_category | object | Dynamic map keyed by normalized transaction category. |
extended_metrics | object | Behavioral, EOD, reversal, and activity signals. |
overall_health_score | object | Weighted health score and contributing signals. |
nested metric objects
| Field | Type | Description |
|---|---|---|
by_month.sum_eod_balances | number | Sum of all daily balances in the canonical period series. |
by_month.average_eod_balance | number | Average canonical daily balance. |
by_month.ending_eod_balance | number | Balance on the final calendar day. |
by_month.highest_eod_balance | number | Highest calendar-day balance. |
by_month.lowest_eod_balance | number | Lowest calendar-day balance. |
by_month.number_of_transactions | number | Total transaction count. |
by_month.sum_of_credits | number | Total credit amount. |
by_month.number_of_credits | number | Credit transaction count. |
by_month.sum_of_debits | number | Total debit amount. |
by_month.number_of_debits | number | Debit transaction count. |
by_month.returned_transaction_items_count | number | Returned-item count. |
by_month.bounced_transactions_count | number | Bounced transaction count. |
by_month.distinct_days_with_credit | number | Distinct posting days containing a credit. |
by_month.distinct_days_with_debit | number | Distinct posting days containing a debit. |
by_category.<category>.count | number | Transactions assigned to the category. |
by_category.<category>.debit_sum | number | Category debit total. |
by_category.<category>.credit_sum | number | Category credit total. |
by_category.<category>.net_amount | number | credit_sum minus debit_sum. |
by_category.<category>.percentage | number | Share of all transaction rows, expressed as a percentage. |
overall_health_score.score | number | Composite score from 0 to 100. |
overall_health_score.details.weights_used | object | Signal weights used in the score. |
overall_health_score.details.weight_coverage | number | Percentage of expected scoring weight represented. |
overall_health_score.details.contributing_signals | array | Rows with key, score, weight, and contribution. |
extended_metrics
| Field | Type | Description |
|---|---|---|
monthly_inflow | number | Period-adjusted average monthly inflow. |
inflow_frequency | number | Period-adjusted credit frequency. |
flow_stability | number | Inflow stability signal. |
flow_through_intensity | number | Speed at which incoming funds leave the account. |
balance_floor_behavior | number | Behavioral balance-floor signal. |
reversed_transaction_count | number | Detected reversed transaction count. |
bounced_transaction_count | number | Detected bounced transaction count. |
reversed_transactions_detail | array | Reversed rows when detailed evidence is available. |
bounced_transactions_detail | array | Bounced rows when detailed evidence is available. |
gambling_transaction_count | number | Detected gambling transaction count. |
transactions_per_week | number | Period-adjusted transaction frequency. |
loan_repayment_burden | number | Detected repayment burden signal. |
daily_average_balance | number | Average canonical calendar-day balance. |
daily_min_balance | number | Minimum canonical calendar-day balance. |
daily_max_balance | number | Maximum canonical calendar-day balance. |
daily_balance_volatility | number | Standard deviation of calendar-day balances. |
balance_trend | string | Improving, declining, or stable balance trend. |
days_below_opening | number | Calendar days with balance below the opening level. |
days_with_transactions | number | Calendar days containing one or more transactions. |
days_without_transactions | number | Calendar days using a carried-forward balance. |
longest_low_balance_streak | number | Longest consecutive run below the daily average. |
balance_recovery_avg_days | number | null | Average days required to recover from a low-balance period. |
Daily balance fields
extracted_data.daily_balances[]
| Field | Type | Description |
|---|---|---|
date | string | Calendar date in YYYY-MM-DD format. |
balance | number | End-of-day balance, carrying the prior balance across days without transactions. |
carried_forward | boolean | True when the day had no transaction and uses the previous known balance. |
transaction_count | number | Number of transactions assigned to the day. |
Loan activity summary fields
extracted_data.loan_activity.summary
| Field | Type | Description |
|---|---|---|
stream_count | number | Total detected recurring repayment streams. |
active_stream_count | number | Streams active as of the statement observation date. |
total_monthly_obligation | number | Sum of monthly-equivalent obligations for active streams. |
total_paid | number | Total successful repayments observed across all streams. |
failed_payment_count | number | Total failed repayment attempts. |
failed_payment_rate | number | Failed attempts divided by all observed attempts, from 0 to 1. |
debt_service_ratio | number | null | Active monthly obligation divided by median monthly inflow. |
median_monthly_inflow | number | null | Median monthly inflow after excluding detected loan proceeds. |
new_loans_in_period | number | Detected disbursements in the statement period. |
total_proceeds_amount | number | Sum of detected loan disbursements. |
monthly_debt_service | object | Dynamic YYYY-MM map with paid, failed, inflow, and dsr. |
Loan repayment stream fields
extracted_data.loan_activity.streams[]
| Field | Type | Description |
|---|---|---|
stream | string | Normalized repayment-stream label. |
lender | string | null | Identified lender when supported by the statement evidence. |
typical_amount | number | Typical successful repayment amount. |
cadence | string | weekly, fortnightly, monthly, or irregular. |
cadence_days | number | null | Observed median interval in days. |
paid_count | number | Successful repayments in the stream. |
failed_count | number | Failed repayment attempts in the stream. |
total_paid | number | Successful amount paid across the stream. |
monthly_equivalent | number | Cadence-normalized monthly obligation. |
status | string | active or inactive as of observed_through. |
confidence | string | Deterministic stream-detection confidence: high, medium, or low. |
first_payment_date | string | First observed repayment date. |
last_payment_date | string | Most recent observed repayment date. |
observed_through | string | Last date used to determine active or inactive status. |
monthly_timeline | object | Dynamic YYYY-MM map of paid amount, successful count, and failed count. |
payments | array | All stream events with date, amount, and failed. |
amortization_pattern | string | flat, declining, or increasing observed amount pattern. |
linked_proceeds | object | null | Linked disbursement with date, amount, description, and detection_method. |
estimated_total_installments | number | null | Estimated original installment count when inferable. |
estimated_installments_remaining | number | null | Estimated remaining installments when inferable. |
estimated_payoff_date | string | null | Estimated payoff date when inferable. |
identity_validation | object | Optional retained-stream decision with decision, confidence, and reason_code. |
Loan payment, proceeds, and validation fields
loan_activity nested fields
| Field | Type | Description |
|---|---|---|
monthly_timeline.<YYYY-MM>.paid | number | Successful repayment amount in the month. |
monthly_timeline.<YYYY-MM>.count | number | Successful repayment count in the month. |
monthly_timeline.<YYYY-MM>.failed | number | Failed attempt count in the month. |
payments[].date | string | Repayment event date. |
payments[].amount | number | Repayment event amount. |
payments[].failed | boolean | Whether the event is a failed attempt. |
identity_validation.decision | string | confirmed, rejected, or uncertain. Rejected candidates are not retained as streams. |
identity_validation.confidence | string | Confidence in the identity decision. |
identity_validation.reason_code | string | Typed evidence reason; no free-form provider response is exposed. |
proceeds[].date | string | Detected disbursement date. |
proceeds[].amount | number | Detected disbursement amount. |
proceeds[].description | string | Source transaction description. |
proceeds[].linked_stream | number | null | Zero-based index into streams when linked. |
proceeds[].detection_method | string | keyword, stream_reference, or balance_shape. |
llm_validation.status | string | completed, disabled, unavailable, or not_applicable. |
llm_validation.candidate_count | number | Total deterministic candidates. |
llm_validation.reviewed_count | number | Candidates reviewed by identity validation. |
llm_validation.confirmed_count | number | Candidates confirmed as repayments. |
llm_validation.rejected_count | number | High-confidence non-loan candidates removed. |
llm_validation.uncertain_count | number | Ambiguous candidates retained conservatively. |
llm_validation.unreviewed_count | number | Candidates retained without review. |
monthly_debt_service.<YYYY-MM>.paid | number | Successful debt service in the month. |
monthly_debt_service.<YYYY-MM>.failed | number | Failed repayment count in the month. |
monthly_debt_service.<YYYY-MM>.inflow | number | Monthly inflow excluding detected loan proceeds. |
monthly_debt_service.<YYYY-MM>.dsr | number | null | Monthly paid debt service divided by inflow. |
Fraud detection fields
fraud_detection
| Field | Type | Description |
|---|---|---|
risk_level | string | Overall low, medium, high, or critical risk classification. |
authenticity_score | number | Document authenticity score. |
verdict | string | Human-readable review recommendation. |
checks_passed | number | Integrity checks with pass status. |
checks_warning | number | Integrity checks with warning status. |
checks_failed | number | Integrity checks with fail status. |
is_standardized | boolean | Whether the statement matches a standardized recognized layout. |
total_rows | number | Transaction rows evaluated. |
tamper_count | number | Rows flagged as tampered. |
manual_edit_count | number | Detected manual-edit signals. |
summary_count | number | Summary rows identified and excluded from transactions. |
summary | object | Severity counts, total_signals, and recommendation. |
category_scores | object | Dynamic risk-category score map. |
integrity_checks | array | Checks with key, label, status, and description. |
signals | array | Signals with severity, category, signal_id, message, recommendation, page, confidence, and details. |
Suspicious account fields
suspicious_accounts
| Field | Type | Description |
|---|---|---|
outlier_transactions | array | Statistically large transactions. |
outlier_transactions[].description | string | Transaction narrative. |
outlier_transactions[].amount | number | Absolute transaction amount. |
outlier_transactions[].type | string | debit or credit. |
outlier_transactions[].date | string | Transaction date. |
outlier_transactions[].category | string | Normalized category. |
outlier_transactions[].avg_amount | number | Statement-wide average amount used as baseline. |
outlier_transactions[].multiplier | number | Amount divided by the baseline average. |
outlier_transactions[].flag | string | outlier. |
frequent_descriptions | array | Descriptions occurring unusually often. |
frequent_descriptions[] | object | description, normalized, count, total_debit, total_credit, avg_amount, and flag. |
circular_transfers | array | Potential circular patterns. |
circular_transfers[] | object | id, type, count, total_debit, total_credit, description, and flag. |
outlier_count | number | Number of outlier transactions. |
frequent_count | number | Number of frequent-description patterns. |
circular_count | number | Number of circular-transfer patterns. |
total_suspicious | number | Sum 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"]
}
}
