Volver al blog
Por Alonso Grimaldo|||9 min de lectura

Facturación Electrónica Automatizada: Cómo la Integramos con SUNAT

En Latech emitimos nuestras facturas electrónicas desde nuestro propio portal, conectado a un OSE acreditado por SUNAT. Te contamos por qué no emitimos directo contra SUNAT, cómo evitamos huecos en la numeración, cómo manejamos detracciones, exportación de servicios y tipo de cambio, y qué errores conviene prevenir si vas a automatizar tu facturación.

Caso RealAutomatizaciónPerú

La respuesta corta: un OSE para lo tributario, un sistema propio para lo demás

Desde septiembre de 2026, Latech emite sus facturas electrónicas desde su propio portal de gestión, conectado por API a un OSE (Operador de Servicios Electrónicos), un tercero acreditado por SUNAT que valida cada comprobante antes de que se considere emitido. El portal arma el comprobante, calcula los importes, guarda la constancia de aceptación y se lo envía al cliente; el OSE firma el XML y responde por la validez ante SUNAT.

No emitimos directo contra SUNAT por una razón de costo, no de gusto. Hacerlo obliga a generar el XML en formato UBL 2.1, firmarlo con un certificado digital, enviarlo por servicios web y mantener al día los catálogos que SUNAT va cambiando. Para el volumen de una empresa de servicios como la nuestra, ese trabajo cuesta más que la suscripción mensual a un OSE.

Lo interesante no fue la conexión, que es una llamada HTTP, sino todo lo que rodea a un comprobante: numeración, detracciones, operaciones en dólares, exportaciones y errores de red. Aquí está lo que aprendimos.

Regla 1: un correlativo emitido no se reusa, no se salta y no se repite

En facturación electrónica, el número de serie y correlativo es sagrado. Un número usado queda quemado aunque el comprobante se rechace, y un hueco en la numeración es algo que después hay que explicar. Por eso separamos la emisión en tres pasos, y la transacción de base de datos no envuelve la llamada al OSE.

  1. Reservar: en una transacción corta, el sistema toma el siguiente número de la serie y marca el comprobante como "emitiendo".
  2. Enviar: ya fuera de la transacción, manda el comprobante al OSE. Sostener la transacción durante la llamada bloquearía el contador y dejaría en cola a cualquier otra emisión.
  3. Guardar: registra la respuesta, aceptada o rechazada, junto con el XML, el PDF y la constancia de recepción (CDR).

Regla 2: si la red falla, se consulta; nunca se reemite

Un timeout no significa que el comprobante no se emitió: significa que no llegó la respuesta. Puede que el OSE lo haya aceptado y la confirmación se haya perdido en el camino. Si en ese momento pides un número nuevo y vuelves a enviar, terminas con dos facturas por el mismo servicio.

Nuestra regla es que un comprobante que quedó "emitiendo" se reconcilia: el sistema le pregunta al OSE qué pasó con esa serie y ese número, y actualiza el estado con lo que responde. Reintentar con el mismo número es seguro porque la emisión es idempotente sobre tipo, serie y número; pedir un número nuevo, no.

El otro lado es la anulación. La comunicación de baja ante SUNAT tiene un plazo de 7 días calendario y su respuesta es asíncrona: se pide y después se consulta. Pasado ese plazo, el camino es una nota de crédito. Conviene que tu sistema lo sepa y no ofrezca una baja que ya no procede.

Regla 3: el dinero se calcula en céntimos enteros

Los números decimales de punto flotante, los que usan por defecto la mayoría de lenguajes, no representan exactamente valores como 0.1. En una factura con varias líneas, IGV y redondeos, eso termina en un céntimo de diferencia entre lo que calcula tu sistema y lo que valida el OSE.

Nuestro módulo de facturación hace toda la aritmética en céntimos con enteros, y un único módulo calcula líneas y totales: ningún otro lugar del código suma importes por su cuenta. Parece un detalle de programación, pero es la diferencia entre un comprobante aceptado y uno rechazado por un descuadre de S/ 0.01.

Detracciones, exportación de servicios y tipo de cambio

Estos tres temas son los que más errores generan cuando se automatiza la facturación de una empresa de servicios en Perú, porque cambian según el cliente y la moneda. Esta tabla resume cómo los resolvimos.

Casos especiales en la facturación electrónica de servicios en Perú
CasoQué exigeCómo lo resolvimos
Detracción en serviciosPara servicios gravados con IGV por encima de S/ 700, el cliente deposita un porcentaje (12% en "demás servicios gravados con el IGV") en la cuenta de detracciones del proveedor en el Banco de la NaciónEl comprobante lleva el código de detracción, el porcentaje, el monto en soles y la cuenta. Nuestro PDF imprime el monto de detracción para que el cliente sepa cuánto depositar
Exportación de serviciosSi el cliente es no domiciliado y usa el servicio en el extranjero, y se cumplen los requisitos del artículo 33 de la Ley del IGV, la operación no lleva IGVTipo de operación de exportación y todas las líneas sin IGV. El sistema bloquea mezclas antes de reservar el número
Factura en dólaresTodo comprobante en moneda extranjera necesita tipo de cambio a solesSe toma el que publica SUNAT para la fecha de emisión y se guarda con el comprobante; nunca se recalcula ni se inventa

Las trampas que encontramos

Ninguna de estas trampas está en un manual, y todas nos costaron tiempo. Si vas a integrar tu facturación con un OSE, revísalas antes de emitir el primer comprobante real.

  • Mezclar exportación con líneas gravadas: una exportación con líneas con IGV le cobra 18% a quien no corresponde, y una venta local con líneas de exportación deja de cobrar un IGV que igual le debes a SUNAT. Validamos la coherencia antes de reservar el número, no después.
  • Validar el tipo de cambio dos veces: al crear el borrador y otra vez justo antes de emitir. Si el OSE rechaza por falta de tipo de cambio, el número ya se consumió y queda un hueco.
  • Los códigos del proveedor no siempre son los de SUNAT: algunos OSE usan su propia tabla para campos como el tipo de detracción. Mapea cada código y haz que un código sin mapear detenga la emisión en vez de enviar un valor por defecto.
  • La configuración del panel del OSE también cuenta: datos como la cuenta de detracciones pueden salir de la configuración de tu cuenta en el OSE y no del comprobante. Revísala antes de la primera factura con detracción.
  • Los fines de semana no hay tipo de cambio publicado: el sistema toma la última publicación anterior, sin interpolar. Si la fuente no responde, el campo queda vacío para completarlo a mano.
  • Pruebas con el RUC real: un comprobante de prueba emitido con tu RUC de producción es un comprobante real ante SUNAT. Nuestro entorno de pruebas nunca lleva el RUC de la empresa.

Quién puede facturar: un permiso aparte del rol

Emitir un comprobante es un acto tributario a nombre de la empresa: es irreversible, consume un número y tiene consecuencias legales. Por eso en nuestro portal el permiso de facturar no viene con ningún rol. Un administrador puede crear clientes, publicar propuestas y ver reportes, y aun así no puede emitir una factura si no tiene ese permiso individual.

El permiso cubre todas las superficies a la vez: el panel web, la API y las herramientas con las que Claude opera el portal por MCP. Un token de servicio hereda los permisos de quien lo creó, así que una integración nunca puede hacer algo que su dueño no podría hacer a mano.

Lo que ganamos: de la factura al cobro en el mismo sistema

Con la facturación dentro del portal, el ciclo completo vive en un solo lugar. El cliente ve sus comprobantes aceptados y descarga el PDF y el XML desde su espacio; nosotros enviamos cada factura por correo con un clic, con los dos archivos adjuntos; y cuando llega el pago, el cobro se registra contra esa factura, con su número de operación y la evidencia.

Para una empresa que factura decenas de comprobantes al mes, esto no reemplaza al contador: le entrega información ordenada. Lo que eliminamos es copiar datos entre el sistema de facturación, una hoja de cálculo de cobranzas y el correo.

Fuentes y referencias

Preguntas frecuentes

¿Qué es un OSE y por qué usar uno para facturar?

Un OSE (Operador de Servicios Electrónicos) es un tercero acreditado por SUNAT que valida cada comprobante electrónico antes de que se considere emitido. Usar uno por API evita tener que generar y firmar el XML UBL 2.1 y mantener los catálogos de SUNAT. Para volúmenes de decenas o cientos de comprobantes al mes, suele costar menos que emitir directo.

¿Qué hago si mi sistema no recibe la respuesta al emitir una factura?

No pidas un número nuevo ni reemitas. Consulta al OSE el estado de esa serie y ese número: puede que el comprobante se haya aceptado y la respuesta se haya perdido. Reintentar con el mismo número es seguro si la emisión es idempotente; generar otro correlativo puede duplicar la factura.

¿Una factura de exportación de servicios lleva detracción?

En general no, porque la detracción aplica a operaciones gravadas con IGV y una exportación de servicios que cumple los requisitos del artículo 33 de la Ley del IGV no está gravada. Aun así, cada caso depende de que se cumplan todos los requisitos, incluida la inscripción en el Registro de Exportadores de Servicios; valídalo con tu contador.

También te puede interesar

Si tu empresa factura desde una hoja de cálculo o un sistema que no conversa con tu cobranza, conversemos. En Latech integramos la facturación electrónica con tu ERP o tu portal, con las validaciones que evitan rechazos, huecos y facturas duplicadas.

Háblanos por WhatsApp