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 verifies the submitted document automatically and extracts the address data from it. 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 for this step must not come from an ID document capture step, such as Verifying ID document (IDC) (v2), Verifying ID document (IDC) (v3), Verifying ID document (v1) or Verifying ID document (v2). Those steps capture identity documents (passport, driving licence, etc.), which this step cannot process. Instead, send the address document images in input.documentImages when you create the session.
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 given name and family name on the document are cross-checked against aBasicIdentitydata block, which must come from an earlier step or from the session creation request - 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"
}