API de facturación electrónica para tu CRM, ERP o sistema propio en Chile

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.

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 wasabil.com/developers.

Preguntas frecuentes

¿Necesito un certificado digital del SII para integrar facturación en mi sistema?
No. Wasabil maneja el certificado digital, la comunicación con el SII y la gestión de folios CAF. Solo necesitas tu token de API y un POST HTTP estándar.
¿Cuánto tiempo toma integrar la API?
En menos de 30 minutos tienes el primer documento emitido. Si usas Claude Code con el MCP de Wasabil, puedes pedirle al agente que escriba la integración completa mientras describes lo que necesitas.
¿Soporta todos los tipos de documento del SII?
Sí: facturas (33, 34), boletas (39, 41), factura de compra (46), guías de despacho (52), notas de débito y crédito (56, 61), exportación (110, 111, 112) y boletas de honorarios de terceros (200).
¿Cómo sé si el SII aceptó el documento?
Incluye 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.
¿Puedo usarlo para múltiples empresas desde un mismo sistema?
Sí. Wasabil soporta OAuth 2.0 con PKCE para integraciones multi-empresa. Cada empresa autoriza el acceso desde su cuenta y recibes un token de acceso limitado a ella.
¿Hay sandbox para pruebas?
Sí. Los documentos de sandbox incluyen "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.

Empieza a integrar hoy

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.