GuíaEjemplosReferencia API
apisunat.netIngresar

Cuenta

  • GETComprobar la clave
  • GETPlan y consumo del mes

Emisores

  • GETListar RUC
  • POSTRegistrar un RUC
  • GETConsultar un RUC
  • PATCHActivar o desactivar un RUC
  • PUTGuardar credenciales SUNAT
  • POSTValidar el RUC con SUNAT
  • POSTPasar el RUC a producción

Series y establecimientos

  • GETListar series
  • GETListar establecimientos
  • POSTCrear o actualizar un establecimiento

Utilidades

  • POSTCalcular totales e IGV
  • GETListar catálogos SUNAT
  • GETBuscar en el catálogo 25 (productos SUNAT)
  • GETConsultar un catálogo

Documentos

  • GETListar documentos
  • POSTEmitir factura, boleta, nota o retención
  • GETConsultar un documento
  • GETDescargar PDF, XML, ZIP o CDR
  • POSTReenviar a SUNAT
  • POSTConsultar el ticket en SUNAT
  • GETHistorial de correos
  • POSTEnviar por correo
  • POSTReintentar un correo

Anulaciones

  • POSTAnular documentos
  • GETConsultar una anulación

GRE

  • POSTEmitir una guía de remisión (GRE)
  • GETConsultar una guía

Recursos

  • GETEspecificación OpenAPI
  • GETColección Postman
  • GETResumen para asistentes de IA
POST/issuer/voids

Anular documentos

Facturas y notas se anulan con comunicación de baja (RA), una por documento. Las boletas se anulan juntas con un resumen diario (RC). No se mezclan en una misma petición.

Send request

Use the documented inputs to call this endpoint directly.

API serverbase URL
Bearer tokenBearerAuthoptional
Stored only in this browser for the BearerAuth security scheme and reused on every API page in this group.

Parameters

Values are applied to the request and the example on the right.

Idempotency-Keyheader · stringrequired

Clave única por operación (máximo 255 caracteres). Repetirla con el mismo cuerpo devuelve el mismo resultado durante 7 días.

Request body

application/jsonrequired
documentsarray<>required
rucstringoptional

Responses

202application/json

Aceptado; SUNAT puede seguir procesando.

{
  "data": [
    {
      "createdAt": "string",
      "documents": [
        {
          "id": "",
          "status": "string"
        }
      ],
      "environment": "string",
      "id": "",
      "identifier": "string",
      "issuerRuc": "string",
      "links": {
        "self": "string"
      },
      "status": "string",
      "sunat": {
        "attempts": 1.5,
        "description": "string",
        "errorCode": "string",
        "errorMessage": "string",
        "responseCode": "string",
        "ticket": "string"
      },
      "type": "RA",
      "updatedAt": "string"
    }
  ]
}
dataarray<>required
400application/json

VALIDATION_ERROR: El cuerpo, los parámetros o una regla del comprobante no son válidos. fields indica el campo.

IDEMPOTENCY_REQUIRED: Falta el header Idempotency-Key.

{
  "error": {
    "code": "string",
    "fields": {},
    "message": "string",
    "requestId": "",
    "retryable": true
  }
}
errorrequired
401application/json

UNAUTHENTICATED: Falta la clave API o no es válida.

{
  "error": {
    "code": "string",
    "fields": {},
    "message": "string",
    "requestId": "",
    "retryable": true
  }
}
errorrequired
402application/json

TRIAL_EXPIRED: La prueba gratuita venció.

TRIAL_EXHAUSTED: La prueba gratuita consumió sus operaciones.

PLAN_LIMIT_REACHED: Se consumieron las operaciones del plan en el mes.

{
  "error": {
    "code": "string",
    "fields": {},
    "message": "string",
    "requestId": "",
    "retryable": true
  }
}
errorrequired
403application/json

WORKSPACE_SUSPENDED: El workspace está suspendido.

ISSUER_FORBIDDEN: El RUC no pertenece al workspace de la clave.

TEST_KEY_IN_PRODUCTION: La clave no corresponde: un documento emitido con asu_live_ solo se opera con asu_live_ (y uno de prueba con asu_test_).

{
  "error": {
    "code": "string",
    "fields": {},
    "message": "string",
    "requestId": "",
    "retryable": true
  }
}
errorrequired
404application/json

NOT_FOUND: El recurso no existe en el workspace.

{
  "error": {
    "code": "string",
    "fields": {},
    "message": "string",
    "requestId": "",
    "retryable": true
  }
}
errorrequired
409application/json

IDEMPOTENCY_CONFLICT: La Idempotency-Key ya se usó con otro cuerpo.

REQUEST_IN_PROGRESS: Otra petición con la misma Idempotency-Key sigue en proceso.

{
  "error": {
    "code": "string",
    "fields": {},
    "message": "string",
    "requestId": "",
    "retryable": true
  }
}
errorrequired
422application/json

VOID_NOT_ALLOWED: Solo se anulan documentos aceptados por SUNAT.

VOID_MIXED_DOCUMENTS: Las boletas se anulan en una petición separada de facturas y notas.

VOID_SUMMARY_MISMATCH: Las boletas de un resumen deben compartir RUC, fecha y moneda.

{
  "error": {
    "code": "string",
    "fields": {},
    "message": "string",
    "requestId": "",
    "retryable": true
  }
}
errorrequired
429application/json

RATE_LIMITED: Se superó el límite de peticiones. Respeta el header Retry-After.

{
  "error": {
    "code": "string",
    "fields": {},
    "message": "string",
    "requestId": "",
    "retryable": true
  }
}
errorrequired
500application/json

INTERNAL_ERROR: Error interno. Reintenta y comparte el requestId con soporte.

{
  "error": {
    "code": "string",
    "fields": {},
    "message": "string",
    "requestId": "",
    "retryable": true
  }
}
errorrequired
Reintentar un correo< PreviousConsultar una anulaciónNext >

Powered by heyo

curl --request POST \
  'https://api.apisunat.net/api/v1/issuer/voids' \
  --header 'Idempotency-Key: string' \
  --header 'Content-Type: application/json' \
  --data '{
  "ruc": "20123456789",
  "documents": [
    {
      "documentId": "3f8c1d2e-0000-4000-8000-000000000001",
      "reason": "Error en el monto"
    }
  ]
}'
{
  "data": [
    {
      "createdAt": "string",
      "documents": [
        {
          "id": "",
          "status": "string"
        }
      ],
      "environment": "string",
      "id": "",
      "identifier": "string",
      "issuerRuc": "string",
      "links": {
        "self": "string"
      },
      "status": "string",
      "sunat": {
        "attempts": 1.5,
        "description": "string",
        "errorCode": "string",
        "errorMessage": "string",
        "responseCode": "string",
        "ticket": "string"
      },
      "type": "RA",
      "updatedAt": "string"
    }
  ]
}