Servicios Web de SUNAT
Para informar nuestros comprobantes electr贸nicos (XML) emitidos a SUNAT, disponemos de algunos servicios SOAP a los que necesitamos conectarnos para enviar estos archivos.
#
CredencialesPara conectarnos a estos servicios, necesitaremos unas credenciales, estas son la misma que la clave SOL.
Dato | Relaci贸n con clave SOL |
---|---|
Usuario SOAP | RUC + Usuario SOL |
Clave SOAP | clave SOL |
Ejemplo:
- Usuario:
20123456789MODDATOS
- Clave:
moddatos
Usuario Secundario
Es recomendable crear un usuario secundario con solo permisos para procesos de facturaci贸n electr贸nica, y evitar utilizar la clave SOL principal. Puedes encontrar muchos tutoriales en internet, pero recuerda que para que el usuario este operativo puede tomar hasta 24 horas despues de su creaci贸n.
#
BillServiceEste es el principal servicio SOAP, el cual define 3 metodos:
sendBill
: Para enviar comprobantes (FAC, BOL, NCR, NDB, RET, PERC, GRM).sendSummary
: Para enviar resumen diario, comuncaiones de baja, reversiones.getStatus
: Consultar el estado del env铆o de un resumen diario, c. de baja, reversiones.
Para ver el detalle de los m茅todos, puedes revisar el Manual del Programador - SUNAT
Existen 3 endpoints del mismo servicio para diferentes comprobantes.
- Facturas, Boletas, notas de cr茅dito, d茅bito, Resumen diario de boletas, Comunicacion de bajas
- Retenci贸n, Percepci贸n, Resumen de Reversiones
- Guia de Remisi贸n
#
EndpointsSUNAT dispone de servicios para prueba (BETA) y producci贸n:
- BETA
- Produci贸n
#
BillConsultServiceEste servicio se utiliza para consultar el estado de comprobantes previamente enviados y obtener el CDR
, tener en cuenta que solo esta habilitado para facturas y notas de cr茅dito, d茅bito releacionadas.
M茅todos SOAP:
getStatus
: Consultar el estado de un comprobante previamente enviado.getStatusCdr
: Para obtener el CDR, si el comprobante fue previamente procesado.
#
EndpointsEl servicio solo esta disponible en produci贸n.
Servicio | Ruta |
---|---|
Consulta CDR | https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService?wsdl |
#
NomenclaturaSUNAT exige que el nombre del archivo XML siga un formato espec铆fico.
Sigla | Descripci贸n |
---|---|
RUC | Ruc del emisor |
TIPO_DOC | Tipo de Comprobante (Cat谩logo 01) |
SERIE | Serie del comprobante |
CORRELATIVO | Correlativo del comprobante |
Ejemplos:
20123456789-01-F001-4.xml
(Factura)20123456789-07-F001-5.xml
(Nota de cr茅dito relacionada a Factura)20123456789-03-B001-8.xml
(Boleta)20123456789-07-B001-9.xml
(Nota de cr茅dito relacionada a Boleta)20123456789-09-T001-155.xml
(Gu铆a de Remisi贸n)20123456789-40-P001-222.xml
(Percepcion)
Adicionalmente, hay una diferencia con respecto al resumen diario, comunicaciones de baja y resumen de reversiones, que siguen el siguiente formato.
Sigla | Descripci贸n |
---|---|
RUC | Ruc del emisor |
TIPO_DOC | Tipo documento (RC : Resumen diario, RA : C. de baja, RR : Reversiones ) |
SERIE | Fecha generaci贸n del documento (formato: YYYYMMDD ) |
CORRELATIVO | Correlativo del documento (m谩xima longitud: 5 ) |
Ejemplos:
20123456789-RC-20200930-211.xml
(Resumen diario de boletas)20123456789-RA-20200929-433.xml
(Comunicaci贸n de bajas)20123456789-RR-20201001-11122.xml
(Resumen de reversiones)
#
ZipAntes de ejecutar el servicio SOAP, SUNAT necesita que el archivo xml (factura) sea comprimido en formato zip
. Para ello podemos utlizar cualquier programa de escritorio (7z, winrar, etc) o en linea de comandos, como el siguiente ejemplo.
El nombre del archivo
zip
es el mismo que el nombre delxml
.
#
EjemploEn este ejemplo, enviaremos la factura electr贸nica construida en las secciones anteriores, puedes descargarlo desde este enlace.
Debemos tener nuestro comprobante en formato zip:
20123456789-01-F001-1.zip
#
sendBillPara enviar el zip en la trama SOAP, necesitamos codificar el archivo en formato base64
.
Podemos usar el siguiente comando:
En la siguiente trama reemplazar el resultado en la marca ZIP_BASE_64
, adem谩s estamos incluyendo el nombre del archivo y la cabecera de seguridad donde se incluye las credenciales (clave SOL).
Ahora podemos invocar el servicio SOAP, utilizaremos curl
para esta operaci贸n.
El resultado ser谩 el siguiente.
Guardamos el valor de la marca ZIP_BASE64_RESPONSE
en un archivo response.txt
, para proceder a decodificarlo y obtener el ZIP que contiene la respuesta.
#
CDRDentro del archivo zip decodificado (result.zip
), encontraremos un archivo xml que representa el CDR (Comprobante de recepci贸n).
Prestaremos especial atenci贸n al valor del nodo cbc:ResponseCode
, que contiene el c贸digo de respuesta, y que nos permitir谩 saber si el comprobante fue aceptado o rechazado.
Codigo | Descripcion | Acci贸n |
---|---|---|
0 | Aceptado | - |
2000 a 3999 | Rechazado | Emitir nueva factura |
En ocasiones el CDR contendr谩 observaciones en el comprobante.
Estas observaciones deber谩n ser corregidas en posteriores emisiones.