API SUNAT
Emite facturas, boletas, notas, retenciones, bajas y guías de remisión electrónicas desde tu sistema.
API SUNAT es una API REST para emitir comprobantes electrónicos en Perú. Tu sistema envía los datos en JSON y la API arma el XML UBL 2.1, lo firma con tu certificado, lo envía a SUNAT y te devuelve el resultado con el CDR, el PDF y el XML.
Qué puedes hacer
| Operación | Endpoint |
|---|---|
| Facturas, boletas, notas de crédito y débito, retenciones | POST /documents |
| Anular facturas y notas (RA) o boletas (RC) | POST /voids |
| Guías de remisión remitente (GRE) | POST /guides |
| PDF (A4, A5 y tickets), XML, ZIP y CDR | GET /documents/{id}/{file} |
| Enviar el comprobante por correo | POST /documents/{id}/emails |
| Registrar RUC, credenciales SOL y certificado | /issuers |
| Catálogos SUNAT y cálculo de IGV | /catalogs, /calculations |
Cómo funciona
- 1
Crea tu cuenta y una clave API
Regístrate en apisunat.net, elige el modo API y genera una clave en el panel. Las claves
asu_test_emiten siempre en SUNAT beta, para pruebas; lasasu_live_emiten comprobantes reales. - 2
Configura tu RUC
Registra el RUC y ya puedes probar con tu clave
asu_test_. Para emitir comprobantes reales, guarda tu usuario SOL y tu certificado digital, valídalo y habilita producción. - 3
Emite
Envía el comprobante a
POST /documents. La respuesta trae el estado de SUNAT y los enlaces al PDF, XML y CDR. - 4
Recibe los cambios de estado
Configura un webhook para enterarte cuando SUNAT acepta, observa, rechaza o anula un documento.
Sigue el inicio rápido para emitir tu primera boleta en pocos minutos.
Convenciones
- Todo el intercambio es JSON en UTF-8, salvo las descargas de archivos.
- Los importes van en la moneda del documento, con hasta dos decimales (
118.00). - Las fechas usan
AAAA-MM-DDy la horaHH:MM:SS, en hora de Lima. - Los códigos SUNAT (tipo de documento, afectación, unidad, motivos) se envían como texto:
"01","10","NIU". - Los campos que no existen en el contrato se rechazan con
VALIDATION_ERROR, para que un error de tipeo no pase desapercibido. - Las respuestas de lista tienen la forma
{ "data": [...] }. - Los errores siempre tienen la forma
{ "error": { "code", "message", "retryable", "fields", "requestId" } }. Ver Errores.
Recursos
- Especificación OpenAPI
- Colección Postman
- Resumen para asistentes de IA
- Integra con IA: skill para Claude Code, Codex y Cursor
