# Uruguay — operator sources

Public sources consulted for the community-curated dataset at
[`uy.json`](uy.json). Snapshot date: 2026-05-25.

## Legal framework

- **Decreto 451/009** · Creación de CERTuy.
  https://www.gub.uy/centro-nacional-respuesta-incidentes-seguridad-informatica
- **Decreto 92/014** · Marco regulatorio de seguridad de la información.
- **Ley 18.331** · Protección de Datos Personales.
  https://www.impo.com.uy/bases/leyes/18331-2008
- **Marco Nacional de Ciberseguridad · AGESIC**.

## Regulators referenced for sector mapping

| Regulator | Acronym | URL | Used for |
|---|---|---|---|
| Agencia de Gobierno Electrónico | AGESIC | https://www.gub.uy/agencia-gobierno-electronico-sociedad-informacion-conocimiento | Digital policy + CERTuy host |
| Centro Nacional de Respuesta a Incidentes | CERTuy | https://www.gub.uy/centro-nacional-respuesta-incidentes-seguridad-informatica | Incident response |
| Banco Central del Uruguay | BCU | https://www.bcu.gub.uy | Banking & financial supervision |
| Unidad Reguladora de Servicios de Comunicaciones | URSEC | https://www.gub.uy/unidad-reguladora-servicios-comunicaciones | Telecom regulation |
| Unidad Reguladora de Servicios de Energía y Agua | URSEA | https://www.gub.uy/unidad-reguladora-servicios-energia-agua | Energy & water regulation |
| Unidad Reguladora y de Control de Datos Personales | URCDP | https://www.gub.uy/unidad-reguladora-control-datos-personales | Data protection authority |
| Ministerio de Salud Pública | MSP | https://www.gub.uy/ministerio-salud-publica | Health system supervision |

## RUT verification

The DGI verifier (DV) of every entry in [`uy.json`](uy.json) was computed
against the DGI modulo-11 algorithm
([`src/normalizers/rut-uy.ts`](../../../src/normalizers/rut-uy.ts)) with
weights `[4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]` applied left-to-right over the
first 11 digits.

Additionally, every entry passes the DGI structural rules:
- Positions 1–2 (registration block) in range '01'–'22'.
- Positions 3–8 (sequence) not all zeros.
- Positions 9–11 (dependency code) equal '001'.
- Position 12 matches the computed check digit.

Entries are confidence-banded:
- `0.9–0.95` · RUT body sourced from a published canonical reference
  (ANTEL TuID privacy policy, UTE supplier portal, URSEA resolución
  delegada).
- `0.5–0.7` · RUT body is a placeholder (structurally valid under DGI rules
  but pending DGI confirmation); domain + sector are the high-confidence
  facts.
- `0.4` · brand placeholder where the legal entity may overlap with a parent
  RUT (e.g. ANTEL Datacenter).

## Public RUT sources (verified)

| Entity | RUT | Source |
|---|---|---|
| ANTEL | 211003420017 | https://www.tuid.uy/legal/Politica_de_Privacidad_Version_1.0.pdf · `RUT 211003420017` (Versión enero 2024) |
| UTE | 210778720012 | https://portal.ute.com.uy/proveedores/informacion/normativa-sobre-facturas-y-nota-de-credito · "El RUT de UTE es 210778720012" |
| ANCAP | 210475730011 | http://www.ursea.gub.uy/web/resolucionesDelegadas.nsf/0/032582E10067CB01832580C30062AACC · URSEA Resolución Delegada RD-00041-2017 |

## Algorithmic reference

- DGI Uruguay · Modelo de Datos (página 71) · referenced via AGESIC.
- python-stdnum · `stdnum.uy.rut` reference implementation
  https://arthurdejong.org/python-stdnum/doc/1.20/stdnum.uy.rut
- e-Factura · *Algoritmos de Dígito Verificador* (PuntoExe)
  https://efactura.puntoexe.com.uy/documentos/uruguay/algoritmos-de-d%C3%ADgito-verificador
- LookupTax · *Uruguay RUT number guide*
  https://lookuptax.com/docs/tax-identification-number/Uruguay-tax-id-guide
- DGI · *Nueva numeración del RUT* (octubre 2024)
  https://www.gub.uy/direccion-general-impositiva/comunicacion/noticias/nueva-numeracion-del-rut

## Notes on the Uruguayan vs. Chilean RUT distinction

Both Uruguay and Chile use the term "RUT", but the formats are
structurally incompatible:

| | Chile (`rut-cl`) | Uruguay (`rut-uy`) |
|---|---|---|
| Length | 7–9 digits + 1 verifier | 12 digits |
| Body structure | Free | P2 + S6 + "001" |
| Verifier characters | `0–9` or `K` | `0–9` |
| Weights | `[2,3,4,5,6,7]` cyclic | `[4,3,2,9,8,7,6,5,4,3,2]` |
| Canonical form | `########-X` | `XXXXXXXXXXXX` |

Conflating the two formats is a common source of integration bugs in
LATAM tax-data pipelines. The unified `latam-oiv-resolver` resolver routes
by ISO 3166-1 country code (`CL` vs `UY`), guaranteeing the correct
normalizer is invoked.
