Introducción
Las Notas de Crédito permiten anular o modificar parcialmente un comprobante de pago ya emitido. Son documentos electrónicos que se envían a SUNAT y están regulados por normativa fiscal peruana.¿Cuándo usar Nota de Crédito?
Casos de uso:
- Devolución total o parcial de productos
- Error en precio o cantidad
- Descuento posterior a la emisión
- Bonificación o ajuste comercial
- Anulación de operación (motivo 01)
Motivos SUNAT
La normativa peruana define 13 motivos oficiales para emitir Notas de Crédito:| Código | Descripción | Uso común |
|---|---|---|
| 01 | Anulación de la operación | Cancelación total de venta |
| 02 | Anulación por error en el RUC | Cliente incorrecto |
| 03 | Corrección por error en la descripción | Producto mal descrito |
| 04 | Descuento global | Descuento posterior |
| 05 | Descuento por ítem | Descuento en productos específicos |
| 06 | Devolución total | Devolución de todos los productos |
| 07 | Devolución por ítem | Devolución parcial |
| 08 | Bonificación | Regalo o bono posterior |
| 09 | Disminución en el valor | Ajuste de precio |
| 10 | Otros conceptos | Otros casos |
| 11 | Ajuste de operaciones de exportación | Exportaciones |
| 12 | Ajuste afecto al IVAP | Impuesto al arroz |
| 13 | Corrección del monto neto pendiente de pago | Créditos |
motivo_nota con campo tipo='NC'
Estructura de Nota de Crédito
Tabla: notas_credito
Flujo Paso a Paso
Acceder al Formulario
Ruta:
/nota-credito/crearComponente: NotaCreditoForm.jsxEl formulario se divide en dos columnas:- Izquierda: Búsqueda de comprobante y vista de detalles
- Derecha: Selección de motivo y configuración de NC
Buscar Comprobante a Afectar
Ingreso de Serie y Número
Solo se pueden afectar Facturas y Boletas ya emitidas. Las Notas de Venta no pueden tener Notas de Crédito.
Generar XML con Greenter
Servicio:
SunatService::generarNotaCreditoXml()El XML se firma con el certificado digital de la empresa (
{ruc}-cert.pem) antes de guardar.Enviar a SUNAT
Desde la lista de Notas de Crédito, hacer click en “Enviar SUNAT”.Endpoint:
POST /api/notas-credito/{id}/enviarProceso de envío:
Códigos de respuesta SUNAT:
| Código | Estado | Descripción |
|---|---|---|
| 0 | Aceptado | Comprobante válido |
| 4XXX | Aceptado con observaciones | Válido pero tiene advertencias |
| 2XXX | Rechazado | Comprobante inválido |
Consideraciones Importantes
Limitaciones actuales
Solo NC totales (no parciales)
Solo NC totales (no parciales)
Estado actual: El sistema emite NC por el monto total del comprobante.Para NC parciales:
- Requiere desarrollo adicional
- Permitir selección de items específicos
- Ingresar cantidades parciales
- Recalcular totales
No revierte stock automáticamente
No revierte stock automáticamente
Comportamiento: La NC no devuelve productos al inventario.Solución manual:
- Ir a módulo Almacén
- Crear ajuste de entrada por devolución
- Referenciar NC como motivo
No cancela cuentas por cobrar
No cancela cuentas por cobrar
Comportamiento: La NC no afecta automáticamente las cuotas pendientes.Proceso manual:
- Ir a Cuentas por Cobrar
- Registrar pago con referencia a NC
- O anular las cuotas manualmente
Errores Comunes
Error: Venta no encontrada
Error: Venta no encontrada
Causa: Serie o número incorrecto, o venta no existe en la base de datos.Solución:
- Verificar serie y número en lista de ventas
- Revisar que sea Factura o Boleta (no Nota de Venta)
- Confirmar que la venta pertenece a la empresa actual
Error SUNAT: Código 2324 - Documento afectado no existe
Error SUNAT: Código 2324 - Documento afectado no existe
Causa: El comprobante original no fue enviado a SUNAT o fue rechazado.Solución:
- Verificar que la venta tenga
estado_sunat = '1'(Aceptado) - Si no, enviar primero la venta a SUNAT
- Esperar confirmación de CDR
- Luego crear la NC
Error SUNAT: Código 2335 - Fecha de emisión inválida
Error SUNAT: Código 2335 - Fecha de emisión inválida
Causa: La fecha de la NC es anterior a la fecha del comprobante afectado.Solución:
- El sistema usa
now()automáticamente - Si ocurre este error, revisar fecha_emision de la venta
- Ajustar manualmente si es necesario
XML generado pero no se puede enviar
XML generado pero no se puede enviar
Causa: Certificado inválido o credenciales SOL incorrectas.Solución:
- Verificar certificado en
storage/app/sunat/certificados/{ruc}-cert.pem - Revisar credenciales en Configuración → Empresa:
- Usuario SOL
- Clave SOL
- Modo (beta/producción)
- Verificar logs en
storage/logs/laravel.log
Referencias Técnicas
Controlador:app/Http/Controllers/NotaCreditoController.php
Servicio: app/Services/SunatService.php
Modelos:
app/Models/NotaCredito.phpapp/Models/MotivoNota.php
resources/js/components/NotaCredito/NotaCreditoForm.jsxresources/js/components/NotaCredito/page.jsx