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/documentos | Emite una boleta o factura |
| GET | /api/v1/documentos | Lista documentos. Filtros: estado, pagina |
| GET | /api/v1/documentos/{id} | Consulta un documento y su estado ante el SII |
| GET | /api/v1/documentos/{id}/pdf | Descarga el PDF |
| GET | /api/v1/documentos/{id}/xml | Descarga el XML firmado |
| POST | /api/v1/documentos/{id}/nota-credito | Anula o corrige un documento |
| GET | /api/v1/folios | Folios 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" } }| 400 | falta_clave | Falta la cabecera Idempotency-Key |
| 401 | no_autorizado | Llave inválida o revocada |
| 404 | no_encontrado | El documento no existe en esta empresa |
| 409 | clave_repetida | La clave ya se usó con otros datos |
| 422 | datos_invalidos / no_procesable | Faltan datos o la operación no es posible |
| 429 | limite_excedido | Más de 120 solicitudes por minuto |