AFIP — Padron de Contribuyentes
~6,1 millones de CUIT con estado en Ganancias, IVA y Monotributo.
Qué incluye
- 9 columnas documentadas
- Formato Parquet y CSV
- Cobertura snapshot semanal vigente
- Actualización semanal
- Acceso por descarga, API y MCP
- Schema versionado y trazable a la fuente
Casos de uso
- ¿Cuál es la razón social del CUIT 30500001735?
- ¿La empresa con CUIT X está inscripta en IVA activo?
- ¿Cuántos monotributistas activos hay en Argentina y por qué categoría?
- ¿Qué CUITs de una cartera de clientes figuran como empleadores?
- ¿Cuántos contribuyentes tienen IVA activo y son empleadores?
- ¿Qué porcentaje del padrón está en categoría monotributo K?
- ¿Cuál es la distribución de contribuyentes por estado en Ganancias?
Columnas9
Limitaciones conocidas
Pueden invalidar un análisis ingenuo. Documentadas como parte del control de calidad.
monotributo ' ' (dos espacios) = no monotributista
El campo monotributo tiene exactamente 2 caracteres. Para los no
monotributistas el valor es dos espacios (' '), no NULL, no cadena vacía.
Filtrar con monotributo <> ' ' (no con IS NOT NULL) para aislar
monotributistas.
monotributo con espacio líder es un código válido
' A' (espacio + letra) es la categoría A del monotributo. Esto se debe al formato fixed-width de AFIP: el campo ocupa 2 chars y las categorías simples (A-K) usan el formato ' X'. NO hacer trim — el espacio es parte del código.
Los códigos imp_ganancias / imp_iva son abreviaciones, no booleanos
'AC' no es solo 'activo' — hay 'EX' (exento) y otros valores. Para
verificar si un contribuyente está inscripto activo en IVA, filtrar
imp_iva = 'AC'. Para saber si está en algún régimen, excluir
imp_iva = 'NI'.
La tabla tiene un solo snapshot vigente en Postgres
La carga semanal hace TRUNCATE + COPY: la tabla siempre tiene exactamente una snapshot_date (la más reciente). No hay historial multi-semana en Postgres. El historial está en R2 silver como Parquet inmutables.
CUIT 11 dígitos sin separadores (IRAM 5160)
Todos los CUITs en este dataset son exactamente 11 dígitos numéricos sin
guiones ni puntos. Para buscar por CUIT en formato '20-12345678-9',
primero normalizar: REPLACE(REPLACE(cuit_input, '-', ''), '.', '').
denominacion puede tener caracteres especiales en futuros snapshots
La muestra verificada del spec es ASCII puro. El parser decodifica con latin-1 que es superconjunto de ASCII y compatible con cp1252. Si AFIP introduce acentos, se decodificarán correctamente sin cambios.