R&D LAB Método En uso Construido para nuestra propia contabilidad

Belegt

Facturación electrónica ZUGFeRD, autoalojada

Desde 2025 una factura alemana es un archivo que una máquina debe leer. Belegt la genera internamente: primero el XML, luego el PDF, en hardware propio.

  • PDF/A-3bsalida con un factur-x.xml incrustado
  • 20códigos de regla comprobados sin conexión, en casa
  • 4pasos del asistente antes del archivo
  • 0datos de factura que salen de casa
Lista de facturas de Belegt con doce documentos, columnas de número, cliente, proyecto, fecha, importe y estado, además de exportación CSV y DATEV

Todos los datos de este artículo son datos de demostración inventados. La base de datos de trabajo no se abrió para las capturas.

Por qué se publica

Vendemos software y automatización. Belegt es la prueba de ello en un ejemplo incómodo: una tarea regulada, un formato fijo, plazos reales, datos propios. La herramienta funciona en nuestra propia operación, no en una demostración. Si quiere saber cómo recortamos una aplicación de negocio, dónde fijamos las reglas en el código y dónde dejamos la decisión a una persona, aquí lo ve sobre nuestra propia contabilidad.

Desde el 1 de enero de 2025, las empresas en Alemania deben poder recibir facturas electrónicas en el ámbito B2B; la obligación de emitirlas llega de forma escalonada hasta 2028. Un PDF adjunto a un correo ya no basta. Lo que se exige es un conjunto de datos estructurado según EN 16931, en la práctica ZUGFeRD o Factur-X. Belegt es nuestra propia respuesta, construida porque la necesitábamos.

La decisión

El XML es el documento, el PDF es la vista

Quien construye una factura electrónica por primera vez empieza por el PDF. Ese es el error que sale caro más tarde. Un documento ZUGFeRD es un PDF/A-3 con un archivo llamado factur-x.xml adjunto, y cuando ambos no coinciden, un sistema contable se atiene al adjunto. Así que invertimos el orden: Belegt construye primero el conjunto de datos, genera el XML a partir de él y representa el PDF como su vista.

Esta única decisión arrastra todo lo demás. Como el XML es el documento, la comprobación debe ocurrir antes de generar nada, no después. Como es el documento, es lo que se guarda y se resume con un hash al cerrar la factura, con el PDF al lado. Y como es el documento, el diseño termina donde tocaría la legibilidad para la máquina.

La segunda razón para construirlo nosotros fue menos elegante. Los datos de facturación son la colección más densa de datos maestros ajenos que guarda una empresa pequeña: direcciones, números fiscales, datos bancarios, nombres de proyectos. Una suscripción facturada por documento se lleva esa colección consigo. Belegt la deja en un archivo en hardware propio; los campos sensibles están ahí cifrados con AES-256-GCM y la clave queda fuera del código fuente.

Lo que deliberadamente no salió de aquí es asesoramiento jurídico. La aplicación comprueba las reglas de negocio de la norma, en la medida en que pueden comprobarse sin red. La certificación jurídica de un documento la hace el validador oficial KoSIT, y aquí nada lo sustituye.

Si el PDF y el XML no coinciden, gana el XML. Por eso se empieza por ahí.

El recorrido de una factura

Cuatro pasos, y solo después un archivo

  1. 01 Borrador Emisor, cliente, número y periodo, luego las líneas. Los datos maestros y el catálogo de servicios ya están guardados. El número propuesto es aquí solo una vista previa: lee el contador sin moverlo.
  2. 02 Comprobación Antes de generar nada, un conjunto de reglas recorre los datos: veinte reglas con nombre de EN 16931, del anexo de inversión del sujeto pasivo y de la extensión alemana XRechnung. Lo bloqueante aparece como error con su código de regla, lo consultivo aparte.
  3. 03 Generar el XML El conjunto de datos comprobado se convierte en una CrossIndustryInvoice con el identificador urn:cen.eu:en16931:2017. En modo XRechnung se añade el identificador KoSIT y el Leitweg-ID pasa de aviso a obligación.
  4. 04 PDF/A-3b con adjunto El PDF se compone con tipografías incrustadas, se marca como PDF/A-3b y recibe factur-x.xml como adjunto con la relación Alternative. Al cerrar la factura se guardan el conjunto de datos, el XML, el PDF y un SHA-256 del XML.

La comprobación va antes del archivo

Paso de revisión del asistente: resumen de la factura y, debajo, la comprobación EN 16931 con cuatro infracciones bloqueantes BR-02, BR-07, BR-10 y BR-21, más una autocomprobación del XML
Un borrador vacío, a propósito: el paso de revisión nombra las cuatro reglas que faltan, cada una con su código en la norma.

La comprobación se ejecuta por completo en la máquina local. Conoce veinte códigos de regla, recalcula los totales a partir de las líneas y separa con rigor lo bloqueante de lo consultivo: un IBAN ausente no detiene un documento B2B, una dirección de comprador incompleta sí.

Lo que no es se indica en la misma vista: una comprobación previa sin Java, no un sustituto del validador oficial KoSIT o Mustang. La certificación jurídica de un documento sigue siendo tarea de esa ejecución externa.

Estructura

Un conjunto de datos, dos lectores

Un solo conjunto de datos produce tanto la página que lee una persona como el registro que lee una máquina. Ambos se guardan juntos al cerrar; el XML además se resume con un hash.

Lo que ocurre tras el envío

La segunda mitad del trabajo sobre una factura empieza cuando ya ha salido. Belegt lleva los pendientes de cobro en una vista propia: días hasta el vencimiento, nivel de reclamación y el importe que añadirían los intereses de demora si saliera un recordatorio.

El nivel de reclamación no sube solo. Es un campo del documento que alguien fija, y el recordatorio es un botón que alguien pulsa. Una herramienta que reclama a los clientes sin intervención es un riesgo y no un alivio en una operación con un puñado de clientes.

Los borradores con fecha están en la misma vista, totalmente preparados. Tampoco salen solos en su fecha: esperan a que alguien los abra y los envíe.

Vista de cobros pendientes con cuatro documentos, días hasta el vencimiento, importe del recordatorio y un borrador con fecha
Cobros pendientes y un borrador programado, todo con datos de demostración inventados.

Lo que cambió en 2025

PDF por correo, hasta 2024

  • Una imagen de factura. Las cifras son texto dentro de una maquetación.
  • La contabilidad las reteclea o deja que un reconocedor adivine.
  • Un número cambiado aparece, como pronto, en la conciliación.
  • Cada receptor se construye su propia regla para su maquetación.

Factura electrónica EN 16931, desde 2025

  • Un conjunto de datos estructurado. Cada campo lleva un código de la norma.
  • La contabilidad lo importa; el PDF que va al lado es para personas.
  • Las infracciones de las reglas de negocio aparecen antes del envío.
  • Un formato para todos los receptores, con una extensión para el sector público.

Lo que está fijado en el código

01 El XML es el registro legal Al cerrar, se guardan el conjunto de datos completo, el XML y el PDF, y el XML se resume con SHA-256. Después el documento ya no se edita: sigue un abono con el código 381 o una factura rectificativa con el código 384.
02 Números con un patrón fijo Prefijo, ejercicio, mes, número corriente. El contador se reinicia cada mes y se toma al guardar dentro de una transacción que primero lo concilia con el número más alto ya existente. La base de datos admite cada número una sola vez por inquilino.
03 Casos fiscales, no texto libre La inversión del sujeto pasivo y el régimen de pequeña empresa son estados del documento que fijan a la vez el tipo, la mención del IVA y el texto de aviso. En inversión del sujeto pasivo, dos reglas de la norma exigen ambos números de IVA antes de generar nada.
04 El diseño termina en la marca La interfaz se puede recolorear y usar en tema claro u oscuro; el PDF de la factura no. Un documento que cambia de aspecto según el humor del día es un problema en un archivo.
05 Toda escritura deja rastro Crear, enviar, reclamar, exportar e iniciar sesión quedan en un registro cuyas entradas se encadenan mediante el hash de la anterior. Los datos de factura están en un archivo en hardware propio, con los campos sensibles cifrados con AES-256-GCM.

La aplicación, con datos inventados

Vista analítica con importes facturados, pendientes y vencidos, además de barras por cliente y por proyecto
Análisis sobre los mismos registros: doce documentos, una imagen de ingresos, sin una segunda hoja de cálculo que se quede obsoleta.
Gestión de perfiles con un emisor y cinco clientes, cada uno con ciudad y número de IVA
Datos maestros en un solo sitio. Los números de IVA son aquí solo ceros, porque todo el conjunto es inventado.
Vista de automatización con secciones vacías para documentos recurrentes y planes de pago, más un catálogo de cinco servicios
El catálogo de servicios del que salen las líneas. Los documentos recurrentes y los planes de pago están aquí vacíos a propósito.

Para qué está construido

  • Pequeñas empresas de servicios que deben poder recibir desde 2025 y emitir antes de 2028, sin pagar por documento.
  • Operaciones con pocos clientes pero recurrentes: cuotas de mantenimiento y peticiones de proyecto pasan por el mismo catálogo.
  • Servicios transfronterizos dentro de la UE, donde el caso fiscal depende de la ficha del cliente y no de la memoria de alguien.
  • Quien no quiera que sus datos de clientes y bancarios estén en la base de datos de un tercero.
  • Como plantilla: la misma construcción para otro trámite regulado dentro de su propia operación.

“¡Qué ventajas ofrece al comerciante la contabilidad por partida doble! Es uno de los inventos más bellos del espíritu humano.”

Johann Wolfgang von Goethe · Los años de aprendizaje de Wilhelm Meister, 1795

Por qué se publica

Lo que esto significa para su proyecto

Más del laboratorio

¿Tiene un trámite regulado que alguien mantiene a mano? Para eso existe un piloto.

Contactar

Grace Hopper

“La frase más dañina del idioma es: siempre se ha hecho así.”