Anular una factura
Anula una factura afecta 33 emitida con el Facturador Gratuito del SII emitiendo su nota de crédito 61 de anulación, por REST, MCP o SDK. El SII arma la nota completa.
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, con el mismo permiso
sii:write, y el flujo también son dos llamadas: sii.anulacion.previsualizar y sii.anulacion.emitir.
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.
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.
1. Prepara la anulación
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):
{
"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
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):
{
"resultado": {
"estado": "emitida",
"tipoDte": "61",
"puedeReintentar": false,
"operacionId": "req_p3n8x2c6v1b9m4k7w0q5z",
"folio": "87",
"fechaEmision": "2026-09-15",
"confirmadoEn": "2026-09-15T14:08:41.000Z"
}
}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.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.
Por MCP
La preparación va por execute:
{
"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:
{
"tool": "sii.anulacion.emitir",
"connectionId": "conn_9tKfR2mQx4Vb",
"idempotencyKey": "8b1e4f7a-2c9d-4e36-a5b0-6d3f9c1e7a24",
"params": { "previewRef": "<referencia opaca>" }
}Por SDK
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.
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.
Errores frecuentes
| Código | Cuándo | Qué hacer |
|---|---|---|
sii_anulacion_documento_no_encontrado | La factura no está en la lista de emitidos del Facturador Gratuito: el folio o la fecha no calzan, o se emitió con otro sistema. | Revisa folio y fecha de emisión. Si la acabas de emitir, espera un minuto. |
sii_anulacion_en_curso | Ya hay una anulación preparada y sin resolver para esa factura. | Emite esa preparación o espera a que venza (15 minutos) antes de preparar otra. |
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. La referencia
completa del contrato está en sii.anulacion.previsualizar
y sii.anulacion.emitir.
Facturas 33 y 34
Emite una factura afecta 33 o exenta 34 ante el SII con una a diez líneas y hasta tres referencias, por REST, MCP o SDK, paso a paso.
Guía 52 y notas de corrección
Emite ante el SII una guía de despacho 52 que constituye venta y notas de débito 56 o de crédito 61 que corrigen montos de una factura exenta 34.