Introducción a la API de Facturación
La API de Facturación está integrada directamente al facturador gratuito del SII y permite emitir documentos de forma masiva usando Batch Documents. El sistema emite por ti y además recibe automáticamente el PDF y XML final de cada factura a través de webhooks. La integración se apoya en un flujo simple:- obtener tu API Key
- partir en modo Sandbox (recomendado)
- conectar la empresa con Tupana Link (el widget; en v2 no se crean credenciales por API)
- crear batches para emitir documentos
- configurar webhooks por empresa para recibir los resultados
- (opcional) usar campos avanzados como direcciones y actividades económicas personalizadas
- monitorear todo desde la plataforma
En v2 todo identificador de recurso es un public ID: un string con prefijo
de tipo y número aleatorio (
ment_4829301923847 para una entidad, docu_… para
un documento). No es una codificación del ID interno ni un entero incremental —
es un identificador propio, imposible de enumerar. Ese id es el que usas en las
rutas y en el cuerpo de las peticiones.1) API Key (por usuario)
La API Key es por usuario y sirve para operar sobre todas las empresas enroladas bajo ese usuario. Existe operación en Sandbox y en Producción. Se recomienda comenzar en Sandbox para validar el flujo completo sin riesgos.2) Conectar la empresa con Tupana Link
Antes de emitir, cada empresa tiene que estar conectada, y en v2 la clave no viaja por API: abres el widget de Tupana Link. Tu backend pide unclient_token, el usuario entrega la clave adentro del widget, y tú guardas el
connection_id (cred_…) cuando la conexión queda activa. Las conexiones se
listan y se quitan en
/connections/.
Si ya conoces el RUT, mándalo como tax_id en la sesión o en la URL del
widget y ese paso no se pide.
3) Emisión: crear el Batch Document
Una vez que la empresa está lista, basta con:- Crear un Batch Document con el detalle de las facturas a emitir.
- Usar el flag
use_default(o equivalente) para que el sistema utilice la configuración/credencial por defecto de esa empresa.
4) Webhooks: un webhook por empresa
Para recibir el resultado de cada emisión, debes configurar un webhook por empresa. También puedes hacerlo:- Desde la plataforma, o
- Desde la API: crea un webhook para la empresa.
Ids en los webhooks (api_version)
Los webhooks tienen su propio contrato de identificadores, independiente de la
ruta por la que los creaste. El campo api_version del webhook define el
formato de todos los ids del payload (data.id, sender.id,
receiver.id, programados, folios):
2: ids públicos (docu_…,ment_…), los mismos que devuelve esta API.1: ids enteros. Es el contrato de la API v1 y se conservó en los webhooks creados antes de octubre de 2026 para no romper integraciones que validan el id numérico.
api_version al crear, el default sigue el contexto: un webhook
creado por /v2/webhooks/ nace en 2; uno creado por /v1/webhooks/ nace
en 1; desde la plataforma nace en la versión que ya usa la empresa (1 si
tiene algún webhook con enteros, 2 si no). Mandar api_version explícito
siempre gana.
Si migraste de v1 a v2 y tus webhooks siguen entregando enteros, súbelos a la
versión 2 con PATCH /v2/webhooks/{id}/:
webhook_id del evento webhook.test debe llegar como dowe_…. El detalle de
cada payload está en la guía de webhooks.
5) Recepción de resultados (XML y PDF)
Una vez configurado el webhook, el sistema recibe automáticamente del SII el PDF y XML final de cada factura emitida. Vas a recibir las notificaciones del procesamiento del batch, incluyendo:- Estado / respuesta de emisión desde el SII
- XML final generado por el SII
- PDF final generado por el SII
6) Opciones avanzadas (direcciones y actividades económicas personalizadas)
Si necesitas direcciones o actividades económicas personalizadas, el flujo es:- Pedir la entidad (master entity) por RUT para obtener los datos disponibles
(direcciones/actividades), cada una con su
id(addr_…,acti_…). - Incluir esos identificadores en el Batch Document al crear el batch.
7) Monitoreo y trazabilidad en la plataforma
Además de operar por API, puedes revisar todo en la plataforma:- Vista detallada de empresas enroladas, credenciales, batches y estados.
- Modo Sandbox en la plataforma para ver exclusivamente lo que entra por Sandbox.
- Modo Producción para ver lo que está en operación real.
Convenciones v2
Estas convenciones aplican a todos los endpoints v2, de forma uniforme.Listas y paginación
Toda respuesta de lista tiene la misma forma:- Controla el tamaño de página con
?page_size=(máximo 200; si pides más se recorta a 200).
Selección de campos (sparse fieldsets)
Pide solo los campos que necesitas con?fields=, separados por coma. El id
siempre viene incluido. Sirve para respuestas más livianas:
Errores
Formato único{ "error": { "type", "code", "message", … } } — ver
Errores. Los errores internos (≥500) devuelven un
mensaje genérico + request_id (nunca detalle crudo del servidor).
Campos desconocidos y validación estricta
Los documentos del batch se comparan con los campos que acepta la API. Un campo desconocido nunca se usa al emitir:- Modo aviso: el documento se crea sin ese campo y la respuesta trae un
arreglo
warningscondocument_index,field,code(unknown_field),messageysuggestion(el campo correcto, si se reconoce). - Validación estricta (por API key): la API responde
422con el error bajodocuments→ posición del documento → ruta del campo (el mismo cuerpo que v1) y no crea el batch. Está activada en las API keys nuevas; las integraciones existentes reciben primerowarningspara corregir sus campos.
Endpoints relacionados
- Tupana Link — Conectar una empresa (widget)
- Listar Credenciales — Ver conexiones ya activas
- Listar Documentos — Consultar documentos emitidos
- Obtener Documento Específico — Ver detalles de un documento
- Consultar Estados de Documento — Ver historial de estados
- Registrar Estado de Documento — Registrar eventos manualmente
