Saltar a contenido

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.
  • DatosVenta son 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 IdCliente y 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.