Cómo emitimos facturas y boletas electrónicas directo a SUNAT
Así integramos PorPartidaDoble con SUNAT: XML UBL 2.1, firma con el certificado del propio cliente, CDR, notas de crédito, bajas y detracciones. Qué funciona hoy y qué falta.
Por Cristiam Castillo · · 4 min de lectura
PorPartidaDoble nació como un sistema de contabilidad. En 2026 lo reescribimos desde cero y le sumamos lo que más nos pedían: emitir facturas y boletas electrónicas y que cada una termine, con el tiempo, como un asiento contable. Esto es lo que construimos y lo que aprendimos al integrarlo con SUNAT.
El modelo: el sistema del contribuyente
PorPartidaDoble emite como SEE – Del contribuyente: cada negocio firma con su propio Certificado Digital Tributario (CDT, gratuito, lo emite RENIEC) y envía con su propio usuario SOL secundario. No somos PSE ni OSE y no firmamos con un certificado nuestro: cada emisión es un acto del contribuyente.
El certificado y el usuario SOL se guardan cifrados, y el cliente puede revocar el usuario secundario en SUNAT cuando quiera.
Qué pasa cuando alguien emite una factura
- Borrador y revisión. Se elige serie, cliente y líneas. Antes de emitir se ve el número que sigue, la fecha, los montos (base, IGV, total) y una advertencia si el cliente no está activo y habido.
- Numeración. Se reserva el correlativo recién al emitir.
- XML UBL 2.1 de la factura (01) o la boleta (03), con la leyenda del monto en letras.
- Firma XMLDSig con el certificado del cliente.
- Envío a SUNAT por su servicio web (
sendBill) y lectura del CDR, la constancia de recepción, que queda guardada junto al comprobante. - PDF con QR y cuentas bancarias, y envío opcional por correo al cliente con el XML y el CDR adjuntos.

Lo que ya cubre
| Necesidad | Cómo lo resolvemos |
|---|---|
| Corregir o anular | Nota de crédito (07) y comunicación de baja para facturas, con consulta del ticket a SUNAT |
| Facturar en dólares | El comprobante guarda el tipo de cambio venta de SUNAT de su fecha |
| Detracciones (SPOT) | Códigos del catálogo 54, tasas y umbral de S/ 700; se declaran dentro del XML |
| Datos del cliente | El nombre se completa con el padrón reducido del RUC de SUNAT |
| Registros | Registro de ventas y de compras por mes, con exportación a CSV |
| SIRE | Revisar y aceptar las propuestas de SUNAT desde la aplicación |
Lo que aprendimos del ambiente de pruebas
Documentar esto nos habría ahorrado días, así que lo compartimos:
- El ZIP del XML hay que armarlo con los tamaños reales; con un escritor en streaming SUNAT responde que no existe la etiqueta
UBLVersionID. - Las facturas necesitan la forma de pago (
cac:PaymentTerms, Contado) o se rechazan con el error 3244. - El ZIP del CDR trae primero un directorio vacío: hay que recorrer las entradas para encontrar el
R-*.xml. - Los certificados de RENIEC usan RC2-40-CBC, que OpenSSL 3 ya no carga por defecto.
- SUNAT valida la fecha de emisión con la hora de Lima: un comprobante de la noche, en UTC, saldría con fecha de mañana.
- Ya no existe una homologación previa ni una autorización por serie; basta indicar en SOL que se emite desde el sistema del contribuyente.
Dónde estamos hoy
Factura, boleta, nota de crédito, baja y factura con detracción (en soles y en dólares) fueron aceptadas por el ambiente de pruebas de SUNAT. El paso a producción lo habilita un administrador cuando el negocio completa su lista de pasos: certificado, autorización, usuario SOL verificado y una serie. Z-Nexus, nuestra propia empresa, será la primera en emitir en producción.
Todavía no están: el resumen diario de boletas, las notas de débito y la exportación al PLE. Los ponemos en el orden en que los pidan los usuarios.
Para quién es
Para emprendimientos y pequeñas empresas que hoy facturan desde el portal de SUNAT o pagan un facturador, y quieren que sus ventas, sus compras y su contabilidad vivan juntas. Si además te interesa saber qué libros te corresponden según tu régimen, lee qué contabilidad lleva cada tipo de empresa en Perú.
Pruébalo en porpartidadoble.com o escríbenos si necesitas una integración a la medida.
Conoce PorPartidaDoble
Así integramos PorPartidaDoble con SUNAT: XML UBL 2.1, firma con el certificado del propio cliente, CDR, notas de crédito, bajas y detracciones. Qué funciona hoy y qué falta.