API de FelFacto

Emite documentos tributarios electrónicos de Chile desde tu sistema. FelFacto asigna los folios, firma, envía al SII y reintenta si hay problemas de conexión.

Autenticación

Crea una llave en Configuración → API y envíala en cada solicitud. La empresa debe tener la emisión activa. La API es para usarla desde tu servidor: no pongas la llave en una página web ni en una app.

Authorization: Bearer ff_tu_llave

Operaciones

POST/api/v1/documentosEmite una boleta o factura
GET/api/v1/documentosLista documentos. Filtros: estado, pagina
GET/api/v1/documentos/{id}Consulta un documento y su estado ante el SII
GET/api/v1/documentos/{id}/pdfDescarga el PDF
GET/api/v1/documentos/{id}/xmlDescarga el XML firmado
POST/api/v1/documentos/{id}/nota-creditoAnula o corrige un documento
GET/api/v1/foliosFolios disponibles por tipo

Emitir un documento

Idempotency-Key es obligatoria: usa un valor único por operación, como el número de tu pedido. Si tu solicitud falla, repítela con la misma clave y no se emitirá un segundo documento.

curl http://localhost:3000/api/v1/documentos \
  -H "Authorization: Bearer ff_tu_llave" \
  -H "Idempotency-Key: pedido-1042" \
  -H "Content-Type: application/json" \
  -d '{
    "tipo": "boleta",
    "precios_incluyen_iva": true,
    "items": [
      { "nombre": "Café 250 g", "cantidad": 2, "precio": 4990 },
      { "nombre": "Libro", "cantidad": 1, "precio": 8000, "exento": true }
    ]
  }'

La factura exige receptor con rut, razon_social, direccion y comuna. También admite giro, ciudad, telefono y correo. Cada ítem acepta descuento en porcentaje. pagado: false marca la factura a crédito.

El monto oficial es el total de la respuesta. En factura, el SII calcula el IVA sobre el neto: con precios_incluyen_iva: true puede diferir en unos pesos de tu suma, así que usa ese total al cobrar.

{
  "id": "cmabc123",
  "tipo": 39,
  "tipo_nombre": "Boleta electrónica",
  "folio": 1520,
  "estado": "enviado",
  "ambiente": "produccion",
  "fecha": "2026-11-01",
  "neto": 8387,
  "iva": 1593,
  "exento": 8000,
  "total": 17980,
  "track_id": "33587879",
  "detalle_sii": null,
  "error": null,
  "pdf_url": "http://localhost:3000/api/v1/documentos/cmabc123/pdf",
  "xml_url": "http://localhost:3000/api/v1/documentos/cmabc123/xml"
}

Estados

Un documento pasa por pendiente, firmado y enviado, y termina en aceptado, reparos o rechazado. Solo aceptado y reparos confirman la recepción del SII. Si no hay conexión, queda pendiente, con el motivo en error, y FelFacto reintenta solo. Consulta el documento hasta que llegue a un estado final.

Nota de crédito

codigo puede ser anula, texto o monto. monto va con IVA incluido y es obligatorio solo en el último caso.

curl http://localhost:3000/api/v1/documentos/cmabc123/nota-credito \
  -H "Authorization: Bearer ff_tu_llave" \
  -H "Content-Type: application/json" \
  -d '{ "codigo": "monto", "motivo": "Devolución parcial", "monto": 4990 }'

Errores

{ "error": { "codigo": "datos_invalidos", "mensaje": "Agrega al menos un ítem" } }
400falta_claveFalta la cabecera Idempotency-Key
401no_autorizadoLlave inválida o revocada
404no_encontradoEl documento no existe en esta empresa
409clave_repetidaLa clave ya se usó con otros datos
422datos_invalidos / no_procesableFaltan datos o la operación no es posible
429limite_excedidoMás de 120 solicitudes por minuto