Si estás construyendo un CRM, un ERP, una plataforma SaaS o cualquier sistema de gestión a medida para el mercado chileno, en algún momento vas a necesitar emitir documentos tributarios: facturas, boletas, notas de crédito. Y en ese momento vas a descubrir que hacerlo directamente contra el SII no es trivial.
Por qué integrar el SII directamente es tan costoso
El sistema DTE del SII tiene sus reglas. Para emitir documentos tributarios electrónicos desde un sistema propio necesitas, como mínimo:
- Un certificado digital vigente — hay que renovarlo, almacenarlo de forma segura, y cada empresa tiene el suyo.
- Folios CAF — los Códigos de Autorización de Folios que el SII entrega en bloques. Cuando se agotan hay que pedir más; si el proceso falla, tu sistema deja de emitir.
- Firma de documentos en formato XML según el estándar DTE del SII, que tiene sus propias particularidades.
- Comunicación directa con los servidores del SII para enviar y consultar el estado de cada documento.
- Almacenamiento de XMLs originales para cumplimiento y auditoría.
- Manejo de errores específicos del SII — rechazos, reenvíos, tiempos de respuesta variables.
Construir y mantener todo eso desde cero puede tomar semanas, y es una deuda técnica permanente: el SII actualiza sus sistemas, cambia formatos, y tu equipo tiene que estar al tanto.
La alternativa es usar una API que ya resolvió todo eso.
Cómo funciona la API de Wasabil
Wasabil expone una API REST estándar sobre HTTPS. Tu sistema se autentica con un Bearer token, hace un POST con los datos del documento, y Wasabil se encarga de todo lo demás: firma, envío al SII, gestión de folios CAF, almacenamiento del XML y notificación del resultado.
La URL base es https://api.wasabil.com/api. Para obtener tu token, ve a app.wasabil.com/api-tokens.
Wasabil soporta todos los tipos de DTE del SII:
- Factura de Venta (33) y Factura Exenta (34)
- Boleta de Venta (39) y Boleta Exenta (41)
- Factura de Compra (46) — para servicios digitales extranjeros
- Guía de Despacho (52)
- Nota de Débito (56) y Nota de Crédito (61)
- Documentos de exportación (110, 111, 112)
- Boleta de Honorarios de Terceros (200)
Tu primer documento en 5 minutos
Emitir una boleta de venta es un POST con cuatro campos mínimos:
curl -X POST https://api.wasabil.com/api/documents \
-H "Authorization: Bearer TU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"sii_document_type_code": 39,
"issue": true,
"payment_method": "contado",
"details": [
{ "name": "Suscripción mensual Pro", "price": 29990, "quantity": 1 }
]
}'
La respuesta incluye el UUID del documento, el folio asignado por el SII, y las URLs del PDF y XML una vez emitido.
Para una factura de venta con datos del receptor:
// Node.js
const res = await fetch('https://api.wasabil.com/api/documents', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.WASABIL_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
sii_document_type_code: 33, // Factura de Venta
issue: true,
payment_method: 'contado',
receiver_rut: '76.086.428-5',
receiver_name: 'Empresa Cliente SpA',
receiver_email: 'facturacion@cliente.cl',
invoice_reference: 'OC-2026-001', // tu ID interno
notification_url: 'https://tu-sistema.cl/webhooks/wasabil',
details: [
{ name: 'Licencia CRM — mayo 2026', price: 150000, quantity: 1 },
{ name: 'Usuarios adicionales', price: 25000, quantity: 3 }
]
})
});
const { data } = await res.json();
console.log(data.folio); // folio SII
console.log(data.document_pdf_url); // PDF listo para enviar al cliente
El campo invoice_reference es tu ID interno — número de orden, ID del cliente en tu CRM, lo que necesites — y queda guardado en el documento para búsqueda y conciliación posterior.
Integración con Claude Code y agentes de IA
Wasabil es el primer facturador electrónico en Chile con soporte nativo de MCP (Model Context Protocol). Eso significa que si estás construyendo tu sistema con Claude Code, puedes conectar Wasabil directamente al agente y pedirle que escriba la integración mientras lo usas:
# En tu terminal, dentro del proyecto
claude mcp add --transport http --scope user wasabil https://mcp.wasabil.com
Una vez conectado, puedes pedirle a Claude cosas como:
- "Emite una factura a nombre de Cliente SpA por $250.000 de consultoría"
- "Muéstrame las últimas 10 facturas emitidas"
- "Genera el código para integrar la emisión de boletas cuando el usuario paga en Stripe"
- "¿Qué documentos están pendientes de conciliar este mes?"
El MCP de Wasabil usa OAuth 2.0 con PKCE — cuando Claude lo llama, lo hace con un token limitado a tu empresa, sin acceso a las credenciales del sistema.
Casos de uso comunes
CRM con facturación integrada
Cuando un deal pasa a "Ganado" en tu CRM, disparas un POST a Wasabil con los datos del cliente y los ítems de la propuesta. El documento queda emitido, el PDF llega al cliente y el folio queda registrado en el CRM. Sin salir de tu flujo.
ERP con ciclo de compras completo
Cuando recibes una orden de compra y la apruebas, generas automáticamente la guía de despacho (52) y la factura de venta (33). Wasabil valida el RUT, asigna folios y entrega los XMLs para el libro de ventas.
SaaS con facturación en el checkout
Integra Wasabil en el flujo de pago: cuando Stripe (o cualquier procesador) confirma el cobro, emites la boleta o factura de forma automática. Si el cliente pide anulación, una nota de crédito se genera en segundos.
Plataforma multi-empresa
Con OAuth 2.0 + PKCE, cada empresa que usa tu plataforma autoriza el acceso a su cuenta de Wasabil por separado. Tu sistema recibe un token por empresa y emite documentos en nombre de cada una sin compartir credenciales.
Webhooks y estados del documento
La emisión al SII es asíncrona — el documento queda en estado Procesando mientras el SII responde, que puede tomar desde segundos hasta minutos. Los estados son:
- 6 — Pendiente: creado pero no enviado al SII aún
- 2 — Procesando: enviado, esperando respuesta del SII
- 3 — Emitido: aceptado, folio asignado, PDF y XML disponibles
- 4 — Fallido: rechazado por el SII (el error viene en
display_error)
Cuando incluyes notification_url al crear el documento, Wasabil hace un POST a esa URL cada vez que cambia de estado. El body contiene el documento completo con folio, URLs de PDF/XML y, si falló, el código de error del SII.
// Webhook que recibe tu sistema cuando el documento se emite
{
"uuid": "36cdebc2-79b7-402f-ac91-1534d003a91b",
"status_id": 3, // Emitido
"folio": "1234",
"invoice_reference": "OC-2026-001",
"current_ntotal": 237500,
"has_document_pdf": true,
"document_pdf_url": "https://api.wasabil.com/...",
"document_xml_url": "https://api.wasabil.com/..."
}
Con eso, tu sistema puede actualizar el estado de la orden, enviarle el PDF al cliente y registrar el folio, todo de forma automática.
Si quieres explorar la documentación completa — endpoints, filtros, emisión masiva, conciliación bancaria — está disponible en app.wasabil.com/api-docs.
Preguntas frecuentes
notification_url al crear el documento y recibirás un webhook cuando cambie de estado. También puedes hacer polling en GET /api/documents/{uuid}/status."sandbox": true en la respuesta. Puedes forzar el estado Emitido o Fallido sin depender del SII, lo que facilita probar los webhooks y el flujo completo antes de salir a producción.

