Membangun e-KYC untuk Fintech Indonesia: Verifikasi NIK/Dukcapil yang Benar

Foto oleh User:Mattes via Wikimedia Commons (CC BY-SA 3.0)
Tidak. Dukcapil tidak menyediakan API publik untuk perusahaan swasta. Anda menandatangani perjanjian kerja sama data langsung (biasanya hanya untuk bank besar dan KSEI) atau berintegrasi lewat penyedia e-KYC resmi yang sudah memegang koneksi Dukcapil. Keduanya hanya memberi hasil kecocokan, bukan data mentah warga.
Tidak. Modelnya verifikasi, bukan berbagi. Anda mengirim data yang sudah diberikan pengguna (NIK, nama, tanggal lahir, selfie) dan Dukcapil menjawab apakah cocok. Yang dikembalikan adalah nilai boolean dan skor face-match, bukan field yang belum Anda miliki. Siapa pun yang menjual lookup NIK-ke-profil melanggar hukum.
Data biometrik seperti template wajah diklasifikasikan sebagai data pribadi spesifik menurut UU No. 27 Tahun 2022 dan butuh pelindungan lebih ketat serta persetujuan eksplisit dan terpisah. NIK juga data pribadi. Anda wajib membatasi penggunaannya sesuai tujuan yang disetujui, meminimalkan penyimpanan, dan menghormati permintaan penghapusan.
Harga umumnya per verifikasi berhasil. Sebagai acuan publik, satu penyedia mencantumkan sekitar USD 0,30 per verifikasi dengan kuota gratis bulanan, sedangkan pemain lama beberapa kali lipat. Konfirmasikan tarif dan tier volume terkini langsung ke penyedia karena sering berubah.
UU PDP memungkinkan denda administratif hingga 2% dari pendapatan tahunan perusahaan. Ketentuan pidana mencapai 6 tahun penjara dan denda hingga Rp6 miliar untuk penyalahgunaan serius seperti menjual data pribadi secara ilegal. Menyimpan biometrik mentah atau NIK teks biasa di log adalah cara umum mengubah kebocoran menjadi sanksi.

Foto oleh User:Mattes via Wikimedia Commons (CC BY-SA 3.0)
Ringkasan Utama
Anda tidak bisa mengakses Dukcapil secara langsung. Fintech Indonesia memverifikasi NIK melalui penyedia resmi yang punya perjanjian kerja sama data dengan Dukcapil. Penyedia hanya mengembalikan hasil cocok atau tidak cocok plus skor face-match, bukan data mentah warga. Karena NIK dan biometrik adalah data sensitif menurut UU PDP, persetujuan eksplisit dan aturan penyimpanan ketat wajib dipenuhi.
Di sebuah proyek baru-baru ini saya membangun alur onboarding untuk aplikasi pinjaman di Indonesia, dan syarat yang paling sering disalahpahami adalah verifikasi identitas. Banyak founder mengira ada endpoint Dukcapil publik yang tinggal Anda kirimi NIK. Tidak ada. Dukcapil (Direktorat Jenderal Kependudukan dan Pencatatan Sipil) mengelola registri kependudukan nasional di balik e-KTP, dan tidak menyerahkan data mentah ke perusahaan swasta. Sebaliknya, Dukcapil menandatangani perjanjian kerja sama data dan mengizinkan sejumlah kecil penyedia resmi menjalankan pengecekan match-only ke basis data kependudukan.
Artikel ini membahas arsitektur dan kepatuhan alur tersebut, bukan scraping. Jika ada yang menawarkan cara melakukan lookup NIK secara massal, tinggalkan saja: itu ilegal, melanggar UU PDP, dan bisa membuat izin Anda dicabut. Jalur yang sah memang terkesan membosankan, dapat diaudit, dan justru itulah yang ingin dilihat OJK.
Dukcapil menerapkan model verifikasi, bukan berbagi data. Institusi resmi mengirim data yang sudah dikumpulkan dari pengguna, lalu Dukcapil menjawab apakah kombinasi itu ada dan cocok. Dukcapil tidak pernah mengembalikan field yang belum dimiliki pemanggil. Tingkatan akses yang akan Anda temui di lapangan adalah:
Dukcapil berulang kali menegaskan bahwa platform bersama e-KYC tidak memberikan data NIK kepada siapa pun. Platform itu hanya mengonfirmasi hasil verifikasi. Penyedia mana pun yang mengaku bisa menjual lookup NIK-ke-profil-lengkap berarti berbohong atau melanggar hukum. Pilih penyedia yang mempublikasikan status kerja sama datanya.
Onboarding e-KYC produksi untuk aplikasi Indonesia biasanya merangkai lima langkah. Penyedia seperti Verihubs, Privy, dan lainnya menyediakan tiap langkah sebagai panggilan API, dan satu proses penuh umumnya selesai di bawah 30 detik.
// POST /v1/identity/verify (via authorized e-KYC provider)
// Request — you only ever send data the user gave you
{
"nik": "3174xxxxxxxxxxxx",
"name": "BUDI SANTOSO",
"birth_date": "1994-03-12",
"selfie_image": "<base64 jpeg>",
"consent_id": "cns_01HXQ..." // proof of user consent, see UU PDP section
}
// Response — match-only, no raw Dukcapil record is returned
{
"nik_valid": true,
"name_match": true,
"birth_date_match": true,
"face_match_score": 0.972, // 0..1 similarity
"liveness_passed": true,
"decision": "approved",
"reference_id": "vrf_01HXQ...", // store THIS, not the biometrics
"verified_at": "2026-07-11T04:12:55Z"
}Skor face-match adalah probabilitas, bukan ya/tidak. Tetapkan dua ambang: batas bawah auto-approve dan pita tinjauan manual di bawahnya. Satu batas keras saja akan meloloskan penipuan atau menolak pengguna sah yang pencahayaan selfienya berbeda dari foto KTP bertahun-tahun lalu. Liveness adalah gerbang terpisah yang tidak bisa ditawar — face-match tinggi pada foto palsu tak berarti apa-apa, jadi liveness harus lolos sebelum skor kecocokan dipertimbangkan.
Mulailah konservatif: auto-approve hanya di atas skor kemiripan tinggi, kirim pita tengah ke tinjauan manual, dan tolak keras sisanya. Catat setiap keputusan beserta skornya agar Anda bisa menggeser ambang batas nanti berdasarkan data nyata, bukan tebakan. Pemeriksa OJK menyukai jejak audit itu.
UU No. 27 Tahun 2022 (UU PDP) sudah berlaku penuh sejak Oktober 2024. Undang-undang ini mengklasifikasikan data biometrik sebagai data pribadi spesifik yang menuntut pelindungan lebih ketat dan, yang penting, persetujuan eksplisit dan terpisah — bukan checkbox yang terselip di syarat umum Anda. NIK juga merupakan data pribadi. Kewajiban praktis yang membentuk arsitektur Anda adalah:
// Persist the CONSENT before the verify call, keep it immutable
CREATE TABLE kyc_consent (
id TEXT PRIMARY KEY, -- consent_id sent to provider
user_id TEXT NOT NULL,
purpose TEXT NOT NULL, -- 'identity_verification'
scope TEXT[] NOT NULL, -- ['nik','biometric_face']
policy_version TEXT NOT NULL,
granted_at TIMESTAMPTZ NOT NULL,
ip_address INET,
revoked_at TIMESTAMPTZ
);
// After verification: store the RESULT, discard the biometrics
CREATE TABLE kyc_result (
id TEXT PRIMARY KEY, -- your reference_id
user_id TEXT NOT NULL,
nik_hash TEXT NOT NULL, -- HMAC-SHA256(nik, pepper), never plaintext
decision TEXT NOT NULL, -- approved | review | declined
face_score NUMERIC(4,3),
liveness BOOLEAN,
provider_ref TEXT,
verified_at TIMESTAMPTZ NOT NULL
);
// selfie bytes: process in memory, do NOT write to disk / object storageDua aturan rekayasa muncul dari sini. Pertama, hash NIK dengan HMAC berkunci dan pepper di sisi server agar Anda tetap bisa mendeduplikasi pengguna tanpa menyimpan angka mentahnya. Kedua, perlakukan selfie mentah seperti bahan radioaktif: alirkan ke penyedia, tahan di memori, dan jangan pernah biarkan menyentuh log, object storage, atau trace APM Anda. Simpan hanya skor dan keputusannya.
Sanksinya nyata. UU PDP memungkinkan denda administratif hingga 2% dari pendapatan tahunan perusahaan, dan ketentuan pidana mencapai 6 tahun penjara serta denda hingga Rp6 miliar untuk penyalahgunaan serius seperti menjual data pribadi secara ilegal. Menyimpan biometrik mentah atau NIK di log teks biasa persis jenis paparan yang mengubah kebocoran menjadi denda.
Anda sebenarnya memilih mitra kepatuhan, bukan sekadar API. Pertanyaan yang tepat menyangkut kedudukan hukum dan penanganan data, bukan hanya uptime. Bandingkan kandidat pada sumbu berikut:
| Yang diperiksa | Mengapa penting |
|---|---|
| Status kerja sama data Dukcapil | Memastikan penyedia resmi, bukan scraping. |
| Registrasi OJK / Bank Indonesia | Wajib untuk produk keuangan yang diatur. |
| Liveness + face-match tergabung | Menghindari menjahit dua vendor dan dua alur data. |
| Model harga per verifikasi | Biaya unit yang terprediksi saat onboarding tumbuh. |
| Ketentuan residensi dan retensi data | Menentukan paparan UU PDP Anda ke hilir. |
| Ekspor log audit | Diperlukan untuk memenuhi pemeriksaan OJK. |
Harga biasanya per verifikasi berhasil. Sebagai acuan, satu penyedia (Didit) mencantumkan sekitar USD 0,30 per verifikasi dengan kuota gratis bulanan; pemain lama bisa beberapa kali lipat. Anggap angka publik mana pun sebagai titik awal dan konfirmasikan tarif serta tier volume terkini secara langsung, karena harga dan regulasi fintech Indonesia sama-sama cepat berubah.