Emitir DTE en el SII
Inicia una emisión en el Facturador Gratuito: requiere previewRef vigente, Idempotency-Key explícita y autorización de la variante en la conexión.
| Tool ID | sii.dte.emitir |
| Nombre MCP | sii__dte__emitir |
| Conector | sii |
| Plano | action |
| Scope (permiso) | sii:write |
| Auth | connection_credentials |
| Versión | 5 |
| Sensible | sí |
| Deprecado | no |
| Comportamiento | readOnly=false, destructive=true, idempotent=true, openWorld=true |
Requiere conexión. Indica cuál en cada llamada: header
X-Connect-Connectionen REST y campoconnectionIden elexecute_writede MCP. No hay resolución implícita, ni siquiera con una sola conexión activa: la conexión es la empresa. El id sale deconexiones.estado.consultar.
Qué hace
La confirmación de la preparación ocurre dentro de esta llamada cuando la hace el mismo actor que creó esa previsualización, sea una clave de API o una persona. La conexión debe tener guardada la clave del certificado, que se resuelve en el servidor y nunca viaja en la llamada ni en el resultado. Un resultado desconocido se consulta automáticamente; nunca autoriza repetir firma o envío.
Entrada
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
previewRef | string | sí | Referencia opaca devuelta por sii.dte.previsualizar; debe estar vigente y pertenecer a la misma conexión. |
JSON Schema de entrada
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"previewRef": {
"type": "string",
"minLength": 1,
"description": "Referencia opaca devuelta por sii.dte.previsualizar; debe estar vigente y pertenecer a la misma conexión."
}
},
"required": [
"previewRef"
],
"additionalProperties": false
}Ejemplo
curl -X POST https://connect.emisso.ai/api/v1/tools/sii.dte.emitir/execute \
-H "Authorization: Bearer connect_sk_…" \
-H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
-H "Idempotency-Key: 9d1f4c2a-7b30-4e58-9c11-2f6a8de5b743" \
-H "Content-Type: application/json" \
-d '{"input":{"previewRef":"spt1.1.Xq7Lm2Vt9RbN4c8K.3hVdQ0nWk8ZpT1yFbG6sR9mLc2XeJ5uA7tKqN4wHv0PzY8iDf3oUj6lBr1gSx9Ma.pW3nK8vQz1Lr5Tb9Xh2YcA"}}'{
"tool": "sii.dte.emitir",
"params": {
"previewRef": "spt1.1.Xq7Lm2Vt9RbN4c8K.3hVdQ0nWk8ZpT1yFbG6sR9mLc2XeJ5uA7tKqN4wHv0PzY8iDf3oUj6lBr1gSx9Ma.pW3nK8vQz1Lr5Tb9Xh2YcA"
},
"connectionId": "conn_9tKfR2mQx4Vb",
"idempotencyKey": "9d1f4c2a-7b30-4e58-9c11-2f6a8de5b743"
}Clave de idempotencia obligatoria. Sin ella la llamada responde
idempotency_key_missing. Genera un UUID v4 nuevo por operación y envíalo enIdempotency-Key(REST) o enidempotencyKey(MCP). Repite la misma clave solo al reintentar esa operación.
Salida esperada (200):
{
"data": {
"resultado": {
"estado": "emitido",
"operacionId": "req_k7w2m9q4x1c8v5b3n6z0p",
"tipoDte": "33",
"variante": "33:del_giro:del_giro:credito",
"folio": "1042",
"fechaEmision": "2026-09-15",
"confirmadoEn": "2026-09-15T14:03:12.000Z",
"xmlFirmado": "<DTE xmlns=\"http://www.sii.cl/SiiDte\" version=\"1.0\"><Documento ID=\"…\"><Encabezado><IdDoc><TipoDTE>33</TipoDTE><Folio>1042</Folio><FchEmis>2026-09-15</FchEmis>…</IdDoc><Emisor><RUTEmisor>76987654-5</RUTEmisor>…</Emisor><Receptor><RUTRecep>77123456-9</RUTRecep>…</Receptor><Totales><MntNeto>548000</MntNeto><TasaIVA>19.00</TasaIVA><IVA>104120</IVA><MntTotal>652120</MntTotal></Totales></Encabezado>…<TED version=\"1.0\">…</TED>…</Documento><Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\">…</Signature></DTE>"
}
},
"meta": {
"request_id": "req_…",
"tool_id": "sii.dte.emitir",
"plane": "action",
"latency_ms": 7410,
"audit_status": "recorded"
}
}Primero previsualiza con
sii.dte.previsualizar: emitir solo acepta lo previsualizado y se reintenta con la misma Idempotency-Key.xmlFirmadoes el documento tributario: guárdalo. Paso a paso en Facturas 33 y 34.
Salida
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
resultado | valor | sí | Resultado terminal allowlisted de la operación de emisión. |
JSON Schema de salida
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"resultado": {
"oneOf": [
{
"type": "object",
"properties": {
"estado": {
"type": "string",
"const": "emitido",
"description": "El SII confirmó de manera concluyente la emisión."
},
"operacionId": {
"type": "string",
"pattern": "^req_[0-9a-z]{21}$",
"description": "Identificador estable de la operación regulada."
},
"tipoDte": {
"type": "string",
"enum": [
"33",
"34",
"52",
"56",
"61"
],
"description": "Tipo DTE contemplado por los contratos publicados: 33, 34, 52, 56 o 61. Su presencia no implica habilitación productiva."
},
"variante": {
"type": "string",
"enum": [
"33:del_giro:del_giro:credito",
"34:del_giro:del_giro:credito",
"52:constituye_venta",
"52:ventas_por_efectuar",
"52:consignacion",
"52:entrega_gratuita",
"52:traslado_interno",
"52:otro_traslado_no_venta",
"52:devolucion",
"52:traslado_exportacion_no_venta",
"52:venta_exportacion",
"56:corregir_montos:34_exenta",
"61:corregir_montos:34_exenta"
],
"description": "Identidad exacta de la variante tributaria previsualizada."
},
"folio": {
"type": "string",
"minLength": 1,
"description": "Folio confirmado por el SII para el documento emitido."
},
"fechaEmision": {
"type": "string",
"x-emisso-formato": "AAAA-MM-DD",
"description": "Fecha de emisión confirmada por el SII."
},
"confirmadoEn": {
"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 Connect obtuvo una confirmación concluyente de la emisión."
},
"xmlFirmado": {
"type": "string",
"minLength": 1,
"maxLength": 1048576,
"description": "XML del DTE firmado que Connect envió y el SII aceptó, con su timbre electrónico (TED). Basta para generar la representación impresa y el PDF417. Es el documento tributario: guárdalo como tal."
}
},
"required": [
"estado",
"operacionId",
"tipoDte",
"variante",
"folio",
"fechaEmision",
"confirmadoEn"
],
"additionalProperties": false,
"description": "Resultado concluyente de una emisión confirmada."
},
{
"type": "object",
"properties": {
"estado": {
"type": "string",
"const": "rechazado",
"description": "El SII rechazó la operación de manera concluyente."
},
"operacionId": {
"type": "string",
"pattern": "^req_[0-9a-z]{21}$",
"description": "Identificador estable de la operación regulada."
},
"tipoDte": {
"type": "string",
"enum": [
"33",
"34",
"52",
"56",
"61"
],
"description": "Tipo DTE contemplado por los contratos publicados: 33, 34, 52, 56 o 61. Su presencia no implica habilitación productiva."
},
"variante": {
"type": "string",
"enum": [
"33:del_giro:del_giro:credito",
"34:del_giro:del_giro:credito",
"52:constituye_venta",
"52:ventas_por_efectuar",
"52:consignacion",
"52:entrega_gratuita",
"52:traslado_interno",
"52:otro_traslado_no_venta",
"52:devolucion",
"52:traslado_exportacion_no_venta",
"52:venta_exportacion",
"56:corregir_montos:34_exenta",
"61:corregir_montos:34_exenta"
],
"description": "Identidad exacta de la variante tributaria previsualizada."
},
"codigo": {
"type": "string",
"minLength": 1,
"description": "Código normalizado del rechazo concluyente."
},
"puedeReintentar": {
"type": "boolean",
"const": false,
"description": "Siempre false: una operación regulada rechazada no se reintenta automáticamente."
}
},
"required": [
"estado",
"operacionId",
"tipoDte",
"variante",
"codigo",
"puedeReintentar"
],
"additionalProperties": false,
"description": "Resultado concluyente de una emisión rechazada."
},
{
"type": "object",
"properties": {
"estado": {
"type": "string",
"const": "resultado_desconocido",
"description": "No existe evidencia suficiente para afirmar emisión ni rechazo."
},
"operacionId": {
"type": "string",
"pattern": "^req_[0-9a-z]{21}$",
"description": "Identificador estable de la operación regulada."
},
"tipoDte": {
"type": "string",
"enum": [
"33",
"34",
"52",
"56",
"61"
],
"description": "Tipo DTE contemplado por los contratos publicados: 33, 34, 52, 56 o 61. Su presencia no implica habilitación productiva."
},
"variante": {
"type": "string",
"enum": [
"33:del_giro:del_giro:credito",
"34:del_giro:del_giro:credito",
"52:constituye_venta",
"52:ventas_por_efectuar",
"52:consignacion",
"52:entrega_gratuita",
"52:traslado_interno",
"52:otro_traslado_no_venta",
"52:devolucion",
"52:traslado_exportacion_no_venta",
"52:venta_exportacion",
"56:corregir_montos:34_exenta",
"61:corregir_montos:34_exenta"
],
"description": "Identidad exacta de la variante tributaria previsualizada."
},
"puedeReintentar": {
"type": "boolean",
"const": false,
"description": "Siempre false: no se repite una operación cuyo resultado externo es desconocido."
},
"siguientePaso": {
"type": "string",
"const": "reconciliacion_automatica_o_soporte",
"description": "La única salida segura es reconciliar evidencia o escalar a soporte."
}
},
"required": [
"estado",
"operacionId",
"tipoDte",
"variante",
"puedeReintentar",
"siguientePaso"
],
"additionalProperties": false,
"description": "Resultado inconcluso que exige reconciliación antes de cualquier acción."
}
],
"description": "Resultado terminal allowlisted de la operación de emisión."
}
},
"required": [
"resultado"
],
"additionalProperties": false
}Errores de esta tool
| Código | HTTP | Reintentable | Qué hacer |
|---|---|---|---|
connection_disabled | 403 | no | Reactívala en /connections o usa otra conexión del mismo sistema. |
connection_not_found | 404 | no | Usa uno de los connectionId que lista el error, o revisa la conexión en /connections. No hace falta reactivar nada. |
connection_credential_required | 428 | no | Crea 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_busy | 409 | sí | Espera unos segundos y reintenta. Es una espera transitoria: no necesitas volver a conectar ni ingresar la credencial otra vez. |
upstream_error | 502 | sí | Reintenta más tarde. Si persiste, el problema está en el sistema externo, no en tu integración. |
timeout | 504 | sí | 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.
Descargar el PDF de una factura, guía o nota
Descarga desde el Facturador Gratuito del SII el PDF oficial de un documento emitido por la empresa de la conexión: factura 33 o 34, guía de despacho 52 o nota 56 o 61, por tipo, folio y fecha de emisión.
Previsualizar DTE en el SII
Valida y previsualiza un documento en el Facturador Gratuito del SII sin guardarlo ni emitirlo.