200 with isValid set to false.
Values are case-sensitive. transactionId and createdAt are generated per request, and metadata is echoed back from your request. See Sandbox introduction for the full matching rules.
Verified
VERIFIED — NIK, name and date of birth match
VERIFIED — NIK, name and date of birth match
RequestResponse — HTTP
200VERIFIED — Identity and optional fields match
VERIFIED — Identity and optional fields match
RequestResponse — HTTP Optional fields are checked against the Dukcapil record but are not echoed in the response. Send them exactly as shown — this payload only matches with both
200placeOfBirth and gender present.Review needed
REVIEW_NEEDED — Core identity matches, optional field does not
REVIEW_NEEDED — Core identity matches, optional field does not
RequestResponse — HTTP NIK, name and date of birth matched, but an optional field you sent (here
200noKk) did not. isValid is false because only VERIFIED counts as valid — branch on verificationStatus to route these to manual review.Rejected
A rejection is a completed verification, not an error:success is true and HTTP status is 200. In live mode a rejection is billed.
REJECTED — Name does not match
REJECTED — Name does not match
RequestResponse — HTTP
200REJECTED — Date of birth does not match
REJECTED — Date of birth does not match
RequestResponse — HTTP
200REJECTED — Not verified, unmatched payload fallback
REJECTED — Not verified, unmatched payload fallback
RequestResponse — HTTP This NIK matches no documented scenario, so it takes the no-match fallback. Worth firing once to confirm that an unknown NIK never reaches live Dukcapil.
200Validation failures
All validation failures return HTTP400 with code set to VALIDATION_FAILED and the same message; only errors differs. Validation runs before any fixture matching, so these behave identically in sandbox and live. transactionId is null and no transaction row is written.
VALIDATION_FAILED — NIK missing
VALIDATION_FAILED — NIK missing
RequestResponse — HTTP
400VALIDATION_FAILED — NIK not 16 digits
VALIDATION_FAILED — NIK not 16 digits
RequestResponse — HTTP
400VALIDATION_FAILED — Name missing
VALIDATION_FAILED — Name missing
RequestResponse — HTTP
400VALIDATION_FAILED — Date of birth missing
VALIDATION_FAILED — Date of birth missing
RequestResponse — HTTP
400VALIDATION_FAILED — Trust flow fields sent to a stateless endpoint
VALIDATION_FAILED — Trust flow fields sent to a stateless endpoint
RequestResponse — HTTP
400Source unavailable
Account-level responses
A missing or invalidAuthorization header returns HTTP 401, and an account without the dukcapil plan returns HTTP 403 — both enforced in sandbox exactly as in live. See Sandbox introduction for their envelopes.
