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
PUT/issuer/issuers/{ruc}/credentials

Guardar credenciales SUNAT

Con asu_test_ configura el RUC de prueba: solo el certificado PFX/P12 y su contraseña (SUNAT beta firma con el usuario genérico MODDATOS; los campos SOL se ignoran). Con asu_live_ configura el RUC de producción: usuario SOL secundario, clave, certificado y credenciales GRE reales. El campo environment es obsoleto y se ignora. Cambiar usuario, clave o certificado reinicia las validaciones del RUC (y deshabilita producción hasta repetir la prueba real).

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.

rucpath · stringrequired

Request body

application/jsonrequired
certificateBase64stringoptional

Certificado PFX o P12 en base64.

certificatePasswordstringoptional
environmentenumoptional

Obsoleto: se ignora. La clave decide el RUC: asu_test_ configura el RUC de prueba (solo certificado; SUNAT beta firma con el usuario genérico MODDATOS) y asu_live_ el RUC de producción (usuario SOL secundario, clave, certificado y GRE reales).

Values: "beta" · "produccion"

fiscalAddressstringoptional
fiscalDepartmentstringoptional
fiscalDistrictstringoptional
fiscalProvincestringoptional
fiscalUbigeostringoptional
greClientIdstringoptional

Credenciales de la API de guías (GRE) de SUNAT.

greClientSecretstringoptional
logoBase64stringoptional

Logo para el PDF: data:image/png;base64,... o data:image/jpeg;base64,...

solPasswordstringoptional
solUserstringoptional

Usuario SOL secundario real del RUC. Obligatorio con asu_live_; con asu_test_ se ignora.

Responses

200application/json

Correcto.

{
  "active": true,
  "address": {
    "department": "string",
    "district": "string",
    "line": "string",
    "province": "string",
    "ubigeo": "string"
  },
  "createdAt": "string",
  "credentials": {
    "beta": {
      "certificateExpiresAt": "string",
      "configured": true,
      "hasCertificate": true,
      "hasSolPassword": true,
      "lastError": "string",
      "solUser": "string",
      "validatedAt": "string"
    },
    "produccion": {
      "certificateExpiresAt": "string",
      "configured": true,
      "hasCertificate": true,
      "hasSolPassword": true,
      "lastError": "string",
      "solUser": "string",
      "validatedAt": "string"
    }
  },
  "environment": "string",
  "isDefault": true,
  "legalName": "string",
  "livemode": true,
  "productionEnabled": true,
  "ruc": "string",
  "status": "string",
  "tradeName": "string",
  "updatedAt": "string"
}
activebooleanrequired
addressrequired
createdAtobjectrequired
credentialsrequired
environmentstringrequired

Solo informativo: produccion si el RUC está habilitado, si no beta. El ambiente de cada emisión lo decide la clave.

isDefaultbooleanrequired
legalNamestringrequired
livemodebooleanrequired

Modo del RUC: true = producción (claves asu_live_), false = prueba (claves asu_test_, SUNAT beta). El mismo RUC puede existir una vez en cada modo.

productionEnabledbooleanrequired

true cuando las claves asu_live_ ya pueden emitir en SUNAT producción.

rucstringrequired
statusstringrequired

Estado de la validación beta del RUC.

tradeNamestringrequired
updatedAtobjectrequired
400application/json

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

{
  "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.

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

WORKSPACE_SUSPENDED: El workspace está suspendido.

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

ISSUER_NOT_FOUND: El RUC no está registrado en el workspace.

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

INVALID_LOGO: El logo debe ser PNG o JPEG en base64.

{
  "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
Activar o desactivar un RUC< PreviousValidar el RUC con SUNATNext >

Powered by heyo

curl --request PUT \
  'https://api.apisunat.net/api/v1/issuer/issuers/string/credentials' \
  --header 'Content-Type: application/json' \
  --data '{
  "solUser": "FACTURA1",
  "solPassword": "clave-sol-secundaria",
  "certificateBase64": "MIIK...",
  "certificatePassword": "clave-del-pfx"
}'
{
  "active": true,
  "address": {
    "department": "string",
    "district": "string",
    "line": "string",
    "province": "string",
    "ubigeo": "string"
  },
  "createdAt": "string",
  "credentials": {
    "beta": {
      "certificateExpiresAt": "string",
      "configured": true,
      "hasCertificate": true,
      "hasSolPassword": true,
      "lastError": "string",
      "solUser": "string",
      "validatedAt": "string"
    },
    "produccion": {
      "certificateExpiresAt": "string",
      "configured": true,
      "hasCertificate": true,
      "hasSolPassword": true,
      "lastError": "string",
      "solUser": "string",
      "validatedAt": "string"
    }
  },
  "environment": "string",
  "isDefault": true,
  "legalName": "string",
  "livemode": true,
  "productionEnabled": true,
  "ruc": "string",
  "status": "string",
  "tradeName": "string",
  "updatedAt": "string"
}