Emitir documentos electrónicos¶
Cómo emitir boletas, facturas y notas de crédito por API con
POST /documento/procesar/json: la API asigna el folio CAF, arma y firma el
XML SII, lo persiste y, si corresponde, lo envía al SII automáticamente.
Prerrequisitos: Primeros pasos (token, terminal con folios CAF cargados).
El flujo en 3 pasos¶
1. POST /documento/procesar/json → emite; devuelve folio + token del documento
2. GET /documento/pdf/{token} → PDF listo para entregar al cliente
3. GET /documento/estado/dte/{token} → estado de aceptación en el SII
Emitir una boleta electrónica (39)¶
Para boleta a consumidor final no se requiere identificar al receptor:
curl -X POST https://api.opentpv.cl/documento/procesar/json \
-H "Authorization: Bearer eyJhbGciOi..." \
-H "Content-Type: application/json" \
-d '{
"TipoDte": 39,
"CodigoTerminal": "TERM-01",
"Venta": {
"Folio": 0,
"FechaEmision": "2026-08-10T00:00:00",
"Neto": 10000,
"Iva": 1900,
"Total": 11900,
"EstadoPago": "PAGADO",
"IdMedioPago": 1,
"MedioPago": "EFECTIVO"
},
"DatosVenta": [
{
"Codigo": "PROD001",
"Descripcion": "Producto A",
"Cantidad": 1,
"ValorVenta": 10000,
"TotalLinea": 11900,
"Exento": false
}
],
"PagosVenta": [
{ "IdFormaPago": 1, "FormaPago": "EFECTIVO", "Monto": 11900 }
]
}'
"Folio": 0+CodigoTerminal→ la API asigna el siguiente folio CAF de esa caja. Si administras tus propios CAF, pasa el folio explícito.DatosVentason las líneas;PagosVenta, los medios de pago (informativo y para caja).
Respuesta 200:
{
"folio": 12345,
"token": "a1b2c3d4...",
"xml": "https://api.opentpv.cl/documento/xml/a1b2c3d4...",
"pdf": "https://api.opentpv.cl/documento/pdf/a1b2c3d4...",
"timbre": "https://api.opentpv.cl/documento/timbre/a1b2c3d4...",
"logo": "https://api.opentpv.cl/documento/logo/a1b2c3d4..."
}
Guarda el token: es la llave para PDF, XML, timbre y estado del documento.
Emitir una factura electrónica (33)¶
La factura exige identificar al receptor. Dos formas:
- Cliente ya registrado en OpenTPV: pasa
IdClientey la API completa sus datos desde la base. - Receptor completo en el request:
{
"TipoDte": 33,
"CodigoTerminal": "TERM-01",
"Venta": {
"Folio": 0,
"FechaEmision": "2026-08-10T00:00:00",
"Rut": "76543210",
"Digito": "K",
"RazonSocial": "Empresa Cliente SPA",
"Giro": "Comercio",
"Direccion": "Av. Principal 123",
"Comuna": "Santiago",
"Ciudad": "Santiago",
"Neto": 10000,
"Iva": 1900,
"Total": 11900,
"EstadoPago": "PENDIENTE",
"DiasPlazo": 30
},
"DatosVenta": [ { "...": "igual que la boleta" } ]
}
EstadoPago: "PENDIENTE" marca la factura a crédito (FmaPago 2 en el DTE);
"PAGADO", al contado.
Nota de crédito (61): anular o corregir un DTE¶
Las boletas y facturas no se "anulan": se revierten con nota de crédito que referencia al documento original:
{
"TipoDte": 61,
"CodigoTerminal": "TERM-01",
"Venta": { "Folio": 0, "...": "receptor y totales igual que el original" },
"DatosVenta": [ { "...": "líneas que se revierten" } ],
"Referencias": [
{
"TipoDocumentoReferencia": 39,
"FolioReferencia": 12345,
"FechaReferencia": "2026-08-10",
"CodigoReferencia": 1,
"RazonReferencia": "Anula documento"
}
]
}
CodigoReferencia: 1 anula el documento completo, 2 corrige texto,
3 corrige montos. La NC repone el stock que el documento original
descontó (hereda su comportamiento de inventario: si el original no descontó,
la NC no repone).
Obtener el PDF y verificar el estado¶
# PDF carta # PDF 80mm (impresora térmica)
GET /documento/pdf/{token} GET /documento/pdf/80/{token}
# PDF cedible (para factoring) # XML firmado
GET /documento/pdf/cedible/{token} GET /documento/xml/{token}
# Estado del DTE ante el SII (aceptado / reparo / rechazo)
GET /documento/estado/dte/{token}
# Reenviar al SII si el envío automático está apagado o falló
POST /documento/enviar/sii/{token}
El envío automático al SII depende de la configuración del documento en la empresa (ERP → Opciones → Documentos, fila E-FACTURA: "Envío automático SII").
¿Y las guías de despacho (52)?¶
Se pueden emitir directas con este mismo endpoint, pero si la guía nace de un pedido (e-commerce, venta B2B), el flujo correcto es crear primero la nota de venta y documentarla: así el pedido queda trazable, con receptor alternativo para multi-razón-social y los datos de traslado de la Res. Ex. SII N°154/2025. Ver Pedidos con nota de venta.
Errores típicos¶
| Error | Qué significa |
|---|---|
Sin FOLIOS |
La caja no tiene CAF cargado para ese tipo de DTE. |
400 con detalle de schema |
Falta un campo obligatorio del receptor (33/34) o las líneas no cuadran con los totales. |
| Documento emitido pero rechazado por el SII | Revisar estado/dte/{token}; corregir con NC/ND según el caso. |