Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.clevis.dev/llms.txt

Use this file to discover all available pages before exploring further.

Each country has its own set of beneficiary fields, document types, and bank-account shape. The Pydantic models on the API enforce these, including check-digit validation for CLABE (MX), CPF (BR), CBU/CUIL (AR), RUT (CL), and CCI (PE).
For runtime form-building, call GET /v1/payouts/requirements/{country} — it returns the live shape directly from the server and stays in sync if fields are added.
A failing check digit raises 422 VALIDATION_ERROR, not a REJECTED payout — it’s a bad request, not a bad payout.

Mexico (MX)

PropertyValue
Payout currencyMXN
Payment methodsBANK_TRANSFER
Document typesRFC, CURP, PASSPORT
Bank account requiredclabe
CLABE is 18 digits with a mod-10 weighted check digit (Banxico spec). The algorithm: weight the first 17 digits cyclically by (3, 7, 1), take each product modulo 10, sum them, and the check digit is (10 - sum % 10) % 10.

Example

{
  "amount": "20039.25",
  "currency": "MXN",
  "country": "MX",
  "external_id": "payroll-mx-2026-05-emp-001",
  "beneficiary": {
    "name": "Juan García",
    "document_type": "RFC",
    "document_id": "GARJ800101ABC",
    "bank_account": {
      "clabe": "012180001234567890"
    }
  }
}

Colombia (CO)

PropertyValue
Payout currencyCOP
Payment methodsBANK_TRANSFER
Document typesCC, CE, NIT, PASSPORT
Bank account requiredbank_code, account_type, account_number
bank_code4 digits (ACH Colombia entity code)
account_typeCHECKING or SAVINGS
account_number5–17 digits

Example

{
  "amount": "4600000.00",
  "currency": "COP",
  "country": "CO",
  "external_id": "payroll-co-2026-05-emp-001",
  "beneficiary": {
    "name": "Juan Pérez",
    "document_type": "CC",
    "document_id": "1023456789",
    "bank_account": {
      "bank_code": "1007",
      "account_type": "CHECKING",
      "account_number": "12345678901"
    }
  }
}

Argentina (AR)

PropertyValue
Payout currencyARS
Payment methodsBANK_TRANSFER
Document typesDNI, CUIL, CUIT, PASSPORT
Bank account requiredcuil + one of (cbu or alias_cbu)
cbu22 digits
alias_cbu6–20 alphanumeric chars
cuil11 digits (hyphens accepted on input)
If you pass document_type: "CUIL" for the beneficiary, the engine also runs the CUIL format check against document_id (11 digits).

Example (CBU)

{
  "amount": "850000.00",
  "currency": "ARS",
  "country": "AR",
  "external_id": "payroll-ar-2026-05-emp-001",
  "beneficiary": {
    "name": "María González",
    "document_type": "CUIL",
    "document_id": "27123456789",
    "bank_account": {
      "cbu": "0070123456789012345678",
      "cuil": "27123456789"
    }
  }
}

Example (alias)

{
  "beneficiary": {
    "name": "María González",
    "document_type": "CUIL",
    "document_id": "27123456789",
    "bank_account": {
      "alias_cbu": "MARIA.GONZALEZ.NOMINA",
      "cuil": "27123456789"
    }
  }
}

Brazil (BR)

PropertyValue
Payout currencyBRL
Payment methodsBANK_TRANSFER or PIX
Document typesCPF, CNPJ
CPF is 11 digits with two mod-11 check digits. The engine validates them when document_type: "CPF" (and again on PIX keys with pix_key_type: "CPF"). All-identical-digit CPFs (e.g. "11111111111") are rejected even though they pass the mod-11 algebra — that’s the standard Receita Federal rule.

BANK_TRANSFER shape

FieldRequiredFormat
bank_codeyes3 digits
branchyesagência number
account_numberyesstring
account_typeyesCHECKING or SAVINGS
{
  "amount": "8500.00",
  "currency": "BRL",
  "country": "BR",
  "external_id": "folha-br-2026-05-emp-001",
  "payment_method_id": "BANK_TRANSFER",
  "beneficiary": {
    "name": "Carlos Silva",
    "document_type": "CPF",
    "document_id": "39053344705",
    "bank_account": {
      "payment_method": "BANK_TRANSFER",
      "bank_code": "341",
      "branch": "0001",
      "account_number": "123456-7",
      "account_type": "CHECKING"
    }
  }
}

PIX shape

FieldRequiredFormat
pix_keyyesstring (validated per pix_key_type)
pix_key_typeyesCPF, EMAIL, PHONE, or EVP
  • CPF keys are validated as CPFs (same check-digit rule)
  • EMAIL keys must contain @
  • PHONE keys must contain ≥ 8 digits
  • EVP keys are opaque (any non-empty string)
{
  "amount": "8500.00",
  "currency": "BRL",
  "country": "BR",
  "external_id": "folha-br-2026-05-emp-001",
  "payment_method_id": "PIX",
  "beneficiary": {
    "name": "Carlos Silva",
    "document_type": "CPF",
    "document_id": "39053344705",
    "bank_account": {
      "payment_method": "PIX",
      "pix_key": "carlos.silva@example.com",
      "pix_key_type": "EMAIL"
    }
  }
}

Chile (CL)

PropertyValue
Payout currencyCLP
Payment methodsBANK_TRANSFER
Document typesRUT, PASSPORT
Bank account requiredbank_code, account_type, account_number
account_typeCHECKING, SAVINGS, VISTA, or RUT
RUT follows the format NNNNNNNN-D (1–9 digits, dash, check digit). The check digit is computed with a mod-11 algorithm (weights 2..7 cycling over the digits, reversed). When the algorithm yields 11 the check digit is 0; when it yields 10 it’s K. Both upper- and lower-case K are accepted on input.

Example

{
  "amount": "850000.00",
  "currency": "CLP",
  "country": "CL",
  "external_id": "remuneracion-cl-2026-05-emp-001",
  "beneficiary": {
    "name": "Andrés Muñoz",
    "document_type": "RUT",
    "document_id": "12345678-5",
    "bank_account": {
      "bank_code": "012",
      "account_type": "CHECKING",
      "account_number": "00012345678"
    }
  }
}

Peru (PE)

PropertyValue
Payout currencyPEN
Payment methodsBANK_TRANSFER
Document typesDNI, CE, RUC, PASSPORT
Bank account requiredone of: cci (alone) or (bank_code + account_number)
cci20 digits (Código de Cuenta Interbancario)
account_number10–20 digits (when used without CCI)

Example (CCI)

{
  "amount": "4500.00",
  "currency": "PEN",
  "country": "PE",
  "external_id": "planilla-pe-2026-05-emp-001",
  "beneficiary": {
    "name": "Ricardo Vargas",
    "document_type": "DNI",
    "document_id": "12345678",
    "bank_account": {
      "cci": "00219012345678901234"
    }
  }
}

Example (bank code + account number)

{
  "beneficiary": {
    "name": "Ricardo Vargas",
    "document_type": "DNI",
    "document_id": "12345678",
    "bank_account": {
      "bank_code": "002",
      "account_number": "1234567890123"
    }
  }
}

Live form-building

Hardcoding these field tables into your UI works, but the canonical source of truth is the API itself. Call:
GET /v1/payouts/requirements/{country}
…to get the structured shape — required fields, allowed document types, allowed account types, and format hints. New countries get added to that endpoint as a schema-only change, with no client work needed.
curl https://api.clevis.dev/v1/payouts/requirements/CO \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "country": "CO",
  "payout_currency": "COP",
  "payment_methods": ["BANK_TRANSFER"],
  "default_payment_method": "BANK_TRANSFER",
  "beneficiary": {
    "required": ["name", "document_type", "document_id", "bank_account"],
    "document_types": ["CC", "CE", "NIT", "PASSPORT"],
    "bank_account": {
      "required": ["bank_code", "account_type", "account_number"],
      "account_types": ["CHECKING", "SAVINGS"],
      "bank_code": { "format": "4 digits", "note": "ACH Colombia entity code" },
      "account_number": { "format": "5..17 digits" }
    }
  }
}
Countries outside MX/CO/AR/BR/CL/PE return 404 PAYOUT_COUNTRY_NOT_SUPPORTED.