Actualización 202107 de la API de facturación

Nueva forma de envío de CPE de prueba.

Ahora, para poder enviar comprobantes de prueba, puedes usar la URL https://api-testing.facturaselectronicas.biz. De esta forma puedes probar el mismo listado de propiedades en pruebas como en producción. Los comprobantes enviados a esta nueva URL serán inmediatamente enviados a la SUNAT, por lo que podrás comprobar también si pasó su verificación.

Para esto, la propiedad modo_prueba ha sido removida, y su uso generará un error.

Cabeceras HTTP más estándares en la petición a la API.

Para definir el formato de comunicación, ahora se usa la cabecera HTTP «Content-Type«, que puede tener dos valores:

  • text/plain, para usar el formato ‘texto’.
  • application/json, para usar JSON.

El token ahora se envía usando la cabecera HTTP «Authorization«, con el prefijo «Bearer«, seguido de un espacio, seguido del token de seguridad. E.g.:

Authorization: Bearer 1b4b3e18f9b03a483be11aa1aa756ec349467404ba91d0de1f1ec93402234066

Las cabeceras anteriores con sus valores (i.e. «x-token» y «x-formato«) aún siguen siendo válidas.

Mejoras en códigos de errores

Los errores han sido uniformizados. Ahora, todo error devuelve siempre cuatro variables:

  1. estado, con el valor «error«.
  2. codigo_error, con un nombre fijo que identifica al error.
  3. descripcion_error, con una explicación del error. Y
  4. descripcion_extra, con información particular sobre lo que causó el error. Puede tener un valor vacío.

El error será devuelto en el formato que se solicitó en la petición HTTP, salvo que el error suceda al muy inicio de la validación, cuando aun no se ha procesado el formato (e.g. cuando la conexión se realiza por otro verbo HTTP distinto a POST, o el formato consignado es erróneo). En dicho caso, la información siempre será devuelta en JSON.

Los errores han sido divididos en 5 categorías, cada uno con un código HTTP:

  • 400: Errores de sintaxis o valores incorrectos en las propiedades enviadas.
  • 403: Errores de autorización, como UUID o token inválido.
  • 405: Cuando hay una conexión que no es por HTTP POST. El formato de la respuesta a este error siempre será JSON.
  • 406: Errores en los parámetros iniciales de la conexión, o en la configuración de la cuenta. E.g. formato desconocido, envío de comprobante a la URL de producción cuando la cuenta aun no ha sido pasada a producción, etc.
  • 500: Ha sucedido un error inesperado. El administrador del sistema ya habrá sido advertido. Si te comunicas con nosotros, por favor pásanos el valor de descripcion_extra, para poder facilitar la búsqueda de la causa del problema.

Si la operación sucedió correctamente, el código HTTP será 200.

Cambios en los parámetros de la API

  • Emitir:
    • La propiedad bolsa_plastico ha sido marcada como obsoleta, y debes evitar usarla. Ahora está la propiedad total_icbper para la suma de todos los impuestos, y la propiedad icbper dentro de cada ítem, para consignar el impuesto en cada producto gravado, de forma similar a las propiedades total_igv e igv, respectivamente.
    • Debido a un cambio en la entrega de comprobantes a la SUNAT, los ceros a la izquierda en el valor de la propiedad numero ahora serán removidos.
  • Todos:
    • Como indica el primer apartado, la propiedad modo_prueba ha sido removida, y fallará con un error al ser usada.

Corrección de errores internos

  • Hemos reparado un error que no colocaba el Content-Type correcto a la respuesta (siempre respondía con valor text/html).
  • Ahora la SUNAT no genera una observación si no se especifica la propiedad opcional codigo de un ítem.

Actualización 202104 de la API de facturación

Envío inmediato para pruebas de integración.

Los CPEs enviados desde cuentas en modo «integración» o con la propiedad modo_prueba activa serán siempre enviados inmediatamente a los servidores de prueba de la SUNAT, y en la respuesta de la API estará la información devuelta por SUNAT en tres campos: sunat_respuesta, sunat_descripcion, y sunat_observacion.

Los CPE enviados en modo «producción» siempre serán enviados en diferido. Por ello, la propiedad envio_inmediato ha sido eliminada.

Mensajes de correo con observaciones.

Ahora recibirás por correo electrónico las observaciones que la SUNAT informe de los CPEs que han sido aceptados. Estas observaciones no invalidan el CPE, pero pueden informar de ciertas inconsistencias, e.g. un tributo con un valor incorrecto.

Nuevos códigos HTTP para errores.

Cuando la API encuentre un error en los parámetros enviados, devolverá un error HTTP 400, con el detalle del error en el cuerpo de la respuesta, en el mismo formato especificado por la cabecera X-FORMATO de la solicitud.

Si el error sucede en el inicio de la conexión (e.g. cuando una cuenta está suspendida, o el token es inválido), devolverá un error HTTP 406.

Nuevos valores de tipo_nota para notas de crédito.

Para cumplir con los nuevos requisitos del RS 193-2020/SUNAT, estos nuevos valores son aceptados para la propiedad tipo_nota:

  • 10: Otros conceptos
  • 11: Ajustes de operaciones de exportación
  • 12: Ajustes afectos al IVAP
  • 13: Corrección del monto neto pendiente de pago y/o la(s) fechas(s) de vencimiento del pago único o de las cuotas y/o los montos correspondientes a cada cuota, de ser el caso.

Forma de pago para facturas y sus notas.

Para cumplir con los nuevos requisitos del RS 193-2020/SUNAT, debes consignar en las facturas o sus notas la información de la forma de pago usando tres nuevas propiedades: forma_pago, monto_pendiente, y cuota.

Si omites estas propiedades, la API usará el valor «contado» para forma_pago.

Depuración de CPEs pasado el tiempo de almacenamiento.

Si tienes CPEs que han pasado su tiempo de almacenamiento (usualmente 2 años), estarás recibiendo en las próximas semanas, y desde ese momento mensualmente, un correo electrónico con un enlace para descargarlos, y así puedas archivarlos por tu cuenta.

Mejoras en el análisis de los parámetros recibidos

Hemos mejorado algunos aspectos del análisis de los parámetros, para mejorar la comunicación con la API.

  • La API rechazará parámetros inválidos, lo cual evitará errores de escritura (conocidos como typos).
  • Las propiedades que son colecciones puedes escribirlas tanto en singular como en plural. E.g. leyenda o leyendas, item o items. En singular se ve mejor cuando usas el formato texto, y en plural cuando usas el formato json.
  • Puedes escribir con ortografía correcta el nombre de todas las propiedades, como número, ítem o código_detracción. Los nombres sin tilde siguen siendo válidos.