# Reglas fiscales

> IndFact (indicador de facturación), CAEEspecial/MntBruto por tipo de contribuyente y redondeo

## IndFact - indicador de facturación por línea

Es la misma tabla que devuelve `GET /v1/taxes`, así que se puede consultar en
vivo en lugar de copiarla. La columna de tasa es el valor que el gateway usa para
calcular, no una lectura del nombre.

| IndFact | Significado | Tasa que aplica el gateway |
|---|---|---|
| 1 | Sin IVA (exento) | 0% |
| 2 | Tasa mínima | 10% |
| **3** | **Tasa básica** | **22%** |
| 4 | Otra tasa | 0% |
| 5 | Entrega gratuita | 0% |
| 6 | No facturable | 0% |
| 7 | No facturable negativo | 0% |
| 8 / 10 | Exportación y asimiladas | 0% |
| 11 | Impuesto percibido | 0% |
| 12 | IVA en suspenso | 0% |
| 13 | Ítem vendido por no contribuyente | 0% |
| 14 | Contribuyente IVA mínimo / Monotributo / Monotributo MIDES | 0% |
| 15 | Contribuyente IMEBA | 0% |
| 16 | Obligación IVA mínimo / Monotributo / Monotributo MIDES | 0% |

**Sólo dos indicadores generan IVA: el 2 y el 3.** Todos los demás valen 0 en la
tabla del gateway, incluido el 4, "Otra tasa", que por su nombre parece que
dependiera de algo y no depende: el gateway le calcula 0%.

Que la tasa sea 0 no significa que el indicador sea intercambiable. `IndFact`
también le dice a DGI **por qué** esa línea no lleva IVA, y ese motivo es parte
del comprobante. Elegir el número por la tasa que produce, en vez de por lo que
la línea es, da un comprobante que cierra en pesos y miente en el motivo.

Para el caso común de una venta gravada a tasa básica (22%): `IndFact: 3`.
El gateway acumula los netos e IVA por tasa en los tags DGI correspondientes
(`MntNetoIVATasaBasica` / `MntIVATasaBasica`, etc.).

### Ejemplo

Bloque `Totales` de una eFactura con una línea gravada a tasa básica: neto 2500
→ IVA 550 → total 3050.

```json
{
  "TpoMoneda": "UYU",
  "MntNetoIVATasaBasica": 2500,
  "IVATasaBasica": 22,
  "MntIVATasaBasica": 550,
  "MntTotal": 3050,
  "MntPagar": 3050,
  "CantLinDet": 1
}
```

`MntIVATasaBasica` (550) = `MntNetoIVATasaBasica` (2500) × 22%: el mapeo
IndFact 3 → 22%.

## CAEEspecial, indFact y MntBruto según el tipo de contribuyente

Estas reglas aplican a la emisión de e-Facturas y e-Tickets, y de sus notas
de crédito y débito; el gateway también controla `MntBruto` contra el CAE
en los demás comprobantes que lo llevan (todos salvo remitos y resguardos).
El tipo de contribuyente de la empresa emisora determina qué `CAEEspecial`,
`indFact` y `MntBruto` corresponde enviar en cada comprobante.

| Tipo de contribuyente | CAEEspecial | indFact | MntBruto |
|---|---|---|---|
| Régimen general | no se informa | según la operación | 1, 2, o no se informa, según cómo se expresen los importes |
| Exonerado de IVA | 1 | 1, 5, 6, 7 o 10 | 1, 2, o no se informa, según cómo se expresen los importes |
| IVA mínimo | 2 | 16 | 3 |
| Monotributo | 3 | 16 | 3 |
| Monotributo Social MIDES | 4 | 16 | 3 |

Con `CAEEspecial` 1 la causal de exoneración (`CausalCAEEsp`) la trae el
talonario que se está usando: el integrador no la envía.

`MntBruto` 1 indica importes con IVA incluido, 2 con IMEBA y adicionales
incluidos, y 3 es el de IVA mínimo, Monotributo y Monotributo Social MIDES.
Si tus importes de línea son netos, sin IVA ni IMEBA incluido, no informes
`MntBruto`: vale para régimen general y también con `CAEEspecial` 1.

**Qué valida el gateway:**

- `CAEEspecial` va dentro de `IdDoc`, igual que `MntBruto`.
- El comprobante no se emite si `MntBruto` no coincide con el CAE que se usa:
  con `CAEEspecial` 2, 3 o 4 sólo se acepta `MntBruto` 3; en los demás casos
  se acepta 1, 2, o que no lo informes.
- `indFact` no se valida contra el tipo de contribuyente: esa columna de la
  tabla es una guía de qué enviar, no una restricción que el gateway te
  imponga.
- Si el CAE que se usa tiene `CAEEspecial` 3 o 4 (Monotributo o Monotributo
  Social MIDES), el gateway rechaza el envío si mandás `IVAalDia`.

## Redondeo

El gateway **no re-redondea** las líneas: los importes
de línea viajan tal como los manda el integrador. El único redondeo que aplica es
sobre los **totales en UYU al enviar a DGI**, a 2 decimales.

Consecuencia práctica para el integrador:

- Redondeá vos las líneas a 2 decimales antes de enviar; el gateway no lo hace por
  vos a nivel línea.
- Los totales se formatean a 2 decimales hacia DGI.
- El ejemplo de arriba (neto 2500, IVA 550, total 3050) ya está en enteros y
  cierra exacto; con decimales, la coherencia línea-vs-total es responsabilidad del
  emisor.

Referencia normativa: [Formato CFE](https://www.efactura.dgi.gub.uy/principal/ampliacion_de_contenido/documento-de-formato-cfe-version-23-1) de DGI. Es la versión vigente al
momento de escribir esto (23-1); DGI la actualiza, y la lista de versiones está
en [Documentos de interés](https://www.efactura.dgi.gub.uy/principal/ampliacion_de_contenido/documentos-de-interes).
