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.
Esta guía emite una factura afecta 33 con tres líneas y dos referencias. La exenta 34 usa la misma
forma. Antes de empezar, revisa qué necesitas y ten a mano el
connectionId de la empresa, que sale de
conexiones.estado.consultar.
Los datos de los ejemplos son ficticios. No los envíes: toda emisión es real.
1. Previsualiza la factura
sii.dte.previsualizar recibe el documento completo en candidato, lo carga en el Facturador Gratuito y
devuelve lo que calculó el SII, sin firmar ni emitir:
curl -X POST https://connect.emisso.ai/api/v1/tools/sii.dte.previsualizar/execute \
-H "Authorization: Bearer connect_sk_…" \
-H "X-Connect-Connection: conn_9tKfR2mQx4Vb" \
-H "Content-Type: application/json" \
-d '{
"input": {
"candidato": {
"tipoDte": "33",
"receptor": {
"rut": "77123456-9",
"razonSocial": "Comercial Los Aromos SpA",
"giro": "Venta de artículos de oficina",
"direccion": "Av. Providencia 1234, oficina 501",
"comuna": "Providencia",
"ciudad": "Santiago"
},
"tipoVenta": "del_giro",
"tipoCompra": "del_giro",
"condicionPago": { "formaPago": "credito" },
"detalles": [
{ "nombre": "Asesoría contable", "cantidad": 1, "precioUnitario": 450000 },
{ "nombre": "Horas extra", "cantidad": 2.5, "precioUnitario": 32000 },
{ "nombre": "Traslado", "cantidad": 1, "precioUnitario": 18000 }
],
"referencias": [
{ "tipoDocumento": "801", "folio": "OC-4512", "fecha": "2026-09-10", "razon": "Orden de compra" },
{ "tipoDocumento": "HES", "folio": "7781", "fecha": "2026-09-12" }
]
}
}
}'Salida esperada (200, campo data):
{
"estado": "previsualizado",
"tipoDte": "33",
"variante": "33:del_giro:del_giro:credito",
"fechaEmision": "2026-09-15",
"receptorRut": "77123456-9",
"totales": { "tributacion": "afecta", "neto": 548000, "iva": 104120, "total": 652120 },
"advertencias": [],
"previewRef": "<referencia opaca>",
"expiraEn": "2026-09-15T14:15:00.000Z",
"contractVersion": 3
}Revisa los totales antes de seguir. La fecha de emisión la fija el portal del SII: no se envía. El
previewRef es de un solo uso, vence en 15 minutos y solo sirve para la misma conexión y el mismo actor.
2. Emite la factura
Genera una clave de idempotencia (UUID v4), guárdala junto a la factura en tu sistema y llama a
sii.dte.emitir con el previewRef:
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: 3f6c1b2e-8d4a-4c7f-9e21-5a0b7d9c4e18" \
-H "Content-Type: application/json" \
-d '{"input": {"previewRef": "<referencia opaca>"}}'Salida esperada (200, campo 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"
}
}Guarda folio y operacionId. Si el estado es rechazado o resultado_desconocido, sigue
Resultados y errores: nunca reenvíes con una clave nueva para salir de la duda.
Por MCP
Un agente conectado al servidor MCP hace las mismas dos llamadas. La vista previa no
escribe, así que va por execute, y params lleva lo mismo que el input de REST (aquí, una factura de
una línea):
{
"tool": "sii.dte.previsualizar",
"connectionId": "conn_9tKfR2mQx4Vb",
"params": {
"candidato": {
"tipoDte": "33",
"receptor": {
"rut": "77123456-9",
"razonSocial": "Comercial Los Aromos SpA",
"giro": "Venta de artículos de oficina",
"direccion": "Av. Providencia 1234, oficina 501",
"comuna": "Providencia",
"ciudad": "Santiago"
},
"tipoVenta": "del_giro",
"tipoCompra": "del_giro",
"condicionPago": { "formaPago": "credito" },
"detalles": [
{ "nombre": "Asesoría contable", "cantidad": 1, "precioUnitario": 450000 }
]
}
}
}La emisión escribe, así que va por execute_write, con la clave de idempotencia como argumento, fuera de
params:
{
"tool": "sii.dte.emitir",
"connectionId": "conn_9tKfR2mQx4Vb",
"idempotencyKey": "3f6c1b2e-8d4a-4c7f-9e21-5a0b7d9c4e18",
"params": { "previewRef": "<referencia opaca>" }
}La UUID del ejemplo solo ilustra el formato: genera una propia por documento.
Por SDK
import { createClient } from "@emisso/connect";
const connect = createClient({ apiKey: process.env.EMISSO_CONNECT_API_KEY! });
const connectionId = "conn_9tKfR2mQx4Vb";
// `candidato` es el mismo objeto del ejemplo REST.
const vista = await connect.tools.sii.dte.previsualizar({ candidato }, { connectionId });
// Revisa vista.totales. Guarda la clave junto a la factura ANTES de emitir.
const idempotencyKey = crypto.randomUUID();
const { resultado } = await connect.tools.sii.dte.emitir(
{ previewRef: vista.previewRef },
{ connectionId, idempotencyKey },
);La versión 0.1.0 publicada en npm no incluye las tools de emisión ni idempotencyKey. Revisa
qué versión tienes; con la 0.1.0, emite por REST.
El candidato, campo por campo
| Campo | Qué va |
|---|---|
tipoDte | "33" para la factura afecta o "34" para la exenta. |
receptor.rut | RUT del receptor sin puntos, con guion y dígito verificador válido. |
receptor.razonSocial | Hasta 100 caracteres. |
receptor.giro | Hasta 40 caracteres. |
receptor.direccion | Hasta 70 caracteres. |
receptor.comuna | Hasta 20 caracteres. |
receptor.ciudad | Hasta 15 caracteres. |
tipoVenta y tipoCompra | Siempre "del_giro". |
condicionPago.formaPago | Siempre "credito". |
detalles | Entre una y diez líneas. Ver abajo. |
referencias | Opcional: entre una y tres. Ver abajo. |
Usa los datos del receptor tal como están registrados en el SII, sin espacios al inicio ni al final. Los textos deben poder escribirse en Latin-1: tildes y ñ sí, emojis no. El emisor no se envía: sale del perfil de la conexión (su actividad económica y su dirección).
Varias líneas
detalles lleva entre una y diez líneas, en el orden en que van en la factura. Cada línea tiene:
nombre: hasta 25 caracteres.cantidad: desde 1, con hasta dos decimales.precioUnitario: en pesos, entero, positivo y antes de impuestos.
Ninguna línea admite código, unidad, descripción ni descuento.
Connect calcula el subtotal de cada línea como round(cantidad × precioUnitario), igual que el portal, y
el neto (o el monto exento de la 34) como la suma de esos subtotales. El IVA de la 33 se calcula una sola
vez sobre ese neto. En el ejemplo: 450.000 + 80.000 + 18.000 = 548.000 de neto, 104.120 de IVA y 652.120
de total.
Connect compara cada línea de la vista previa y del documento que se firma con las que enviaste. Si el SII devuelve una línea distinta, de más o de menos, la operación se detiene antes de firmar.
Referencias
Una factura 33 o 34 puede llevar entre una y tres referencias a los documentos que la originan. Cada
referencia tiene:
tipoDocumento: el código del documento referido, tal como lo ofrece el selector del Facturador Gratuito.folio: el folio o número de ese documento, en texto y hasta 18 caracteres.fecha: la fecha de ese documento, en AAAA-MM-DD.razon: opcional, hasta 90 caracteres.indicadorGlobal: opcional. Con1, la referencia cubre un conjunto de documentos y el folio debe ser"0".
tipoDocumento | Documento |
|---|---|
801 | Orden de compra |
802 | Nota de pedido |
803 | Contrato |
804 | Resolución |
805 y 806 | Proceso y ficha ChileCompra |
813 | Pasaporte |
820 | Código de registro de Economía |
821 | Georreferencia |
822 | Rol de avalúo del predio |
823 | Plan de manejo Conaf |
HES | Hoja de entrada de servicio |
También puedes referir un documento tributario por su código: 30, 32, 33, 34, 35, 38, 39, 40, 41, 43, 45, 46, 48, 50, 52 (guía de despacho), 55, 56, 60, 61 o 103. En ese caso el folio es un número mayor que 0, sin ceros a la izquierda.
Una factura no lleva código de referencia: anular una factura se hace con su nota de anulación, y corregir montos de una 34, con una nota de corrección.
Connect compara las referencias de la vista previa y del documento que se firma con las que enviaste. Si el SII devuelve otras, la operación se detiene antes de firmar.
Factura exenta 34
La 34 lleva el mismo candidato con "tipoDte": "34". Sus líneas son exentas y la vista previa devuelve
totales sin IVA:
{ "tributacion": "exenta", "exento": 548000, "total": 548000 }Qué no admite esta beta
- Contacto del receptor ni solicitante.
- Código, unidad, descripción o descuento por línea, ni descuento global.
- Más de diez líneas o más de tres referencias.
- Formas de pago distintas de crédito, pagos parciales ni datos de transporte.
- En la 33: líneas exentas, impuestos adicionales y regímenes especiales (constructoras, madera, bienes raíces, factura turística).
- Precios unitarios con decimales.
La compatibilidad de cada conexión se confirma al previsualizar: que un campo figure en esta guía no prueba
que el formulario de una empresa en particular lo acepte. La referencia completa del contrato está en
sii.dte.previsualizar y
sii.dte.emitir.
Emitir en el SII
Emite facturas 33 y 34, anula facturas con nota de crédito y emite guías 52 y notas 56/61 ante el SII por API, MCP o SDK, con el Facturador Gratuito. Beta con activación por organización.
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.