---
title: "Lückenlose Rechnungsnummern: was UStG und GoBD verlangen"
description: "Was § 14 UStG und die GoBD zu Rechnungsnummern verlangen, warum Lücken Ärger machen, welche Fehler beim Selbstbau passieren und wie Quittio Managed hilft."
canonical_url: "https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd"
locale: de
meta:
  "og:description": "Was § 14 UStG und die GoBD zu Rechnungsnummern verlangen, warum Lücken Ärger machen, welche Fehler beim Selbstbau passieren und wie Quittio Managed hilft."
  "og:image": "https://quittio.dev/og/quittio-de.jpg"
  "og:image:alt": "Quittio: E-Rechnungen für PHP und Laravel. Rechtssicher, validiert, archiviert, mit geprüfter Beispielrechnung."
  "og:image:height": "630"
  "og:image:type": image/jpeg
  "og:image:width": "1200"
  "og:title": "Lückenlose Rechnungsnummern: was UStG und GoBD verlangen"
  "twitter:image": "https://quittio.dev/og/quittio-de.jpg"
  "twitter:image:alt": "Quittio: E-Rechnungen für PHP und Laravel. Rechtssicher, validiert, archiviert, mit geprüfter Beispielrechnung."
---

> Index of every page on this site: [llms.txt](https://quittio.dev/llms.txt)

# Lückenlose Rechnungsnummern: was die GoBD verlangt

Eine fortlaufende Nummer klingt trivial. In einer Web-App mit parallelen Anfragen, Entwürfen und Rollbacks ist sie es nicht. Was das Gesetz verlangt und wie man es sauber baut.

**Verwaltung**15.10.2026 · ca. 10 Minuten

**Kurz gesagt**

Das UStG verlangt eine **fortlaufende Nummer**, die **einmalig** vergeben wird; mehrere Nummernkreise sind erlaubt. Eine lückenlose Folge ist nach dem Umsatzsteuer-Anwendungserlass nicht zwingend, aber Lücken müssen sich erklären lassen, weil die GoBD **Vollständigkeit** und **Nachvollziehbarkeit** verlangen. Lückenlose Nummern sind der einfachste Nachweis. Technisch heißt das: Nummer erst beim Ausstellen vergeben, in einer Transaktion mit Sperre, und nie wieder ändern.

## Was das Umsatzsteuergesetz verlangt

Nach § 14 Abs. 4 Satz 1 Nr. 4 UStG muss jede Rechnung eine **fortlaufende Nummer** tragen, mit einer oder mehreren Zahlenreihen, die zur Identifizierung der Rechnung vom Aussteller **einmalig** vergeben wird.

- **Einmalig:** Dieselbe Nummer darf es im Unternehmen nur einmal geben, über alle Marken, Filialen und Systeme hinweg.
- **Fortlaufend:** Die Nummern folgen einer erkennbaren Ordnung. Buchstaben und Präfixe wie `RE-2026-` sind erlaubt.
- **Mehrere Nummernkreise:** zulässig, etwa einer pro Jahr, Standort oder Belegart, solange jede Nummer eindeutig bleibt.

Der Umsatzsteuer-Anwendungserlass stellt klar, dass eine lückenlose Abfolge **nicht zwingend** ist. Daraus folgt aber nicht, dass Lücken egal wären.

## Was die GoBD dazu sagen

Die GoBD, die Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern in elektronischer Form, verlangen unter anderem:

- **Vollständigkeit:** Alle Geschäftsvorfälle sind erfasst. Eine fehlende Rechnungsnummer wirft die Frage auf, ob eine Rechnung verschwunden ist.
- **Nachvollziehbarkeit:** Ein sachverständiger Dritter muss in angemessener Zeit nachvollziehen können, was passiert ist.
- **Unveränderbarkeit:** Eine Buchung oder Aufzeichnung darf nicht so verändert werden, dass der ursprüngliche Inhalt nicht mehr feststellbar ist (§ 146 Abs. 4 AO).
- **Aufbewahrung:** Rechnungen sind Buchungsbelege und werden 8 Jahre aufbewahrt (§ 147 AO, § 14b UStG).

**In der Praxis**

Bei einer Betriebsprüfung sind Lücken im Nummernkreis ein klassischer Anlass für Nachfragen. Wer keine Lücken hat, muss nichts erklären. Wer welche hat, braucht eine Dokumentation, warum.

## Typische Fehler beim Selbstbau

Die meisten Probleme entstehen nicht durch böse Absicht, sondern durch Technik, die für etwas anderes gebaut wurde:

| Ansatz | Problem |
| --- | --- |
| `MAX(nummer) + 1` | Zwei gleichzeitige Anfragen lesen denselben Wert und vergeben dieselbe Nummer |
| Auto-Increment-ID als Rechnungsnummer | Datenbanken vergeben IDs auch bei abgebrochenen Transaktionen; es entstehen Lücken |
| Nummer schon beim Entwurf vergeben | Gelöschte oder verworfene Entwürfe hinterlassen Lücken |
| Rechnung löschen statt stornieren | Lücke und fehlender Beleg zugleich |
| Nummern pro Marke oder System getrennt | Doppelte Nummern im selben Unternehmen |
| Jährlicher Neustart ohne Jahr in der Nummer | `0001` existiert in jedem Jahr; die Nummer ist nicht mehr einmalig |
| Nummer nach dem Ausstellen ändern | Verstoß gegen die Unveränderbarkeit |

Der häufigste Fehler sieht harmlos aus:

IssueInvoice.php

```
// Race Condition: zwei Prozesse lesen dasselbe MAX()
$last = Invoice::max('sequence');
$invoice->sequence = $last + 1;
$invoice->number = sprintf('RE-2026-%04d', $invoice->sequence);
$invoice->save();
```

## Wie man es richtig baut

Vier Regeln reichen, um sichere Nummern zu bekommen:

1. **Nummer erst beim Ausstellen vergeben.** Entwürfe haben keine Nummer. So können sie gelöscht werden, ohne eine Lücke zu hinterlassen.
2. **In einer Transaktion mit Sperre.** Der Zähler wird gesperrt ( `SELECT … FOR UPDATE`), erhöht und zusammen mit der Rechnung gespeichert. Schlägt etwas fehl, rollt alles zurück und die Nummer ist wieder frei.
3. **Eindeutigkeit in der Datenbank absichern.** Ein Unique-Index auf die Nummer ist die letzte Verteidigungslinie.
4. **Nie ändern oder löschen.** Fehler korrigierst du mit Storno oder Korrektur, nicht durch Bearbeiten.

Eine Skizze mit Laravel-Mitteln:

IssueInvoice.php

```
use Illuminate\Support\Facades\DB;

// Zählerzeile anlegen, falls sie fehlt (außerhalb der Transaktion)
DB::table('invoice_sequences')->insertOrIgnore(['key' => 'invoice:2026', 'value' => 0]);

DB::transaction(function () use ($invoice) {
    // Zähler sperren: parallele Prozesse warten hier
    $sequence = DB::table('invoice_sequences')->where('key', 'invoice:2026')->lockForUpdate()->first();
    $next = $sequence->value + 1;

    DB::table('invoice_sequences')->where('key', 'invoice:2026')->update(['value' => $next]);

    $invoice->number = sprintf('RE-2026-%04d', $next);
    $invoice->save();                              // scheitert das, rollt auch der Zähler zurück
}, 3);
```

**Die Details machen es schwer**

Deadlocks und Serialisierungsfehler müssen wiederholt werden, SQLite braucht einen anderen Transaktionsmodus, rückdatierte Rechnungen gehören in den Zähler ihres Jahres, und mehrere Marken einer Firma müssen sich einen Nummernraum teilen. Genau das übernimmt Quittio Managed.

## Mit Quittio Managed

Quittio Managed vergibt Nummern aus einem Muster und einem Zähler. Mit den deutschen Standards heißen die Rechnungen 2026 `RE-2026-0001`, `RE-2026-0002` und so weiter; 2027 beginnt der Zähler neu.

config/quittio-managed.php

```
// config/quittio-managed.php
'numbering' => [
    'pattern' => 'RE-{Y}-{seq:4}',          // null = Länderpaket (DE: RE-{Y}-{seq:4})
    'reset' => 'yearly',                    // never | yearly | monthly
    'start' => 1,
    'per_kind' => [
        'cancellation' => 'ST-{Y}-{seq:4}', // eigener Kreis für Stornos, null = gemeinsam
        'correction' => null,
    ],
],
```

| Platzhalter | Ersetzt durch |
| --- | --- |
| `{Y}`, `{y}` | Jahr des Rechnungsdatums, vier- oder zweistellig |
| `{m}` | Monat, zweistellig |
| `{seq}`, `{seq:N}` | Laufende Nummer, mit `N` Stellen aufgefüllt |
| `{issuer}` | Schlüssel des Ausstellerprofils |
| `{customer}` | Kundenkennung (BT-46) |

Die Nummer entsteht erst bei `issue()`, in der Transaktion des Ausstellens:

InvoiceService.php

```
$draft = Invoice::draft(Quittio::invoice()->buyer($customer)->line('Consulting', netPrice: '120.00'));
$draft->number;                // null: Entwürfe haben keine Nummer

$invoice = $draft->issue();
$invoice->number;              // RE-2026-0001
```

- Entwürfe, Validierungsfehler und gescheiterte Stornos verbrauchen keine Nummer; ein Rollback gibt sie zurück.
- Gleichzeitige Ausstellungen werden über eine Zeilensperre serialisiert; Deadlocks und Sperrkonflikte werden bis zu dreimal wiederholt.
- Unique-Indizes auf Nummernraum und Nummer sichern die Eindeutigkeit zusätzlich ab.
- Muster werden geprüft: Ein jährlicher Neustart ohne `{Y}` oder zwei Kreise, die dieselbe Nummer erzeugen könnten, werden abgelehnt.
- Rückdatierte Rechnungen nutzen den Zähler ihres Zeitraums: Eine Rechnung vom 30.12.2026, ausgestellt im Januar 2027, bekommt die nächste Nummer von 2026.

## Mehrere Marken, ein Unternehmen

Nummern müssen pro Unternehmen einmalig sein. Hat eine Firma mehrere Ausstellerprofile, etwa eine pro Marke, teilen sie sich in Quittio Managed einen **Nummernraum**. Standardmäßig ergibt er sich aus der USt-IdNr. oder der Steuernummer, sodass Profile derselben Firma automatisch zusammengehören. Eine Nummer, die eine Marke vergeben hat, ist für die anderen gesperrt. Gib den Marken deshalb unterschiedliche Muster, zum Beispiel mit `{issuer}`.

## Umstieg von einem anderen System

Wer aus einem bestehenden System kommt, setzt den Zähler einmalig auf den nächsten Wert. Zähler lassen sich nur erhöhen, nie senken, und jede Änderung landet im Audit-Log:

Terminal

```
php artisan quittio:sequence:show
php artisan quittio:sequence:set default:invoice:2026 1043
```

## Häufige Fragen

### **Muss die Rechnungsnummer lückenlos sein?**

Nach dem Umsatzsteuer-Anwendungserlass ist eine lückenlose Folge nicht zwingend. Lücken müssen sich aber erklären lassen, weil die GoBD Vollständigkeit und Nachvollziehbarkeit verlangen. Lückenlose Nummern ersparen diese Erklärung.

### **Darf ich mehrere Nummernkreise haben?**

Ja, etwa pro Jahr, Standort oder Belegart. Jede Nummer muss im Unternehmen aber einmalig bleiben.

### **Darf die Nummer Buchstaben enthalten?**

Ja. Präfixe wie RE- oder das Jahr sind üblich und erlaubt, solange die Nummer eindeutig bleibt.

### **Muss der Zähler jedes Jahr neu beginnen?**

Nein, das ist eine Konvention. Wenn er neu beginnt, muss das Jahr Teil der Nummer sein, sonst wiederholen sich Nummern. Quittio Managed lehnt solche Muster ab.

### **Was tue ich, wenn eine Lücke entstanden ist?**

Dokumentiere, warum: zum Beispiel ein technischer Fehler mit Datum und betroffener Nummer. Und stelle die Vergabe so um, dass Nummern erst beim Ausstellen in einer Transaktion entstehen.

### **Bekommen Stornorechnungen eine eigene Nummer?**

Ja, jede Stornorechnung ist eine eigene Rechnung mit eigener Nummer. In Quittio Managed teilt sie sich den Kreis mit den Rechnungen oder bekommt einen eigenen, etwa ST-{Y}-{seq:4}.

**Stand: 15.10.2026. Keine Steuer- oder Rechtsberatung.**

Quellen: [§ 14 Abs. 4 UStG](https://www.gesetze-im-internet.de/ustg_1980/__14.html) · Umsatzsteuer-Anwendungserlass, Abschnitt 14.5 Abs. 10 · [§ 146 Abs. 4 AO](https://www.gesetze-im-internet.de/ao_1977/__146.html) · [§ 147 AO](https://www.gesetze-im-internet.de/ao_1977/__147.html) · [GoBD (BMF-Schreiben vom 28.11.2019, zuletzt geändert am 14.07.2025)](https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2025-07-14-GoBD-2-aenderung.html)

## Weiterlesen

- [**Verwaltung**

  **Storno, Teilstorno, Korrektur: Rechnungen richtig ändern**

  Wann welcher Beleg passt, Typecodes 380, 381 und 384 und centgenaue Umsatzsteuer bei Teilstornos.](https://quittio.dev/ratgeber/storno-teilstorno-korrektur)
- [**Anleitung**

  **E-Rechnung in Laravel erstellen: Schritt für Schritt**

  Von composer require bis zur gültigen ZUGFeRD-Rechnung: Installation, Firmendaten, Formatwahl, Fehler, Tests und Storno.](https://quittio.dev/ratgeber/e-rechnung-mit-laravel-erstellen)
- [**Anleitung**

  **E-Rechnungen validieren: KoSIT-Validator und veraPDF in der CI**

  Die sieben Prüfstufen, die offiziellen Validatoren einrichten und in GitHub Actions automatisieren.](https://quittio.dev/ratgeber/e-rechnungen-validieren-kosit-verapdf)

## Nummern, die einfach stimmen.

Quittio Managed vergibt lückenlose Nummern, sicher bei paralleler Ausstellung.

[**Quittio Managed**](https://quittio.dev/managed) [**Early Access**](https://quittio.dev/early-access)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://quittio.dev/#website","@type":"WebSite","description":"E-Rechnungen für PHP und Laravel: ZUGFeRD, XRechnung und Peppol erstellen, prüfen, lesen und archivieren.","inLanguage":"de-DE","name":"Quittio","url":"https://quittio.dev/","publisher":{"@id":"https://quittio.dev/#identity"},"workTranslation":{"@id":"https://quittio.dev/en#website"}},{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#webpage","@type":"WebPage","dateModified":"2026-10-15","datePublished":"2026-10-15","description":"Was § 14 UStG und die GoBD zu Rechnungsnummern verlangen, warum Lücken Ärger machen, welche Fehler beim Selbstbau passieren und wie Quittio Managed hilft.","name":"Lückenlose Rechnungsnummern: was UStG und GoBD verlangen","url":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd","breadcrumb":{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#breadcrumb"},"isPartOf":{"@id":"https://quittio.dev/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd"]}],"primaryImageOfPage":{"@id":"https://quittio.dev/#logo"}},{"@id":"https://quittio.dev/#identity","@type":"Organization","description":"Open-Source-Bibliothek für E-Rechnungen in PHP und Laravel (ZUGFeRD, XRechnung, Peppol) und Quittio Managed.","email":"kontakt@niklasforst.de","legalName":"Niklas Forst – Softwareentwicklung","name":"Quittio","url":"https://quittio.dev","founder":{"@type":"Person","name":"Niklas Forst","url":"https://quittio.dev/ueber"},"logo":{"@id":"https://quittio.dev/#logo"},"sameAs":["https://github.com/Quittio/quittio","https://packagist.org/packages/quittio/quittio"]},{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#article","dateModified":"2026-10-15","datePublished":"2026-10-15","description":"Was § 14 UStG und die GoBD zu Rechnungsnummern verlangen, warum Lücken Ärger machen, welche Fehler beim Selbstbau passieren und wie Quittio Managed hilft.","headline":"Lückenlose Rechnungsnummern: was die GoBD verlangt","inLanguage":"de-DE","thumbnailUrl":"https://quittio.dev/og/quittio-de.jpg","@type":["Article","TechArticle"],"author":{"@id":"https://quittio.dev/#/schema/person/1"},"image":{"@id":"https://quittio.dev/#/schema/image/1"},"isPartOf":{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#webpage"},"mainEntityOfPage":{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#webpage"},"publisher":{"@id":"https://quittio.dev/#identity"}},{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"Startseite","item":"https://quittio.dev","position":1},{"@type":"ListItem","name":"Ratgeber","item":"https://quittio.dev/ratgeber","position":2},{"@type":"ListItem","name":"Rechnungsnummern","position":3}]},{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#/schema/question/1","@type":"Question","inLanguage":"de-DE","name":"Muss die Rechnungsnummer lückenlos sein?","acceptedAnswer":{"@type":"Answer","text":"Nach dem Umsatzsteuer-Anwendungserlass ist eine lückenlose Folge nicht zwingend. Lücken müssen sich aber erklären lassen, weil die GoBD Vollständigkeit und Nachvollziehbarkeit verlangen. Lückenlose Nummern ersparen diese Erklärung."}},{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#/schema/question/2","@type":"Question","inLanguage":"de-DE","name":"Darf ich mehrere Nummernkreise haben?","acceptedAnswer":{"@type":"Answer","text":"Ja, etwa pro Jahr, Standort oder Belegart. Jede Nummer muss im Unternehmen aber einmalig bleiben."}},{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#/schema/question/3","@type":"Question","inLanguage":"de-DE","name":"Darf die Nummer Buchstaben enthalten?","acceptedAnswer":{"@type":"Answer","text":"Ja. Präfixe wie RE- oder das Jahr sind üblich und erlaubt, solange die Nummer eindeutig bleibt."}},{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#/schema/question/4","@type":"Question","inLanguage":"de-DE","name":"Muss der Zähler jedes Jahr neu beginnen?","acceptedAnswer":{"@type":"Answer","text":"Nein, das ist eine Konvention. Wenn er neu beginnt, muss das Jahr Teil der Nummer sein, sonst wiederholen sich Nummern. Quittio Managed lehnt solche Muster ab."}},{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#/schema/question/5","@type":"Question","inLanguage":"de-DE","name":"Was tue ich, wenn eine Lücke entstanden ist?","acceptedAnswer":{"@type":"Answer","text":"Dokumentiere, warum: zum Beispiel ein technischer Fehler mit Datum und betroffener Nummer. Und stelle die Vergabe so um, dass Nummern erst beim Ausstellen in einer Transaktion entstehen."}},{"@id":"https://quittio.dev/ratgeber/lueckenlose-rechnungsnummern-gobd#/schema/question/6","@type":"Question","inLanguage":"de-DE","name":"Bekommen Stornorechnungen eine eigene Nummer?","acceptedAnswer":{"@type":"Answer","text":"Ja, jede Stornorechnung ist eine eigene Rechnung mit eigener Nummer. In Quittio Managed teilt sie sich den Kreis mit den Rechnungen oder bekommt einen eigenen, etwa ST-{Y}-{seq:4}."}},{"@id":"https://quittio.dev/#/schema/person/1","@type":"Person","name":"Niklas Forst","url":"https://quittio.dev/ueber"},{"@id":"https://quittio.dev/#logo","@type":"ImageObject","caption":"Quittio","contentUrl":"https://quittio.dev/logo.png","inLanguage":"de-DE","url":"https://quittio.dev/logo.png"},{"@id":"https://quittio.dev/#/schema/image/1","@type":"ImageObject","contentUrl":"https://quittio.dev/og/quittio-de.jpg","inLanguage":"de-DE","url":"https://quittio.dev/og/quittio-de.jpg"}]}
```