Overview
In sandbox, when you create a KYC validation for a person entity, the API can return an immediate mock result based on the entity’s taxId (document number). No external verification is performed; the response and webhooks match the outcome associated with that document in our test set.
This lets you test all flows (approved, rejected, cancelled, RENAPER double-check, etc.) without going through a real verification.
Configure a webhook to receive responses!In sandbox, KYC results are updated asynchronously (same as production). While the API returns 201 immediately after creating the validation, the final result (approved, rejected, etc.) is sent via webhooks moments later.You must configure a webhook endpoint in your organization to receive validation notifications. Without a configured webhook, you won’t receive status updates.📚 Learn to set up webhooks: Webhook integration
Format does not matter. The entity’s taxId can be sent with or without formatting (e.g. 99.990.001 or 99990001). The API normalizes it before matching, so both work the same.
How it works
- The person entity belongs to an organization that is in sandbox mode.
- You call POST /api/kyc/validations with that entity’s
entityId.
- The API looks up the entity’s taxId in the sandbox test map (after normalizing: digits and letters only).
- If there is a match, a mock validation is created with
pending status (201 Created) and moments later it’s updated to the final status (e.g. approved, rejected, cancelled).
- Webhooks are sent to your configured endpoint with the final result.
- If there is no match, the API follows the normal flow (creates a real verification session and returns
providerSessionUrl).
Asynchronous flow: The sandbox behavior exactly replicates the production flow, which is asynchronous. The validation is created in pending state, then updated and notified via webhook. Do not attempt immediate polling to the GET endpoint after creating the validation - use webhooks to receive the result.
RENAPER in sandbox: If you send doubleCheckRenaper: true when creating the validation and the outcome is approved (or a RENAPER-related rejection), the response and webhook payload will include metadata.responseDoubleChecks.renaper with the same structure as in production.
Default test values
We provide a fixed set of test document numbers in four formats. Each number maps to one outcome. The lookup key is the normalized value (no dots, dashes, or spaces).
Outcome list (what each number returns)
| # | Outcome | Result |
|---|
| 01 | approved | KYC approved. If you requested RENAPER double-check, the response includes RENAPER success. |
| 02 | approved_with_renaper | Same as approved; RENAPER in the response only if requested in the creation. |
| 03 | cancelled | Validation cancelled. |
| 04 | rejected | Generic rejection. |
| 05 | rejected_document_mismatch | Rejection due to document number not matching the entity. |
| 06 | rejected_renaper_tramite_not_match | Rejection: transaction number does not match registry. |
| 07 | rejected_renaper_dni_not_match | Rejection: document number does not match registry. |
| 08 | rejected_renaper_verification_unavailable | Rejection: registry verification unavailable. |
| 09 | rejected_renaper_dni_missing | Rejection: no document number available for registry check. |
| 10 | rejected | Generic rejection (second number for testing). |
Argentina – DNI (8 digits)
Use any of these as the entity’s taxId (with or without dots). Normalized value is used for matching.
| Example value | Normalized | Outcome |
|---|
| 99.990.001 or 99990001 | 99990001 | approved |
| 99.990.002 or 99990002 | 99990002 | approved_with_renaper |
| 99.990.003 | 99990003 | cancelled |
| 99.990.004 | 99990004 | rejected |
| 99.990.005 | 99990005 | rejected_document_mismatch |
| 99.990.006 | 99990006 | rejected_renaper_tramite_not_match |
| 99.990.007 | 99990007 | rejected_renaper_dni_not_match |
| 99.990.008 | 99990008 | rejected_renaper_verification_unavailable |
| 99.990.009 | 99990009 | rejected_renaper_dni_missing |
| 99.990.010 | 99990010 | rejected |
Argentina – CUIT (11 digits)
Format: 20-XXXXXXXX-X. Example: 20-99990001-9.
| Example value | Normalized | Outcome |
|---|
| 20-99990001-9 | 20999900019 | approved |
| 20-99990002-9 | 20999900029 | approved_with_renaper |
| 20-99990003-9 | 20999900039 | cancelled |
| 20-99990004-9 | 20999900049 | rejected |
| 20-99990005-9 | 20999900059 | rejected_document_mismatch |
| 20-99990006-9 | 20999900069 | rejected_renaper_tramite_not_match |
| 20-99990007-9 | 20999900079 | rejected_renaper_dni_not_match |
| 20-99990008-9 | 20999900089 | rejected_renaper_verification_unavailable |
| 20-99990009-9 | 20999900099 | rejected_renaper_dni_missing |
| 20-99990010-9 | 20999900109 | rejected |
Brazil – CPF (11 digits)
Format: XXX.XXX.XXX-XX. Example: 999.900.001-01.
| Example value | Normalized | Outcome |
|---|
| 999.900.001-01 | 99990000101 | approved |
| 999.900.001-02 | 99990000102 | approved_with_renaper |
| 999.900.001-03 | 99990000103 | cancelled |
| 999.900.001-04 | 99990000104 | rejected |
| 999.900.001-05 | 99990000105 | rejected_document_mismatch |
| 999.900.001-06 | 99990000106 | rejected_renaper_tramite_not_match |
| 999.900.001-07 | 99990000107 | rejected_renaper_dni_not_match |
| 999.900.001-08 | 99990000108 | rejected_renaper_verification_unavailable |
| 999.900.001-09 | 99990000109 | rejected_renaper_dni_missing |
| 999.900.001-10 | 99990000110 | rejected |
Brazil – CNPJ (14 digits)
Format: XX.XXX.XXX/XXXX-XX. Example: 99.990.000/0001-01.
| Example value | Normalized | Outcome |
|---|
| 99.990.000/0001-01 | 99990000000101 | approved |
| 99.990.000/0001-02 | 99990000000102 | approved_with_renaper |
| 99.990.000/0001-03 | 99990000000103 | cancelled |
| 99.990.000/0001-04 | 99990000000104 | rejected |
| 99.990.000/0001-05 | 99990000000105 | rejected_document_mismatch |
| 99.990.000/0001-06 | 99990000000106 | rejected_renaper_tramite_not_match |
| 99.990.000/0001-07 | 99990000000107 | rejected_renaper_dni_not_match |
| 99.990.000/0001-08 | 99990000000108 | rejected_renaper_verification_unavailable |
| 99.990.000/0001-09 | 99990000000109 | rejected_renaper_dni_missing |
| 99.990.000/0001-10 | 99990000000110 | rejected |
Example: approved with RENAPER
- Create a person entity in sandbox with
taxId: 99990001 (or 99.990.001).
- Call POST /api/kyc/validations with
entityId and doubleCheckRenaper: true (body or query).
- The API returns 201 with the validation; shortly after, the status is approved and the webhook
kyc.validation_approved is sent.
- The webhook payload includes the full validation object, including
metadata.responseDoubleChecks.renaper with verified: true, matchResult: "match", personalNumber, idTramitePrincipal, and renaperData (mock registry response).
Example response (mock approved)
The response body and webhook payload follow the same structure as a real validation. Example shape for an approved mock (relevant fields):
{
"id": "uuid",
"entityId": "uuid",
"status": "approved",
"verifiedAt": "2026-02-21T12:00:00.000Z",
"extractedData": {
"firstName": "Sandbox",
"lastName": "User",
"fullName": "Sandbox User",
"dateOfBirth": "1990-01-15",
"documentNumber": "99990001",
"documentType": "Identity Card",
"nationality": "AR",
"gender": "M",
"age": 34
},
"verifiedFields": ["identity_document", "liveness_check", "face_match"],
"warnings": [],
"metadata": {
"doubleChecks": { "renaper": true },
"responseDoubleChecks": {
"renaper": {
"verified": true,
"matchResult": "match",
"personalNumber": "99990001",
"idTramitePrincipal": "987654321",
"verifiedAt": "2026-02-21T12:00:00.000Z",
"renaperData": { "id_tramite_principal": "987654321", "apellido": "User", "nombres": "Sandbox", "fecha_nacimiento": "1990-01-15", "dni": "99990001", "..." }
}
}
}
}
When RENAPER double-check is not requested, metadata.responseDoubleChecks is not present for approved; when it is requested, it is present as above.
Custom mock data
The default set above is available to all sandbox organizations with no configuration.
Adding or changing mock document numbers for your sandbox:
If you need additional test documents or different outcomes for specific numbers, contact the Gueno team. Custom mock data for sandbox is managed by Gueno and cannot be configured by the client.
See also