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

# Peringatan & Kode Risiko Verifikasi Telepon

> Panduan kode risiko Verifikasi Telepon Didit: HIGH_RISK_PHONE_NUMBER, VOIP_NUMBER_DETECTED, DISPOSABLE_NUMBER_DETECTED, daftar blokir, dan batas OTP.

Fitur Verifikasi Telepon mengeluarkan **peringatan** setiap kali sinyal risiko terpicu pada alur OTP atau nomor itu sendiri: nomor yang diketahui bermasalah, saluran VoIP atau sekali pakai, batas upaya OTP, atau kecocokan terhadap sesi pengguna lain. Halaman ini mencantumkan setiap kode, apa yang memicunya, dan cara mengonfigurasi respons alur kerja.

## Gambaran umum

Peringatan ditandai dengan fitur `PHONE`. Peringatan ini muncul di bawah `phone_verifications[].warnings[]` dalam `GET /v3/session/{sessionId}/decision/` dan mengikuti bentuk [objek peringatan](https://docs.didit.me/id/reference/data-models.md#objek-peringatan) standar (`feature`, `risk`, `additional_data`, `log_type`, `short_description`, `long_description`, `node_id`). Setiap peringatan juga dirutekan ke dalam log per sesi sehingga muncul di Business Console di bawah bagian Phone.

Beberapa peringatan adalah pemicu **penolakan otomatis mutlak** — peringatan tersebut selalu menyetel status fitur ke `Declined`. Peringatan lainnya dipetakan ke **tindakan yang dapat dikonfigurasi** (`DECLINE`, `REVIEW`, atau `NO_ACTION`, bergantung pada pengaturannya) yang ditentukan dalam pengaturan alur kerja Anda, sehingga kode risiko yang sama dapat menolak satu alur kerja sementara hanya menandai alur kerja lainnya.

## Kondisi penolakan otomatis

Peringatan berikut selalu menolak langkah Verifikasi Telepon terlepas dari konfigurasi, dan selalu membawa `log_type: "error"`:

* `VERIFICATION_CODE_ATTEMPTS_EXCEEDED` — pengguna telah menghabiskan batas upaya OTP: secara default 2 kali memasukkan kode yang salah (`phone_max_check_attempts`) atau lebih dari 2 pengiriman OTP (`phone_max_retries`), keduanya dapat disesuaikan per node alur kerja. API telepon mandiri mengizinkan 3 upaya kode.
* `PHONE_NUMBER_IN_BLOCKLIST` — nomor tersebut ada di daftar blokir Anda yang dikelola melalui [Lists API](https://docs.didit.me/id/management-api/lists/overview.md), atau cocok dengan sesi yang dimasukkan ke daftar blokir.

`HIGH_RISK_PHONE_NUMBER` — lapisan antipenipuan penyedia pengiriman menolak mengirimkan OTP (pengiriman `Blocked`) — menolak secara default tetapi **tidak lagi bersifat tanpa syarat**: lihat [`high_risk_phone_action`](#pengiriman-yang-diblokir) di bawah.

## Risiko yang dapat dikonfigurasi

Setiap risiko berikut dipetakan ke pengaturan alur kerja yang dapat Anda konfigurasikan ke `DECLINE`, `REVIEW`, atau `NO_ACTION` (default — peringatan dicatat tanpa memengaruhi status). Tindakan yang dikonfigurasi juga menyetel `log_type` peringatan: `DECLINE` → `error`, `REVIEW` → `warning`, `NO_ACTION` → `information`.

| Pengaturan | Kode risiko | Terpicu saat |
| - | - | - |
| `voip_number_action` | `VOIP_NUMBER_DETECTED` | Operator mengidentifikasi nomor tersebut sebagai jenis saluran `voip`, `isp`, atau `vpn`. |
| `disposable_number_action` | `DISPOSABLE_NUMBER_DETECTED` | Pencarian menandai nomor tersebut sebagai penyedia nomor sementara. |
| `duplicated_phone_number_action` | `DUPLICATED_PHONE_NUMBER` | Nomor tersebut cocok dengan sesi lain dari status apa pun milik pengguna akhir yang berbeda. Dilewati jika nomor tersebut ada dalam daftar izin. |

Deteksi duplikat berjalan di dalam aplikasi Anda di seluruh verifikasi telepon KYC, KYB, dan API mandiri, serta mengelompokkan sesi berdasarkan `vendor_data` — sesi yang berbagi `vendor_data` yang sama diperlakukan sebagai satu pengguna akhir dan dikecualikan dari hasil pencocokan. Biarkan `vendor_data` kosong dan setiap sesi akan diperlakukan sebagai pengguna yang berbeda.

### Pengiriman yang diblokir

`HIGH_RISK_PHONE_NUMBER` mengikuti pola yang sama dengan rangkaian pilihan yang lebih sempit, karena pengiriman yang ditolak oleh penyedia tidak dapat disetujui:

| Pengaturan | Kode risiko | Terpicu saat |
| - | - | - |
| `high_risk_phone_action` | `HIGH_RISK_PHONE_NUMBER` | Lapisan antipenipuan penyedia pengiriman menolak mengirimkan OTP (pengiriman `Blocked`). Hanya menerima `DECLINE` atau `REVIEW`, dan default-nya adalah `DECLINE`. |

Pengaturan ini diterapkan **hanya jika setiap pemblokiran berisiko tinggi pada langkah tersebut membawa `additional_data.risk_factors` tepat `["device_attribute"]`** — sinyal "perangkat ini tampak mencurigakan" dari penyedia, yang memicu pemblokiran pada saluran seluler biasa. Faktor risiko lain apa pun, campuran apa pun yang menyertakan `device_attribute` bersama faktor risiko lain, atau pemblokiran tanpa faktor risiko sama sekali akan ditolak terlepas dari pengaturannya. Alasan pemblokiran (`repeated_attempts`, `suspicious`, atau `spam`) adalah kolom terpisah, yang dikembalikan dalam `additional_data.blocked_reason`.

Terlepas dari pengaturannya, nomor pada daftar izin telepon yang dibuat melalui [Lists API](https://docs.didit.me/id/management-api/lists/overview.md) tidak pernah ditolak secara otomatis untuk pengiriman yang diblokir: langkah tersebut beralih ke **Dalam Peninjauan**, peringatan membawa `log_type: "warning"`, dan `additional_data.phone_number_in_allowlist` bernilai `true`.

## Batas percobaan verifikasi

Fitur Verifikasi Telepon menerapkan batas ketat pada percobaan OTP untuk mencegah penyalahgunaan:

* **Percobaan entri kode** — Default **2** entri kode yang salah (`phone_max_check_attempts`) sebelum langkah diselesaikan sebagai `Declined` dengan `VERIFICATION_CODE_ATTEMPTS_EXCEEDED`. API telepon mandiri mengizinkan **3** percobaan kode per verifikasi.
* **Percobaan kirim** — Default **2** pengiriman total (`phone_max_retries`): pengiriman awal ditambah satu pengiriman ulang. Permintaan kirim berikutnya akan menyelesaikan langkah dan memunculkan `VERIFICATION_CODE_ATTEMPTS_EXCEEDED`.
* **Masa berlaku OTP** — OTP yang menunggu verifikasi valid selama **5 menit sejak pengiriman pertama**; percobaan ulang tidak memperpanjang rentang waktu tersebut.

Kedua batas dapat disesuaikan per node alur kerja. Terlepas dari batas-batas ini, lapisan antipenipuan penyedia pengiriman dapat memblokir pengiriman secara langsung (alasan `repeated_attempts`, `suspicious`, atau `spam`) — kondisi ini memicu `HIGH_RISK_PHONE_NUMBER`, bukan peringatan percobaan.

## Peringatan yang dihasilkan

| Tag | `log_type` | Deskripsi |
| - | - | - |
| `VERIFICATION_CODE_ATTEMPTS_EXCEEDED` | `error` (selalu) | Pengguna melebihi batas entri kode atau pengiriman OTP. Ditolak secara otomatis. |
| `HIGH_RISK_PHONE_NUMBER` | Mengikuti `high_risk_phone_action`, atau `warning` saat masuk daftar izin | Penyedia pengiriman memblokir pengiriman OTP. Ditolak secara default; atur `high_risk_phone_action` ke `REVIEW` untuk mengarahkan pemblokiran berbasis sinyal perangkat saja ke Dalam Peninjauan (lihat [Pengiriman yang diblokir](#pengiriman-yang-diblokir)). Nomor pada daftar izin telepon juga diarahkan ke Dalam Peninjauan. `additional_data`: `{ blocked_reason, risk_factors, phone_number_in_allowlist? }`. |
| `PHONE_NUMBER_IN_BLOCKLIST` | `error` (selalu) | Nomor berada di daftar blokir yang dibuat melalui [Lists API](https://docs.didit.me/id/management-api/lists/overview.md), atau cocok dengan sesi yang masuk daftar blokir. Ditolak secara otomatis. `additional_data`: `{ blocklisted_session_id, blocklisted_session_number, api_service }` (semuanya `null` untuk kecocokan daftar murni). |
| `PHONE_NUMBER_IN_ALLOWLIST` | `information` | Nomor cocok dengan sesi lain tetapi ada di daftar izin yang dibuat melalui [Lists API](https://docs.didit.me/id/management-api/lists/overview.md), sehingga tindakan nomor telepon duplikat dilewati. `additional_data`: `{ phone_number }`. |
| `DISPOSABLE_NUMBER_DETECTED` | Mengikuti `disposable_number_action` | Nomor tersebut berasal dari penyedia nomor sementara yang sering digunakan untuk menghindari ketertelusuran. |
| `VOIP_NUMBER_DETECTED` | Mengikuti `voip_number_action` | Nomor teridentifikasi sebagai saluran `voip`, `isp`, atau `vpn`, bukan saluran seluler standar atau telepon tetap. |
| `DUPLICATED_PHONE_NUMBER` | Mengikuti `duplicated_phone_number_action` | Nomor cocok dengan sesi lain — dengan status apa pun — milik pengguna akhir yang berbeda (dikelompokkan berdasarkan `vendor_data`). `additional_data`: `{ duplicated_session_id, duplicated_session_number, api_service }`. |

## Pencocokan lintas-sesi

Saat sebuah nomor terdeteksi di sesi lain atau di daftar blokir Anda, hasil pencocokan tersebut juga muncul di bawah `phone_verifications[].matches[]` (dibatasi hingga 5 entri). Setiap kecocokan memuat `session_id`, `session_number`, `vendor_data`, `verification_date`, `phone_number`, `status`, `is_blocklisted`, `api_service`, serta `source` berupa `session` (sesi lain dengan nomor yang sama, status apa pun) atau `list_entry` (entri daftar blokir sintetik yang ditempatkan di awal array). Jika nomor saat ini ada di daftar izin telepon Anda, Didit tetap menyimpan bukti kecocokan tetapi memunculkan `PHONE_NUMBER_IN_ALLOWLIST` alih-alih menerapkan tindakan nomor telepon duplikat. Lihat [Laporan Verifikasi Telepon](https://docs.didit.me/id/core-technology/phone-verification/report-phone-verification.md#kecocokan-lintas-sesi) untuk skema kecocokan lengkap.

## Contoh

Pengiriman yang diblokir (`HIGH_RISK_PHONE_NUMBER`) pada nomor VoIP, dengan `voip_number_action` dikonfigurasi ke `REVIEW`:

```json theme={null}
{
  "warnings": [
    {
      "feature": "PHONE",
      "risk": "HIGH_RISK_PHONE_NUMBER",
      "additional_data": { "blocked_reason": "suspicious" },
      "log_type": "error",
      "short_description": "High risk phone number",
      "long_description": "The system detected that the phone number is a high risk phone number, which is not allowed.",
      "node_id": "feature_phone_1"
    },
    {
      "feature": "PHONE",
      "risk": "VOIP_NUMBER_DETECTED",
      "additional_data": null,
      "log_type": "warning",
      "short_description": "VoIP number detected",
      "long_description": "The system detected that the phone number is a VoIP number, which is not allowed.",
      "node_id": "feature_phone_1"
    }
  ]
}
```

## Jenis peringatan

Setiap risiko diberi tingkat keparahan berdasarkan konfigurasi aplikasi Anda. Tingkat keparahan terbagi ke dalam tiga kategori:

## Terkait

* [Ringkasan Verifikasi Telepon](https://docs.didit.me/id/core-technology/phone-verification/overview.md) — perilaku fitur, harga, saluran yang didukung.
* [Laporan Verifikasi Telepon](https://docs.didit.me/id/core-technology/phone-verification/report-phone-verification.md) — bentuk respons lengkap termasuk `lifecycle[]` dan `matches[]`.
* [Model data — verifikasi telepon](https://docs.didit.me/id/reference/data-models.md#verifikasi-telepon) — skema kanonis per kolom.
* [Management API — Daftar](https://docs.didit.me/id/management-api/lists/overview.md) — kelola daftar blokir telepon yang digunakan oleh `PHONE_NUMBER_IN_BLOCKLIST`.


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