P6
Factura electrónica por dentro
Qué pasa por dentro al emitir una factura electrónica en Perú: XML UBL 2.1, firma digital, envío al OSE o SUNAT, CDR y PDF con QR.
Más de lo que parece
Cuando una bodega emite una factura electrónica en Perú, por fuera parece un botón y un PDF. Por dentro pasan varias cosas, y cada una tiene que salir bien para que el comprobante tenga validez. Lo aprendí construyendo FactuPerú, un sistema de facturación hecho con Laravel y Filament, MySQL y Docker.
Aquí recorro ese flujo paso a paso, con los fotogramas del video, y explico por qué la emisión no ocurre mientras quien vende espera frente a la pantalla.
Todos los datos que aparecen en las imágenes (productos, montos, serie y RUC) son de ejemplo.
El flujo
1. Venta y XML
El sistema arma el comprobante en XML con el estándar UBL 2.1: serie, número, fecha, emisor, receptor y totales.

2. Firma digital
El XML se firma con un certificado digital (XMLDSig). Sin firma, el comprobante no tiene validez.

3. Envío
El comprobante firmado viaja a un OSE homologado o directamente a SUNAT.
4. Respuesta: la CDR
Vuelve la Constancia de Recepción (CDR), que indica si el comprobante fue aceptado, aceptado con observaciones o rechazado.

5. Archivo y representación impresa
Se guardan el XML firmado y la CDR, y se genera la representación impresa: un PDF con su código QR.

Por qué va en una cola
Hablar con el OSE puede tardar, y quien vende no tiene por qué esperar frente a la pantalla. Por eso la emisión va en un Job encolado (pseudocódigo ilustrativo):
EmitirComprobante::dispatch($venta);
// armar → firmar → enviar → guardar CDR
La venta se registra al momento y el comprobante sigue su camino en segundo plano. La cola también da el lugar natural para manejar cada respuesta: reintentar, registrar observaciones o tratar un rechazo.
Lo que aprendí
La parte difícil no es "hacer un PDF". Es respetar el estándar al detalle y manejar bien cada respuesta (reintentos, observaciones, rechazos) sin perder un solo comprobante. El PDF es la cara visible; lo que tiene validez es el XML firmado y su CDR.
¿Y tú?
Si has integrado facturación electrónica: ¿qué te costó más, el XML, la firma o el OSE?
- #FacturacionElectronica
- #Laravel
- #SoftwareArchitecture
- #Peru
- #DesarrolloDeSoftware
Míralo también en
¿Necesitas algo parecido en tu equipo o tu producto?
Cuéntame el contexto y te respondo en menos de 24 horas. Si prefieres revisar la trayectoria antes, el CV está a un clic.