Peru KYC API: DNI, biometrics and RUC

Peru KYC API (2026): 5 Checks to Verify Customers with DNI, Biometrics and RUC

Tabla of Contents
Share this article

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:

QuestionEndpointWhat you sendWhat you get back
Does the DNI exist and who owns it?GET /v3/pe/ceduladocumentType=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/cedocumentNumber 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-livenessprobe (selfie), gallery (reference images) and search_modeComparison score and liveness score
Can they drive? (ride-hailing, delivery, rentals)GET /v2/pe/driver-licensedocumentType=DNI and documentNumberCategory, status, expiry, restrictions, procedures and courses
Is the business customer active? (KYB)GET /v3/pe/companydocumentType=RUC and documentNumberBusiness 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:

  1. Data capture and consent. Ask for document type and number, and record acceptance of your privacy policy.
  2. Document. For a DNI, call /v3/pe/cedula and compare fullName and dateOfBirth with what the customer typed. For a foreigner ID card, call /v2/pe/foreigner-id/ce and check residenceExpiration and foreignerIdExpiration.
  3. Biometrics. Ask for a selfie and call /v2/face-recognition/compare-with-liveness against the document photo you captured.
  4. Product-specific checks. Only when relevant: driver’s license for drivers or couriers, RUC when the customer is a company or a sole trader.
  5. Decision and evidence. Approve, reject or send to manual review. Store the id and signature from each response.
  6. 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.

Verifik - Top Identity Verification Platform

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:

ProviderWhat it publishes for PeruPublished pricing
VerifikDNI, foreigner ID card, driver’s license, RUC, face comparison with liveness and no-code onboardingsmartCHECK 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 representativesFree 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 hourNot included in this comparison
DiditIn 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
IDMeritSources “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.

Johan Castellanos - CEO Verifik

Frequently Asked Questions (FAQs)

➖

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.