Ganti kata sandi satu kali SMS. Jadikan swafoto faktor kedua.
Tingkatkan alur sensitif dengan pencocokan wajah di bawah 2 detik terhadap potret terdaftar. Tahan phishing. Tahan pertukaran SIM. $0.10 per autentikasi. 500 verifikasi gratis setiap bulan.
Dipercaya oleh 2.000+ organisasi di seluruh dunia.
Tahan phishing · Tahan pertukaran SIM
Tidak ada kode untuk di-phish. Tidak ada SIM untuk ditukar.
Faktor kedua adalah wajah pengguna, dicocokkan 1:1 dengan potret
yang mereka daftarkan saat mendaftar. Keaktifan memblokir serangan cetak / putar ulang / topeng /
Generative Adversarial Network (GAN) pada bingkai yang sama. Putusan di bawah 2 detik
pada Android tingkat pemula. $0.10 per autentikasi. 500 verifikasi
gratis setiap bulan.
Cara kerjanya
Dari pendaftaran hingga pengguna terverifikasi dalam empat langkah.
Langkah 01
Buat alur kerja
Pilih pemeriksaan yang Anda inginkan — ID, keaktifan, pencocokan wajah, sanksi, alamat, usia, telepon, email, pertanyaan khusus. Seret ke dalam alur di dasbor, atau posting alur yang sama ke API kami. Cabang berdasarkan kondisi, jalankan tes A/B, tidak perlu kode.
Langkah 02
Integrasikan
Sematkan secara native dengan SDK Web, iOS, Android, React Native, atau Flutter kami. Alihkan ke halaman yang dihosting. Atau cukup kirim tautan kepada pengguna Anda — melalui email, SMS, WhatsApp, di mana saja. Pilih yang sesuai dengan tumpukan Anda.
Langkah 03
Pengguna melalui alur
Didit meng-host kamera, isyarat pencahayaan, serah terima seluler, dan aksesibilitas. Saat pengguna berada dalam alur, kami menilai 200+ sinyal penipuan secara real time dan memverifikasi setiap bidang terhadap sumber data otoritatif. Hasil dalam waktu kurang dari dua detik.
Langkah 04
Anda menerima hasilnya
Webhook bertanda tangan real-time menjaga database Anda tetap sinkron saat pengguna disetujui, ditolak, atau dikirim untuk ditinjau. Polling API sesuai permintaan. Atau buka konsol untuk memeriksa setiap sesi, setiap sinyal, dan mengelola kasus sesuai keinginan Anda.
Pengganti untuk SMS OTP · Terikat pada pengguna, bukan kode
Enam kemampuan. $0.10 per otentikasi.
Satu alur kerja adaptif, satu putusan bertanda tangan, bentuk panggilan balik yang sama dengan alur OAuth Anda yang ada. Tidak ada ketergantungan operator, tidak ada permukaan SS7, tidak ada paparan pertukaran SIM.
Buka panggilan API Sesi, arahkan pengguna ke UI yang di-hosting, tangkap satu bingkai pasif. Liveness + Pencocokan Wajah 1:1 + pengembalian webhook yang ditandatangani dalam dua detik yang sama. Tanpa instal aplikasi, tanpa SDK, tanpa jalur operator.
UI yang di-hosting pada URL sesi unik — tidak memerlukan aplikasi.
02 · Pencocokan Wajah 1:1
Cocokkan selfie langsung dengan potret yang terdaftar.
Potret yang diambil selama sesi KYC asli pengguna adalah templatnya. Setiap autentikasi berikutnya membandingkan selfie baru dengannya dan mengembalikan similarity_score (0-1). Sesuaikan ambang batas persetujuan otomatis per alur kerja. $0.05 per panggilan Pencocokan Wajah mandiri; $0.10 jika digabungkan dengan Liveness.
Cocokkan selfie langsung dengan potret yang terdaftar.
$0.05 / match
Terdaftar
Kesamaan
0.96
Cocok
Langsung
Terikat pada pengguna, bukan kode.Sesuaikan ambang batas per alur kerja
03 · Mengalahkan permukaan serangan SMS
Pertukaran SIM. Phishing OTP. Smishing. SS7. Semua diblokir.
Empat serangan yang diperingatkan oleh Biro Investigasi Federal Amerika Serikat (FBI) dan Pusat Keamanan Siber Nasional Inggris (NCSC) untuk kata sandi satu kali SMS — pertukaran SIM, phishing OTP, kit smishing, intersepsi operator — semuanya mengalahkan SMS. Tidak ada yang berhasil melawan selfie langsung yang cocok dengan potret yang terdaftar. FIDO Alliance mencantumkan wajah di perangkat sebagai tahan phishing.
FIDO Alliance mencantumkan "face-on-device" sebagai tahan phishing.
04 · Tingkatkan di tempat yang penting
Picukan hanya pada permukaan yang memerlukannya.
Masuk dari perangkat baru, transfer di atas ambang risiko Anda, perubahan kata sandi/pengaturan, pemulihan akun. Pasangkan dengan Analisis Perangkat + IP sehingga otentikasi ulang pada perangkat baru + Protokol Internet (IP) baru secara otomatis meningkat. Alur yang sama, pemicu yang lebih cerdas.
Masuk dari perangkat baruPaksa otentikasi ulang sebelum pemberian
Transfer nilai besarDi atas ambang batas risiko Anda
Perubahan kata sandi / pengaturanBlokir pengisian kredensial
Pemulihan akunHentikan pengambilalihan SIM-swap
Adaptif — hanya jika risiko membenarkannya.~2 detik per pemeriksaan
05 · Satu payload yang ditandatangani
Pengganti langsung untuk callback OTP Anda yang sudah ada.
Webhook memberikan status, similarity_score, metode, dan header X-Signature-V2 untuk verifikasi Hash-based Message Authentication Code (HMAC) SHA-256. Bentuk callback yang sama, pola pengalihan yang sama. Sebagian besar tim mengganti SMS dengan wajah dalam satu akhir pekan.
Pengganti langsung untuk callback OTP Anda yang sudah ada.
06 · Lebih murah dari SMS
$0.10 per auth, no carrier fees, no minimums.
Kata sandi satu kali SMS Tier-1 Amerika Serikat berharga antara $0.05 dan $0.30 per pengiriman tergantung pada operator — dan Anda membayar bahkan ketika pengguna tidak pernah menerima kode. Autentikasi biometrik Didit adalah $0.10 datar dengan 500 verifikasi gratis setiap bulan. Tanpa ketergantungan operator, tanpa tarif per negara, tanpa minimum kontrak.
Gunakan hanya jika Anda memiliki pipeline pengambilan. Alur browser = sesi yang di-hosting.dokumen →
Integrasi siap agen
Ganti OTP SMS dalam satu perintah.
Tempelkan ke Claude Code, Cursor, Codex, Devin, Aider, atau Replit Agent. Isi tumpukan Anda. Agen menyediakan Didit, membangun alur kerja otentikasi biometrik, menukar callback OTP Anda yang ada, dan mengirimkan dalam satu akhir pekan.
didit-integration-prompt.md
You are integrating Didit's Biometric 2FA into <my_stack>. Replace SMS one-time-password (OTP) on sensitive flows — login from a new device, large-value transfer, settings change, account recovery — with a sub-2-second face match against the user's enrolled portrait. Cheaper than SMS. Phishing-resistant. SIM-swap-proof.
1. Enrol the user's portrait ONCE at sign-up via the standard Know Your Customer (KYC) session.
2. On every sensitive action, open a Biometric Authentication session that runs Passive Liveness + Face Match 1:1 against the stored portrait. Verdict in sub-2-seconds.
Pricing (public):
- Biometric Authentication: $0.10 per authentication (Sessions API)
- Standalone Face Match 1:1: $0.05 per match (server-to-server)
- First 500 verifications free every month, forever
PRE-REQUISITES
- Production API key from https://business.didit.me (sandbox key in 60s, no card).
- Webhook endpoint with Hash-based Message Authentication Code (HMAC) SHA-256 verification using the X-Signature-V2 header.
- The user has previously enrolled — either via a full KYC session (recommended; the portrait is stored automatically and never leaves Didit) or via a portrait you supply on each re-auth.
- A workflow_id from the Workflow Builder. The workflow MUST contain LIVENESS, and the session must be opened with workflow_type = "biometric_authentication" (or use a workflow that has FACE_MATCH and pass a portrait_image at session creation).
STEP 1 — Enrolment (one-time, at user sign-up)
Run a standard KYC session at sign-up. Didit stores the portrait (the face captured during the liveness step) as the user's enrolled template, bound to vendor_data.
POST https://verification.didit.me/v3/session/
Body:
{
"workflow_id": "<your KYC workflow>",
"vendor_data": "<your user id>"
}
No additional code — once the user passes KYC, their enrolled portrait is ready for every future re-auth.
STEP 2 — Re-authentication (on every sensitive action)
POST https://verification.didit.me/v3/session/
Headers:
x-api-key: <your api key>
Content-Type: application/json
Body:
{
"workflow_id": "<your biometric_authentication workflow>",
"workflow_type": "biometric_authentication",
"vendor_data": "<the same user id used at enrolment>",
"callback": "https://<your-app>/2fa/callback",
"metadata": {
"reason": "<login_new_device | high_value_txn | settings_change | account_recovery>",
"amount": "<optional, for large-value transfers>"
},
"portrait_image": "<base64 JPEG of the user's enrolment selfie, ≤ 1 MB — REQUIRED when the workflow has FACE_MATCH active; OMIT for liveness-only mode>"
}
Response: 201 Created with the hosted session_url. Redirect the user to it. The hosted UI:
- Opens the front camera
- Captures one passive frame
- Runs Liveness + Face Match 1:1 against the user's enrolled portrait
- Returns the verdict in sub-2-seconds
STEP 3 — Read the signed verdict on the webhook
Body (excerpted for a passing re-auth):
{
"session_id": "<uuid>",
"vendor_data": "<your user id>",
"status": "Approved",
"liveness": { "status": "Approved", "method": "PASSIVE", "score": 96 },
"face": {
"status": "Approved",
"similarity_score": 0.96
}
}
Verify X-Signature-V2 BEFORE trusting the body — HMAC SHA-256 of the raw bytes with your webhook secret.
Session status enum (exact case): Approved | Declined | In Review | Resubmitted | Expired | Not Finished | Kyc Expired | Abandoned.
Branch your application:
Approved → execute the action (sign in, release the transfer, save settings).
Declined → block the action, re-prompt with a higher-friction recovery path (support contact / KYC re-do).
In Review → hold; route to your operations queue.
Not Finished → user abandoned the capture; safe to re-prompt or fall back.
STEP 4 — Alternate path (server-to-server, when you already have the selfie)
If you already captured the selfie locally (native mobile SDK, in-app camera):
POST https://verification.didit.me/v3/face-match/
Headers:
x-api-key: <your api key>
Body (multipart/form-data):
image_a <the live selfie>
image_b <the enrolled portrait>
Response: similarity_score (0-1), status (Approved | Declined | In Review).
Use the standalone path only when you trust your client-side capture pipeline. For browser flows or any surface where the SDK is not embedded, always prefer the hosted session — Didit's liveness check is harder to defeat than a raw camera grab.
WEBHOOK EVENT NAMES
- Sessions: status changes flow through the standard session webhook.
- Always verify X-Signature-V2 on every payload.
CONSTRAINTS
- Base URL for /v3/* endpoints is verification.didit.me (NOT apx.didit.me).
- Feature enum is UPPERCASE: LIVENESS, FACE_MATCH, ID_VERIFICATION, AML, IP_ANALYSIS, AGE_ESTIMATION.
- Method enum is UPPERCASE: PASSIVE, FLASHING, ACTIVE_3D.
- Auth header is x-api-key (lowercase, hyphenated).
- Webhook signature header is X-Signature-V2 (NOT X-Signature).
- Status casing matches exactly: Approved, Declined, In Review, Expired, Not Finished, Resubmitted, Kyc Expired, Abandoned.
- The biometric template is irreversible (a one-way hash) and stored on Didit's infrastructure. You never receive the raw template. Standard data-subject-deletion rules apply.
PRO TIPS
- Pair Biometric 2FA with Device & IP Analysis (bundled into the 200+ fraud-signal stack). A re-auth that originates from a brand-new device + a brand-new IP should always step up to face.
- For the strongest possible surface, swap method PASSIVE for ACTIVE_3D — a short motion challenge — on transfers above your operational risk threshold.
Read the docs:
- https://docs.didit.me/core-technology/biometric-auth/overview
- https://docs.didit.me/sessions-api/create-session
- https://docs.didit.me/integration/webhooks
Start free at https://business.didit.me — sandbox key in 60 seconds, 500 verifications free every month, no credit card.
Butuh lebih banyak konteks? Lihat dokumen modul lengkapnya.docs.didit.me →
Sesuai dengan desain
Buka negara baru dalam satu klik. Kami melakukan pekerjaan sulit.
Kami membuka anak perusahaan lokal, mengamankan lisensi, menjalankan tes penetrasi, mendapatkan sertifikasi, dan menyelaraskan dengan setiap peraturan baru. Untuk mengirim verifikasi di negara baru, cukup aktifkan tombol. 220+ negara aktif, diaudit dan diuji penetrasi setiap kuartal — satu-satunya penyedia identitas yang secara resmi disebut oleh pemerintah negara anggota UE lebih aman daripada verifikasi langsung.
Per otentikasi, tetap. OTP SMS bervariasi $0.05 hingga $0.30 di AS.
<0s
Otentikasi ulang ujung ke ujung pada Android tingkat pemula — pengambilan ke webhook yang ditandatangani.
0
Ketergantungan operator, permukaan pertukaran SIM, atau vektor serangan SS7.
0
Verifikasi gratis setiap bulan, selamanya.
Tiga tingkatan, satu daftar harga
Mulai gratis. Bayar sesuai penggunaan. Skala ke Enterprise.
500 verifikasi gratis setiap bulan, selamanya. Bayar sesuai penggunaan untuk produksi. Kontrak khusus, residensi data, dan SLA (Service Level Agreements) di Enterprise.
Gratis
Gratis
$0 / bulan. Tidak perlu kartu kredit.
Paket KYC gratis (Verifikasi ID + Keaktifan Pasif + Pencocokan Wajah + Analisis Perangkat & IP) — 500 / bulan, setiap bulan
Pengguna yang Diblokir
Deteksi Duplikat
200+ sinyal penipuan di setiap sesi
KYC yang dapat digunakan kembali di seluruh jaringan Didit
Platform Manajemen Kasus
Pembuat Alur Kerja
Dokumen publik, sandbox, SDK, server MCP (Model Context Protocol)
Mulai gratis → bayar hanya saat pemeriksaan berjalan → buka Enterprise untuk kontrak khusus, SLA, atau residensi data.
FAQ
Pertanyaan umum
Apa itu Didit?+
Didit adalah infrastruktur untuk identitas dan penipuan — platform yang kami harapkan ada saat kami membangun produk sendiri: terbuka, fleksibel, dan ramah pengembang, sehingga berfungsi sebagai bagian nyata dari tumpukan Anda, bukan kotak hitam yang Anda integrasikan di sekitarnya.
Satu API mencakup verifikasi orang (KYC, kenali pelanggan Anda), verifikasi bisnis (KYB, kenali bisnis Anda), penyaringan dompet kripto (KYT, kenali transaksi Anda), dan pemantauan transaksi secara real time — pada tumpukan yang dibangun untuk menjadi:
Cepat — p99 kurang dari 2 detik di setiap sesi
Andal — dalam produksi dengan 1.500+ perusahaan di 220+ negara
Aman — SOC 2 Tipe 1, ISO 27001, GDPR-native, dan secara resmi diakui oleh regulator keuangan Spanyol lebih aman daripada memverifikasi seseorang secara langsung
Jejak di bawahnya: 14.000+ jenis dokumen dalam 48+ bahasa, 1.000+ sumber data, dan 200+ sinyal penipuan di setiap sesi. Infrastruktur Didit secara dinamis belajar dari setiap sesi dan menjadi lebih baik setiap hari.
Apa itu 2FA biometrik?+
Autentikasi faktor kedua menggunakan wajah pengguna, bukan kode yang dikirim melalui jaringan. Faktor pertama adalah apa yang diketahui pengguna (kata sandi, passkey, tautan ajaib). Faktor kedua adalah apa yang ada pada pengguna — selfie langsung yang dicocokkan 1:1 dengan potret yang didaftarkan pengguna sebelumnya.
Ini berada di tempat yang sama dengan kata sandi satu kali (OTP) SMS dalam alur aplikasi Anda, tetapi dengan biaya, keamanan, dan profil konversi yang berbeda.
Mengapa kata sandi satu kali SMS dianggap lemah?+
Empat kelas serangan yang terdokumentasi dengan baik mengalahkannya. Federal Bureau of Investigation (FBI) AS dan National Cyber Security Centre (NCSC) Inggris keduanya telah menerbitkan panduan yang mengarahkan organisasi menjauh dari SMS untuk alur sensitif.
SIM swap. Penyerang meyakinkan operator untuk memindahkan nomor pengguna ke SIM baru. Setiap kode sekarang masuk ke penyerang.
Phishing OTP. Penyerang memproksi situs yang sah, menangkap kode saat pengguna mengetiknya, memutarnya kembali sebelum kedaluwarsa.
Smishing kits. Kit yang sudah jadi menjalankan ribuan teks pengiriman / bank palsu yang menangkap kode dalam skala besar.
Penyadapan Signalling System 7 (SS7). Musuh dengan akses operator dapat secara pasif membaca kode dari jaringan.
Seberapa cepat verifikasi untuk pengguna akhir saya?+
Alur lengkap biasanya memakan waktu kurang dari 30 detik dari awal hingga akhir — ambil ID, jepret dokumen, jepret selfie, selesai. Itu yang tercepat di pasar. Penyedia KYC lama biasanya memakan waktu lebih dari 90 detik untuk alur yang sama.
Di bagian belakang, Didit mengembalikan hasilnya dalam kurang dari dua detik pada p99, diukur dari saat pengguna selesai mengambil selfie hingga saat webhook Anda aktif. Pengambilan seluler disesuaikan untuk ponsel lambat dan jaringan lambat: kompresi gambar progresif, pemuatan SDK yang lambat, dan penyerahan satu ketukan dari desktop ke ponsel melalui kode QR jika pengguna memulai di web.
Bagaimana wajah pengguna sebenarnya "didaftarkan"?+
Sebagian besar tim mendaftar selama sesi Know Your Customer (KYC) asli pengguna. Potret yang diambil oleh langkah keaktifan disimpan terikat pada vendor_data Anda dan digunakan sebagai templat untuk setiap autentikasi ulang berikutnya.
Jika Anda tidak menjalankan KYC saat pendaftaran, Anda dapat menjalankan sesi pendaftaran satu kali terhadap alur kerja Didit yang hanya berisi LIVENESS + FACE_MATCH. Salah satu jalur berharga $0.10 sekali, dan templat yang dihasilkan dapat digunakan kembali untuk setiap autentikasi di masa mendatang.
Apa yang terjadi jika pengguna gagal, membatalkan, atau kedaluwarsa?+
Setiap sesi berakhir pada salah satu dari tujuh status yang jelas, sehingga kode Anda selalu tahu apa yang harus dilakukan:
Approved — setiap pemeriksaan lulus. Lanjutkan pengguna.
Declined — satu atau lebih pemeriksaan gagal. Anda dapat mengizinkan pengguna untuk mengirim ulang langkah yang gagal (misalnya, mengambil ulang selfie) tanpa menjalankan ulang seluruh alur.
In Review — ditandai untuk peninjauan kepatuhan. Buka kasus di konsol, lihat setiap sinyal, putuskan setujui atau tolak.
In Progress — pengguna sedang dalam alur.
Not Started — tautan terkirim, pengguna belum membukanya. Kirim pengingat jika terlalu lama.
Abandoned — pengguna membuka tautan tetapi tidak selesai tepat waktu. Libatkan kembali atau kedaluwarsa.
Expired — tautan sesi sudah kedaluwarsa. Buat sesi baru.
Webhook yang ditandatangani aktif pada setiap perubahan status, sehingga database Anda selalu sinkron. Sesi yang ditinggalkan dan ditolak gratis.
Di mana data pelanggan saya berada dan bagaimana cara melindunginya?+
Data produksi diproses dan disimpan di Uni Eropa secara default, di Amazon Web Services. Kontrak perusahaan dapat meminta wilayah alternatif untuk yurisdiksi yang regulatornya memerlukannya.
Enkripsi di mana-mana. AES-256 saat tidak aktif di setiap database, penyimpanan objek, dan cadangan. Transport Layer Security 1.3 dalam transit pada setiap panggilan API, webhook, dan sesi Konsol Bisnis. Data biometrik dienkripsi di bawah Customer Master Key terpisah.
Retensi adalah milik Anda untuk dikontrol. Retensi default adalah tidak terbatas (tak terbatas) kecuali Anda mengonfigurasi yang lebih pendek — antara 30 hari dan 10 tahun per aplikasi — dan Anda dapat menghapus sesi individual kapan saja dari dasbor atau API.
Sertifikasi: SOC 2 Tipe 1 (audit Tipe 2 sedang berlangsung), ISO/IEC 27001:2022, iBeta Level 1 PAD, dan pengesahan publik dari Tesoro / SEPBLAC / CNMV Spanyol bahwa verifikasi identitas jarak jauh Didit lebih aman daripada memverifikasi seseorang secara langsung. Laporan lengkap di /security-compliance.
Apakah Didit sesuai untuk industri saya?+
Didit sesuai secara default untuk regulator yang penting bagi infrastruktur identitas:
GDPR + UK GDPR — pemisahan pengontrol / pemroses, Perjanjian Pemrosesan Data lengkap diterbitkan, otoritas pengawas utama disebutkan (AEPD Spanyol).
AMLD6 + EU AML Single Rulebook — 1.300+ sanksi, orang yang terpapar politik, dan daftar media yang merugikan disaring secara real time.
eIDAS 2.0 — Dompet Identitas Digital UE selaras; siap untuk identitas yang dapat digunakan kembali.
MiCA (Markets in Crypto-Assets) — siap untuk on-ramp kripto, bursa, dan kustodian.
DORA — Digital Operational Resilience Act, ketahanan operasional layanan keuangan UE.
BIPA, CUBI, Washington HB 1493, CCPA / CPRA — privasi biometrik AS (Illinois, Texas, Washington) dan privasi konsumen California.
UK Online Safety Act — kewajiban pembatasan usia dan keamanan anak.
FATF Travel Rule — data originator dan penerima pada transfer kripto, interoperable IVMS-101.
Memo terperinci, setiap sertifikat, setiap surat regulator: /security-compliance.
Seberapa cepat saya dapat mengintegrasikan dan mulai memverifikasi pengguna?+
Ini adalah drop-in untuk kontrak callback kata sandi satu kali Anda yang sudah ada.
POST /v3/session/ dengan workflow_type: "biometric_authentication" dan vendor_data yang sama yang Anda gunakan saat pendaftaran.
Arahkan ulang pengguna ke session_url yang dikembalikan.
Verifikasi header X-Signature-V2 pada webhook sebelum mempercayai isinya.
Cabang pada status — Approved (jalankan tindakan), Declined (blokir), In Review (antrean), Not Finished (minta ulang).
Sebagian besar tim menukar SMS dengan wajah dalam satu akhir pekan. Prompt yang dapat ditempel agen lengkap ada di atas; server Model Context Protocol (MCP) berbicara di kedua permukaan.
Bagaimana jika wajah pengguna berubah (potongan rambut, janggut, kacamata)?+
Pencocokan Wajah 1:1 kuat terhadap perubahan penampilan moderat — rambut wajah, kacamata, warna rambut, pencahayaan. Skor kemiripan yang dikembalikan per autentikasi mencerminkan seberapa yakin model tersebut.
Untuk pengguna yang melampaui ambang batas persetujuan otomatis (kasus tipikal: perubahan berat badan yang drastis, operasi, penuaan selama bertahun-tahun), keputusan mengembalikan In Review dan mengarah ke antrean operasi Anda. Jalur pemulihan standar adalah sesi pendaftaran ulang — satu panggilan KYC menyegarkan potret, dan autentikasi berikutnya menggunakan templat baru.
Apakah ini sesuai dengan autentikasi pelanggan kuat PSD2 UE?+
Ya untuk kategori inherence. Standar Teknis Regulasi Otoritas Perbankan Eropa tentang Autentikasi Pelanggan Kuat mengakui atribut biometrik (sesuatu yang Anda miliki) sebagai faktor kedua yang valid ketika dipasangkan dengan salah satu dari dua kategori lainnya (pengetahuan atau kepemilikan).
Untuk alur autentikasi pelanggan kuat PSD2 lengkap, pasangkan 2FA biometrik dengan kata sandi pengguna (pengetahuan) atau sesi terikat perangkat (kepemilikan). Keputusan Didit yang ditandatangani adalah bukti paket audit dari faktor inherence.