Short answer: A Peru KYC API flow with Verifik chains 5 checks: GET /v3/pe/cedula (DNI against RENIEC), GET /v2/pe/foreigner-id/ce (foreigner ID card), POST /v2/face-recognition/compare-with-liveness (face match with liveness), GET /v2/pe/driver-license (driver’s license) and GET /v3/pe/company (RUC). Each call uses smartCHECK credits, with plans from $49 a month.
If you are looking for a Peru KYC API, what you need is not one endpoint but a flow. With Verifik you build it from 5 checks: /v3/pe/cedula returns the DNI holder’s full name, date of birth, sex, civil status and address; /v2/pe/foreigner-id/ce returns the name, immigration status, nationality and expiry dates of a foreigner ID card (carné de extranjería); /v2/face-recognition/compare-with-liveness returns a face comparison score and a liveness score; /v2/pe/driver-license returns license category, status and expiry, and /v3/pe/company returns the business name plus taxpayer status and condition. Every call is deducted from your smartCHECK plan credits.
This guide is the map: it explains which check goes at each step and links to the detailed guide for each lookup. It doesn’t repeat what we already covered in the Peru DNI RENIEC lookup API or the Peru RUC SUNAT lookup API guides.
Note: this article summarizes official regulations for information only and is not legal advice. Confirm your case with your compliance officer.
What KYC means in Peru and why it matters in 2026
KYC (know your customer) is the set of controls that tells you who your customer is before you give them a product. In Peru, for companies supervised by the SBS (the banking, insurance and pension regulator), those controls are part of the anti-money laundering and counter-terrorist financing risk management regulation approved by SBS Resolution No. 2660-2015. That regulation follows a risk-based approach: customer due diligence measures must be proportional to the risk of each customer, product or service.
The context is pushing teams to revisit onboarding. According to El Peruano, more than 8,000 complaints of digital identity impersonation were filed in Peru between January and August 2026, based on open data from the Public Prosecutor’s Office. The same article cites the SBS: 67% of Peruvian adults had an account or digital wallet in 2025, up from 42% in 2020. More digital customers means more remote sign-ups to verify.
What the rules require: due diligence and personal data
The latest change is SBS Resolution No. 02580-2026, published in El Peruano on October 29, 2026. The key points for a product team:
- It adds 17 insurance products to the simplified customer due diligence regime set out in article 31 of the SBS Resolution No. 2660-2015 regulation. They include mandatory insurance, mass-market insurance, microinsurance, life insurance without a savings or investment component and several agricultural policies.
- Credit-linked insurance sold through bancassurance, where the lender is the beneficiary, also falls under that regime.
- Article 5 makes clear that companies must apply a regime other than the simplified one when they identify higher risk.
- It takes effect the day after publication and repeals Circular No. S-661-2016.
In practice, “simplified” doesn’t mean “unverified”: it means scaling the intensity of controls to the risk. That is why it pays to design a layered flow, with steps you can turn on or skip per product.
The second framework is data protection. If you store DNI data, selfies or third-party information, Law No. 29733 and its regulation, approved by Supreme Decree No. 016-2024-JUS, apply. Define your legal basis and consent before you run a lookup, and keep only what you need.
The 5 checks in a Peruvian KYC onboarding
Each check answers a different question. This table summarizes which endpoint to use and what it returns, according to Verifik’s official documentation:
| Question | Endpoint | What you send | What you get back |
|---|---|---|---|
| Does the DNI exist and who owns it? | GET /v3/pe/cedula | documentType=DNI and documentNumber (8 digits) | Full name, date of birth, sex, civil status, address and ubigeo code |
| Is the resident foreigner who they claim to be? | GET /v2/pe/foreigner-id/ce | documentNumber and dateOfBirth (DD/MM/YYYY) | Name, immigration status, nationality, card and residence expiry |
| Is the person on camera the document holder? | POST /v2/face-recognition/compare-with-liveness | probe (selfie), gallery (reference images) and search_mode | Comparison score and liveness score |
| Can they drive? (ride-hailing, delivery, rentals) | GET /v2/pe/driver-license | documentType=DNI and documentNumber | Category, status, expiry, restrictions, procedures and courses |
| Is the business customer active? (KYB) | GET /v3/pe/company | documentType=RUC and documentNumber | Business name, address, taxpayer status and condition |
Each lookup has its own detailed guide: Peru foreigner ID verification, Peru driver’s license check by DNI and liveness to prevent identity fraud.
Recommended step-by-step flow
This order cuts cost and friction, because each step only runs if the previous one passed:
- Data capture and consent. Ask for document type and number, and record acceptance of your privacy policy.
- Document. For a DNI, call
/v3/pe/cedulaand comparefullNameanddateOfBirthwith what the customer typed. For a foreigner ID card, call/v2/pe/foreigner-id/ceand checkresidenceExpirationandforeignerIdExpiration. - Biometrics. Ask for a selfie and call
/v2/face-recognition/compare-with-livenessagainst the document photo you captured. - Product-specific checks. Only when relevant: driver’s license for drivers or couriers, RUC when the customer is a company or a sole trader.
- Decision and evidence. Approve, reject or send to manual review. Store the
idandsignaturefrom each response. - Escalation. When you spot higher-risk signals, apply a due diligence regime other than the simplified one, as article 5 of SBS Resolution No. 02580-2026 requires for insurance.
How to integrate it with the Verifik API
Every call sends your token in the Authorization: Bearer header. The sample responses come from the official documentation.
Step 1: validate the DNI
The Peru identity documentation asks for documentType=DNI and an 8-digit documentNumber:
curl -G "https://api.verifik.co/v3/pe/cedula" \
-H "Accept: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN" \
--data-urlencode "documentType=DNI" \
--data-urlencode "documentNumber=71647369"Sample 200 response:
{
"data": {
"address": "CARACALLA",
"arrayName": [
"FELIPE",
"TRUJILLO",
"HERNANDEZ"
],
"civilStatus": "SOLTERO",
"dateOfBirth": "19-12-1995",
"documentNumber": "71647369",
"documentType": "DNI",
"firstName": "FELIPE",
"fullName": "FELIPE TRUJILLO HERNANDEZ",
"lastName": "TRUJILLO HERNANDEZ",
"sex": "M",
"ubigeoReniec": "070101",
"verificationDigit": "2"
},
"signature": {
"dateTime": "April 16, 2025 2:43 PM",
"message": "Certified by Verifik.co"
},
"id": "FHBCC"
}If the number doesn’t exist, the API returns 404. If the number is missing or has an invalid length, it returns 409 (for example, "documentNumber maximum length: 8").
Step 2: foreigner ID card (for non-Peruvian residents)
The foreigner ID endpoint requires the date of birth, which adds a data point only the holder should know:
curl -G "https://api.verifik.co/v2/pe/foreigner-id/ce" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $VERIFIK_TOKEN" \
--data-urlencode "documentNumber=005015372" \
--data-urlencode "dateOfBirth=16/08/1993"Sample 200 response:
{
"data": {
"arrayName": [
"CORDERO",
"SANCHEZ",
"ANA",
"RENE"
],
"dateOfBirth": "16/08/1993",
"documentNumber": "005015372",
"firstName": "ANA RENE",
"foreignerIdExpiration": "12/08/2025",
"foreignerIdLastIssuance": "12/08/2021",
"fullName": "ANA RENE CORDERO SANCHEZ",
"immigrationStatus": "HUMANITARIA",
"lastName": "CORDERO CAMPERO",
"nationality": "VENEZOLANA",
"residenceExpiration": "26/02/2025"
},
"signature": {
"dateTime": "November 6, 2024 3:22 PM",
"message": "Certified by Verifik.co"
},
"id": "K0MMA"
}If the date isn’t in DD/MM/YYYY format, the API returns 409 with "dateOfBirth format required: DD/MM/YYYY".
Step 3: face comparison with liveness
Compare with liveness first matches the selfie against the gallery and, if it clears compare_min_score, runs the liveness check:
import os, requests
url = "https://api.verifik.co/v2/face-recognition/compare-with-liveness"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {os.getenv('VERIFIK_TOKEN')}"
}
payload = {
"probe": "<base64>",
"gallery": ["<base64>"],
"search_mode": "FAST",
"liveness_min_score": 0.6,
"compare_min_score": 0.8
}
r = requests.post(url, json=payload, headers=headers)
print(r.json())Sample 200 response:
{
"id": "CWL01",
"data": {
"comparison": {
"score": 0.88
},
"liveness": {
"liveness_score": 0.91,
"min_score": 0.6,
"passed": true
}
},
"signature": {
"message": "Certified by Verifik.co",
"dateTime": "January 16, 2024 3:44 PM"
}
}liveness_min_score defaults to 0.6 and compare_min_score accepts values from 0.67 to 0.95. The documentation notes that printed document photos usually score lower against a selfie than two live captures do, so tune the threshold with your own cases.
Step 4: validate the company by RUC (KYB)
The Peru business validation documentation includes this JavaScript sample:
import axios from "axios";
const { data } = await axios.get("https://api.verifik.co/v3/pe/company", {
params: { documentType: "RUC", documentNumber: "20605980008" },
headers: {
Accept: "application/json",
Authorization: `Bearer ${process.env.VERIFIK_TOKEN}`,
},
});
console.log(data);Sample 200 response (trimmed to the status fields):
{
"data": {
"conditionTaxpayer": "HABIDO",
"district": "SAN ISIDRO",
"documentNumber": "20605980008",
"documentType": "RUC",
"province": "LIMA",
"state": "LIMA",
"stateTaxpayer": "ACTIVO"
},
"signature": {
"dateTime": "October 10, 2025 5:35 PM",
"message": "Certified by Verifik.co"
},
"id": "RLS8G"
}Check stateTaxpayer (for example “ACTIVO”, active) and conditionTaxpayer (for example “HABIDO”, located at its registered address) before approving a business.
The driver’s license lookup follows the same pattern as the DNI (documentType=DNI and documentNumber); its fields are covered in the Peru driver’s license by DNI guide.

No code: SmartEnroll and smartCHECK
If your team has no developers available, SmartEnroll is Verifik’s no-code onboarding option. According to its documentation, you set it up in 7 steps and it includes:
- Email verification with OTP and phone verification by SMS or WhatsApp.
- Scanning of government ID, passport or driver’s license, with a configurable attempt limit of 3 to 10.
- Biometric enrollment with liveness and a 1:1 match against the document; the recommended comparison threshold in the hosted flow is 0.85.
- Checks against government sources, blacklists by CSV or API, webhooks and brand customization.
For one-off lookups, smartCHECK lets you run checks from the web across more than 90 APIs from more than 15 countries.
What each type of provider covers in Peru
Before you choose, compare which checks each option covers. This table summarizes what each site publishes for Peru, based on their pages as checked on November 1, 2026:
| Provider | What it publishes for Peru | Published pricing |
|---|---|---|
| Verifik | DNI, foreigner ID card, driver’s license, RUC, face comparison with liveness and no-code onboarding | smartCHECK plans from $49 to $649 a month; businesses can get the DNI check for USD $0.15 per query on the Smart Business plan |
| API Perú (apiperu.pe) | RUC lookup, DNI (names), exchange rate, e-invoice validation and legal representatives | Free S/0 (100 lookups a month), Básico S/15 (50,000), Plus S/25 (100,000) and Premium S/45 (250,000), excluding IGV |
| Perú API (peruapi.com) | RUC, DNI and exchange rate; says it queries local registries first, falls back to external providers and caches for 1 hour | Not included in this comparison |
| Didit | In its database validation list, Peru appears as “DNI verification (RENIEC)” | Its documentation lists $0.20 for that check; its pricing page announces changes from November 1, 2026 |
| IDMerit | Sources “Government – Official Voter Register”, “Telco – Utility – Phone Register” and “Government – Official Tax Register” | No pricing shown on its Peru page |
The practical difference: data APIs return names or tax data, but they don’t confirm that the person signing up is the holder. For KYC you need to add biometrics with liveness. If you are evaluating vendors, the eKYC compliance requirements guide goes deeper into the criteria.
Common mistakes in Peruvian KYC
- Checking only the DNI number. It proves the document exists, not that the person presenting it is the holder. Without a face match, anyone with someone else’s number gets through.
- Accepting a photo of the DNI as enough. In October 2026, RENIEC warned that sharing photos of your DNI enables impersonation, financial scams and fake accounts, as reported by Infobae. An image of the document doesn’t prove presence: ask for a selfie with liveness.
- Forgetting foreigners. If your form only accepts a DNI, you shut out residents with a foreigner ID card or force them into a manual process.
- Keeping more data than you need. Law 29733 and its regulation apply to everything you store. Keep the verification evidence and set retention periods.
- Using one threshold for everything. The simplified regime and higher-risk products shouldn’t go through the same filter.
How much KYC by API costs with Verifik
Each lookup is deducted from your smartCHECK plan credits. According to the smartCHECK pricing page:
- Starter: $49 a month, or $490 a year and you receive $588 in credits.
- Basic: $129 a month, or $1,290 a year and you receive $1,548 in credits.
- Plus: $299 a month, or $2,990 a year and you receive $3,588 in credits.
- Business: $649 a month, or $6,490 a year and you receive $7,788 in credits.
Annual plans include 2 months free. If you are a business, you can get the Peru DNI check for USD $0.15 per query on the Smart Business plan. You can see the per-call cost of each endpoint in your dashboard once you create an account.
Quick answers
What do you need to run KYC in Peru by API? At minimum, validate the DNI against RENIEC with /v3/pe/cedula and run a face match with liveness. For resident foreigners you use the foreigner ID card, and if the customer is a company you validate the RUC with /v3/pe/company.
Which rule governs customer due diligence in Peru? For SBS-supervised companies, the regulation approved by SBS Resolution No. 2660-2015. SBS Resolution No. 02580-2026 added 17 insurance products to its simplified regime.
How do I verify a foreign resident in Peru? With GET /v2/pe/foreigner-id/ce, sending the card number and the date of birth in DD/MM/YYYY format. It returns the name, immigration status, nationality and the card and residence expiry dates.
Is validating the DNI number enough? No. It confirms the document exists and who owns it, but not that the person signing up is the holder. For that you need a face comparison with liveness.
How do I validate a Peruvian company (KYB)? With GET /v3/pe/company and the RUC. The response includes the business name, address, taxpayer status (for example “ACTIVO”) and condition (for example “HABIDO”).
Can I run KYC in Peru without code? Yes. SmartEnroll is Verifik’s no-code option: you configure document scanning, biometrics with liveness, government-source checks and branding in 7 steps.
Build your KYC flow for Peru
With 5 endpoints you cover citizens, resident foreigners, drivers and businesses, and every response carries a Verifik signature you can keep as evidence. Read the Peru identity documentation and run your first tests.
Ready to get started? Create your free Verifik account or book a demo to see how to add KYC to your onboarding for Peruvian customers.




