Emisso Connect

Preparar la anulación de una factura en el SII

Ubica una factura afecta (33) emitida con el Facturador Gratuito del SII y le pide al portal la nota de crédito de anulación, sin firmarla ni emitirla.

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

Requiere conexión. Indica cuál en cada llamada: header X-Connect-Connection en REST, campo connectionId en el execute de MCP y en las opciones del SDK. 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

El SII construye la nota completa a partir de la factura original: Connect no propone líneas ni montos. Identifica la factura por folio y fecha de emisión. Sólo alcanza a las facturas emitidas con ese portal; una emitida con otro proveedor no aparece en su lista y 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
documentoobjetoLa factura a anular, identificada como la conoce quien la emitió.
documento.tipoDtestringFactura electrónica afecta. Es el único tipo medido hoy.
documento.foliostring ^[1-9][0-9]{0,17}$Folio de la factura a anular, en TEXTO: es un identificador, no una cantidad.
documento.fechaEmisionstringFecha de emisión de la factura, AAAA-MM-DD, tal como la lista del portal.
JSON Schema de entrada
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "documento": {
      "type": "object",
      "properties": {
        "tipoDte": {
          "type": "string",
          "const": "33",
          "description": "Factura electrónica afecta. Es el único tipo medido hoy."
        },
        "folio": {
          "type": "string",
          "pattern": "^[1-9][0-9]{0,17}$",
          "description": "Folio de la factura a anular, en TEXTO: es un identificador, no una cantidad."
        },
        "fechaEmision": {
          "type": "string",
          "x-emisso-formato": "AAAA-MM-DD",
          "description": "Fecha de emisión de la factura, AAAA-MM-DD, tal como la lista del portal."
        }
      },
      "required": [
        "tipoDte",
        "folio",
        "fechaEmision"
      ],
      "additionalProperties": false,
      "description": "La factura a anular, identificada como la conoce quien la emitió."
    }
  },
  "required": [
    "documento"
  ],
  "additionalProperties": false
}

Salida

CampoTipoRequeridoDescripción
anulacionobjetoLa nota de crédito que el SII construyó a partir de la factura, todavía sin firmar.
anulacion.tipoDtestringNota de crédito electrónica.
anulacion.operacionstringAnula el documento referido; no corrige montos ni texto.
anulacion.referenciaobjetoEl documento que esta nota anula, según lo escribió el propio SII.
anulacion.referencia.tipoDtestringFactura electrónica afecta: el tipo del documento anulado.
anulacion.referencia.foliostring ^[1-9][0-9]{0,17}$Folio de la factura a anular, en TEXTO: es un identificador, no una cantidad.
anulacion.referencia.fechaEmisionstringFecha de emisión de la factura anulada, AAAA-MM-DD.
anulacion.totalesobjetoTotales calculados por el SII a partir de la factura original. Connect no los calcula ni los propone.
anulacion.totales.netoenteroMonto neto en pesos, calculado por el SII.
anulacion.totales.ivaenteroIVA en pesos, calculado por el SII.
anulacion.totales.totalenteroTotal en pesos; siempre igual a neto + IVA.
previewRefstringReferencia 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"Advertencias codificadas; nunca HTML ni datos del portal. confirmacion_humana_pendiente sale sólo cuando la preparación la creó una persona: ahí un propietario o administrador tiene que confirmarla en Connect. Llamando con clave de API no aparece, porque emitir confirma solo.
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",
              "const": "33",
              "description": "Factura electrónica afecta: el tipo del documento anulado."
            },
            "folio": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,17}$",
              "description": "Folio de la factura a anular, en TEXTO: es un identificador, no una cantidad."
            },
            "fechaEmision": {
              "type": "string",
              "x-emisso-formato": "AAAA-MM-DD",
              "description": "Fecha de emisión de la factura anulada, 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, calculado por el SII."
            },
            "iva": {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991,
              "description": "IVA en pesos, calculado por el SII."
            },
            "total": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991,
              "description": "Total en pesos; siempre igual a neto + IVA."
            }
          },
          "required": [
            "neto",
            "iva",
            "total"
          ],
          "additionalProperties": false,
          "description": "Totales calculados por el SII a partir de la factura original. Connect no los calcula ni los propone."
        }
      },
      "required": [
        "tipoDte",
        "operacion",
        "referencia",
        "totales"
      ],
      "additionalProperties": false,
      "description": "La nota de crédito que el SII construyó a partir de la factura, 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. `confirmacion_humana_pendiente` sale sólo cuando la preparación la creó una persona: ahí un propietario o administrador tiene que confirmarla en Connect. Llamando con clave de API no aparece, porque emitir confirma solo."
    }
  },
  "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_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_busy409Espera unos segundos y reintenta. Es una espera transitoria: no necesitas volver a conectar ni ingresar la credencial otra vez.
upstream_error502Reintenta más tarde. Si persiste, el problema está en el sistema externo, no en tu integración.
timeout504Reintenta. 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.

On this page