PRODUCT · VALIDATE

Referencia de Validate API

El módulo Validate valida tax IDs, documentos de identidad e identificadores financieros en mercados sudamericanos más estándares globales con un único endpoint.

Descripción general

El módulo Validate valida tax IDs, documentos de identidad e identificadores financieros en mercados sudamericanos más estándares globales con un único endpoint.

URL base para todos los requests:

https://api.normadata.io/v1/validate/tax-ids

Todos los requests requieren una API key en el header X-API-Key. Consultá la referencia principal de la API para detalles de autenticación.

Autenticación

Autenticación

Cada request debe incluir tu API key en el header X-API-Key. Las keys siguen el formato nd_ seguido de 30 caracteres (33 chars en total).

Header
X-API-Key: nd_a8f3b2c1d4e5f6g7h8i9j0k1l2m3n4

Las keys se provisionan manualmente durante el acceso anticipado. Sumate a la lista para solicitar acceso.

Validación de identificadores

Validación de identificadores

Endpoints para validar y normalizar identificadores en distintos dominios. Todos devuelven un booleano valid y la forma normalizada.

Todos los endpoints son batch: mandás un array items y recibís un results por item, correlacionado por el id que vos proveés. El mismo endpoint sirve para 1 o N (hasta 1.000 ítems; 500 en /records).

POST /v1/validate/tax-ids — Tax IDs

POST/v1/validate/tax-ids

Valida y normaliza tax IDs (CUIT, CPF, RFC, RUT, NIT, RUC y más). Devuelve type (persona o empresa) cuando el ID lo codifica. Hasta 1.000 por request.

cURL
curl -X POST https://api.normadata.io/v1/validate/tax-ids \
  -H "X-API-Key: nd_a8f3b2c1d4e5f6g7h8i9j0k1l2m3n4" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      { "id": "a", "value": "20-12345678-6", "country": "AR", "type": "cuit" },
      { "id": "b", "value": "123.456.789-09", "country": "BR" }
    ]
  }'

Respuesta de ejemplo 200

JSON
{
  "results": [
    {
      "id": "a",
      "country": "AR",
      "type": "cuit",
      "valid": true,
      "normalized": "20123456786",
      "formatted": "20-12345678-6"
    },
    {
      "id": "b",
      "country": "BR",
      "type": "cpf",
      "valid": true,
      "normalized": "12345678909",
      "formatted": "123.456.789-09"
    }
  ]
}

POST /v1/validate/accounts — Cuentas (CBU, CVU, CLABE, CCI, IBAN)

POST/v1/validate/accounts

Valida cuentas bancarias: CBU/CVU (Mod-10), CLABE (Banxico), CCI (Perú), IBAN (Mod-97). Devuelve checksum_valid y bank_name cuando se resuelve. Hasta 1.000 por request.

cURL
curl -X POST https://api.normadata.io/v1/validate/accounts \
  -H "X-API-Key: nd_a8f3b2c1d4e5f6g7h8i9j0k1l2m3n4" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      { "id": "1", "value": "0170010600000123456780", "country": "AR", "type": "cbu" },
      { "id": "2", "value": "DE89370400440532013000", "country": "DE", "type": "iban" }
    ]
  }'

Respuesta de ejemplo 200

JSON
{
  "results": [
    {
      "id": "1",
      "country": "AR",
      "type": "cbu",
      "valid": true,
      "checksum_valid": true,
      "bank_name": "Galicia"
    },
    {
      "id": "2",
      "country": "DE",
      "type": "iban",
      "valid": true,
      "checksum_valid": true
    }
  ]
}

POST /v1/validate/emails — Emails

POST/v1/validate/emails

Valida sintaxis RFC, normaliza (lowercase, trim) y detecta typos de dominio. Cada item del lote devuelve valid y normalized. Hasta 1.000 emails por request.

cURL
curl -X POST https://api.normadata.io/v1/validate/emails \
  -H "X-API-Key: nd_a8f3b2c1d4e5f6g7h8i9j0k1l2m3n4" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      { "id": "1", "value": "  ROGER@Normadata.IO " },
      { "id": "2", "value": "juan@gmial.com" }
    ]
  }'

Respuesta de ejemplo 200

JSON
{
  "results": [
    {
      "id": "1",
      "value": "  ROGER@Normadata.IO ",
      "valid": true,
      "normalized": "roger@normadata.io"
    },
    {
      "id": "2",
      "value": "juan@gmial.com",
      "valid": false,
      "error": "typo in domain: did you mean gmail.com?"
    }
  ]
}

POST /v1/validate/phones — Teléfonos

POST/v1/validate/phones

Normaliza teléfonos a E.164 y devuelve el tipo de línea (mobile, landline, mobile_or_landline, other). El país es la región de parseo. Hasta 1.000 por request.

cURL
curl -X POST https://api.normadata.io/v1/validate/phones \
  -H "X-API-Key: nd_a8f3b2c1d4e5f6g7h8i9j0k1l2m3n4" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      { "id": "1", "value": "+54 (11) 4555-2233", "country": "AR" },
      { "id": "2", "value": "11987654321", "country": "BR" }
    ]
  }'

Respuesta de ejemplo 200

JSON
{
  "results": [
    {
      "id": "1",
      "valid": true,
      "normalized": "+541145552233",
      "type": "landline"
    },
    {
      "id": "2",
      "valid": true,
      "normalized": "+5511987654321",
      "type": "mobile"
    }
  ]
}

POST /v1/validate/records — Records

POST/v1/validate/records

Valida una entidad completa (tax_id, account, email, phone, name, address), chequea consistencia entre campos y resume readiness (payment, billing). Hasta 500 records por request.

cURL
curl -X POST https://api.normadata.io/v1/validate/records \
  -H "X-API-Key: nd_a8f3b2c1d4e5f6g7h8i9j0k1l2m3n4" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "reference_id": "prov-001",
        "country": "AR",
        "tax_id": "20-12345678-6",
        "account": "0170010600000123456780",
        "account_type": "cbu",
        "name": "Juan Pérez",
        "email": "juan@empresa.com"
      }
    ]
  }'

Respuesta de ejemplo 200

JSON
{
  "results": [
    {
      "reference_id": "prov-001",
      "country": "AR",
      "fields": {
        "tax_id": {
          "valid": true,
          "normalized": "20123456786"
        },
        "account": {
          "valid": true,
          "checksum_valid": true,
          "bank_name": "Galicia",
          "country": "AR"
        },
        "name": {
          "full": "Juan Pérez",
          "first": "Juan",
          "paternal": "Pérez"
        },
        "email": {
          "valid": true,
          "normalized": "juan@empresa.com"
        }
      },
      "consistency": [
        {
          "check": "country_matches_tax_id",
          "ok": true
        },
        {
          "check": "country_matches_account",
          "ok": true
        }
      ],
      "readiness": {
        "payment": {
          "status": "ready"
        },
        "billing": {
          "status": "ready"
        }
      }
    }
  ]
}
Códigos de error

Códigos de error

Todos los endpoints de Validate comparten el mismo schema de error. HTTP 200 solo se devuelve ante una normalización exitosa.

CódigoEstadoDescripción
empty_batch400El array items llegó vacío. Mandá al menos un ítem por request.
batch_too_large400El lote excede el máximo permitido (1.000 ítems; 500 en /records). Paginá en lotes más chicos.
invalid_api_key401La API key falta, es inválida o fue revocada
quota_exceeded429Se agotó la cuota de la cuenta. El conteo es por ítem o registro procesado.
Límites de velocidad

Límites de velocidad

Durante el acceso anticipado, el uso se monitorea por cuenta. No hay números de rate limit públicos aún.