Blueorange Padrón Services

API de consulta de alícuotas

Consultá las alícuotas de percepción y retención de Ingresos Brutos de un CUIT en todas las jurisdicciones disponibles. El endpoint es público y no requiere autenticación.

Consultar alícuotas por CUIT

GET http://padron.service.blueorange.com.ar/padron/cuit/{cuit}

Parámetros de ruta

Parámetro Tipo Descripción
cuit string CUIT a consultar. Se aceptan guiones y espacios; el servicio extrae los dígitos y valida que sean exactamente 11.

Parámetros de query (opcionales)

ParámetroTipoDescripción
statestringFiltra por código de jurisdicción (ver tabla más abajo).
regimestringFiltra por código de régimen (P o R).

Ejemplo de request

curl http://padron.service.blueorange.com.ar/padron/cuit/30-12345678-9
curl "http://padron.service.blueorange.com.ar/padron/cuit/30123456789?state=B&regime=P"

Caché: la respuesta incluye un header ETag. Si reenviás ese valor en If-None-Match y los datos no cambiaron, el servicio responde 304 Not Modified sin cuerpo.
Rate limit: este endpoint está limitado por IP (la descarga del padrón completo no tiene límite). Al excederlo responde 429 Too Many Requests.

Ejemplo de respuesta (200 OK)

{
  "cuit": "30123456789",
  "results": [
    {
      "state": "B",
      "cuit": "30123456789",
      "date_from": "2025-01-01",
      "date_to": "2025-12-31",
      "regime": "P",
      "aliquot": 1.5,
      "state_name": "Buenos Aires",
      "regime_name": "Percepción",
      "last_update": "2026-06-16T21:00:00"
    },
    {
      "state": "B",
      "cuit": "30123456789",
      "date_from": "2025-01-01",
      "date_to": "2025-12-31",
      "regime": "R",
      "aliquot": 2.0,
      "state_name": "Buenos Aires",
      "regime_name": "Retención"
    }
  ]
}

Si el CUIT no tiene alícuotas cargadas, results es una lista vacía.

Campos de cada resultado

Campo Tipo Descripción
statestringCódigo de jurisdicción (1 caracter).
state_namestringNombre legible de la jurisdicción.
cuitstringCUIT normalizado (11 dígitos).
regimestringCódigo de régimen (1 caracter).
regime_namestringNombre legible del régimen.
aliquotnumberAlícuota expresada en porcentaje.
date_fromstring | nullInicio de vigencia (YYYY-MM-DD).
date_tostring | nullFin de vigencia (YYYY-MM-DD).
last_updatestring | nullFecha/hora de la última carga del padrón de esa jurisdicción.

Códigos de jurisdicción

CódigoJurisdicción
CCABA
BBuenos Aires
TTucumán
EEntre Ríos
SSanta Fe
ASalta
XCórdoba

Códigos de régimen

CódigoRégimen
PPercepción
RRetención

Errores

Código HTTPMotivo
400 Bad Request El CUIT no tiene 11 dígitos numéricos, o el filtro state/regime es inválido.
429 Too Many Requests Se excedió el límite de consultas por IP.

Consultar alícuotas de varios CUITs (batch)

POST http://padron.service.blueorange.com.ar/padron/cuits

Devuelve las alícuotas de varios CUITs en una sola llamada (hasta 500 por request). Pensado para integraciones que resuelven muchos CUITs de una (ej. Odoo al validar comprobantes).

Body (JSON)

{
  "cuits": ["30-12345678-9", "27999888777"],
  "state": "B",     // opcional
  "regime": "P"      // opcional
}

Ejemplo de request

curl -X POST http://padron.service.blueorange.com.ar/padron/cuits \
  -H "Content-Type: application/json" \
  -d '{"cuits": ["30123456789", "27999888777"]}'

Ejemplo de respuesta (200 OK)

{
  "results": {
    "30123456789": [ { "state": "B", "regime": "P", "aliquot": 1.5, ... } ],
    "27999888777": [ ]
  },
  "invalid": ["123"]
}

results tiene una entrada por cada CUIT pedido (lista vacía si no tiene alícuotas). Los CUITs con formato inválido se devuelven en invalid. Mismo rate limit por IP que la consulta individual.

También podés explorar la especificación interactiva (OpenAPI / Swagger) en http://padron.service.blueorange.com.ar/docs.