TaxID LatAm

Valida identificadores tributarios de 18 países de América Latina con un solo endpoint. Respuesta instantánea, sin dependencias externas, 99.9% uptime en el edge de Cloudflare.

Base URL: https://latam.rootspa.cl


¿Por qué TaxID LatAm?

Cada país de América Latina tiene su propio formato de ID tributario, algoritmo de dígito verificador y reglas de tipo de entidad. Construir y mantener esa lógica in-house para 18 países son semanas de trabajo — y es fácil equivocarse.

TaxID LatAm lo resuelve:

  • Validación instantánea — dígito verificador calculado matemáticamente, sin scraping
  • Un solo endpoint para todos los países — una integración, una API key
  • Errores detallados — indica exactamente por qué un ID es inválido, no solo true/false
  • Formato normalizado — retorna el ID en el formato estándar de cada país

Endpoints

MétodoPathDescripción
POST/v1/validateValida un Tax ID con algoritmo de dígito verificador
POST/mcpMCP server (JSON-RPC) para agentes de IA
GET/openapi.jsonEsquema OpenAPI 3.1
GET/healthHealth check

POST /v1/validate

Ejemplo con curl

curl -X POST https://latam.rootspa.cl/v1/validate 
  -H "Authorization: Bearer <tu_token>" 
  -H "Content-Type: application/json" 
  -d '{"id": "11.222.333/0001-81", "country": "BR"}'

Request

{
  "id": "11.222.333/0001-81",
  "country": "BR"
}
CampoTipoDescripción
idstringID tributario a validar (con o sin formato)
countrystringCódigo ISO 2 letras del país

Response — válido (200)

{
  "id": "11.222.333/0001-81",
  "country": "BR",
  "id_type": "CNPJ",
  "entity_type": "persona_moral",
  "is_valid": true,
  "dv_check": "passed",
  "format_normalized": "11.222.333/0001-81",
  "errors": []
}

Response — inválido (200)

Un ID inválido también retorna 200 — la validación fue exitosa, el resultado es que el ID no es válido.

{
  "id": "12.345.678/0001-00",
  "country": "BR",
  "id_type": "CNPJ",
  "entity_type": "persona_moral",
  "is_valid": false,
  "dv_check": "failed",
  "format_normalized": "12.345.678/0001-00",
  "errors": ["Dígito verificador inválido"]
}

Campos de respuesta

CampoTipoDescripción
idstringID original enviado
countrystringCódigo ISO del país
id_typestringTipo de identificador (RUT, RFC, CNPJ, CPF, NIT, etc.)
entity_typestringpersona_fisica, persona_moral, extranjero o generico
is_validbooleantrue si el ID pasa todas las validaciones
dv_checkstringpassed, failed o not_applicable (países sin algoritmo público)
format_normalizedstringID en formato estándar del país
errorsstring[]Lista de errores de validación. Vacío si is_valid es true

Probar endpoint

POST /validate
Ej: 11.222.333/0001-81

Países soportados

PaísCódigoTipo de IDValidación
MéxicoMXRFC✅ Algoritmo SAT con dígito verificador
BrasilBRCNPJ / CPF✅ Doble mod-11
ChileCLRUT✅ Mod-11 con dígito K
ColombiaCONIT / CC✅ DIAN mod-11
ArgentinaARCUIT / CUIL✅ AFIP mod-11
PerúPERUC✅ SUNAT mod-11
EcuadorECRUC / CI✅ Mod-10 / mod-11
VenezuelaVERIF✅ SENIAT mod-11
GuatemalaGTNIT✅ SAT mod-11 con dígito K
República DominicanaDORNC / CI✅ DGII mod-11
UruguayUYCI / RUT✅ Mod-10
BoliviaBONITFormato + longitud
ParaguayPYRUCFormato + longitud
PanamáPARUCFormato + longitud
Costa RicaCRCédula Jurídica / FísicaFormato + longitud
El SalvadorSVNIT / DUIFormato + longitud
HondurasHNRTNFormato + longitud
NicaraguaNIRUCFormato + longitud

MCP Server (agentes de IA)

Endpoint MCP stateless para integraciones con Claude u otros agentes compatibles:

POST https://latam.rootspa.cl/mcp
Content-Type: application/json

Herramientas disponibles

ToolDescripción
validar_tax_idValida RUT, RFC, CNPJ, NIT y 14 tipos más para 18 países

Configuración en Claude Code

{
  "mcpServers": {
    "taxid-latam": {
      "url": "https://latam.rootspa.cl/mcp",
      "transport": "streamable-http"
    }
  }
}

Autenticación

API Token (suscripción)

Authorization: Bearer <tu_token>

Obtener token →

Pagos x402 (pay-per-call)

Los endpoints requieren pago de $0.001 USDC por request en la red Base si no se envía token de suscripción.


Errores

CódigoCausaDescripción
401Sin autenticaciónToken inválido, expirado o no enviado
402Pago requeridoNo se incluyó pago x402 ni token de suscripción
422Parámetros inválidoscountry no reconocido o campos faltantes
429Rate limitLímite de requests excedido en modo demo

Notas

  • La API acepta IDs con o sin caracteres de formato (puntos, guiones, barras) — los normaliza automáticamente.
  • Un ID inválido retorna HTTP 200 con is_valid: false. El HTTP 422 se reserva para errores de parámetros (país desconocido, campos faltantes).
  • Para países marcados como Formato + longitud, se valida la estructura y longitud pero no existe un algoritmo de dígito verificador público — dv_check retorna not_applicable.
  • persona_fisica = persona natural. persona_moral = persona jurídica / empresa.