Skip to main content
When you run a Database Validation, you get back two layers of result:
  1. A standard outcome code that works the same way across every supported country, so you can write one piece of handling logic that covers all of them.
  2. An optional country-specific detail code that tells you exactly which condition the government registry returned — useful for support, analytics, and deciding whether to prompt the user to retry.
This page lists every value you can see and tells you how to react to each one.

Standard outcome codes

These codes are identical across every country. Build your review, decline, and retry logic on top of these — not on the per-country detail codes.
Outcome codeMeaningRetryable?Recommended handling
MATCHThe registry confirmed the identity and every checked field matched.Approve.
PARTIAL_MATCHThe identification number was found but one or more personal fields did not fully match (usually name or date of birth).Send to review or configure a Partial Match Action to auto-decline.
NO_MATCHThe registry returned no match for the submitted data.NoDecline, or send to review depending on your policy.
DOCUMENT_NOT_FOUNDThe identification number is syntactically valid but does not exist in the government registry.NoDecline.
INVALID_DOCUMENT_FORMATThe submitted identification number is malformed (wrong length, non-numeric, bad checksum).NoAsk the user to re-enter their document number.
INVALID_INPUTA required input field (selfie, gender, date of birth, etc.) was missing or malformed.NoAsk the user to resubmit the missing field. The session will automatically reprocess once the data is provided — see COULD_NOT_PERFORM_DATABASE_VALIDATION.
MINOR_BLOCKEDThe registry withheld the record because the subject is a minor. Applies in jurisdictions with data-protection laws for minors (Brazil LGPD, Argentina).NoDecline. Respect the local legal framework — do not retry.
DECEASEDThe registry reports that the subject is deceased.NoDecline.
BIOMETRIC_NO_MATCHFor biometric validations (Argentina, Panama), the face-match score was below the acceptance threshold.NoDecline, or send to review.
BIOMETRIC_IMAGE_UNUSABLEThe selfie could not be processed — image was empty, had no face, had low quality, or the registry could not read it.YesPrompt the user to retake the selfie.
REGISTRY_UNAVAILABLEThe government registry is temporarily unreachable (timeout, connectivity error, upstream 5xx).YesRetry after a short delay. Didit already retries transient errors automatically, so seeing this in the final report means the retries were exhausted.
REGISTRY_ERRORThe registry returned an unexpected failure that does not fit any of the buckets above.MaybeEscalate to support with the detail code.
The outcome_code lives inside each entry of the validations array on the validation report. See Database Validation Report for where it fits in the response.

Country-specific detail codes

The detail code is returned as outcome_detail alongside outcome_code. Only countries listed below produce detail codes beyond the standard outcome — every other supported country returns the standard codes only.

Argentina (RENAPER)

Argentina uses a biometric 1×1 validation against the RENAPER national identity registry, combining the DNI, a selfie, and declared gender.
Detail codeStandard outcomeWhat it means
300INVALID_DOCUMENT_FORMATThe DNI field must be a 7–8 digit number.
301DOCUMENT_NOT_FOUNDThe submitted DNI does not match a valid record.
303INVALID_INPUTThe selfie field was empty.
304INVALID_INPUTThe gender field was empty or not one of M, F, X.
305NO_MATCHThe DNI and gender combination was not found.
306REGISTRY_UNAVAILABLEThe query cannot be carried out at this time.
307REGISTRY_UNAVAILABLEError connecting to the public identity validation system.
311REGISTRY_ERRORThe integration does not have access to this product.
313MINOR_BLOCKEDThe record belongs to an underage person.
400REGISTRY_UNAVAILABLEConnection error.
401NO_MATCHNo results found for the provided data.
405BIOMETRIC_IMAGE_UNUSABLEConflict with the image; it cannot be processed.
406BIOMETRIC_IMAGE_UNUSABLEError in image processing.
NO.HITBIOMETRIC_NO_MATCHThe face-match score was below the acceptance threshold (< 50).
INTERNAL_ERRORREGISTRY_UNAVAILABLETimeout exceeded.

Brazil (Receita Federal — Consulta CPF)

Brazil validates the CPF against the Receita Federal’s official CPF service, with explicit handling for minors under the LGPD (Lei Geral de Proteção de Dados) and the Children’s and Adolescents’ Digital Statute.
Detail codeStandard outcomeWhat it means
200MATCHCPF found and data returned successfully.
206MATCHCPF found, but some non-essential fields were not returned.
400INVALID_DOCUMENT_FORMATCPF number is not valid.
404DOCUMENT_NOT_FOUNDNo CPF exists with the submitted number.
422MINOR_BLOCKEDData for a minor under 18 is withheld per LGPD (Law 13.709/2018). The response includes minor_under_18: true.
451MINOR_BLOCKEDData for a minor under 16 is withheld per LGPD and the Children’s and Adolescents’ Digital Statute (Law 15.211/2025). The response includes minor_under_18: true and minor_under_16: true.
500REGISTRY_UNAVAILABLEUpstream server error.
504REGISTRY_UNAVAILABLEGateway timeout — the request did not reach the Consulta CPF API.
For MINOR_BLOCKED outcomes in Brazil, source_data still returns the lgpd_minor, minor_under_18, and minor_under_16 flags so you can apply age-appropriate flows without retrying.

Panama (SIB — Tribunal Electoral)

Panama uses biometric validation against the SIB (Servicio de Identificación Biométrica) registry operated by the Tribunal Electoral. If a technical SIB error occurs, the session falls back to a 1×1 lookup automatically.
Detail codeStandard outcomeWhat it means
601REGISTRY_UNAVAILABLEOperator does not exist in the database.
602MINOR_BLOCKEDCitizen is under 12 years old.
603DECEASEDCitizen is deceased.
604NO_MATCHCitizen has an invalid registration.
605NO_MATCHCitizen not recognized.
606INVALID_INPUTCédula field is empty.
607DOCUMENT_NOT_FOUNDCitizen not found.
608REGISTRY_ERRORNo SIB access for this client.
610BIOMETRIC_IMAGE_UNUSABLEGeneral facial validation error.
611BIOMETRIC_IMAGE_UNUSABLEImage for comparison was not sent.
612BIOMETRIC_IMAGE_UNUSABLEImage has no content.
613BIOMETRIC_IMAGE_UNUSABLEInvalid image format.
614BIOMETRIC_IMAGE_UNUSABLENo face detected in the image.
615BIOMETRIC_NO_MATCHSimilarity threshold not reached.

Other supported countries

The countries below return the standard outcome codes only — there are no country-specific detail codes to handle.
  • Bolivia, Colombia, Costa Rica, El Salvador, Guatemala, Honduras, Paraguay, Spain, Uruguay, Venezuela — 1×1 lookup against the corresponding civil registry. Results map directly to MATCH, NO_MATCH, DOCUMENT_NOT_FOUND, INVALID_DOCUMENT_FORMAT, or REGISTRY_UNAVAILABLE.
  • Chile (Registro Civil) — RUT lookup. Maps to the standard outcomes plus MINOR_BLOCKED when the registry flags an underage record.
  • Dominican Republic (JCE) — Cédula lookup that returns a boolean validity; maps to MATCH or NO_MATCH.
  • Ecuador (Registro Civil) — Cédula lookup.
  • Mexico (RENAPO, plus INE for 2×2) — CURP lookup via RENAPO. When validation_type is two_by_two, an additional INE cross-reference runs; both feed into the same standard outcome codes.
  • Peru (RENIEC) — DNI lookup.

Handling recipe

The simplest robust handler looks like this:
switch (result.outcome_code) {
  case "MATCH":
    return approve();
  case "PARTIAL_MATCH":
    return review();
  case "NO_MATCH":
  case "DOCUMENT_NOT_FOUND":
  case "DECEASED":
  case "MINOR_BLOCKED":
  case "BIOMETRIC_NO_MATCH":
    return decline();
  case "INVALID_DOCUMENT_FORMAT":
  case "INVALID_INPUT":
    return askUserToFixInput(result.outcome_detail);
  case "BIOMETRIC_IMAGE_UNUSABLE":
    return askUserToRetakeSelfie();
  case "REGISTRY_UNAVAILABLE":
  case "REGISTRY_ERROR":
    return review();  // Didit already retried; a human can decide.
  default:
    return review();
}
You don’t need to branch on outcome_detail for business logic — use it for analytics, debugging, and support tickets. The standard outcome_code is guaranteed to stay stable across countries and over time.

See also