> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Guatemala - DPI + face match (RENAP)

> Verifies a Guatemalan CUI against the national register (RENAP) and matches the applicant's selfie against the official RENAP photo, comparing the holder's names and date of birth with the register's record. Authoritative real-time identity lookup for Guatemala. Real-time lookup, pay-per-call.

<div hidden data-didit-db-validation-defaults="{&#x22;issuing_state&#x22;:&#x22;GTM&#x22;,&#x22;services&#x22;:&#x22;gtm_dpi_facial&#x22;,&#x22;consent&#x22;:&#x22;true&#x22;,&#x22;document_number&#x22;:&#x22;1234567890101&#x22;,&#x22;first_name&#x22;:&#x22;John&#x22;,&#x22;last_name&#x22;:&#x22;Doe&#x22;,&#x22;date_of_birth&#x22;:&#x22;1990-01-01&#x22;,&#x22;vendor_data&#x22;:&#x22;user-1234&#x22;}" />

Verifies a Guatemalan CUI against the national register (RENAP) and matches the applicant's selfie against the official RENAP photo, comparing the holder's names and date of birth with the register's record. Didit exposes this service through `POST /v3/database-validation/` so you can verify the submitted data against the authoritative source and receive normalized match results.

## Coverage

* **Coverage:** \~ 100%
* **Country:** Guatemala
* **Service ID:** `gtm_dpi_facial`
* **Data domain:** Biometric
* **Category:** NationalIDRegistry

## Inputs

| Field | Required | Example |
| - | -: | - |
| `document_number` | Yes | `1234567890101` |
| `selfie` | Yes | `@./selfie.jpg` |
| `first_name` | No | `John` |
| `last_name` | No | `Doe` |
| `date_of_birth` | No | `1990-01-01` |
| `vendor_data` | No | `user-1234` |

* **Required inputs:** `document_number`, `selfie`
* **Optional inputs:** `first_name`, `last_name`, `date_of_birth`, `vendor_data`
* **Consent:** Required
* **Workflow availability:** Available in workflow
* **Coverage:** \~ 100%
* **Price:** \$0.35 per successful query

## Body parameters

<ParamField body="issuing_state" type="string" required default="GTM" placeholder="GTM">
  ISO 3166-1 alpha-3 country code for this database service.

  Example: `GTM`
</ParamField>

<ParamField body="services" type="string" required default="gtm_dpi_facial" placeholder="gtm_dpi_facial">
  Array containing this service ID. Pinning the service keeps the request scoped to this exact database.

  Example: `gtm_dpi_facial`
</ParamField>

<ParamField body="consent" type="boolean" required default="true" placeholder="true">
  Explicit end-user consent for this service.

  Example: `true`
</ParamField>

<ParamField body="document_number" type="string" required default="1234567890101" placeholder="1234567890101">
  Document number extracted from or provided by the user.

  Example: `1234567890101`
</ParamField>

<ParamField body="selfie" type="file" required placeholder="@./selfie.jpg">
  Selfie image file to upload for biometric database validation. Accepted formats: JPEG, PNG, or WebP.

  Example: `@./selfie.jpg`
</ParamField>

<ParamField body="first_name" type="string" default="John" placeholder="John">
  Given name to validate.

  Example: `John`
</ParamField>

<ParamField body="last_name" type="string" default="Doe" placeholder="Doe">
  Family name to validate.

  Example: `Doe`
</ParamField>

<ParamField body="date_of_birth" type="string" default="1990-01-01" placeholder="1990-01-01">
  Date of birth in `YYYY-MM-DD` format.

  Example: `1990-01-01`
</ParamField>

<ParamField body="vendor_data" type="string" default="user-1234" placeholder="user-1234">
  Your stable user reference for this person, such as your internal user ID. Didit uses it to link standalone checks to the same end user and reduce duplicate-detection noise.

  Example: `user-1234`
</ParamField>

## Input rules & validation notes

* Guatemalan DPI (exactly 13 digits)
* `document_number` must contain digits only; remove spaces, hyphens, and punctuation before sending the request.
* `document_number` must be exactly 13 characters long.
* `document_number` must match `\d{13}`.

## How to call it

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://verification.didit.me/v3/database-validation/" \
    -H "x-api-key: YOUR_API_KEY" \
    -F "issuing_state=GTM" \
    -F "services=gtm_dpi_facial" \
    -F "vendor_data=user-1234" \
    -F "consent=true" \
    -F "document_number=1234567890101" \
    -F "selfie=@./selfie.jpg" \
    -F "first_name=John" \
    -F "last_name=Doe" \
    -F "date_of_birth=1990-01-01"
  ```
</RequestExample>

<ResponseExample>
  Every successful call returns HTTP `200`. The **`outcome_code`** field tells you what actually happened — distinguishing, for example, a real biometric mismatch (`BIOMETRIC_NO_MATCH`) from a selfie that could not be read (`BIOMETRIC_IMAGE_UNUSABLE`). The `status` shown is the default feature status; your configured [Partial Match / No Match actions](/core-technology/database-validation/database-validation-warnings) can override it.

  **`MATCH`** — The registry confirmed the identity and every checked field matched.

  ```json 200 OK — MATCH theme={null}
  {
    "request_id": "req_01H…",
    "status": "Approved",
    "issuing_state": "GTM",
    "match_type": "full_match",
    "validations": [
      {
        "outcome_code": "MATCH",
        "service_id": "gtm_dpi_facial",
        "service_name": "Guatemala - DPI + face match (RENAP)",
        "source_data": {
          "date_of_birth": "1990-01-01",
          "document_expiration_date": "2031-11-24",
          "face_match": true,
          "face_match_score": 98.5,
          "first_name": "JOHN",
          "full_name": "JOHN DOE",
          "gender": "M",
          "identification_number": "1234567890101",
          "last_name": "DOE"
        },
        "validation": {
          "date_of_birth": "full_match",
          "full_name": "full_match",
          "identification_number": "full_match"
        }
      }
    ]
  }
  ```

  **`PARTIAL_MATCH`** — The identification number was found but one or more personal fields (usually name or date of birth) did not fully match.

  ```json 200 OK — PARTIAL_MATCH theme={null}
  {
    "request_id": "req_01H…",
    "status": "In Review",
    "issuing_state": "GTM",
    "match_type": "partial_match",
    "validations": [
      {
        "outcome_code": "PARTIAL_MATCH",
        "service_id": "gtm_dpi_facial",
        "service_name": "Guatemala - DPI + face match (RENAP)",
        "source_data": {
          "date_of_birth": "1990-01-01",
          "document_expiration_date": "2031-11-24",
          "face_match": true,
          "face_match_score": 98.5,
          "first_name": "JOHN",
          "full_name": "JOHN DOE",
          "gender": "M",
          "identification_number": "1234567890101",
          "last_name": "DOE"
        },
        "validation": {
          "date_of_birth": "full_match",
          "full_name": "no_match",
          "identification_number": "full_match"
        }
      }
    ]
  }
  ```

  **`NO_MATCH`** — The registry returned no match for the submitted data.

  ```json 200 OK — NO_MATCH theme={null}
  {
    "request_id": "req_01H…",
    "status": "Declined",
    "issuing_state": "GTM",
    "match_type": "no_match",
    "validations": [
      {
        "outcome_code": "NO_MATCH",
        "service_id": "gtm_dpi_facial",
        "service_name": "Guatemala - DPI + face match (RENAP)",
        "source_data": {
          "date_of_birth": "NO_MATCH",
          "full_name": "NO_MATCH",
          "identification_number": "NO_MATCH"
        },
        "validation": {
          "date_of_birth": "no_match",
          "full_name": "no_match",
          "identification_number": "no_match"
        }
      }
    ]
  }
  ```

  **`BIOMETRIC_NO_MATCH`** — The face-match score was below the acceptance threshold - the selfie is not the same person as the registry photo.

  ```json 200 OK — BIOMETRIC_NO_MATCH theme={null}
  {
    "request_id": "req_01H…",
    "status": "Declined",
    "issuing_state": "GTM",
    "match_type": "no_match",
    "validations": [
      {
        "outcome_code": "BIOMETRIC_NO_MATCH",
        "service_id": "gtm_dpi_facial",
        "service_name": "Guatemala - DPI + face match (RENAP)",
        "source_data": {
          "date_of_birth": "NO_MATCH",
          "face_match": false,
          "face_match_score": 0,
          "first_name": "NO_MATCH",
          "identification_number": "NO_MATCH",
          "last_name": "NO_MATCH"
        },
        "validation": {
          "date_of_birth": "no_match",
          "full_name": "no_match",
          "identification_number": "no_match"
        }
      }
    ]
  }
  ```

  **`DOCUMENT_NOT_FOUND`** — The submitted document number does not correspond to any record in the registry.

  ```json 200 OK — DOCUMENT_NOT_FOUND theme={null}
  {
    "request_id": "req_01H…",
    "status": "Declined",
    "issuing_state": "GTM",
    "match_type": "no_match",
    "validations": [
      {
        "outcome_code": "DOCUMENT_NOT_FOUND",
        "service_id": "gtm_dpi_facial",
        "service_name": "Guatemala - DPI + face match (RENAP)",
        "source_data": {
          "date_of_birth": "NO_MATCH",
          "full_name": "NO_MATCH",
          "identification_number": "NO_MATCH"
        },
        "validation": {
          "date_of_birth": "no_match",
          "full_name": "no_match",
          "identification_number": "no_match"
        }
      }
    ]
  }
  ```

  **`DECEASED`** — The identity matched, but the registry flags the person as deceased.

  ```json 200 OK — DECEASED theme={null}
  {
    "request_id": "req_01H…",
    "status": "In Review",
    "issuing_state": "GTM",
    "match_type": "full_match",
    "validations": [
      {
        "outcome_code": "DECEASED",
        "service_id": "gtm_dpi_facial",
        "service_name": "Guatemala - DPI + face match (RENAP)",
        "source_data": {
          "date_of_birth": "1990-01-01",
          "document_expiration_date": "2031-11-24",
          "face_match": true,
          "face_match_score": 98.5,
          "first_name": "JOHN",
          "full_name": "JOHN DOE",
          "gender": "M",
          "identification_number": "1234567890101",
          "last_name": "DOE"
        },
        "validation": {
          "date_of_birth": "full_match",
          "full_name": "full_match",
          "identification_number": "full_match"
        }
      }
    ]
  }
  ```
</ResponseExample>

## Returned data

The exact fields surfaced in `source_data` depend on what the registry returns. The generated example for `gtm_dpi_facial` currently documents this normalized shape:

* `date_of_birth`
* `document_expiration_date`
* `face_match`
* `face_match_score`
* `first_name`
* `full_name`
* `gender`
* `identification_number`
* `last_name`

## Pricing & SLAs

Guatemala - DPI + face match (RENAP) queries are billed only when Didit receives a conclusive result from the validation source.

* **Per-call price:** \$0.35 USD.
* **Billing:** per successful query. You are not charged when the registry is unreachable, when required fields are missing, or when the request is rejected before reaching the source.
* **Latency:** typical p95 \< 2 s.
* **Availability:** 99.9% per quarter on Didit's side; downstream source availability varies by country and dataset.

## Continue reading

* [Guatemala Database Validation overview](/api-reference/database-validation/guatemala)
* [Database Validation overview](/core-technology/database-validation/overview)
* [Outcome Codes](/core-technology/database-validation/database-validation-outcome-codes)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.