Our API Docs just got a new look!

🇵🇪Peru

Check the requirements and validations made over the cashouts on Peru

Required fields

Field
Format
Description

login

String

Cashouts login

pass

String

Cashouts pass

external_id

String (max length: 100)

Transaction's ID on your end

document_id

Beneficiary's document ID

document_type

Beneficiary's document type

country

PE

The country codes are in ISO 3166-1 alpha-2 format.

currency

PEN / USD

The currencies are in ISO 4217 format.

amount

Number with up to 2 decimals

Cashout amount

bank_account

Beneficiary's bank account

account_type

Beneficiary's bank account type

phone

Number 10-11 digits

Customer's Phone. Mandatory for Yape&Plin

beneficiary_name

String (max length: 100)

Beneficiary's name

beneficiary_lastname

String (max length: 100)

Beneficiary's last name

bank_account validations

Bank name
Bank code
Description
Format
Example

All

-

CCI - Código de Cuenta Interbancaria

Length 20 (with verifying digits - a validation algorithm is ran over these)

00219300153895206813

Yape

901

Empty string

^$

Plin

902

Empty string

^$

CCI validation algorithm

Since the first three digits of the CCI are the bank code, it is not mandatory to send the bank_code field. However, we validate those 3 first digits to be a valid bank_code.

Peru CCI validation algorithm in Java
public final class Validations {
   static Integer CCI_LENGTH_ST = 18;
   static Integer CCI_LENGTH_FST = 20;
   static String EMPTY_CHECK_DIGITS = "00";
    
   public static boolean validateBankAccount(String bankAccount) {
      if (!ValidationsUtils.validateOnlyNumbers(bankAccount)) {
         return false;
      } else {
         int accountLength = bankAccount.length();
         String lastDigits = bankAccount.substring(bankAccount.length() - 2);

         if (accountLength == CCI_LENGTH_ST && lastDigits.equals(EMPTY_CHECK_DIGITS)) {
            return true;
         }
         return validateCCI(bankAccount);
      }
   }

   //Validate CCI bank account
   public static boolean validateCCI(String cci) {
      if (validateCCILength(cci)) {
         String cciWithoutCheck = cci.substring(0, cci.length() - 2);
         String checkDigits = cci.substring(cci.length() - 2);
         String calculatedCheckDigits = getCciCheckDigits(cciWithoutCheck);

         return checkDigits.equals(calculatedCheckDigits);
      }
      return false;
   }

   public static boolean validateCCILength(String cci) {
      return cci.length() == CCI_LENGTH_FST;
   }

   public static String getCciCheckDigits(String cci) {
      int firstControlNumber = calculateCheckDigit(cci.substring(0, 6));
      int secondControlNumber = calculateCheckDigit(cci.substring(6, 18));

      return String.valueOf(firstControlNumber) + String.valueOf(secondControlNumber);
   }

   private static int calculateCheckDigit(String cci) {
      int total = 0;
      int factor = 1;

      for (int i = 0; i < cci.length(); i++) {
         String[] cciArray = cci.split("");
         int num = Integer.parseInt(cciArray[i]);

         if (num * factor < 10) {
            total += (num * factor);
         } else {
            int product = (num * factor);
            String product_str = Integer.toString(product);
            int firstDigit = Integer.parseInt(product_str.substring(0, 1));
            int lastDigit = product % 10;
            total += firstDigit + lastDigit;
         }

         factor = factor == 1 ? 2 : 1;
      }
      return (total % 10) > 0 ? 10 - (total % 10) : 0;
   }

}

account_type

The account_type is specified with only one character as described below.

account_type
Description

C

Checkings account

S

Savings account

document_type and document_id validations

document_type
document_id format

CE/CPP

Numeric. Length 9

DNI

Numeric. Length 8-9

PASS

Numeric. Length 12

RUC

Length 11

phone validations

Bank name
Bank code
Format
Required
Example

Yape

901

Numeric - Country code +51 plus 10 digits +51 XXXXXXXXX

Yes

+51901671234

Plin

902

Numeric - Country code +51 plus 9 digits +51 XXXXXXXXX

Yes

+51901671234

Others

-

-

No

-

Example request

{
    "login": "xxxxxxx",
    "pass": "xxxxxxx",
    "external_id": "30000000001",
    "country": "PE",
    "currency": "PEN",
    "amount": 100,
    "document_id": "848392783",
    "document_type": "CE",
    "bank_account": "00219300153895206813",
    "account_type": "C",
    "beneficiary_name": "User",
    "beneficiary_lastname": "Test",
    "notification_url": "https://webhook.site/url",
    "type": "json"
}

Bank codes

Bank code retrieval via API

Bank
Code

Banco de Crédito del Peru

002

Interbank

003

Citibank

007

Scotiabank

009

BBVA Continental

011

Banco de la Nación

018

Banco de Comercio

023

Banco Financiero

035

Banco Interamericano de Finanzas (BIF)

038

Crediscotia Financiera

043

Mi Banco

049

Banco GNB Peru S.A

053

Banco Falabella

054

Santander

056

Caja Metropolitana de Lima

800

Caja Municipal de Ahorro y Credito Piura SAC

801

Caja Municipal de Ahorro y Crédito Trujillo

802

Caja Municipal de Ahorro y Crédito Arequipa

803

Caja Municipal de Ahorro y Crédito Sullana

805

Caja Municipal de Ahorro y Crédito Cuzco

806

Caja Municipal de Ahorro y Crédito Huancayo

808

Yape

901

Plin

902

Last updated

Was this helpful?