Emitir DTEs desde un sistema a medida sin lidiar con el SII directamente. Cómo funciona, qué tan rápido se integra y por qué vale la pena desde el primer día.
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.
El sistema DTE del SII tiene sus reglas. Para emitir documentos tributarios electrónicos desde un sistema propio necesitas, como mínimo:
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.
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:
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.
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:
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.
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.
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.
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.
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.
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:
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 wasabil.com/developers.
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.Crea tu cuenta gratis, obtén tu token y emite el primer documento en menos de 30 minutos. Sandbox incluido sin tarjeta de crédito.