> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Rapport de justificatif de domicile : champs extraits

> Analysez le rapport de justificatif de domicile Didit : adresses, type de document, émetteur, dates, scores de correspondance de nom et alertes.

## Présentation

La vérification de justificatif de domicile (POA) accepte un seul fichier PDF ou image (TIFF, JPG, JPEG, PNG, WEBP, éventuellement compressé au format ZIP) d'une taille maximale de 15 Mo, effectue la classification du type de document, l'extraction basée sur des LLM ainsi que des analyses médico-légales PDF/EXIF, et renvoie :

* L'**adresse extraite** — à la fois brute et structurée (`street_1`, `city`, `region`, `postal_code`, lat/lng).
* Les **métadonnées du document** — taille du fichier, type de contenu, dates de création et de modification, dates EXIF, informations de signature, ainsi que toute preuve de manipulation par superposition issue des analyses médico-légales du PDF.
* Les **scores de correspondance de nom** par rapport à la pièce d'identité vérifiée et par rapport aux informations attendues fournies lors de la création de la session.
* Les **champs supplémentaires liés aux coordonnées bancaires** (numéro de compte, IBAN, code guichet, numéro d'acheminement, SWIFT/BIC, agence bancaire) lorsque le document est un relevé bancaire.

![Didit proof of address report screenshot showing extracted address fields and document type](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/proof-of-address-report.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=099d1bd6cf0c215cc93c3a504b8aa9ee)

> [!NOTE]
>
> L'extraction du justificatif de domicile effectue une lecture de texte non structuré, ce qui introduit une latence de **5 à 15 secondes** par document. Les webhooks ne se déclenchent que lorsque l'ensemble de l'étape du workflow est terminée — n'interrogez pas l'endpoint de décision plus d'une fois toutes les 5 s pendant cette fenêtre.

## Emplacement dans les réponses d'API

L'endpoint de décision renvoie les POA sous forme du tableau pluriel **`poa_verifications[]`** dans `GET /v3/session/{sessionId}/decision/`. Chaque entrée correspond à une exécution du nœud POA dans votre workflow ; les sessions comportant plusieurs étapes de justificatif de domicile (par ex. un relevé bancaire + une facture d'électricité) génèrent une entrée par exécution avec son propre `node_id`.

```text theme={null}
GET /v3/session/{sessionId}/decision/
  ──▶ { "poa_verifications": [ { node_id, status, document_type, poa_address, … }, … ] }
```

Le format ci-dessous reflète le schéma canonique — voir les [Modèles de données](https://docs.didit.me/fr/reference/data-models.md#justificatif-de-domicile).

## Schéma

Consultez [Justificatif de domicile dans la référence des modèles de données](https://docs.didit.me/fr/reference/data-models.md#justificatif-de-domicile) pour le schéma canonique.

```typescript theme={null}
interface POAV3 {
  status: 'Not Finished' | 'Approved' | 'Declined' | 'In Review';
  node_id: string | null;

  issuing_state: string | null;         // ISO 3166-1 alpha-3
  document_type:                        // never null — falls back to 'UNKNOWN'
    | 'UTILITY_BILL'
    | 'BANK_STATEMENT'
    | 'GOVERNMENT_ISSUED_DOCUMENT'
    | 'OTHER_POA_DOCUMENT'
    | 'UNKNOWN';
  document_subtype: string;             // e.g. 'ELECTRICITY_BILL', 'ACCOUNT_STATEMENT';
                                        // never null — falls back to 'UNKNOWN'
  issuer: string | null;
  issue_date: string | null;            // YYYY-MM-DD
  expiration_date: string | null;       // YYYY-MM-DD when present

  // Extracted address
  poa_address: string | null;           // raw, single-line
  poa_formatted_address: string | null; // geocoded/formatted
  poa_parsed_address: {
    address_type?: string;
    street_1?: string;
    street_2?: string;
    city?: string;
    region?: string;
    postal_code?: string;
    country?: string;                   // ISO 3166-1 alpha-2
    raw_results?: object;
    document_location?: { latitude: number; longitude: number };
  } | null;

  document_file: string | null;         // presigned URL, expires after ~4 hours
  document_language: string | null;     // ISO 639-1, e.g. 'en'
  name_on_document: string | null;

  // Expected details (when supplied at session creation)
  expected_details_address: string | null;
  expected_details_formatted_address: string | null;
  expected_details_parsed_address: object | null;

  // Match scores (float, 0-100)
  name_match_score_expected_details: number | null;
  name_match_score_id_verification: number | null;

  // PDF + image forensics
  document_metadata: {
    file_size: number | null;
    content_type: string | null;
    creation_date: string | null;
    modified_date: string | null;
    creator: string | null;
    producer: string | null;
    software: string | null;
    encryption: string | null;
    is_signed: boolean | null;
    is_tampered: boolean | null;
    signature_info: object | null;
    exif_original_date: string | null;
    exif_digitized_date: string | null;
    processed_by_known_editor: boolean | string | null;
    has_different_creation_mod_date: boolean | null;
    overlay_manipulation: {
      detected: boolean;
      analyzed: boolean;
      signals: string[];                // 'duplicate_font_subset', 'glyph_fragmentation'
      duplicate_font_subsets: object[];
      fragmented_fonts: object[];
      manipulated_regions: {
        page: number;
        x: number;
        y: number;
        width: number;
        height: number;
        page_width: number;
        page_height: number;
      }[];
    } | null;                           // null for non-PDF uploads or when not analyzed
  } | null;

  // Bank-related and custom fields
  extra_fields: {
    bank_account_number: string | null;
    bank_iban: string | null;
    bank_sort_code: string | null;
    bank_routing_number: string | null;
    bank_swift_bic: string | null;
    bank_branch_name: string | null;
    bank_branch_address: string | null;
    document_phone_number: string | null;
    additional_names: string[];
    [customField: string]: unknown;
  };

  extra_files: string[];                // presigned URLs for additional uploaded files

  // QR codes and barcodes
  detected_codes: {
    type: string;                       // 'QR_CODE', 'CODE_128', 'EAN_13', 'DATA_MATRIX', 'PDF_417', …
    page_number: number;                // 1-based
    position: [number, number][] | null;
    x: number | null;
    y: number | null;
    width: number | null;
    height: number | null;
    page_width: number;
    page_height: number;
    raw_payload: string;                // base64, empty string when unavailable
    parsed_payload: unknown | null;      // null when located but undecodable
  }[];

  warnings: Warning[];                  // see Data Models — Warning object
}
```

Chaque entrée de `warnings[]` est un [objet Avertissement](https://docs.didit.me/fr/reference/data-models.md#objet-d’avertissement) : `{ feature, risk, additional_data, log_type, short_description, long_description, node_id }`, avec `feature` valant toujours `"PROOF_OF_ADDRESS"` pour ce rapport.

## Valeurs de statut

`status` utilise l'énumération des statuts au niveau de la fonctionnalité (`FeatureStatusChoices`).

| Valeur | Signification |
| - | - |
| `Not Finished` | Le nœud POA n'est pas encore terminé pour cette session (état par défaut). |
| `Approved` | Le document a été analysé sans erreur et aucun avertissement n'a abouti à Refuser ou En cours d'examen. |
| `In Review` | Au moins un avertissement configurable est défini sur **En cours d'examen** pour votre workflow (et aucun avertissement n'a abouti à Refuser). |
| `Declined` | Un avertissement de refus strict s'est déclenché (`MISSING_ADDRESS_INFORMATION`, `POA_DOCUMENT_EXPIRED`, `INVALID_DOCUMENT_TYPE`, `UNABLE_TO_VALIDATE_DOCUMENT_AGE`), ou un avertissement configurable est défini sur **Refuser** pour votre workflow. |

Des règles de statut personnalisées configurées sur le nœud du workflow peuvent ajuster davantage le statut calculé ; les règles se combinent selon l'ordre de priorité Refusé > En cours d'examen > Approuvé. Consultez les [Avertissements du justificatif de domicile](https://docs.didit.me/fr/core-technology/proof-of-address/warnings-proof-of-address.md) pour la table de correspondance complète risque-action, y compris le comportement de nouvelle tentative réservé au workflow pour `FUTURE_ISSUE_DATE`.

## Preuves de manipulation par superposition dans les PDF

Lorsque le document soumis est un PDF, `document_metadata.overlay_manipulation` peut contenir des preuves forensiques de superpositions de texte suspectées :

* `detected` : `true` lorsque la vérification a trouvé des preuves de manipulation.
* `analyzed` : `true` lorsque le PDF a pu être analysé.
* `analysis_incomplete` : présent et `true` uniquement lorsque le fichier n'a pas pu être vérifié intégralement. Les contrôles effectués conservent leurs résultats lorsque c'est possible, et le document déclenche `POA_DOCUMENT_UNPROVEN_TEXT_REPLACEMENT`.
* `signals` : les contrôles qui se sont déclenchés (`duplicate_font_subset`, `glyph_fragmentation`).
* `manipulated_regions` : rectangles, exprimés dans les coordonnées de la page, autour du texte suspecté d'avoir été modifié. Chaque rectangle utilise l'espace de coordonnées de page du PDF (`x`, `y`, `width`, `height`, `page_width`, `page_height`) afin que les réviseurs puissent mettre en évidence la zone concernée dans un aperçu du PDF.

Le champ vaut `null` lorsque le document n'est pas un PDF ou lorsque le PDF n'a pas pu être analysé. Lorsque `detected=true`, le système émet également un avertissement `SUSPECTED_DOCUMENT_MANIPULATION` dont `additional_data` reprend les signaux et les rectangles ci-dessus, sauf si un signal plus fort (une modification après la signature numérique, ou `is_tampered=true`) a eu priorité. Dans ce cas, `additional_data` décrit à la place la falsification de la signature.

## Codes QR et codes-barres

Chaque rapport POA inclut `detected_codes`, couvrant chaque page traitée. Chaque élément contient :

| Champ | Description |
| - | - |
| `type` | Symbologie détectée, telle que `QR_CODE`, `CODE_128`, `EAN_13`, `DATA_MATRIX` ou `PDF_417` |
| `page_number` | Numéro de page (commençant à 1) |
| `position` | Polygone détecté en pixels de la page rendue, ou `null` si aucun emplacement fiable n'est disponible |
| `x`, `y`, `width`, `height` | Boîte englobante en pixels de la page rendue, ou `null` si aucun emplacement fiable n'est disponible |
| `page_width`, `page_height` | Dimensions de la page rendue utilisées par les coordonnées |
| `parsed_payload` | Chaîne décodée ou valeur structurée, ou `null` si le code peut seulement être localisé |
| `raw_payload` | Payload brut du décodeur sous forme de chaîne base64 lorsqu'il est disponible ; sinon une chaîne vide |

`detected_codes` est un tableau vide si aucun code pris en charge n'est trouvé. Didit ne devine jamais un payload : les codes endommagés ou illisibles peuvent être renvoyés avec leur emplacement et `parsed_payload: null`, tandis que les échecs de détection de code n'entraînent pas l'échec de la vérification POA.

## Exemples

### Approuvé — relevé bancaire

```json theme={null}
{
  "poa_verifications": [
    {
      "status": "Approved",
      "node_id": "feature_poa_1",
      "issuing_state": "USA",
      "document_type": "BANK_STATEMENT",
      "document_subtype": "ACCOUNT_STATEMENT",
      "issuer": "National Bank",
      "issue_date": "2026-04-15",
      "expiration_date": null,
      "document_language": "en",
      "name_on_document": "John A. Smith",
      "poa_address": "123 Main St, Apartment 4B, New York, NY 10001",
      "poa_formatted_address": "123 Main St, Apartment 4B, New York, NY 10001, USA",
      "poa_parsed_address": {
        "address_type": "Street",
        "street_1": "123 Main St",
        "street_2": "Apartment 4B",
        "city": "New York",
        "region": "NY",
        "postal_code": "10001",
        "country": "US",
        "document_location": { "latitude": 40.7128, "longitude": -74.0060 }
      },
      "document_file": "https://<media-host>/.../poa.pdf?X-Amz-Expires=14400",
      "document_metadata": {
        "file_size": 246810,
        "content_type": "application/pdf",
        "creation_date": "2026-04-15",
        "modified_date": "2026-04-15",
        "creator": "PDFKit",
        "producer": "Quartz",
        "software": null,
        "encryption": null,
        "is_signed": false,
        "is_tampered": false,
        "signature_info": null,
        "exif_original_date": null,
        "exif_digitized_date": null,
        "processed_by_known_editor": false,
        "has_different_creation_mod_date": false,
        "overlay_manipulation": null
      },
      "name_match_score_expected_details": 100,
      "name_match_score_id_verification": 98,
      "expected_details_address": null,
      "expected_details_formatted_address": null,
      "expected_details_parsed_address": null,
      "extra_fields": {
        "bank_account_number": "****1234",
        "bank_iban": null,
        "bank_sort_code": null,
        "bank_routing_number": "021000089",
        "bank_swift_bic": "NABNUS33",
        "bank_branch_name": "Manhattan Midtown",
        "bank_branch_address": "111 Wall St, New York, NY",
        "document_phone_number": null,
        "additional_names": []
      },
      "extra_files": [],
      "detected_codes": [
        {
          "type": "QR_CODE",
          "page_number": 1,
          "position": [[820, 1120], [1002, 1120], [1002, 1302], [820, 1302]],
          "x": 820,
          "y": 1120,
          "width": 182,
          "height": 182,
          "page_width": 1190,
          "page_height": 1684,
          "raw_payload": "aHR0cHM6Ly9uYXRpb25hbGJhbmsuZXhhbXBsZS9zdG10Lzk5ODE=",
          "parsed_payload": "https://nationalbank.example/stmt/9981"
        },
        {
          "type": "CODE_128",
          "page_number": 1,
          "position": [[112, 1480], [560, 1480], [560, 1540], [112, 1540]],
          "x": 112,
          "y": 1480,
          "width": 448,
          "height": 60,
          "page_width": 1190,
          "page_height": 1684,
          "raw_payload": "MDAxMjM0NTY3ODk=",
          "parsed_payload": "001234567 89"
        }
      ],
      "warnings": []
    }
  ]
}
```

### Refusé — manipulation par superposition + discordance de nom

```json theme={null}
{
  "poa_verifications": [
    {
      "status": "Declined",
      "node_id": "feature_poa_1",
      "issuing_state": "GBR",
      "document_type": "UTILITY_BILL",
      "document_subtype": "ELECTRICITY_BILL",
      "issuer": "BritishEnergy",
      "issue_date": "2026-03-10",
      "expiration_date": null,
      "document_language": "en",
      "name_on_document": "JOHN B SMYTH",
      "poa_address": "44 King's Road, London, SW3 4UD",
      "poa_formatted_address": "44 King's Road, London, SW3 4UD, United Kingdom",
      "poa_parsed_address": {
        "street_1": "44 King's Road",
        "city": "London",
        "postal_code": "SW3 4UD",
        "country": "GB",
        "document_location": { "latitude": 51.4880, "longitude": -0.1690 }
      },
      "document_file": "https://<media-host>/.../poa.pdf?X-Amz-Expires=14400",
      "document_metadata": {
        "file_size": 412910,
        "content_type": "application/pdf",
        "creation_date": "2026-03-10",
        "modified_date": "2026-05-12",
        "creator": "Adobe Acrobat Pro",
        "producer": "Adobe PDF Library",
        "software": "Adobe Acrobat",
        "encryption": null,
        "is_signed": false,
        "is_tampered": false,
        "signature_info": null,
        "exif_original_date": null,
        "exif_digitized_date": null,
        "processed_by_known_editor": false,
        "has_different_creation_mod_date": true,
        "overlay_manipulation": {
          "detected": true,
          "analyzed": true,
          "signals": ["duplicate_font_subset", "glyph_fragmentation"],
          "duplicate_font_subsets": [{ "page": 1, "base_font": "Helvetica" }],
          "fragmented_fonts": [],
          "manipulated_regions": [
            { "page": 1, "x": 102.4, "y": 318.1, "width": 187.0, "height": 18.0, "page_width": 595, "page_height": 842 }
          ]
        }
      },
      "name_match_score_expected_details": 62,
      "name_match_score_id_verification": 60,
      "expected_details_address": null,
      "expected_details_formatted_address": null,
      "expected_details_parsed_address": null,
      "extra_fields": {
        "bank_account_number": null, "bank_iban": null, "bank_sort_code": null,
        "bank_routing_number": null, "bank_swift_bic": null,
        "bank_branch_name": null, "bank_branch_address": null,
        "document_phone_number": null, "additional_names": []
      },
      "extra_files": [],
      "detected_codes": [],
      "warnings": [
        {
          "feature": "PROOF_OF_ADDRESS",
          "risk": "SUSPECTED_DOCUMENT_MANIPULATION",
          "additional_data": {
            "reason": "Overlay-text manipulation detected: same base font embedded with multiple subset prefixes on 1 page(s).",
            "detection_method": "overlay_text_manipulation",
            "signals": ["duplicate_font_subset", "glyph_fragmentation"],
            "duplicate_font_subsets": [{ "page": 1, "base_font": "Helvetica" }],
            "fragmented_fonts": [],
            "manipulated_regions": [
              { "page": 1, "x": 102.4, "y": 318.1, "width": 187.0, "height": 18.0, "page_width": 595, "page_height": 842 }
            ]
          },
          "log_type": "error",
          "short_description": "Suspected document manipulation",
          "long_description": "The system detected signs of potential document manipulation or editing.",
          "node_id": "feature_poa_1"
        },
        {
          "feature": "PROOF_OF_ADDRESS",
          "risk": "NAME_MISMATCH_ID_VERIFICATION",
          "additional_data": {
            "poa_name": "JOHN B SMYTH",
            "kyc_name": "John A. Smith",
            "match_score": 60
          },
          "log_type": "warning",
          "short_description": "Name mismatch with ID verification",
          "long_description": "The full name on the document does not match the name from the user's verified identity documents.",
          "node_id": "feature_poa_1"
        }
      ]
    }
  ]
}
```

## Pages connexes

* [Avertissements du justificatif de domicile](https://docs.didit.me/fr/core-technology/proof-of-address/warnings-proof-of-address.md) — chaque code d'avertissement que le POA peut émettre
* [Présentation du justificatif de domicile](https://docs.didit.me/fr/core-technology/proof-of-address/overview.md) — types de documents acceptés et règles de vérification
* [Modèles de données — Justificatif de domicile](https://docs.didit.me/fr/reference/data-models.md#justificatif-de-domicile) — schéma canonique
* [Webhooks](https://docs.didit.me/fr/integration/webhooks.md) — `status.updated` transporte les payloads de POA

> [!NOTE]
>
> `document_file` et `extra_files[]` sont des URL pré-signées qui expirent après environ 4 heures. Réinterrogez l'endpoint de décision pour actualiser les URL. Ne stockez de votre côté que le statut de vérification et les champs d'adresse extraits — minimisez les données de documents conservées.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.