Estados de documento
En la respuesta síncrona de POST /comprobantes/emitir, data.documento.estado es uno de estos dos valores.
| Código | Nombre | Significa |
|---|---|---|
ACEPTADA | Aceptada | SUNAT aceptó el comprobante. data.documento trae sunat, hash, cadenaQr y codigoBarras, y data.enlaces los enlaces de descarga. |
RECHAZADA | Rechazada | SUNAT observó el comprobante — revisa data.documento.sunat.mensaje para el motivo. La respuesta sigue siendo HTTP 200, con success: false. No hay reintento automático. |
Flujo típico
Con webhook: false (el valor por defecto), POST /comprobantes/emitir es síncrono: la respuesta ya trae el estado final — ACEPTADA o RECHAZADA, sin pasos intermedios que consultar.
{
"success": true,
"message": "La Factura numero F001-00000001, ha sido aceptada",
"data": {
"entorno": "demo",
"documento": {
"id": "83ad82a0-680e-11f1-8e35-2d93ac0f2c84",
"estado": "ACEPTADA",
"serie": "F001",
"correlativo": "F001-00000001",
"tipo": "FACTURA",
"tipoCodigo": "01",
"sunatTransaccion": "0101",
"fechaEmision": "2026-01-15",
"moneda": "PEN",
"formaPago": "contado",
"cliente": {
"tipoDocumento": "6",
"numeroDocumento": "20112273922",
"denominacion": "TIENDAS DEL MEJORAMIENTO DEL HOGAR S.A.",
"direccion": "AV. ANGAMOS ESTE NRO. 1805 INT. 2 - LIMA - LIMA - SURQUILLO"
},
"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": [],
"sunat": {
"codigo": "0",
"mensaje": "La Factura numero F001-00000001, ha sido aceptada",
"notas": []
},
"hash": "xvQpVbLssRc8FlD8/0LuSYeIPo8=",
"cadenaQr": "20601234567|01|F001|00000001|180.00|1180.00|2026-01-15|6|20112273922|xvQpVbLssRc8FlD8/0LuSYeIPo8=",
"codigoBarras": "20601234567|01|F001|00000001|180.00|1180.00|2026-01-15|6|20112273922|xvQpVbLssRc8FlD8/0LuSYeIPo8="
},
"enlaces": {
"consulta": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1",
"pdf": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1/pdf",
"pdfTicket80mm": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1/pdf?format=ticket_80mm",
"pdfTicket58mm": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1/pdf?format=ticket_58mm",
"xml": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1/xml",
"cdr": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1/cdr"
}
}
}{
"success": true,
"message": "Comprobante creado, envío a SUNAT en proceso",
"data": {
"invoice_id": "7111d8e0-6891-11f1-ab2a-23413cd2ac7c",
"series": "F001",
"correlativo": 1,
"status": "pendiente_envio"
}
}Reconciliar una emisión
Si pierdes la respuesta (timeout de red) o el webhook, consulta la emisión con la misma Idempotency-Key o external_reference que enviaste, dentro de las 48 horas siguientes:
| Emisión | GET /comprobantes/por-referencia/{ref} devuelve |
|---|---|
Síncrona (webhook: false) | La misma respuesta que recibió la emisión. |
Asíncrona (webhook: true), ya resuelta | El estado actual, con el formato de la respuesta síncrona: ACEPTADA o RECHAZADA con el código de SUNAT. Vale para comprobantes y notas. |
| Todavía sin respuesta de SUNAT | 202 con estado: "EN_PROCESO": vuelve a consultar en unos segundos. |
Para saber si un número ya existe, usa GET /comprobantes/{tipo}/{serie}/{correlativo} (por ejemplo /comprobantes/07/FC01/4): responde id, document_type, número completo, status y fecha de emisión, o 404 si no existe. Acepta facturas y boletas (01/03, permiso invoices.read) y notas de crédito y débito (07/08, permisos credit_notes.read/debit_notes.read).
Un comprobante rechazado
Cuando SUNAT observa un comprobante, la solicitud HTTP igual responde 200 OK — el rechazo se refleja en data.documento.estado: "RECHAZADA", en success: false y en data.documento.sunat.mensaje, no en el código HTTP. No hay reintento automático — corrige y crea un nuevo comprobante.
{
"success": false,
"message": "El número de RUC del emisor no existe.",
"data": {
"entorno": "demo",
"documento": {
"id": "9c948140-674e-11f1-85b5-d764057e10c4",
"estado": "RECHAZADA",
"serie": "F001",
"correlativo": "F001-00000001",
"tipo": "FACTURA",
"tipoCodigo": "01",
"sunatTransaccion": "0101",
"fechaEmision": "2026-01-15",
"moneda": "PEN",
"formaPago": "contado",
"cliente": {
"tipoDocumento": "6",
"numeroDocumento": "20112273922",
"denominacion": "TIENDAS DEL MEJORAMIENTO DEL HOGAR S.A.",
"direccion": "AV. ANGAMOS ESTE NRO. 1805 INT. 2 - LIMA - LIMA - SURQUILLO"
},
"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": [],
"sunat": {
"codigo": "2800",
"mensaje": "El número de RUC del emisor no existe.",
"notas": []
},
"hash": "xvQpVbLssRc8FlD8/0LuSYeIPo8=",
"cadenaQr": "20601234567|01|F001|00000001|180.00|1180.00|2026-01-15|6|20112273922|xvQpVbLssRc8FlD8/0LuSYeIPo8=",
"codigoBarras": "20601234567|01|F001|00000001|180.00|1180.00|2026-01-15|6|20112273922|xvQpVbLssRc8FlD8/0LuSYeIPo8="
},
"enlaces": {
"consulta": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1",
"pdf": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1/pdf",
"pdfTicket80mm": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1/pdf?format=ticket_80mm",
"pdfTicket58mm": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1/pdf?format=ticket_58mm",
"xml": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1/xml",
"cdr": "https://api.facto.com.pe/api/v1/comprobantes/01/F001/1/cdr"
}
}
}Un comprobante ACEPTADA no se elimina: se anula con un endpoint dedicado — ver Anular factura o Anular boleta.