Validar el comprobante electrónico
Para verificar que nuestros comprobantes sean válidos, existen 2 tipos de validaciones:
#
HerramientasPara completar esta sección necesitaremos utilizar algunas herramientas.
Tambien necesitaremos un comprobante XML a validar, utilizaremos el XML creado en la sección anterior.
Windows
Puedes descargar las herramientas desde este enlace.
#
Validación de Esquema (XSD)Para verificar que el XML construido cumple con el esquema del estándar UBL, debemos primero contar con los archivos XSD (XML Schema Definition
) que describe los elementos que puede contener el comprobante XML, para el caso de SUNAT esto se pueden descargar desde aquí.
Esta será la estructura del directorio de trabajo.
xmllint
#
Esta herramienta nos permitirá validar el comprobante XML, con el esquema XSD relacionado. En este caso validaremos una factura, el archivo xml será 20123456789-01-F001-1.xml
y el esquema XSD, UBL-Invoice-2.1.xsd
.
Comando para validar el comprobante XML con su esquema XSD.
Resultado:
Parámetros:
--schema
: Indica la ruta del archivo XSD.--noout
: Solo muestra los errores encontrados.
#
ErroresComo nuestro comprobante XML fue elaborado correctamente, no tenemos errores, así que para probar escenarios de error, haremos algunos cambios en el XML.
- Caso 1
- Caso 2
Eliminaremos el nodo cbc:PriceAmount
(Valor venta unitario).
Volvemos a ejecutar la validación
Resultado:
Podemos interpretar del mensaje que falta el elemento PriceAmount
en el nodo Price
.
Eliminaremos el atributo currencyID
(Moneda) en el nodo cbc:PayableAmount
(Importe total).
Volvemos a ejecutar la validación
Resultado:
En este caso el atributo currencyID
es requerido y nos muestra el error.
#
Validación de contenido (XSL)La validación de contenido de nuestro comprobante XML, proviene de las Reglas de validación - SUNAT, en la cual se define valores, formatos, cálculos que deberia cumplir el comprobante electrónico, y que en general son propios de la tributación peruana; por ejemplo que la serie inicie con F
para facturas, el cálculo del IGV sea correcto, que los codigos de catálogo utilizados se encuentren en la lista definida por SUNAT, etc.
Las reglas de validación que SUNAT presenta en un archivo excel, ha sido representada en archivos XSL para poder utilizarlos programáticamente, SUNAT la pone a disposición en este enlace, pero no esta completo; existe otra forma de obtener estos archivos XSL, y es descargando el facturador SFS de SUNAT, los archivos XSL
se encontraran en la carpeta sunat_archivos\sfs\VALI\commons
.
Esta será la estructura del directorio de trabajo.
XSLT Patch
xsltproc
#
Esta herramienta nos permitirá validar el comprobante XML, con el archivo XSL según el tipo de comprobante. En este ejemplo validaremos una factura, el archivo xml será 20123456789-01-F001-1.xml
y el archivo XSL, ValidaExprRegFactura-2.0.1.xsl
.
Comando para validar el comprobante XML usando las reglas de validación SUNAT.
Parámetros:
--noout
: Solo muestra los errores.--stringparam
: Parámetros utilizados en el archivo XSL, SUNAT requiere el parámetronombreArchivoEnviado
que es el nombre del comprobante xml.
#
ErroresEl comprobante XML utilizado no contiene errores, haremos algunos cambios en el XML para conseguirlo.
- Moneda inválida
- Total impuestos incorrecto
La moneda utilizada era PEN
, la cambiaremos por BTC
.
Ejecutando la validación.
Resultado:
Según los códigos de retorno de SUNAT:
Código | Descripción |
---|---|
3088 | El valor ingresado como moneda del comprobante no es valido (catalogo nro 02). |
La suma total de impuestos era 18.00
, la cambiaremos por 5.00
.
Ejecutar la validación.
Resultado:
Según los códigos de retorno de SUNAT:
Código | Descripción |
---|---|
4301 | La sumatoria de impuestos globales no corresponde al monto total de impuestos. |
Todas las validaciones se pueden constatar con en el archivo excel de Reglas de validación, allí podremos tener mayor información de cada codigo de error y como resolverlo.