Guía rápida
De cero a un comprobante aceptado por SUNAT, en cuatro pasos.
1. Genera tu API key
Crea una key con permisos invoices.create y invoices.send_sunat desde Configuración → API Keys. Guárdala, solo se muestra una vez.
2. Emite el comprobante
Envía un POST a /comprobantes/emitir con el cliente, la moneda y los ítems, dentro de documento. Con webhook: false (el valor por defecto), Facto valida los datos, crea el comprobante y lo transmite a SUNAT en la misma llamada — sin un paso de envío aparte. Ver la referencia completa de campos en Crear comprobante y el significado de webhook en Webhook.
curl -X POST https://api.facto.com.pe/api/v1/comprobantes/emitir \
-H "Authorization: Bearer sk_live_51H8f9s0aB3cD4eF5gH6i" \
-H "Content-Type: application/json" \
-d '{
"webhook": false,
"documento": {
"fechaEmision": "2026-11-06",
"sunatTransaccion": "0101",
"tipoComprobante": "01",
"serie": "F001",
"moneda": "PEN",
"formaPago": "CREDITO",
"fechaVencimiento": "2026-11-19",
"cliente": {
"tipoDocumento": "6",
"numeroDocumento": "20600123450",
"denominacion": "EMPRESA DE SERVICIOS S.A.C.",
"direccion": "AV. LIMA 123 - LIMA - LIMA - LIMA",
"correo": "cliente@empresa.com"
},
"items": [
{
"unidadMedida": "NIU",
"descripcion": "SERVICIO DE CONSULTORÍA",
"cantidad": 2,
"precioUnitario": 590,
"tipoIgv": "10"
}
],
"cuotas": [
{ "monto": 590, "fechaVencimiento": "2026-11-07" },
{ "monto": 590, "fechaVencimiento": "2026-11-19" }
]
}
}'{
"success": true,
"message": "La Factura numero F001-00000003, ha sido aceptada",
"data": {
"entorno": "demo",
"documento": {
"id": "9b4a3d90-2af7-4d40-af24-e52d3a5ab273",
"estado": "ACEPTADA",
"serie": "F001",
"correlativo": "F001-00000003",
"tipo": "FACTURA",
"tipoCodigo": "01",
"sunatTransaccion": "0101",
"fechaEmision": "2026-11-06",
"fechaVencimiento": "2026-11-19",
"moneda": "PEN",
"formaPago": "credito",
"cliente": {
"tipoDocumento": "6",
"numeroDocumento": "20600123450",
"denominacion": "EMPRESA DE SERVICIOS S.A.C.",
"direccion": "AV. LIMA 123 - LIMA - LIMA - LIMA",
"correo": "cliente@empresa.com"
},
"totales": {
"gravada": 1000,
"exonerada": 0,
"inafecta": 0,
"exportacion": 0,
"gratuita": 0,
"descuento": 0,
"anticipo": 0,
"descuentoGlobal": 0,
"descuentoGlobalAfectaBase": false,
"isc": 0,
"igv": 180,
"impuestoBolsa": 0,
"otrosCargos": 0,
"total": 1180
},
"items": [
{
"codigo": "",
"descripcion": "SERVICIO DE CONSULTORÍA",
"unidad": "NIU",
"cantidad": 2,
"valorUnitario": 500,
"precioUnitario": 590,
"descuento": 0,
"subtotal": 1000,
"tipoIgv": "10",
"tipoIgvDescripcion": "GRAVADO - OPERACIÓN ONEROSA",
"igv": 180,
"total": 1180
}
],
"guias": [],
"cuotas": [
{
"numero": 1,
"monto": 590,
"fechaVencimiento": "2026-11-07"
},
{
"numero": 2,
"monto": 590,
"fechaVencimiento": "2026-11-19"
}
],
"sunat": {
"codigo": "0",
"mensaje": "La Factura numero F001-00000003, ha sido aceptada",
"notas": []
},
"hash": "xvQpVbLssRc8FlD8/0LuSYeIPo8=",
"cadenaQr": "20601234567|01|F001|00000003|180.00|1180.00|2026-11-06|6|20600123450|xvQpVbLssRc8FlD8/0LuSYeIPo8=",
"codigoBarras": "20601234567|01|F001|00000003|180.00|1180.00|2026-11-06|6|20600123450|xvQpVbLssRc8FlD8/0LuSYeIPo8="
},
"enlaces": {
"consulta": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/3",
"pdf": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/3/pdf",
"pdfTicket80mm": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/3/pdf?format=ticket_80mm",
"pdfTicket58mm": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/3/pdf?format=ticket_58mm",
"xml": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/3/xml",
"cdr": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/3/cdr"
}
}
}Revisa el campo data.documento.estado de la respuesta — aquí, ACEPTADA — ver Estados de documento. Si el comprobante se creó pero el envío a SUNAT falló, la respuesta trae un shape distinto con una ruta para reintentar — ver Crear comprobante.
3. Confirma el estado
Como el paso anterior es síncrono, ya conoces el resultado en esa misma respuesta — vuelve a consultar el comprobante solo si necesitas revisarlo más tarde.
curl https://api.facto.com.pe/api/v1/invoices/{id} \
-H "Authorization: Bearer sk_live_51H8f9s0aB3cD4eF5gH6i"4. Descarga el PDF
Una vez aceptado, descarga el PDF (o el XML UBL 2.1) para compartirlo con tu cliente.
curl https://api.facto.com.pe/api/v1/invoices/{id}/pdf \
-H "Authorization: Bearer sk_live_51H8f9s0aB3cD4eF5gH6i" \
-o factura.pdfSiguientes pasos
- Emite otros tipos de comprobante — exonerada, gratuita, al crédito, en dólares — ver variantes de Facturas.
- Anula un comprobante ya aceptado en Anular factura o Anular boleta.
- Prellena datos del cliente consultando su RUC en Consultar RUC.
- Revisa el formato de errores de la API en Errores.