> ## 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.

# Informe de comprobante de domicilio: campos extraídos

> El informe de domicilio de Didit incluye dirección, tipo de documento, emisor, fechas, coincidencia de nombre, manipulación de PDF y advertencias.

## Descripción general

La verificación de prueba de domicilio (POA) acepta un único PDF o imagen (TIFF, JPG, JPEG, PNG, WEBP, opcionalmente comprimido en ZIP) de hasta 15 MB. Clasifica el tipo de documento, extrae los datos con un LLM, aplica análisis forense de PDF y EXIF, y devuelve:

* La **dirección extraída**, tanto en bruto como estructurada (`street_1`, `city`, `region`, `postal_code`, lat/lng).
* **Metadatos del documento**: tamaño del archivo, tipo de contenido, fechas de creación y modificación, fechas EXIF, información de firma y cualquier evidencia de manipulación por superposición detectada en el análisis forense del PDF.
* **Puntuaciones de coincidencia del nombre** con el documento de identidad verificado y con los datos esperados que se indicaron al crear la sesión.
* **Campos bancarios adicionales** (número de cuenta, IBAN, sort code, routing number, SWIFT/BIC, sucursal) cuando el documento es un extracto bancario.

![Captura de pantalla del informe de prueba de domicilio de Didit con los campos de dirección extraídos y el tipo de documento](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]
>
> La extracción de POA realiza una lectura de texto no estructurado, lo que añade una latencia de **5 a 15 segundos** por documento. Los webhooks solo se disparan cuando se completa todo el paso del flujo de verificación (workflow). No consultes el endpoint de decisión con una frecuencia mayor de una vez cada 5 s durante este intervalo.

## Dónde aparece en las respuestas de la API

El endpoint de decisión devuelve las verificaciones de POA en el array plural **`poa_verifications[]`** en `GET /v3/session/{sessionId}/decision/`. Cada entrada corresponde a una ejecución del nodo POA de tu flujo. Las sesiones con varios pasos POA (por ejemplo, extracto bancario + factura de servicios) generan una entrada por ejecución, cada una con su propio `node_id`.

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

La estructura siguiente refleja el esquema canónico. Consulta [Modelos de datos](https://docs.didit.me/es/reference/data-models.md#prueba-de-domicilio).

## Esquema

Consulta [Prueba de domicilio en la referencia de modelos de datos](https://docs.didit.me/es/reference/data-models.md#prueba-de-domicilio) para ver el esquema canónico.

```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
}
```

Cada entrada de `warnings[]` es un [objeto Warning](https://docs.didit.me/es/reference/data-models.md#objeto-de-advertencia): `{ feature, risk, additional_data, log_type, short_description, long_description, node_id }`, donde `feature` siempre es `"PROOF_OF_ADDRESS"` para este informe.

## Valores de estado

`status` usa el enum de estado a nivel de función (`FeatureStatusChoices`).

| Valor | Significado |
| - | - |
| `Not Finished` | El nodo POA no se ha completado en esta sesión (estado predeterminado). |
| `Approved` | El documento se analizó correctamente y ninguna advertencia se resolvió como Rechazar o Revisión. |
| `In Review` | Al menos una advertencia configurable está configurada como **Revisión** para tu flujo (y no se rechazó nada). |
| `Declined` | Se disparó una advertencia que implica un rechazo definitivo (`MISSING_ADDRESS_INFORMATION`, `POA_DOCUMENT_EXPIRED`, `INVALID_DOCUMENT_TYPE`, `UNABLE_TO_VALIDATE_DOCUMENT_AGE`), o una advertencia configurable está configurada como **Rechazar** para tu flujo. |

Las reglas de estado personalizadas configuradas en el nodo del flujo pueden ajustar aún más el estado calculado. Las reglas se combinan con la precedencia Declined > In Review > Approved. Consulta [Advertencias de prueba de domicilio](https://docs.didit.me/es/core-technology/proof-of-address/warnings-proof-of-address.md) para ver la correspondencia completa entre riesgo y acción, incluido el comportamiento de reintento de `FUTURE_ISSUE_DATE`, que solo aplica en flujos.

## Evidencia de manipulación por superposición en PDF

Cuando el documento enviado es un PDF, `document_metadata.overlay_manipulation` puede contener evidencia forense de posibles superposiciones de texto:

* `detected`: `true` cuando la comprobación encontró evidencia de manipulación.
* `analyzed`: `true` cuando el PDF pudo analizarse.
* `signals`: las comprobaciones que se activaron (`duplicate_font_subset`, `glyph_fragmentation`).
* `manipulated_regions`: rectángulos en coordenadas de página alrededor del texto presuntamente editado. Cada rectángulo usa el espacio de coordenadas de la página PDF (`x`, `y`, `width`, `height`, `page_width`, `page_height`) para que los revisores puedan resaltar la zona afectada en una vista previa del PDF.

El campo es `null` cuando el documento no es un PDF o el PDF no pudo analizarse. Cuando `detected=true`, el sistema también emite una advertencia `SUSPECTED_DOCUMENT_MANIPULATION` cuyo `additional_data` refleja las señales y los rectángulos anteriores (salvo que una señal más fuerte, como una modificación posterior a la firma digital con `is_tampered=true`, tenga prioridad; en ese caso, `additional_data` describe la manipulación de la firma).

## Códigos QR y códigos de barras

Todos los informes POA incluyen `detected_codes`, que abarca todas las páginas procesadas. Cada elemento contiene:

| Campo | Descripción |
| - | - |
| `type` | Simbología detectada, como `QR_CODE`, `CODE_128`, `EAN_13`, `DATA_MATRIX` o `PDF_417` |
| `page_number` | Número de página, empezando en 1 |
| `position` | Polígono detectado en píxeles de la página renderizada, o `null` cuando no hay una ubicación fiable |
| `x`, `y`, `width`, `height` | Cuadro delimitador en píxeles de la página renderizada, o `null` cuando no hay una ubicación fiable |
| `page_width`, `page_height` | Dimensiones de la página renderizada utilizadas por las coordenadas |
| `parsed_payload` | Cadena decodificada o valor estructurado, o `null` cuando el código solo puede localizarse |
| `raw_payload` | Payload sin procesar del decodificador como cadena base64 cuando está disponible; en caso contrario, una cadena vacía |

`detected_codes` es un array vacío cuando no se encuentra ningún código admitido. Didit nunca adivina un payload: los códigos dañados o ilegibles pueden devolverse con su ubicación y `parsed_payload: null`, y los fallos en la detección de códigos no provocan un error en la verificación POA.

## Ejemplos

### Aprobado: extracto bancario

```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": []
    }
  ]
}
```

### Rechazado: manipulación por superposición + discrepancia en el nombre

```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"
        }
      ]
    }
  ]
}
```

## Relacionado

* [Advertencias de prueba de domicilio](https://docs.didit.me/es/core-technology/proof-of-address/warnings-proof-of-address.md): todos los códigos de advertencia que puede emitir la POA
* [Descripción general de la prueba de domicilio](https://docs.didit.me/es/core-technology/proof-of-address/overview.md): tipos de documento aceptados y reglas de verificación
* [Modelos de datos: prueba de domicilio](https://docs.didit.me/es/reference/data-models.md#prueba-de-domicilio): esquema canónico
* [Webhooks](https://docs.didit.me/es/integration/webhooks.md): `status.updated` incluye los payloads de POA

> [!NOTE]
>
> `document_file` y `extra_files[]` son URL prefirmadas que expiran al cabo de unas 4 horas. Vuelve a consultar el endpoint de decisión para renovar las URL. Guarda en tu sistema solo el estado de la verificación y los campos de dirección analizados, y reduce al mínimo los datos de los documentos que conservas.


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