Skip to content
Constaia
us_bank_statement

US bank statement

Holder, period, routing number and balances reconciled.

Category
Payments and finance
Country
United States
Extracted fields
14 fields
Cost
2 credits
us_bank_statementspecimen
Bank name
Account holder
Address
Postal code
Account number
ABA routing number
Account type
Period start
Period end

For rental applications, proof of funds or onboarding. Constaia extracts the holder, statement period, routing number and totals, validates the ABA routing checksum and checks that opening balance plus deposits minus withdrawals equals the closing balance.

  • Pages count: every 2 extra pages add 1 credit.
  • Constaia does not connect to the bank. If you need confirmed balances, use an account data provider.

What it checks

  • National identifiers. Official checksum or format of the number (NIF, CPF, CURP, RUT, SSN…).us_aba, us_zip
  • Postal code. Postal code format of the country.
  • Holder. Name, number or date of birth match what you expect.
  • Recency. Issued less than N days ago.

Extracted fields

  • Bank namebank_name
  • Account holderaccount_holder
  • Addressaddress
  • Postal codepostal_code
  • Account numberaccount_number
  • ABA routing numberrouting_number
  • Account typeaccount_type
  • Period startperiod_start
  • Period endperiod_end
  • Opening balanceopening_balance
  • Closing balanceclosing_balance
  • Total depositstotal_deposits
  • Total withdrawalstotal_withdrawals
  • Transactionstransactions

Sample request

curl https://api.constaia.com/v1/analyze \
  -H "Authorization: Bearer $CONSTAIA_API_KEY" \
  -F "file=@us_bank_statement_specimen.pdf" \
  -F 'options={
    "expect": "us_bank_statement",
    "checks": {
      "max_age_days": 60,
      "holder": {
        "full_name": "Jordan Specimen"
      }
    },
    "storage": "none"
  }'

Try it for free with a ck_test_ key and the file us_bank_statement_specimen.pdf.

Sample response

Fictitious data. Shortened response.

200 OK · application/json
{
  "id": "an_01J9Z3K8QW4T6Y2B7N5M1R0PXC",
  "object": "analysis",
  "status": "completed",
  "livemode": false,
  "document": {
    "type": "us_bank_statement",
    "label": "US bank statement",
    "confidence": 0.97
  },
  "verdict": {
    "expected": [
      "us_bank_statement"
    ],
    "match": true,
    "status": "valid",
    "reasons": [
      {
        "code": "type_match",
        "severity": "info",
        "message": "The document is: US bank statement."
      }
    ]
  },
  "fields": {
    "bank": {
      "value": "EXAMPLE NATIONAL BANK",
      "confidence": 0.99,
      "validated": true
    },
    "account_holder": {
      "value": "JORDAN SPECIMEN",
      "confidence": 0.98,
      "validated": null
    },
    "account_number_last4": {
      "value": "4821",
      "confidence": 0.97,
      "validated": null
    },
    "routing_number": {
      "value": "123456780",
      "confidence": 0.96,
      "validated": null
    },
    "statement_period_start": {
      "value": "2026-08-01",
      "confidence": 0.99,
      "validated": null
    },
    "statement_period_end": {
      "value": "2026-08-31",
      "confidence": 0.98,
      "validated": null
    },
    "opening_balance": {
      "value": 3210.44,
      "confidence": 0.97,
      "validated": null
    },
    "total_deposits": {
      "value": 4852.1,
      "confidence": 0.96,
      "validated": null
    },
    "total_withdrawals": {
      "value": 4101.72,
      "confidence": 0.99,
      "validated": null
    },
    "closing_balance": {
      "value": 3960.82,
      "confidence": 0.98,
      "validated": null
    }
  },
  "checks": [
    {
      "code": "aba_routing_checksum",
      "passed": true,
      "message": "The ABA routing number is correct."
    },
    {
      "code": "totals_balance",
      "passed": true,
      "message": "Base, VAT and total add up."
    },
    {
      "code": "max_age_days",
      "passed": true,
      "message": "The issue date is within the limit."
    },
    {
      "code": "holder_match",
      "passed": true,
      "message": "The holder matches."
    }
  ],
  "warnings": [],
  "storage": {
    "mode": "none",
    "file_deleted_at": "2026-09-29T10:00:02Z",
    "expires_at": null
  },
  "usage": {
    "credits": 2,
    "pages": 3
  }
}

FAQ

Does Constaia prove the document is authentic?

No. It checks the type, data consistency and your rules, and flags signals such as a possible edit or a screen photo. That does not prove authenticity.

Is a copy of the document kept?

No, unless you ask for it. With storage "none" (the default) the file is deleted when the analysis ends.

Other documents

And for the record…

Create your account, copy the test key and validate your first document in five minutes.