Skip to main content
Address Extraction uses OCR and AI to automatically extract structured address fields from proof-of-address (PoA) documents, cross-reference the name against the identity document, and check document recency.

Supported Documents

Document TypeCodeNotes
Utility billutility_billElectric, gas, water, internet, phone
Bank statementbank_statementChecking, savings, credit card statements
Tax documenttax_documentTax returns, tax assessments
Government lettergovernment_letterOfficial correspondence from government agencies
Insurance documentinsurance_documentHome, health, or auto insurance statements
Rental agreementrental_agreementLease or tenancy agreements

How It Works

1

Upload PoA document

The user uploads a proof-of-address document through the hosted flow or via POST /v1/sessions/{id}/address-proof.
2

OCR extraction

AI extracts the full name, address components, document date, and issuer from the document.
3

Name cross-reference

The extracted name is compared against the name on the identity document to verify they belong to the same person.
4

Recency check

The document date is checked against the configured maximum age (default: 90 days).

Extracted Fields

FieldTypeDescription
full_namestringFull name as it appears on the document
address_line_1stringPrimary street address
address_line_2stringApartment, suite, unit (if present)
citystringCity or town
statestringState, province, or region
postal_codestringZIP or postal code
countrystringISO 3166-1 alpha-2 country code
document_datestringDate on the document (ISO 8601)
document_typestringDetected document type
issuerstringDocument issuer (e.g., utility company name)

Configuration

Set address verification requirements when creating a session:
{
  "profile": {
    "steps": ["document", "selfie", "address_proof"],
    "address_proof": {
      "max_age_days": 90,
      "name_match_threshold": 0.8,
      "accepted_types": ["utility_bill", "bank_statement", "tax_document"]
    }
  }
}
FieldTypeDefaultDescription
max_age_daysinteger90Maximum document age in days
name_match_thresholdnumber0.8Minimum name similarity score (0-1)
accepted_typesarrayallRestrict accepted document types

API Response

Address extraction data is included in the session detail response:
{
  "id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "approved",
  "address_proof": {
    "status": "verified",
    "document_type": "utility_bill",
    "issuer": "British Gas",
    "document_date": "2026-02-15",
    "recency_check": {
      "passed": true,
      "max_age_days": 90,
      "document_age_days": 31
    },
    "name_match": {
      "passed": true,
      "extracted_name": "John A. Smith",
      "document_name": "John Alexander Smith",
      "similarity_score": 0.94
    },
    "extracted_address": {
      "address_line_1": "42 Baker Street",
      "address_line_2": "Flat 3",
      "city": "London",
      "state": "Greater London",
      "postal_code": "NW1 6XE",
      "country": "GB"
    },
    "extracted_at": "2026-03-18T10:00:00Z"
  }
}

Response Fields

FieldTypeDescription
statusstringverified, failed, or pending
document_typestringDetected PoA document type
issuerstringDocument issuer name
document_datestringDate on the document
recency_check.passedbooleanWhether the document meets the age requirement
recency_check.document_age_daysintegerDocument age in days
name_match.passedbooleanWhether the name matches the identity document
name_match.similarity_scorenumberName similarity score (0-1)
extracted_addressobjectStructured address fields
Address extraction accuracy depends on document quality. Blurry, low-resolution, or partially cropped documents may produce incomplete results.
Use the name_match_threshold setting to adjust sensitivity. A lower threshold (e.g., 0.7) is more forgiving of name variations like abbreviations and middle names.