# Anular o corregir un documento emitido

> Anula una factura afecta 33 o una boleta 39 o 41 con su nota de crédito 61 de anulación, o corrige los montos de una factura exenta 34 con una nota de débito 56 o de crédito 61, por REST, MCP o SDK. Qué hacer con cada documento y error.



Un documento emitido no se edita: se anula o se corrige con otro documento, una nota de crédito o de
débito que lo referencia. Busca tu caso:

| Si emitiste…                       | y quieres…                                     | Qué hacer                                                                                                |
| ---------------------------------- | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| Factura 33                         | anularla completa                              | [Nota de crédito 61 de anulación](#anular-una-factura), con `sii.anulacion.*`                            |
| Boleta 39 o 41 emitida por Connect | anularla                                       | [Nota de crédito 61 de anulación](#anular-una-boleta), con `sii.anulacion.*`                             |
| Factura 34                         | subir o bajar sus montos                       | [Nota de débito 56 o de crédito 61](#corregir-montos-de-una-factura-exenta-34), con `sii.dte.*`          |
| Factura 34                         | anularla completa                              | Todavía no se puede por Connect: hazlo en el portal del SII                                              |
| Factura 33                         | corregir solo parte de los montos              | Todavía no se puede por Connect: hazlo en el portal del SII                                              |
| Factura 33 o 34                    | corregir texto (razón social, giro, dirección) | Todavía no se puede por Connect: hazlo en el portal del SII                                              |
| Guía de despacho 52                | anularla                                       | No lleva nota: [se registra como anulada en el Libro de Guías](/docs/emitir/guias#si-una-guía-salió-mal) |

Anular y corregir funcionan distinto. En la **anulación**, el SII construye la nota de crédito entera a
partir del documento original y tú solo indicas cuál es. En la **corrección de montos**, la nota la armas
tú, con su línea, y sigue el mismo flujo de una factura.

## Anular una factura [#anular-una-factura]

Anular una factura es emitir su nota de crédito 61 de anulación. En el Facturador Gratuito esa nota no
se llena a mano: el SII la construye entera a partir de la factura original, con sus mismas líneas, neto,
IVA y total, y con la referencia que la anula. Por eso tu integración solo indica **cuál factura**: tipo,
folio y fecha de emisión. Connect no propone líneas ni montos.

Los requisitos son los mismos de la [emisión](/docs/emitir#qué-necesitas), con el mismo permiso
`sii:write`, y el flujo también son dos llamadas: `sii.anulacion.previsualizar` y `sii.anulacion.emitir`.

<Callout type="warn" title="Anular no tiene vuelta atrás">
  En el SII firmar es emitir: la nota se envía en el mismo acto y la factura queda anulada. Revisa la
  preparación antes de emitir.
</Callout>

También puedes anular una **boleta afecta 39 o exenta 41** que Connect emitió: mira [Anular una boleta](#anular-una-boleta).

### Qué facturas se pueden anular [#qué-facturas-se-pueden-anular]

* **Facturas afectas 33.** La anulación de una factura exenta 34 todavía no está incluida.
* **Emitidas con el Facturador Gratuito del SII**, desde Connect o desde sii.cl. Connect ubica la factura en
  la lista de documentos emitidos del portal; una factura emitida con otro sistema no está en esa lista y
  la preparación responde `sii_anulacion_documento_no_encontrado`.
* **Completas.** La nota anula la factura entera. Para corregir solo parte de los montos de una factura 33
  todavía no hay tool.

Una guía de despacho 52 no se anula con nota de crédito: mira
[Si una guía salió mal](/docs/emitir/guias#si-una-guía-salió-mal).

### 1. Prepara la anulación [#1-prepara-la-anulación]

```bash
curl -X POST https://connect.emisso.ai/api/v1/tools/sii.anulacion.previsualizar/execute \
  -H "Authorization: Bearer connect_sk_…" \
  -H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
  -H "Content-Type: application/json" \
  -d '{"input": {"documento": {"tipoDte": "33", "folio": "1042", "fechaEmision": "2026-09-15"}}}'
```

Salida esperada (`200`, campo `data`):

```json
{
  "anulacion": {
    "tipoDte": "61",
    "operacion": "anula",
    "referencia": { "tipoDte": "33", "folio": "1042", "fechaEmision": "2026-09-15" },
    "totales": { "neto": 548000, "iva": 104120, "total": 652120 }
  },
  "previewRef": "<referencia opaca>",
  "expiraEn": "2026-09-15T14:20:00.000Z",
  "advertencias": []
}
```

`referencia` y `totales` los escribió el SII. Comprueba que correspondan a la factura que quieres anular
antes de emitir. Como en la emisión, el `previewRef` vence en 15 minutos y lo emite el mismo actor que lo
preparó.

Si preparas la anulación en los segundos siguientes a emitir la factura, el portal puede todavía no
ofrecerla. Espera alrededor de un minuto y vuelve a preparar.

### 2. Emite la nota de anulación [#2-emite-la-nota-de-anulación]

```bash
curl -X POST https://connect.emisso.ai/api/v1/tools/sii.anulacion.emitir/execute \
  -H "Authorization: Bearer connect_sk_…" \
  -H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
  -H "Idempotency-Key: 8b1e4f7a-2c9d-4e36-a5b0-6d3f9c1e7a24" \
  -H "Content-Type: application/json" \
  -d '{"input": {"previewRef": "<referencia opaca>"}}'
```

Salida esperada (`200`, campo `data`):

```json
{
  "resultado": {
    "estado": "emitida",
    "tipoDte": "61",
    "puedeReintentar": false,
    "operacionId": "req_p3n8x2c6v1b9m4k7w0q5z",
    "folio": "87",
    "fechaEmision": "2026-09-15",
    "confirmadoEn": "2026-09-15T14:08:41.000Z",
    "xmlFirmado": "<DTE version=\"1.0\">…<TED version=\"1.0\">…</TED>…</DTE>"
  }
}
```

El `folio` es el de la nota de crédito, no el de la factura. Los estados de la anulación van en femenino:

* `emitida`: el portal lista la nota y su firma es la que Connect envió. La factura quedó anulada. Trae
  `xmlFirmado`, el XML de la nota con su timbre; después lo entrega
  [`sii.dte_xml.consultar`](/docs/emitir/facturas#3-pide-el-xml-después) con el mismo `operacionId`.
* `rechazada`: la nota no llegó a enviarse. La factura sigue vigente y puedes preparar la anulación de nuevo.
* `resultado_desconocido`: todavía no hay evidencia para afirmar una cosa ni la otra. No prepares otra
  anulación: sigue [Resultados y errores](/docs/emitir/resultados).

### Por MCP [#por-mcp]

La preparación va por `execute`:

```json
{
  "tool": "sii.anulacion.previsualizar",
  "connectionId": "conn_9tKfR2mQx4Vb",
  "params": { "documento": { "tipoDte": "33", "folio": "1042", "fechaEmision": "2026-09-15" } }
}
```

La emisión va por `execute_write`, con la clave de idempotencia fuera de `params`:

```json
{
  "tool": "sii.anulacion.emitir",
  "connectionId": "conn_9tKfR2mQx4Vb",
  "idempotencyKey": "8b1e4f7a-2c9d-4e36-a5b0-6d3f9c1e7a24",
  "params": { "previewRef": "<referencia opaca>" }
}
```

### Por SDK [#por-sdk]

```ts
const preparada = await connect.tools.sii.anulacion.previsualizar(
  { documento: { tipoDte: "33", folio: "1042", fechaEmision: "2026-09-15" } },
  { connectionId },
);
// Revisa preparada.anulacion.totales. Guarda la clave ANTES de emitir.
const { resultado } = await connect.tools.sii.anulacion.emitir(
  { previewRef: preparada.previewRef },
  { connectionId, idempotencyKey: crypto.randomUUID() },
);
```

Igual que en las facturas, la 0.1.0 publicada en npm no incluye estas tools: revisa [tu versión](/docs/sdk).

### Qué revisa Connect antes de firmar [#qué-revisa-connect-antes-de-firmar]

Como la nota la arma el SII, Connect revisa la página del portal antes de firmarla: que sea una anulación,
que refiera a la factura pedida, que no tenga campos editables y que sus totales cuadren (neto más IVA
igual al total). Al emitir vuelve a pedir la nota y la compara con la que preparaste. Si algo no coincide,
se detiene antes de firmar y la factura sigue vigente.

Si la factura tenía referencias informativas, como una orden de compra, el SII las copia en la nota después
de la referencia que anula. Connect las acepta mientras ninguna modifique otro documento.

## Anular una boleta [#anular-una-boleta]

El flujo y las dos llamadas son los mismos; cambia el `tipoDte`:

```json
{ "documento": { "tipoDte": "39", "folio": "123", "fechaEmision": "2026-09-21" } }
```

Para una boleta exenta, `"tipoDte": "41"`.

* **La nota sale por el Facturador Gratuito**, no por E-Boleta. Por eso pide lo mismo que anular una factura:
  la empresa inscrita en ese portal, la conexión habilitada para emitir y el permiso `sii:write`.
  `sii:boletas:write` no lo sustituye.
* **Boletas afectas 39 y exentas 41 emitidas por Connect** en la misma conexión. La fecha es el día en que Connect la
  envió al SII, la misma que muestra el libro de boletas. Una boleta emitida desde el portal del SII o con otro
  sistema no está en lo que Connect emitió, y la preparación responde `sii_anulacion_documento_no_encontrado`.
* **El SII no conoce la boleta en el Facturador Gratuito**, así que la nota no la arma él: Connect la llena
  con lo que guardó al emitirla. Lleva una línea por el total, la referencia a la boleta (tipo 39, folio y
  fecha) con el código que anula, y el receptor de la boleta. Si la boleta no tenía receptor, la nota va a la
  **propia empresa**: el SII no acepta el consumidor final genérico (66.666.666-6) como receptor de una nota.
  Los demás datos del receptor (razón social, dirección y giro) los completa el SII desde su registro.
* **En una boleta exenta la nota va sin IVA**: todo el total es exento y la preparación lo devuelve en
  `totales.exento`, con neto e IVA en cero. Cualquier total se puede anular.
* **En una boleta afecta, neto e IVA los calcula el portal** a partir del neto: IVA = neto × 19 %, redondeado. Connect propone el
  neto que, con ese IVA, suma exactamente el total de la boleta. En alrededor de uno de cada seis totales no
  existe ese neto (por ejemplo, $16 o $22). En esos casos la preparación responde `sii_anulacion_no_admitida`,
  porque cualquier nota sumaría un peso más o un peso menos que la boleta.

Antes de firmar, Connect comprueba además que la vista previa del SII tenga el total de la boleta, su fecha y
el receptor elegido.

## Corregir montos de una factura exenta 34 [#corregir-montos-de-una-factura-exenta-34]

La nota de débito 56 aumenta y la nota de crédito 61 rebaja el monto de una factura exenta 34 ya emitida.
Llevan el receptor de la factura, la referencia a ella y una línea con el monto de la corrección:

```json
{
  "input": {
    "candidato": {
      "tipoDte": "61",
      "receptor": {
        "rut": "77123456-9",
        "razonSocial": "Comercial Los Aromos SpA",
        "giro": "Venta de artículos de oficina",
        "direccion": "Av. Providencia 1234, oficina 501",
        "comuna": "Providencia",
        "ciudad": "Santiago"
      },
      "operacion": "corregir_montos",
      "referencia": {
        "tipoDteReferido": 34,
        "folio": "318",
        "fecha": "2026-09-02",
        "razon": "Descuento acordado con el cliente"
      },
      "detalles": [
        { "nombre": "Rebaja de precio", "cantidad": 1, "precioUnitario": 120000 }
      ]
    }
  }
}
```

| Campo                        | Qué va                                                                       |
| ---------------------------- | ---------------------------------------------------------------------------- |
| `tipoDte`                    | `"56"` para la nota de débito o `"61"` para la nota de crédito.              |
| `operacion`                  | Siempre `"corregir_montos"`.                                                 |
| `referencia.tipoDteReferido` | Siempre `34`: la nota solo corrige facturas exentas.                         |
| `referencia.folio`           | Folio de la factura 34, en texto y sin ceros a la izquierda.                 |
| `referencia.fecha`           | Fecha de emisión de la factura 34, en AAAA-MM-DD.                            |
| `referencia.razon`           | Motivo de la corrección, obligatorio, hasta 55 caracteres.                   |
| `detalles`                   | Una línea con `nombre`, `cantidad` y `precioUnitario`, como en las facturas. |

La nota es exenta: la vista previa devuelve `totales` con `exento` y `total`, sin IVA. No admite anular ni
corregir texto, referencias globales, referencias adicionales ni notas sobre otro tipo de documento.

## Errores frecuentes de la anulación [#errores-frecuentes-de-la-anulación]

| Código                                  | Cuándo                                                                                                                                                                                                                               | Qué hacer                                                                                       |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| `sii_anulacion_documento_no_encontrado` | La factura no está en la lista de emitidos del Facturador Gratuito, o la boleta no la emitió Connect en esta conexión: el folio o la fecha no calzan, o se emitió con otro sistema.                                                  | Revisa tipo, folio y fecha de emisión. Si acabas de emitir la factura, espera un minuto.        |
| `sii_anulacion_no_admitida`             | El portal no deja armar la nota de la boleta tal como está: su total no se puede escribir como neto más IVA redondeado, o el SII no habilita al receptor o no tiene su razón social, dirección y giro. El motivo viene en `details`. | Por esta vía no se resuelve. Anula el documento en el portal del SII.                           |
| `sii_anulacion_en_curso`                | Ya hay una anulación preparada y sin resolver para esa factura, o una emisión anterior espera su reconciliación.                                                                                                                     | Emite esa preparación o espera a que venza (15 minutos) o se reconcilie antes de preparar otra. |
| `sii_anulacion_ya_emitida`              | Esa factura ya tiene una nota de anulación emitida por Connect.                                                                                                                                                                      | No la anules de nuevo: la nota ya está en el SII.                                               |
| `sii_preview_token_expired`             | Pasaron más de 15 minutos desde la preparación.                                                                                                                                                                                      | Prepara la anulación de nuevo.                                                                  |
| `sii_preview_token_invalid`             | La preparación ya se usó, es de otra conexión o la emite otro actor.                                                                                                                                                                 | Prepara de nuevo con la misma clave de API con la que vas a emitir.                             |

Los errores comunes a toda emisión están en [Resultados y errores](/docs/emitir/resultados). La referencia
completa del contrato está en [`sii.anulacion.previsualizar`](/docs/referencia/sii/anulacion-previsualizar)
y [`sii.anulacion.emitir`](/docs/referencia/sii/anulacion-emitir).
