Verifying proof of address - API only (v1)
This is the current stable version of this step type.
Headless address document verification that extracts residential address data
Verifies an address document using static evidence collected by your own front end and submitted to IDnow via API, with results delivered as a ResidentialAddress data block.
In Headless mode, your application is responsible for collecting and providing the document image. IDnow performs verification on this static input using automated analysis and data extraction modules. There is no user-facing capture step; all evidence is provided directly by your system.
This step, Verifying IBAN - API only (v1), and Verifying ID document - API only (IDC) (v2) steps each require a different document type and cannot be combined in the same flow.
In addition, the DocumentImages data block supplied to this step must not come from an identity document capture step (such as DOC_ID:v2/v3 or SPHINX:v1/v2). Those steps produce ID-category images (passport, driving licence, etc.), which are incompatible with address document processing. Supply DocumentImages via the START step inputs instead.
Key features
- Customer-managed evidence collection: The customer application captures and submits document images via API.
- Residential address extraction: Full address, street, house number, city, postal code, and country are extracted from the document.
- Optional identity cross-check: When
compareIdentityis enabled, the document holder's name fields (given name and family name) from a priorBasicIdentitystep are cross-checked - Unified Verification data block: A
Verificationresult is produced on all output routes.
Supported countries and issuers
Address documents are supported for the following countries and issuers. Depending on the specific document model, analysis may be fully automated or involve a manual review step.
| Country | ISO code | Issuer | Category |
|---|---|---|---|
| Austria | AUT | ZMR | Administration |
| Austria | AUT | WIEN_ENERGIE | Energy supplier |
| Austria | AUT | A1_TELEKOM | Telecom mobile |
| Austria | AUT | DREI_AUSTRIA | Telecom mobile |
| Belgium | BEL | LUMINUS | Energy supplier |
| Belgium | BEL | TELENET | Telecom |
| Belgium | BEL | VOO | Telecom |
| Germany | DEU | BERLINERWASSER | Water supplier |
| Germany | DEU | EON | Energy supplier |
| Germany | DEU | O2 | Telecom |
| Germany | DEU | TTELECOM | Telecom |
| Germany | DEU | VATTENFALL | Energy supplier |
| Germany | DEU | VODAFONE | Telecom |
| Germany | DEU | ONE_AND_ONE | Telecom |
| France | FRA | EDF | Energy supplier |
| France | FRA | ENGIE | Energy supplier |
| France | FRA | TOTAL_DIRECT_ENERGIE | Energy supplier |
| France | FRA | TOTAL_ENERGIES | Energy supplier |
| France | FRA | DIRECT_ENERGIE | Energy supplier |
| France | FRA | ENI | Energy supplier |
| France | FRA | VATTENFALL | Energy supplier |
| France | FRA | OCTOPUS_ENERGY | Energy supplier |
| France | FRA | ILEK | Energy supplier |
| France | FRA | OHM_ENERGIE | Energy supplier |
| France | FRA | SOWEE | Energy supplier |
| France | FRA | MINT_ENERGIE | Energy supplier |
| France | FRA | ALPIQ | Energy supplier |
| France | FRA | ELMY | Energy supplier |
| France | FRA | EKWATEUR | Energy supplier |
| France | FRA | GAZ_DE_BORDEAUX | Energy supplier |
| France | FRA | PLENITUDE | Energy supplier |
| France | FRA | PRIMEO | Energy supplier |
| France | FRA | ENERGIE_STRASBOURG | Energy supplier |
| France | FRA | DYNEFF | Energy supplier |
| France | FRA | ENERCOOP | Energy supplier |
| France | FRA | ANTARGAZ | Energy supplier |
| France | FRA | ALTERNA | Energy supplier |
| France | FRA | LA_BELLENERGIE | Energy supplier |
| France | FRA | UEM | Energy supplier |
| France | FRA | URBAN_SOLAR_ENERGY | Energy supplier |
| France | FRA | BUTAGAZ | Energy supplier |
| France | FRA | HAPPE | Energy supplier |
| France | FRA | WEKIWI | Energy supplier |
| France | FRA | PAPERNEST | Energy supplier |
| France | FRA | ENGIE_PRO | Energy supplier |
| France | FRA | ORANGE | Telecom |
| France | FRA | SFR | Telecom |
| France | FRA | FREE | Telecom |
| France | FRA | NUMERICABLE | Telecom |
| France | FRA | CANALBOX | Telecom |
| France | FRA | NORDNET | Telecom |
| France | FRA | BOUYGUES | Telecom |
| France | FRA | BOUYGUES_MOBILE | Telecom mobile |
| France | FRA | SFR_MOBILE | Telecom mobile |
| France | FRA | FREE_MOBILE | Telecom mobile |
| France | FRA | ORANGE_MOBILE | Telecom mobile |
| France | FRA | LA_POSTE_MOBILE | Telecom mobile |
| France | FRA | NRJ_MOBILE | Telecom mobile |
| France | FRA | CIC_MOBILE | Telecom mobile |
| France | FRA | CREDIT_MUTUEL_MOBILE | Telecom mobile |
| France | FRA | AUCHAN_TELECOM | Telecom mobile |
| France | FRA | WIZZEE | Telecom mobile |
| France | FRA | PRIXTEL | Telecom mobile |
| France | FRA | LEBARA | Telecom mobile |
| France | FRA | SYMA_MOBILE | Telecom mobile |
| France | FRA | REGLO_MOBILE | Telecom mobile |
| France | FRA | CORIOLIS | Telecom mobile |
| France | FRA | YOUPRICE | Telecom mobile |
| France | FRA | CDISCOUNT_MOBILE | Telecom mobile |
| France | FRA | ZEOP | Telecom mobile |
| France | FRA | SAUR | Water supplier |
| France | FRA | SUEZ | Water supplier |
| France | FRA | VEOLIA | Water supplier |
| France | FRA | DIONEO | Water supplier |
| France | FRA | DGFIP | Fiscal administration |
| France | FRA | CPAM | Administration |
| France | FRA | REVOLUT | Bank |
| France | FRA | TWISPAY | Bank |
| France | FRA | MAIF | Insurer |
| Ireland | IRL | BANK_OF_IRELAND | Bank |
| Ireland | IRL | ELECTRIC_IRELAND | Energy supplier |
| Ireland | IRL | SKY_TV | Telecom |
| Italy | ITA | ENEL | Energy supplier |
| Italy | ITA | FASTWEB | Telecom |
| Italy | ITA | TIM | Telecom |
| Luxembourg | LUX | CTIE | Administration |
| Monaco | MCO | SMEG | Energy supplier |
| Netherlands | NLD | ABN_AMRO | Bank |
| Netherlands | NLD | ZIGGO | Telecom |
| Netherlands | NLD | VANDEBRON | Energy supplier |
| Netherlands | NLD | VITENS | Water supplier |
| Portugal | PRT | EDP | Energy supplier |
| Portugal | PRT | NOS | Telecom |
| Portugal | PRT | MEO | Telecom |
| Portugal | PRT | EPAL | Water supplier |
| Romania | ROU | DIGI | Telecom |
| Romania | ROU | ENEL | Energy supplier |
| Romania | ROU | ENGIE | Energy supplier |
| Romania | ROU | EON | Energy supplier |
| Romania | ROU | GOLD_ENERGIE | Energy supplier |
| Romania | ROU | ENDESA | Energy supplier |
| Romania | ROU | ORANGE | Telecom |
| Romania | ROU | ING | Bank |
| Romania | ROU | RAIFFEISEN_BANK | Bank |
| Spain | ESP | IBERDROLA | Energy supplier |
| Spain | ESP | JAZZTEL | Telecom |
| Spain | ESP | MOVISTAR | Telecom |
For the full list of supported document models, contact your account manager.
Configuration
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
config | object | Yes | — | Environment-specific configuration. |
config.live.realm | string | Yes | — | The IDCheck.io realm for the proof-of-address service in this environment. Provided by IDnow during onboarding. (live) |
config.staging.realm | string | Yes | — | The IDCheck.io realm for the proof-of-address service in this environment. Provided by IDnow during onboarding. (staging) |
compareIdentity | boolean | No | false | When true, requires a prior BasicIdentity step for identity cross-check. |
Example configuration
{
"config": {
"live": { "realm": "your-live-realm" },
"staging": { "realm": "your-staging-realm" }
}
}
Input data blocks
| Data block | Required | Description |
|---|---|---|
DocumentImages | Yes | Address document images submitted as binary files via multipart/form-data. Front side is required; back side is optional. Accepted formats: JPEG, PNG. The DocumentImages data block supplied to this step must not come from an identity document capture step. |
BasicIdentity | Conditional | Identity data used for cross-check against the document holder. Present only when compareIdentity is true. |
Each file referenced in DocumentImages is subject to a per-file size limit of 4 MB.
Routes
| Route | Description |
|---|---|
verified | Document was successfully processed and address data was extracted. |
not_verified | Document was rejected or analysis flagged the document as invalid. |
fraud_detected | Fraudulent identity suspicion detected. Takes precedence over other failure conditions. |
Output data blocks
| Route | Data blocks produced |
|---|---|
verified | ResidentialAddress, Verificationconditionally: BasicIdentity (only when compareIdentity is true) |
not_verified | Verification |
fraud_detected | Verification |
Example payloads
ResidentialAddress — verified
{
"residentAddress": "24 RUE DANTON 35700 RENNES FRANCE",
"residentStreet": "RUE DANTON",
"residentHouseNumber": "24",
"residentCity": "RENNES",
"residentPostalCode": "35700",
"residentCountry": "FR",
"residentState": null
}
BasicIdentity — verified (when compareIdentity: true)
{
"givenName": "Jean",
"familyName": "Dupont",
"name": "Jean Dupont",
"birthDate": null,
"birthPlace": null
}
Verification — verified
{
"status": "verified",
"terminationReason": null,
"methods": [
{
"type": "documentCheck",
"checks": [],
"evidence": []
}
],
"provider": "idnow",
"trustFramework": null,
"assuranceLevel": null,
"verifiedAt": "2026-03-15T10:22:45.000Z",
"verificationProcessId": "txn-poa-7f3a2c91"
}
Verification — fraud_detected
{
"status": "fraudDetected",
"terminationReason": null,
"methods": [
{
"type": "documentCheck",
"checks": [
{
"technique": "documentValidity",
"sources": [],
"outcome": "failed",
"issues": [
{
"code": "BACKEND_ANALYSIS",
"severity": "error",
"message": "No document found"
}
],
"performedBy": null,
"performedAt": null
}
],
"evidence": [
{
"type": "analysisReport",
"ref": {
"$ref": "vault",
"$id": "6b514db8-55f0-4618-98b5-1e42845d053e"
}
}
]
}
],
"provider": "idnow",
"trustFramework": null,
"assuranceLevel": null,
"verifiedAt": "2026-03-15T10:22:45.000Z",
"verificationProcessId": "txn-poa-7f3a2c91"
}
Verification — not_verified (when compareIdentity: true)
{
"status": "rejected",
"terminationReason": null,
"methods": [
{
"type": "documentCheck",
"checks": [
{
"technique": "documentValidity",
"sources": [],
"outcome": "passed",
"issues": [],
"performedBy": null,
"performedAt": null
},
{
"technique": "electronicRecord",
"sources": [
{
"type": "thirdPartyRegister",
"id": null
}
],
"outcome": "passed",
"issues": [],
"performedBy": null,
"performedAt": null
},
{
"technique": "dataCrosscheck",
"sources": [
{
"type": "signedBarcode",
"id": null
},
{
"type": "inputData",
"id": null
}
],
"outcome": "failed",
"issues": [
{
"code": "FIRST_NAME_MATCH",
"severity": "error",
"message": "Firstnames do not match the identity"
}
],
"performedBy": null,
"performedAt": null
},
{
"technique": "securityFeatures",
"sources": [],
"outcome": "passed",
"issues": [],
"performedBy": null,
"performedAt": null
}
],
"evidence": [
{
"type": "analysisReport",
"ref": {
"$ref": "vault",
"$id": "e243e571-e63e-4c21-8668-1b0fc07f6c03"
}
}
]
}
],
"provider": "idnow",
"trustFramework": null,
"assuranceLevel": null,
"verifiedAt": "2026-03-15T10:22:45.000Z",
"verificationProcessId": "txn-poa-7f3a2c91"
}