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

# Laporan Bukti Alamat: Kolom yang Diekstraksi

> Baca laporan Bukti Alamat Didit: alamat, jenis dokumen, penerbit, tanggal, skor kecocokan nama, bukti manipulasi overlay PDF, dan peringatan.

## Gambaran umum

Verifikasi Bukti Alamat (POA) menerima satu file PDF atau gambar (TIFF, JPG, JPEG, PNG, WEBP, secara opsional dikompresi ZIP) hingga 15 MB, menjalankan klasifikasi jenis dokumen, ekstraksi berbasis LLM, serta forensik PDF/EXIF, dan mengembalikan:

* **Alamat yang diekstrak** — baik mentah maupun terstruktur (`street_1`, `city`, `region`, `postal_code`, lat/lng).
* **Metadata dokumen** — ukuran file, tipe konten, tanggal pembuatan dan modifikasi, tanggal EXIF, info tanda tangan, dan bukti manipulasi overlay apa pun dari forensik PDF.
* **Skor kecocokan nama** terhadap dokumen identitas yang diverifikasi dan terhadap detail yang diharapkan dan diberikan saat pembuatan sesi.
* **Kolom tambahan terkait bank** (nomor rekening, IBAN, sort code, routing number, SWIFT/BIC, cabang) saat dokumen tersebut berupa rekening koran.

![Tangkapan layar laporan bukti alamat Didit yang menampilkan kolom alamat yang diekstrak dan jenis dokumen](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]
>
> Ekstraksi POA melakukan pembacaan teks tidak terstruktur, yang menimbulkan latensi **5–15 detik** per dokumen. Webhook hanya dipicu saat seluruh langkah alur kerja selesai — jangan melakukan polling ke endpoint keputusan lebih sering dari setiap 5 detik selama jendela waktu ini.

## Lokasi kemunculannya dalam respons API

Endpoint keputusan mengembalikan POA sebagai array plural **`poa_verifications[]`** dalam `GET /v3/session/{sessionId}/decision/`. Setiap entri merupakan satu eksekusi dari node POA dalam alur kerja Anda; sesi dengan beberapa langkah POA (misalnya, rekening koran + tagihan utilitas) menghasilkan satu entri per eksekusi dengan `node_id` miliknya sendiri.

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

Bentuk di bawah ini mencerminkan skema kanonikal — lihat [Model data](https://docs.didit.me/id/reference/data-models.md#bukti-alamat).

## Skema

Lihat [Bukti Alamat dalam referensi Model Data](https://docs.didit.me/id/reference/data-models.md#bukti-alamat) untuk skema kanonikal.

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

Setiap entri dalam `warnings[]` adalah [Objek peringatan](https://docs.didit.me/id/reference/data-models.md#objek-peringatan): `{ feature, risk, additional_data, log_type, short_description, long_description, node_id }`, dengan `feature` selalu bernilai `"PROOF_OF_ADDRESS"` untuk laporan ini.

## Nilai status

`status` menggunakan enum status tingkat fitur (`FeatureStatusChoices`).

| Nilai | Arti |
| - | - |
| `Not Finished` | Node POA belum selesai untuk sesi ini (status default). |
| `Approved` | Dokumen berhasil diurai dengan baik dan tidak ada peringatan yang menghasilkan Tolak atau Tinjauan. |
| `In Review` | Setidaknya satu peringatan yang dapat dikonfigurasi diatur ke **Tinjauan** untuk alur kerja Anda (dan tidak ada yang ditolak). |
| `Declined` | Peringatan penolakan tegas terpicu (`MISSING_ADDRESS_INFORMATION`, `POA_DOCUMENT_EXPIRED`, `INVALID_DOCUMENT_TYPE`, `UNABLE_TO_VALIDATE_DOCUMENT_AGE`), atau peringatan yang dapat dikonfigurasi diatur ke **Tolak** untuk alur kerja Anda. |

Aturan status kustom yang dikonfigurasi pada node alur kerja dapat menyesuaikan lebih lanjut status yang dihitung; aturan digabungkan dengan urutan prioritas Declined > In Review > Approved. Lihat [Peringatan Bukti Alamat](https://docs.didit.me/id/core-technology/proof-of-address/warnings-proof-of-address.md) untuk pemetaan risiko-ke-tindakan selengkapnya, termasuk perilaku coba lagi khusus alur kerja untuk `FUTURE_ISSUE_DATE`.

## Bukti manipulasi overlay pada PDF

Jika dokumen yang dikirim berupa PDF, `document_metadata.overlay_manipulation` dapat berisi bukti forensik dugaan overlay teks:

* `detected`: `true` ketika pemeriksaan menemukan bukti manipulasi.
* `analyzed`: `true` ketika PDF dapat dianalisis.
* `analysis_incomplete`: ada dan bernilai `true` hanya ketika file tidak dapat diperiksa secara penuh. Hasil pemeriksaan yang sudah dilakukan tetap disertakan jika memungkinkan, dan dokumen memunculkan `POA_DOCUMENT_UNPROVEN_TEXT_REPLACEMENT`.
* `signals`: pemeriksaan yang terpicu (`duplicate_font_subset`, `glyph_fragmentation`).
* `manipulated_regions`: persegi panjang dalam koordinat halaman yang melingkupi teks yang diduga diedit. Setiap persegi panjang menggunakan ruang koordinat halaman PDF (`x`, `y`, `width`, `height`, `page_width`, `page_height`) agar peninjau dapat menyorot area yang terdampak di pratinjau PDF.

Kolom ini bernilai `null` ketika dokumen bukan PDF atau PDF tidak dapat dianalisis. Ketika `detected=true`, sistem juga mengirimkan peringatan `SUSPECTED_DOCUMENT_MANIPULATION` yang `additional_data`-nya mencerminkan sinyal dan persegi panjang di atas. Pengecualiannya adalah jika sinyal yang lebih kuat (modifikasi setelah penandatanganan digital, `is_tampered=true`) lebih diutamakan. Dalam kasus itu, `additional_data` justru menjelaskan manipulasi tanda tangan.

## Kode QR dan barcode

Setiap laporan POA menyertakan `detected_codes`, yang mencakup setiap halaman yang diproses. Setiap item berisi:

| Kolom | Deskripsi |
| - | - |
| `type` | Simbologi yang terdeteksi, seperti `QR_CODE`, `CODE_128`, `EAN_13`, `DATA_MATRIX`, atau `PDF_417` |
| `page_number` | Nomor halaman mulai dari 1 |
| `position` | Poligon yang terdeteksi dalam piksel halaman yang dirender, atau `null` jika tidak ada lokasi andal yang tersedia |
| `x`, `y`, `width`, `height` | Kotak pembatas dalam piksel halaman yang dirender, atau `null` jika tidak ada lokasi andal yang tersedia |
| `page_width`, `page_height` | Dimensi halaman yang dirender yang digunakan oleh koordinat |
| `parsed_payload` | String atau nilai terstruktur yang didekode, atau `null` jika kode hanya dapat ditemukan lokasinya |
| `raw_payload` | Payload dekoder mentah sebagai string base64 jika tersedia; jika tidak, string kosong |

`detected_codes` berupa array kosong jika tidak ditemukan kode yang didukung. Didit tidak pernah menebak payload: kode yang rusak atau tidak dapat dibaca dapat dikembalikan beserta lokasinya dan `parsed_payload: null`, sementara kegagalan dalam deteksi kode tidak menggagalkan verifikasi POA.

## Contoh

### Approved — rekening koran

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

### Declined — manipulasi overlay + ketidakcocokan nama

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

## Terkait

* [Peringatan Bukti Alamat](https://docs.didit.me/id/core-technology/proof-of-address/warnings-proof-of-address.md) — setiap kode peringatan yang dapat dimunculkan POA
* [Gambaran umum Bukti Alamat](https://docs.didit.me/id/core-technology/proof-of-address/overview.md) — jenis dokumen yang diterima dan aturan verifikasi
* [Model data — Bukti Alamat](https://docs.didit.me/id/reference/data-models.md#bukti-alamat) — skema kanonikal
* [Webhook](https://docs.didit.me/id/integration/webhooks.md) — `status.updated` membawa payload POA

> [!NOTE]
>
> `document_file` dan `extra_files[]` adalah URL yang telah ditandatangani sebelumnya yang kedaluwarsa setelah sekitar 4 jam. Ambil ulang endpoint keputusan untuk memperbarui URL. Simpan hanya status verifikasi dan kolom alamat yang diurai di sisi Anda — minimalkan data dokumen yang disimpan.


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