Validar comprobate

Esta ruta de la api valida y regulariza un comprobante. Ejm: si en la api el comprobante esta en registrado, y aun asi intentes reenviarlo SUNAT no responde; es posible que el comprobante ya se encuentre como aceptado en SUNAT, puedes usar esta ruta de api para verificar el estado real en SUNAT y actualizar el estado en el sistema.

Para usar esta opción debe tener configurado las credenciales de SUNAT, siga este tutorial: Obtener y configurar credenciales de SUNAT para consultar validez de comprobantes de forma masiva


POST /api/documents/validate-document

Headers

Key

Value

Content-Type

application/json

Authorization

Bearer {{token}}

Body

{
  "document_type_id": "01",
  "series": "F001",
  "number": 43
  //"date_of_issue": "2026-10-22", //Opcional: fecha de emisión
  //"total": 118.00 //Opcional: Total del comprobante
}

Ejemplos

Consultar Comprobante

Response 200 OK

1. Consulta OK — CPE aceptado (sin regularizar)

{
  "success": true,
  "message": "Consulta realizada correctamente.",
  "data": {
    "state_type_id": "05",
    "state_type_description": "Aceptado",
    "code_sunat": "1",
    "message_sunat": "Operation Success! ",
    "state_ruc": "ACTIVO",
    "condition_ruc": "HABIDO",
    "regularize": {
      "requested": false,
      "updated": false,
      "message": "",
      "system_state_type_id": "01",
      "previous_state_type_id": null
    }
  }
}

2. Regularize — estado actualizado

{
  "success": true,
  "message": "Consulta realizada correctamente.",
  "data": {
    "state_type_id": "05",
    "state_type_description": "Aceptado",
    "code_sunat": "1",
    "message_sunat": "Operation Success! ",
    "state_ruc": "ACTIVO",
    "condition_ruc": "HABIDO",
    "regularize": {
      "requested": true,
      "updated": true,
      "message": "El estado del CPE fue actualizado",
      "system_state_type_id": "05",
      "previous_state_type_id": "01"
    }
  }
}

3. Regularize — estado ya igual

{
  "success": true,
  "message": "Consulta realizada correctamente.",
  "data": {
    "state_type_id": "05",
    "state_type_description": "Aceptado",
    "code_sunat": "1",
    "message_sunat": "Operation Success! ",
    "state_ruc": "ACTIVO",
    "condition_ruc": "HABIDO",
    "regularize": {
      "requested": true,
      "updated": false,
      "message": "Estado de sunat igual al del sistema",
      "system_state_type_id": "05",
      "previous_state_type_id": null
    }
  }
}

4. Regularize — CPE no está en BD

{
  "success": true,
  "message": "Consulta realizada correctamente.",
  "data": {
    "state_type_id": "05",
    "state_type_description": "Aceptado",
    "code_sunat": "1",
    "message_sunat": "Operation Success! ",
    "state_ruc": "ACTIVO",
    "condition_ruc": "HABIDO",
    "regularize": {
      "requested": true,
      "updated": false,
      "message": "No se encontró el comprobante en la base de datos para regularizar.",
      "system_state_type_id": null,
      "previous_state_type_id": null
    }
  }
}

5. Consulta OK — CPE no existe en SUNAT

{
  "success": true,
  "message": "Consulta realizada correctamente.",
  "data": {
    "state_type_id": "-1",
    "state_type_description": "No existe",
    "code_sunat": "0",
    "message_sunat": "Operation Success! ",
    "state_ruc": "",
    "condition_ruc": "",
    "regularize": {
      "requested": true,
      "updated": false,
      "message": "No existe en Sunat",
      "system_state_type_id": "01",
      "previous_state_type_id": null
    }
  }
}

6. Consulta OK — CPE anulado

{
  "success": true,
  "message": "Consulta realizada correctamente.",
  "data": {
    "state_type_id": "11",
    "state_type_description": "Anulado",
    "code_sunat": "2",
    "message_sunat": "Operation Success! ",
    "state_ruc": "ACTIVO",
    "condition_ruc": "HABIDO",
    "regularize": {
      "requested": true,
      "updated": true,
      "message": "El estado del CPE fue actualizado",
      "system_state_type_id": "11",
      "previous_state_type_id": "05"
    }
  }
}

7. Error — no autenticado

{
  "success": false,
  "message": "No se encuentra autenticado"
}

8. Error — faltan fecha/total y no está en BD

{
  "success": false,
  "message": "No se encontró el comprobante en la base de datos. Envíe date_of_issue y total, o verifique tipo/serie/número."
}