Connect

Preparar la anulación de una factura o boleta en el SII

Prepara en el Facturador Gratuito del SII la nota de crédito que anula un documento, sin firmarla ni emitirla.

Tool IDsii.anulacion.previsualizar
Nombre MCPsii__anulacion__previsualizar
Conectorsii
Planoaction
Scope (permiso)sii:write
Authconnection_credentials
Versión3
Sensiblesí
Deprecadono
ComportamientoreadOnly=true, destructive=false, idempotent=true, openWorld=true

Requiere conexión. Indica cuál en cada llamada: header X-Connect-Connection en REST y campo connectionId en el execute de MCP. No hay resolución implícita, ni siquiera con una sola conexión activa: la conexión es la empresa. El id sale de conexiones.estado.consultar.

Qué hace

Identifica el documento por tipo, folio y fecha de emisión. Una factura afecta (33) tiene que estar en la lista de emitidos de ese portal: el SII construye la nota a partir de ella. Una boleta afecta (39) o exenta (41) tiene que haberla emitido Connect en esta conexión: la nota va por su total, con referencia a la boleta y al receptor de la boleta, o a la propia empresa si la boleta no tenía receptor. La de una boleta exenta no lleva IVA. Un documento emitido con otro proveedor se rechaza diciéndolo. Requiere habilitación de la organización, permiso de la conexión y credencial de representante, y que la conexión tenga guardada la clave del certificado: se resuelve en el servidor y nunca viaja en la llamada ni en el resultado.

Entrada

CampoTipoRequeridoDescripción
documentoobjetosíEl documento a anular, identificado como lo conoce quien lo emitió.
documento.tipoDte"33" · "39" · "41"sí33: factura electrónica afecta emitida con el Facturador Gratuito. 39 o 41: boleta electrónica afecta o exenta emitida por Connect en esta conexión.
documento.foliostring ^[1-9][0-9]{0,17}$síFolio del documento a anular, en TEXTO: es un identificador, no una cantidad.
documento.fechaEmisionstringsíFecha de emisión del documento, AAAA-MM-DD: la de la lista del portal para una factura, el día de envío en Chile para una boleta.
JSON Schema de entrada
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "documento": {
      "type": "object",
      "properties": {
        "tipoDte": {
          "type": "string",
          "enum": [
            "33",
            "39",
            "41"
          ],
          "description": "33: factura electrónica afecta emitida con el Facturador Gratuito. 39 o 41: boleta electrónica afecta o exenta emitida por Connect en esta conexión."
        },
        "folio": {
          "type": "string",
          "pattern": "^[1-9][0-9]{0,17}$",
          "description": "Folio del documento a anular, en TEXTO: es un identificador, no una cantidad."
        },
        "fechaEmision": {
          "type": "string",
          "x-emisso-formato": "AAAA-MM-DD",
          "description": "Fecha de emisión del documento, AAAA-MM-DD: la de la lista del portal para una factura, el día de envío en Chile para una boleta."
        }
      },
      "required": [
        "tipoDte",
        "folio",
        "fechaEmision"
      ],
      "additionalProperties": false,
      "description": "El documento a anular, identificado como lo conoce quien lo emitió."
    }
  },
  "required": [
    "documento"
  ],
  "additionalProperties": false
}

Ejemplo

curl
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"}}}'
MCP · meta-tool execute
{
  "tool": "sii.anulacion.previsualizar",
  "params": {
    "documento": {
      "tipoDte": "33",
      "folio": "1042",
      "fechaEmision": "2026-09-15"
    }
  },
  "connectionId": "conn_9tKfR2mQx4Vb"
}

Salida esperada (200):

{
  "data": {
    "anulacion": {
      "tipoDte": "61",
      "operacion": "anula",
      "referencia": {
        "tipoDte": "33",
        "folio": "1042",
        "fechaEmision": "2026-09-15"
      },
      "totales": {
        "neto": 548000,
        "iva": 104120,
        "total": 652120
      }
    },
    "previewRef": "anr.1.1789482000000.Qm9Lr3Tx7Vb1Nz5Kc8Wp2Hs4.Jd6Yf0Ga9Ue3Ko7Mt1Rw5Xq8.Lb2Zn6Cv4Ej0Ph8Si3Dk7Fu1",
    "expiraEn": "2026-09-15T14:20:00.000Z",
    "advertencias": []
  },
  "meta": {
    "request_id": "req_…",
    "tool_id": "sii.anulacion.previsualizar",
    "plane": "action",
    "latency_ms": 7410,
    "audit_status": "recorded"
  }
}

referencia y totales los escribió el SII: comprueba que sean los de la factura antes de emitir con sii.anulacion.emitir. Paso a paso en Anular o corregir un documento.

Salida

CampoTipoRequeridoDescripción
anulacionobjetosíLa nota de crédito que devolvió el SII para el documento, todavía sin firmar.
anulacion.tipoDtestringsíNota de crédito electrónica.
anulacion.operacionstringsíAnula el documento referido; no corrige montos ni texto.
anulacion.referenciaobjetosíEl documento que esta nota anula, según lo escribió el propio SII.
anulacion.referencia.tipoDte"33" · "39" · "41"síTipo del documento anulado: 33 factura, 39 boleta afecta o 41 boleta exenta.
anulacion.referencia.foliostring ^[1-9][0-9]{0,17}$síFolio del documento a anular, en TEXTO: es un identificador, no una cantidad.
anulacion.referencia.fechaEmisionstringsíFecha de emisión del documento anulado, AAAA-MM-DD.
anulacion.totalesobjetosíTotales de la vista previa del SII. En una factura los copia el SII de la original. En una boleta, Connect propone el neto que con el IVA redondeado del portal suma exactamente el total de la boleta.
anulacion.totales.netoenterosíMonto neto en pesos, según la vista previa del SII.
anulacion.totales.ivaenterosíIVA en pesos, calculado por el SII.
anulacion.totales.exentoenteronoMonto exento en pesos. Sólo en la anulación de una boleta exenta, donde neto e IVA son cero.
anulacion.totales.totalenterosíTotal en pesos; siempre igual a neto + IVA + exento.
previewRefstringsíReferencia opaca y de vida corta que liga esta preparación a una eventual emisión.
expiraEnstring `^(?:(?:\d\d[2468][048]\d\d[13579][26]\d\d0[48]
advertenciaslista de "confirmacion_humana_pendiente"síAdvertencias codificadas; nunca HTML ni datos del portal. Hoy la lista sale vacía: la preparación se confirma dentro de sii.anulacion.emitir tanto con clave de API como con una persona, así que confirmacion_humana_pendiente ya no se emite y se conserva sólo por compatibilidad.
JSON Schema de salida
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "anulacion": {
      "type": "object",
      "properties": {
        "tipoDte": {
          "type": "string",
          "const": "61",
          "description": "Nota de crédito electrónica."
        },
        "operacion": {
          "type": "string",
          "const": "anula",
          "description": "Anula el documento referido; no corrige montos ni texto."
        },
        "referencia": {
          "type": "object",
          "properties": {
            "tipoDte": {
              "type": "string",
              "enum": [
                "33",
                "39",
                "41"
              ],
              "description": "Tipo del documento anulado: 33 factura, 39 boleta afecta o 41 boleta exenta."
            },
            "folio": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,17}$",
              "description": "Folio del documento a anular, en TEXTO: es un identificador, no una cantidad."
            },
            "fechaEmision": {
              "type": "string",
              "x-emisso-formato": "AAAA-MM-DD",
              "description": "Fecha de emisión del documento anulado, AAAA-MM-DD."
            }
          },
          "required": [
            "tipoDte",
            "folio",
            "fechaEmision"
          ],
          "additionalProperties": false,
          "description": "El documento que esta nota anula, según lo escribió el propio SII."
        },
        "totales": {
          "type": "object",
          "properties": {
            "neto": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "Monto neto en pesos, según la vista previa del SII."
            },
            "iva": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "IVA en pesos, calculado por el SII."
            },
            "exento": {
              "description": "Monto exento en pesos. Sólo en la anulación de una boleta exenta, donde neto e IVA son cero.",
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "total": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991,
              "description": "Total en pesos; siempre igual a neto + IVA + exento."
            }
          },
          "required": [
            "neto",
            "iva",
            "total"
          ],
          "additionalProperties": false,
          "description": "Totales de la vista previa del SII. En una factura los copia el SII de la original. En una boleta, Connect propone el neto que con el IVA redondeado del portal suma exactamente el total de la boleta."
        }
      },
      "required": [
        "tipoDte",
        "operacion",
        "referencia",
        "totales"
      ],
      "additionalProperties": false,
      "description": "La nota de crédito que devolvió el SII para el documento, todavía sin firmar."
    },
    "previewRef": {
      "type": "string",
      "minLength": 1,
      "description": "Referencia opaca y de vida corta que liga esta preparación a una eventual emisión."
    },
    "expiraEn": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "description": "Instante en que la preparación deja de servir para emitir."
    },
    "advertencias": {
      "maxItems": 1,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "confirmacion_humana_pendiente"
        ]
      },
      "description": "Advertencias codificadas; nunca HTML ni datos del portal. Hoy la lista sale vacía: la preparación se confirma dentro de sii.anulacion.emitir tanto con clave de API como con una persona, así que `confirmacion_humana_pendiente` ya no se emite y se conserva sólo por compatibilidad."
    }
  },
  "required": [
    "anulacion",
    "previewRef",
    "expiraEn",
    "advertencias"
  ],
  "additionalProperties": false
}

Errores de esta tool

CódigoHTTPReintentableQué hacer
connection_disabled403noReactívala en /connections o usa otra conexión del mismo sistema.
connection_not_found404noUsa uno de los connectionId que lista el error, o revisa la conexión en /connections. No hace falta reactivar nada.
connection_credential_required428noCrea un enlace con conexiones.enlace.crear (modo reconectar si la conexión ya existe) y pide a la persona que entregue la credencial de nuevo. No reintentes con la credencial anterior.
connection_busy409síEspera unos segundos y reintenta. Es una espera transitoria: no necesitas volver a conectar ni ingresar la credencial otra vez.
upstream_error502síReintenta más tarde. Si persiste, el problema está en el sistema externo, no en tu integración.
timeout504síReintenta. Para sincronizaciones largas usa la vía asíncrona y consulta el estado del trabajo.

Toda llamada puede devolver además los códigos transversales (validation_error, unauthorized, scope_not_granted, rate_limited, entre otros): el detalle vive en el catálogo de errores.

En esta página