IDVC is an advanced API endpoint used to perform Comprehensive KYC (Know Your Customer) verification based on national identity attributes in Indonesia, including NIK, full name, date of birth, and selfie verification with liveness confidence score.
Supported Verification:
- Verifies the user’s NIK, Full Name, DOB and Selfie Photo.
- The selfie photo in this service is further analyzed to confirm its authenticity, ensuring it has not been modified or manipulated.
- This comprehensive verification includes both data verification and a selfie liveness check to ensure the legitimacy of the provided photo as well as its correspondence with citizenship records.
- IDVC provides comprehensive verification, including a detailed analysis of the selfie to confirm its authenticity, prevent manipulation, and verify it against citizenship records. For detailed pricing information, please contact BOIVA directly.
Request Parameters
Key Parameters | Data Type | Description | Required |
---|---|---|---|
Authorization | String | Public Access Token | Yes |
type | String | Supported type verification. Use IDVC | Yes |
ktp | String | User's NIK (ID Number) to be verified against citizenship data | Yes |
fullname | String | User's fullname to be verified against citizenship data | Yes |
birth_date | String | Format: yyyy-mm-dd . If omitted, derived from NIK | Optional |
birth_place | String | User's birth place to be verified against citizenship data | Optional |
selfie_photo | String | User's selfie photo to be verified against citizenship data in Base64 format | Yes |
⚠️ If birth_date is not sent, the system will derive it from the NIK. If there’s a mismatch with official records, the response may include normalized = true.
Response Parameters
Field | Type | Description |
---|---|---|
ktp | Boolean | Whether the NIK matches government records |
fullname | Boolean | Whether the full name matches government records |
birth_date | Boolean | Whether the birth date matches (or is derived and matches) |
birth_place | Boolean | Whether the birth place matches government records (if requested) |
gender | String | 1 for Male, 0 for Female (status = Boolean ) |
address | String | Address generated from NIK |
selfie_photo | Boolean | Whether the selfie photo matches the official image |
selfie_liveness | Float | Confidence score for the selfie liveness result (range: 0.0 - 1.0) |
normalized | Boolean | true if the date of birth was derived from NIK and did not match |
Understanding
selfie_liveness
Liveness detection ensures that the selfie used for verification is from a real, live person — not a photo, video, or mask.
BOIVA uses passive liveness, which:
- Runs in the background during selfie submission
- Requires no action (no blinking or head movement)
- Detects spoof attempts like printed photos or deepfakes
ℹ️ What does confidence score mean?
- A score of 0 means maximum liveness (most likely a real person)
- A score of 1 means minimum liveness (most likely a spoof)
- The result of the liveness check (true or false) is determined by whether the score passes a pre-set liveness threshold
Example Scenario:
If the threshold is 0.5, then a selfie with a score of 0.18 will pass liveness check.
Understanding
normalized
The normalized field indicates a potential discrepancy between the user-provided or system-derived birth date and the official government records.
This situation may arise when:
- The population registry has updated or corrected a citizen's birth record (e.g., from Dukcapil).
- The client does not send a birth_date, and the system attempts to derive it from the NIK.
- The inferred date based on the NIK structure differs from the actual official birth date.
ℹ️ Statistically, this occurs in approximately 6–8% of verification cases and is considered normal, especially for older or previously migrated registry data.
Example Scenario:
You send only NIK and Full Name without birth_date.
The system derives the birth date from NIK → compares it to official data → mismatch → normalized = true.
Decision Table
NIK Match | Fullname Match | Birth Date Sent | Birth Date Match | normalized |
---|---|---|---|---|
✅ | ✅ | ❌ | ❌ (derived) | true |
✅ | ✅ | ✅ | ✅ | (no return) |
✅ | ✅ | ✅ | ❌ | (no return) |
✅ | ✅ | ❌ | ✅ (derived) | false |
Guidelines for Selfie Verification
To ensure accurate verification, please adhere to the following guidelines when submitting a selfie photo:
- Lighting and Positioning:
- Ensure adequate lighting to clearly capture facial features.
- Position the face level with the camera, keeping the head centered in the frame.
- Distance and Background:
- Maintain a moderate distance from the camera — not too close and not too far.
- Use a plain, uncluttered background to minimize distractions.
- Appearance and Accessories:
- Avoid wearing accessories that may obscure facial features (e.g., sunglasses, masks).
- If wearing a hijab, ensure that the forehead and cheeks are visible.
- Photo Authenticity:
- The person in the selfie must be the same as the individual associated with the NIK data submitted.
- The photo must not be altered or digitally modified.
- Image Specifications:
- Accepted formats: jpg, jpeg, png.
- Maximum file size: 5MB.
- Image Dimensions and Cropping:
- Minimum dimensions: 800px width x 600px height.
- If the submitted photo is larger than the required dimensions, the system will automatically crop from the center: 300px Up, 300px Down, 400px Left, and 400px Right.
- Photos smaller than the specified dimensions will be rejected.
Adhering to these guidelines will ensure optimal processing and accurate verification of the submitted selfie photo. For further assistance, please contact Brick support.
Example Photo

Correct Image - Forward-facing photo, clear and good lighting

Incorrect Image - Not clear and bad lighting