> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cucu.bo/llms.txt
> Use this file to discover all available pages before exploring further.

# Emisión Masiva

> Las 4 herramientas MCP para emitir por lote con la modalidad masiva del SIAT (código 3).

## Emisión Masiva

En la modalidad masiva las facturas no se envían al SIAT una por una: se acumulan en un **lote** abierto sobre un punto de venta y viajan juntas, comprimidas en paquetes, cuando el lote se cierra. Estas 4 herramientas cubren el ciclo completo.

<Warning>
  No es contingencia. La masiva se emite **en línea** y necesita el SIAT operativo: no abre
  evento significativo ni usa CAFC. Para el SIAT caído, ver [Contingencia](/mcp/herramientas-eventos).
</Warning>

<CardGroup cols={2}>
  <Card title="abrirLoteMasivo" icon="box-open" href="#abrirlotemasivo">
    Abre el lote en un POS. A partir de ahí las facturas que emitas se acumulan
    en vez de irse al SIAT. Idempotente.
  </Card>

  <Card title="cerrarLoteMasivo" icon="paper-plane" href="#cerrarlotemasivo">
    Arma los paquetes, los envía y valida contra SIAT, y marca cada factura.
    Reentrante: retoma un cierre cortado sin reenviar lo ya validado.
  </Card>

  <Card title="rectificarLoteMasivo" icon="wrench" href="#rectificarlotemasivo">
    Regenera las facturas que SIAT rechazó y las devuelve a la cola del lote.
    Las aceptadas no se tocan.
  </Card>

  <Card title="verLoteMasivo" icon="magnifying-glass" href="#verlotemasivo">
    Muestra el lote abierto con el detalle de cada paquete: código de recepción,
    cantidad de facturas y estado.
  </Card>
</CardGroup>

***

<h2 id="abrirlotemasivo\">
  abrirLoteMasivo \\
</h2>

Abre un lote de emisión masiva en un punto de venta. Mientras esté abierto, las facturas que se emitan quedan en `MASSIVE_PENDING` — con su CUF definitivo y su QR, listas para entregar — pero todavía no viajaron al SIAT.

| Parámetro     | Tipo    | Requerido | Descripción                                             |
| ------------- | ------- | --------- | ------------------------------------------------------- |
| `posId`       | String  | Sí        | UUID del punto de venta                                 |
| `sector`      | Integer | No        | Sector documental del lote. Omitir para usar el del POS |
| `tipoFactura` | Integer | No        | Tipo de documento SIAT. Omitir para `1` (factura)       |

**Requiere autenticación:** Sí

<Info>
  Idempotente: si el POS ya tiene un lote abierto, devuelve ese en vez de crear otro.
  Un POS no puede tener dos lotes abiertos a la vez.
</Info>

El sector se valida al abrir, no al cerrar: si no está soportado o la empresa no lo tiene autorizado ante el SIN, la herramienta falla ahí. Descubrirlo al cerrar significaría tener el lote entero ya emitido.

**Ejemplo de uso con AI:**

> "Abrí un lote masivo en el POS 660e..."

***

<h2 id="cerrarlotemasivo\">
  cerrarLoteMasivo \\
</h2>

Cierra el lote: parte las facturas acumuladas en paquetes, los envía al SIAT, los valida y marca cada factura como aceptada o rechazada con su motivo.

| Parámetro | Tipo   | Requerido | Descripción             |
| --------- | ------ | --------- | ----------------------- |
| `posId`   | String | Sí        | UUID del punto de venta |

**Requiere autenticación:** Sí

<Warning>
  En lotes grandes puede tardar varios minutos: envía y valida cada paquete contra el SIAT.
</Warning>

Es reentrante. Si un cierre se corta a mitad, volver a llamarlo retoma donde quedó: los paquetes ya validados no se reenvían.

La respuesta distingue tres desenlaces que conviene no confundir: lote sin facturas, todo aceptado, o con rechazos.

**Ejemplo de uso con AI:**

> "Cerrá el lote masivo del POS 660e... y decime cuántas quedaron rechazadas"

***

<h2 id="rectificarlotemasivo\">
  rectificarLoteMasivo \\
</h2>

Regenera las facturas que el SIAT rechazó dentro del lote: les recalcula CUF, XML, firma y QR contra el CUFD vigente y las devuelve a la cola. Después hay que volver a cerrar el lote para reenviarlas.

| Parámetro | Tipo   | Requerido | Descripción             |
| --------- | ------ | --------- | ----------------------- |
| `posId`   | String | Sí        | UUID del punto de venta |

**Requiere autenticación:** Sí

<Info>
  Las facturas ya aceptadas no se tocan: su CUF está validado por el SIAT y regenerarlo
  cambiaría un documento fiscal firme.
</Info>

**Ejemplo de uso con AI:**

> "Rectificá las rechazadas del lote del POS 660e... y volvé a cerrarlo"

***

<h2 id="verlotemasivo\">
  verLoteMasivo \\
</h2>

Muestra el lote abierto del punto de venta con el detalle de sus paquetes: cuántas facturas lleva cada uno, el código de recepción que devolvió el SIAT y su estado.

| Parámetro | Tipo   | Requerido | Descripción             |
| --------- | ------ | --------- | ----------------------- |
| `posId`   | String | Sí        | UUID del punto de venta |

**Requiere autenticación:** Sí

Estados de un paquete:

| Estado      | Significa                                                   |
| ----------- | ----------------------------------------------------------- |
| `PENDING`   | Armado, todavía no enviado                                  |
| `SENT`      | El SIAT lo recibió y dio código de recepción; falta validar |
| `VALIDATED` | El SIAT lo dio por bueno                                    |
| `REJECTED`  | El SIAT rechazó facturas del paquete                        |
| `ERROR`     | Falló el armado o el envío                                  |

**Ejemplo de uso con AI:**

> "Mostrame el estado del lote masivo del POS 660e..."
