Emisso Connect
Operar

e-Boleta en beta

Configura tu empresa, prepara por API o MCP, confirma en Connect y consulta cada intento sin reenviar.

La beta se habilita por organización. Permite intentar boletas 39 y 41 con sucursal explícita, una línea, cantidad uno e importe entero en pesos. Cada tipo debe estar habilitado en el perfil actual del SII. La cobertura del contrato público y las pruebas locales no acreditan una emisión productiva anterior de tu empresa.

Configura tu conexión

Un owner/admin entra en Conexiones → tu conexión SII → Ajustes → e-Boleta del SII · Beta:

  1. Consulta el perfil, elige la sucursal y guarda el perfil vigente.
  2. Confirma el uso exclusivo de e-Boleta del SII y concede el permiso propio de e-Boleta.
  3. Activa la beta para la organización. El servicio verifica perfil, credencial y consentimiento.

Una organización ya habilitada completa esos pasos por su cuenta. Cada API key o agente que prepare u ordene el envío también necesita sii:boletas:write; sii:write no lo sustituye. El RUT de la empresa (empresaRut) y el de quien autentica (loginRut) tienen significados distintos. No entregues la clave del SII a tu agente: Connect la resuelve en servidor.

Prepara sin emitir

Los ejemplos son sintéticos: no los envíes como una venta real. Usa el catálogo de tu conexión para saber qué datos exige la configuración vigente. Los esquemas vienen del contrato generado de preparación y emisión.

Por REST, POST /api/v1/tools/sii.boleta.previsualizar/execute con bearer Connect, Content-Type: application/json, X-Connect-Connection: conn_ejemplo y este body:

{
  "input": {
    "candidato": { "tipoDte": "39", "montoTotal": 1200, "detalle": "Ejemplo sintético" }
  }
}

Por MCP, descubre la ficha con search_docs y usa la meta-tool indicada. La preparación admite execute_write con estos argumentos:

{
  "tool": "sii.boleta.previsualizar",
  "connectionId": "conn_ejemplo",
  "params": {
    "candidato": { "tipoDte": "39", "montoTotal": 1200, "detalle": "Ejemplo sintético" }
  }
}

Conserva previewRef en tu aplicación. Es una referencia cifrada ligada al candidato, al propietario, a la conexión y a su configuración. No cambies los datos después de prepararlos.

Confirma en Connect e inicia el envío

En el panel de e-Boleta, pulsa Actualizar preparaciones, abre la preparación y revisa monto, receptor, detalle y medio de pago. Confirmar esta preparación es el acto humano sobre esos datos. La confirmación no envía ni extiende el plazo: tienes como máximo 15 minutos desde la preparación para iniciar la operación. Si vence o cambian las reglas o el perfil, prepara y confirma nuevamente.

Tu aplicación usa POST /api/v1/tools/sii.boleta.emitir/execute, la misma conexión y bearer, Idempotency-Key con una UUID v4 nueva para esa operación y {"input":{"previewRef":"<referencia>"}}. Guarda la clave y los argumentos originales antes de la llamada. Por MCP:

{
  "tool": "sii.boleta.emitir",
  "connectionId": "conn_ejemplo",
  "idempotencyKey": "9a2fd694-b24d-4d07-9e62-d77a833ba10d",
  "params": { "previewRef": "<referencia confirmada>" }
}

La UUID del ejemplo solo ilustra el formato. Genera una propia por operación.

SDK de TypeScript

El SDK está disponible en el repositorio; consulta esa página sobre su publicación. El contrato tipado generado usa el mismo flujo:

const preparation = await connect.tools.sii.boleta.previsualizar(
  { candidato: { tipoDte: "39", montoTotal: 1200, detalle: "Ejemplo sintético" } },
  { connectionId: "conn_ejemplo" },
);
// Conserva preparation.previewRef y espera la confirmación humana en Connect.
const input = { previewRef: preparation.previewRef };
const options = { connectionId: "conn_ejemplo", idempotencyKey: crypto.randomUUID() };
// Guarda input y options antes de iniciar esta operación.
const response = await connect.tools.sii.boleta.emitir.withResponse(input, options);
// Conserva también response.meta?.operation_request_id.

Consulta un resultado pendiente

Connect guarda el compromiso antes de un único POST al SII. Un folio en la respuesta o HTTP 200 no acreditan aceptación: la reconciliación consulta la misma empresa, tipo y folio y exige un reporte completo y concluyente.

Si recibes resultado_desconocido, puedeReintentar:false o una falla de transporte, conserva operation_request_id cuando esté disponible, la UUID y los argumentos originales. Repite la misma llamada de emisión con esa UUID para consultar el intento guardado. El replay del compromiso no reenvía, no vuelve a preparar y funciona aunque la referencia ya haya vencido. Si la respuesta sigue pendiente, espera la reconciliación automática; entrega a soporte el identificador de la operación si no logra resolverse. Una UUID diferente puede representar otra emisión: no la uses para salir de la incertidumbre.

Antes del compromiso, los códigos seguros distinguen perfil, configuración no soportada y datos incompletos. El mensaje indica que la boleta no se envió y qué debes corregir. No compartas cuerpos, credenciales, referencias cifradas ni respuestas privadas en mensajes de soporte.

Revoca el permiso

Revocar permiso e-Boleta cierra la escritura de esa conexión. Desactivar beta para la organización cierra nuevas preparaciones y emisiones de toda la organización. Ambas acciones siguen disponibles fuera del flag beta. Un intento ya comprometido conserva su identidad y se consulta sin reenvío.

On this page