einfache- rechnungen.de
E-Rechnung für · Großhandel & Versandhandel

E-Rechnung für Großhandel & Versandhandel: XRechnung & ZUGFeRD aus Ihrer Branchensoftware

Eine Großhandelsrechnung ist selten eine einfache Liste aus Menge mal Preis. Staffelrabatte, Fracht, Gebinde, Preise je 100 Stück und Sammelrechnungen über viele Lieferscheine müssen in die festen Felder der Norm EN 16931 passen. Diese Seite zeigt, wie das gelingt, was Ihre Warenwirtschaft dazu beitragen muss und wo Rechnungen in der Praxis abgelehnt werden.

Kurz gesagt: Drei der vier hier beschriebenen Systeme haben laut Hersteller eine eigene E-Rechnungsfunktion: enventa Trade ERP und SOG ERP als Modul, die GDI Business Line als Export in der Warenwirtschaft. Für WinAB fanden wir keine öffentliche Angabe (Stand September 2026). Ohne Herstellermodul ist der schnellste Weg, die gewohnte PDF-Rechnung mit den Rechnungsdaten anzureichern (Weg A, wenige Tage). Die meisten Fehler entstehen nicht im Format, sondern bei Rabatten, Einheiten und Summen.

Was eine Großhandelsrechnung besonders macht

In der E-Rechnung muss jede Zahl nachrechenbar sein: Der Empfänger prüft maschinell, ob Positionsbeträge, Nachlässe, Zuschläge und Steuer zusammenpassen. Die Tabelle zeigt, wohin die typischen Vorgänge des Großhandels gehören. Kürzel wie BR-DE-26, BT-10 oder BG-3 stammen aus der Norm EN 16931. Sie müssen sie nicht kennen; wichtig ist der erklärende Satz daneben.

Vorgang im GroßhandelWas zu beachten istEN 16931API-Feld
Staffel- oder Kundenrabatt je Positiongehört als Nachlass zu genau dieser Position, mit Prozentsatz und Ausgangsbetrag; mindert den PositionsbetragBG-27lines[].line_allowances[] mit percentage und basis_amount
Rechnungsrabatt, Bonus auf den Belegbraucht eine eigene Steuerkategorie und einen eigenen SteuersatzBG-20invoice.allowances[]
Fracht, Verpackung, Mindermengenzuschlagdie Summe der Zuschläge steht zusätzlich in den RechnungssummenBG-21invoice.charges[], totals.charge_total_amount
Preis je 100 Stück oder je 100 kgdie Menge bleibt in der Grundeinheit, der Preis gilt für 100BT-149price_base_quantity
Pfand für Mehrweggebindeeigene Position, steuerpflichtig; den Satz klärt Ihr SteuerberaterBG-25eigene Position in lines[]
Bestellnummer des Kundenviele Einkaufsabteilungen buchen nur mit ihrBT-13purchase_order_reference
Monats- oder SammelrechnungAbrechnungszeitraum angeben, Lieferscheinnummern in den Freitext oder den PositionstextBT-73/74billing_period_start/_end, note
Retoure, GutschriftRechnungsart Gutschrift (381) mit Verweis auf die UrsprungsrechnungBT-3 = 381invoice_type_code, preceding_invoices
Lieferung in ein anderes EU-Landsteuerfrei; USt-ID des Kunden und Lieferland sind PflichtKategorie Ktax_category + exemption_reason
Ausfuhr in ein Drittlandsteuerfrei; der Befreiungsgrund steht als Text auf der RechnungKategorie Gtax_category + exemption_reason

Eine eigene Lieferscheinnummer als Feld kennt das Datenmodell nicht. Bei Sammelrechnungen tragen Sie die Nummern deshalb in die Positionsbeschreibung oder in den Freitext (note) ein. Bei öffentlichen Auftraggebern, etwa Bauhöfen oder Kliniken, gehört die Leitweg-ID in buyer_reference; ohne sie kann das Rechnungsportal die XRechnung (reine XML-Datei, das Pflichtformat für Behörden) nicht zuordnen.

Einheiten: vom ERP-Kürzel zum UN/ECE-Code

Warenwirtschaftssysteme speichern Einheiten meist als Klartext-Kürzel. Die E-Rechnung erlaubt nur Codes aus den Listen UN/ECE Rec. 20 und Rec. 21. Gebinde wie Karton oder Palette stammen aus Rec. 21 und tragen dort ein vorangestelltes X. Das wird oft übersehen: CT oder PF ohne X lehnt die API (Schnittstelle, über die Programme Daten austauschen) mit HTTP 422 und dem Feldpfad lines[n].unit_code ab.

Kürzel im ERP (Beispiele)CodeBedeutung
Stk, St., StückC62Stück (alternativ H87)
Krt, KartonXCTKarton
Pal, PaletteXPFPalette
Pck, Pack, PaketXPKPackung
KisteXCRKiste
kgKGMKilogramm
t, toTNETonne
m, lfmMTRMeter
l, LtrLTRLiter

Prüfen Sie die Zuordnung gegen alle Einheiten, die in Ihrem Artikelstamm tatsächlich vorkommen. Wird ein Artikel mal als Stück und mal als Karton verkauft, bekommt jede Position den Code ihrer eigenen Verkaufseinheit.

Ihre Software

enventa Trade ERP (bis 2025 eNVenta ERP von Nissen & Velten) richtet sich an technischen Handel, Stahlhandel, Biegereien und SHK-Großhandel und wird vom Hersteller mit „Hosted in Germany“ beworben. Für die E-Rechnung führt die enventa Group ein eigenes Modul „Trade ERP ZUGFeRD / XRechnung“. Welche Profile und Versionen es unterstützt, nennt die Modulseite nicht. Wer das Modul einsetzt, braucht für den Ausgang keinen zweiten Weg, kann die erzeugten Dateien aber unabhängig prüfen.

SOG ERP von der SOG Business-Software GmbH zielt auf Großhandel, Außenhandel und E-Commerce und wird als Cloud, Kauf oder Miete angeboten. Das Modul „E-Invoice“ liest laut SOG eingehende Dateien in ZUGFeRD 2.x (ein normales PDF mit denselben Rechnungsdaten als eingebettetem XML), Factur-X und XRechnung ein und erstellt Verkaufsrechnungen als E-Rechnung. Verfügbar ist es seit dem 1. Januar 2025 mit dem aktuellen Programmstand. Relevant bleibt die Frage, ob Ihre Installation auf diesem Stand ist.

WinAB und WinAB food der Brückner System GmbH sind auf Lebensmittel-, Frische- und Blumengroßhandel sowie Importeure ausgelegt. Das System kennt laut Hersteller Waagenanschluss, Leergutabrechnung, EDI mit Handelskonzernen, DATEV-Schnittstellen und laut Produktbroschüre von 2020 eine REST-Schnittstelle. Eine Aussage zu XRechnung oder ZUGFeRD fanden wir auf den Seiten von Brückner nicht; der Status ist deshalb offen.

GDI ERP heißt beim Hersteller GDI Vision Business Line und stammt von der GDI Software GmbH in Landau, die zur SelectLine Group gehört. Die öffentlichen Versionshinweise dokumentieren einen E-Rechnungs-Export im Format ZUGFeRD 2.x und XRechnung, der 2025 und 2026 laufend erweitert wurde. Hier liegt der Nutzen einer externen Lösung vor allem in der unabhängigen Prüfung.

Drei Wege für den Großhandel

Weg A, PDF anreichern: Ihre Warenwirtschaft druckt die Rechnung wie bisher. Ein kleines Skript oder die Anbindung durch Coreventa schickt die PDF zusammen mit den Kopf- und Positionsdaten an die API. Zurück kommt ein ZUGFeRD-PDF im gewohnten Layout mit eingebetteter XRechnung. Für Großhändler mit eigenem Briefpapier, Artikelbildern oder Konditionsblöcken auf der Rechnung ist das meist der schnellste Weg. Wichtig: Dass PDF und Daten übereinstimmen, müssen Sie in diesem Weg selbst sicherstellen.

Weg B, Daten-Export: Wenn die Warenwirtschaft Belege als CSV oder XML exportiert oder eine Datenbank-Sicht bereitstellt, erzeugt ein Mapping das JSON (ein Textformat für Daten), und der Server rendert die Sicht-PDF selbst. Das Layout wird neutral, dafür sind PDF und XML garantiert identisch. Das passt gut für Sammelrechnungen, die ohnehin nachts im Stapel laufen.

Weg C, direkte Integration: Bietet das System eine Skriptsprache, Webservices oder eine REST-Schnittstelle, ruft es die API beim Fakturieren selbst auf und legt XML und PDF im Archiv ab. Das dauert Wochen und lohnt sich vor allem bei hohem Rechnungsvolumen.

Unabhängig vom Weg: Eingehende E-Rechnungen Ihrer Lieferanten öffnen und prüfen Sie im kostenlosen Viewer. Welche Frist für Ihren Betrieb gilt, steht im Ratgeber E-Rechnungspflicht & Fristen.

Beispiel: Sammelrechnung eines technischen Großhändlers

Ein Händler für Industriebedarf rechnet drei Lieferungen eines Monats in einer Rechnung ab: Kugellager mit 15 % Staffelrabatt, Hydraulikschlauch in Metern mit 10 % Kundenrabatt, Schrauben mit Preis je 100 Stück und Fracht. Die PDF kommt aus der Warenwirtschaft (Weg A); das JSON ist gegen XRechnung 3.0 geprüft.

Vorher liegt nur die gewohnte PDF-Rechnung aus der Warenwirtschaft vor, mit drei Lieferscheinen, zwei Rabatten und Fracht. Nachher ist es dieselbe PDF mit eingebetteten Rechnungsdaten, die das System Ihres Kunden selbst lesen und Cent für Cent nachrechnen kann.

Der folgende Kasten ist für Ihre IT oder Ihr Systemhaus gedacht. Als Inhaber reicht es zu wissen: So sieht ein Beispiel aus, das die Prüfung besteht.

Technisches Beispiel anzeigen (JSON, für Ihre IT)
# Sammelrechnung als ZUGFeRD mit eingebetteter XRechnung erzeugen:
curl -X POST https://api.einfache-rechnungen.de/v1/invoices/generate \
  -H "X-API-Key: erk_ihr_key" \
  -H "Content-Type: application/json" \
  -d @sammelrechnung.json
{
  "invoice": {
    "invoice_number": "SR-2026-0930-17",
    "issue_date": "2026-09-30",
    "billing_period_start": "2026-09-01",
    "billing_period_end": "2026-09-30",
    "due_date": "2026-10-30",
    "currency": "EUR",
    "buyer_reference": "K-20417",
    "purchase_order_reference": "BE-88231",
    "note": "Sammelrechnung September 2026 über die Lieferscheine LS-50311, LS-50388 und LS-50412.",
    "seller": {
      "name": "Nordtech Industriebedarf GmbH",
      "address": {"street": "Hafenstraße 12", "postal_code": "28217", "city": "Bremen", "country_code": "DE"},
      "vat_id": "DE123456789",
      "electronic_address": "rechnung@nordtech.example",
      "electronic_address_scheme": "EM",
      "contact": {"name": "Buchhaltung", "phone": "+49 421 555010", "email": "rechnung@nordtech.example"}
    },
    "buyer": {
      "name": "Weser Maschinenbau KG",
      "address": {"street": "Werftweg 3", "postal_code": "27568", "city": "Bremerhaven", "country_code": "DE"},
      "electronic_address": "einkauf@weser-mb.example",
      "electronic_address_scheme": "EM"
    },
    "payment_means": {"code": "58", "iban": "DE89370400440532013000"},
    "lines": [
      {
        "line_id": "1",
        "name": "Rillenkugellager 6205-2RS",
        "description": "Lieferschein LS-50311 vom 04.09.2026",
        "quantity": "40",
        "unit_code": "C62",
        "unit_price_net": "6.80",
        "line_allowances": [
          {"amount": "40.80", "reason": "Staffelrabatt", "percentage": "15", "basis_amount": "272.00"}
        ],
        "line_net_amount": "231.20",
        "tax_category": "S",
        "tax_rate": "19"
      },
      {
        "line_id": "2",
        "name": "Hydraulikschlauch DN10, 2SN",
        "description": "Lieferschein LS-50388 vom 12.09.2026",
        "quantity": "25",
        "unit_code": "MTR",
        "unit_price_net": "9.40",
        "line_allowances": [
          {"amount": "23.50", "reason": "Kundenrabatt", "percentage": "10", "basis_amount": "235.00"}
        ],
        "line_net_amount": "211.50",
        "tax_category": "S",
        "tax_rate": "19"
      },
      {
        "line_id": "3",
        "name": "Sechskantschraube DIN 933 M8x30, verzinkt",
        "description": "Lieferschein LS-50412 vom 23.09.2026, Preis je 100 Stück",
        "quantity": "500",
        "unit_code": "C62",
        "unit_price_net": "7.90",
        "price_base_quantity": "100",
        "line_net_amount": "39.50",
        "tax_category": "S",
        "tax_rate": "19"
      }
    ],
    "charges": [{"amount": "12.50", "reason": "Frachtkosten", "tax_category": "S", "tax_rate": "19"}],
    "tax_breakdown": [{"category": "S", "rate": "19", "taxable_amount": "494.70", "tax_amount": "93.99"}],
    "totals": {
      "line_net_amount": "482.20",
      "charge_total_amount": "12.50",
      "net_amount": "494.70",
      "tax_amount": "93.99",
      "gross_amount": "588.69",
      "payable_amount": "588.69"
    }
  },
  "invoice_pdf_base64": "JVBERi0xLjcKJeLjz9MK…",
  "options": {"profile": "XRECHNUNG", "syntax": "CII", "allow_unverified_visual": true}
}

Wichtig: In diesem Weg prüft die API nicht, ob das sichtbare PDF mit der eingebetteten XML übereinstimmt. Beide müssen aus demselben Rechnungsdatensatz stammen; dafür sorgt Ihr Skript oder die Anbindung.

Nachrechnen lohnt sich: Position 1 ergibt 40 × 6,80 = 272,00 minus 40,80 Rabatt, also 231,20. Position 3 ergibt 500 × 7,90 / 100 = 39,50. Die Summe der Positionen (482,20) plus Fracht (12,50) ist die Steuerbasis 494,70. Stimmt eine dieser Zahlen nicht auf den Cent, antwortet die API mit HTTP 422 und nennt den erwarteten und den gelieferten Wert.

Stolpersteine im Großhandel

  • Steuer je Lieferschein gerundet: Viele Systeme runden die Umsatzsteuer pro Lieferschein und addieren dann. In der Sammelrechnung oben ergäbe das 43,93 + 50,07 = 94,00 statt 93,99. Die Norm rechnet die Steuer auf die Summe je Steuersatz. Folge: HTTP 422 wegen abweichender Summen. Lösung: Pro Kombination aus Kategorie und Satz genau ein Eintrag in tax_breakdown, Steuer einmal auf die Gesamtbasis rechnen.
  • Rabattkaskaden: „10 % plus 5 %“ bedeutet im Handel fast immer, dass der zweite Rabatt auf den bereits reduzierten Betrag wirkt. Übergeben Sie zwei Einträge in line_allowances, muss die basis_amount des zweiten der reduzierte Betrag sein. Sonst stimmt der Positionsbetrag nicht mit der Rechnung überein. Einfacher ist oft ein einziger Eintrag mit dem Gesamtnachlass in Euro und einer sprechenden reason.
  • Fracht ohne Summenfeld: Wer Fracht in charges übergibt, aber charge_total_amount in den Summen vergisst, bekommt HTTP 422, weil Nettosumme und Positionssumme nicht mehr zusammenpassen. Dasselbe gilt für Rechnungsrabatte und allowance_total_amount.
  • Retoure als negative Rechnung: Eine Rechnung (380), die insgesamt negativ ist, verwirrt viele Empfängersysteme. Für Warenrücknahmen ist die Gutschrift mit Typ 381 und Verweis auf die Ursprungsrechnung sauberer, die Beträge bleiben positiv. Soll eine fehlerhafte Rechnung berichtigt werden, nutzen Sie die Rechnungskorrektur 384. Im Profil XRechnung ist genau ein Vorbeleg zulässig, bei 384 ohne Vorbeleg meldet die Prüfung die Warnung BR-DE-26.
  • Skonto im Freitext: Skonto hat in EN 16931 kein eigenes Betragsfeld. Es steht in den Zahlungsbedingungen (BT-20); XRechnung erwartet dort ein festes Muster wie #SKONTO#TAGE=14#PROZENT=2.00#. Steht Skonto nur irgendwo im Fußtext, kann die Kreditorenbuchhaltung des Kunden es nicht automatisch ziehen. Die API erzeugt das Muster aus payment_terms.cash_discounts (Tage, Prozent, optional Basisbetrag).
  • Lastschriftkunden: Ziehen Sie den Betrag per SEPA-Lastschrift ein, lautet der Zahlungscode 59, und Mandatsreferenz, Gläubiger-ID und IBAN des Kunden gehören in payment_means. Steht dort weiter 58 mit Ihrer IBAN, überweist der Kunde womöglich zusätzlich.

Häufige Fragen

Welche Rechnungsart nehme ich für eine Warenrücksendung?
Für eine Retoure stellen Sie eine Gutschrift mit dem Typ 381 aus und verweisen auf die ursprüngliche Rechnung; die Beträge bleiben positiv. Ist dagegen die Rechnung selbst falsch, etwa wegen eines falschen Preises, nutzen Sie die Rechnungskorrektur 384 mit genau einem Vorbeleg.
Wie bilde ich eine Monatssammelrechnung über viele Lieferscheine ab?
Geben Sie den Abrechnungszeitraum in billing_period_start und billing_period_end an und schreiben Sie die Lieferscheinnummern in die Positionsbeschreibung oder den Freitext. Die Umsatzsteuer wird einmal je Steuersatz auf die Summe berechnet, nicht je Lieferschein.
Warum lehnt die API den Einheitencode CT für Karton ab?
Gebinde stammen aus der UN/ECE-Liste Rec. 21, deren Codes in der E-Rechnung mit X beginnen: Karton ist XCT, Palette XPF, Packung XPK. Die API prüft gegen die Codeliste und antwortet bei unbekannten Codes mit HTTP 422 und dem Feldpfad.
Muss ich Rabatte als Prozentsatz oder als Betrag übergeben?
Maßgeblich ist der Betrag in amount, der den Positionsbetrag exakt auf den Cent ergeben muss. Prozentsatz und Basis (percentage, basis_amount) können Sie zusätzlich angeben; sie machen den Rabatt für den Empfänger nachvollziehbar.
Reicht eine EDI-Rechnung an Großkunden weiterhin aus?
Das Umsatzsteuergesetz lässt andere strukturierte Formate wie EDI zu, wenn beide Seiten sie vereinbaren und die Angaben nach EN 16931 daraus richtig entnommen werden können. Ob Ihre EDI-Abrechnung das erfüllt, klären Sie mit Ihrem Steuerberater.
Wer haftet, wenn die E-Rechnung inhaltlich falsch ist?
Für den Inhalt Ihrer Rechnung bleiben Sie verantwortlich, wie bei jeder Papierrechnung. Die Prüfung stellt sicher, dass die Datei den Formatregeln der EN 16931 entspricht, nicht dass Preise oder Steuersätze stimmen.

Die genannten Programme sind Produkte der jeweiligen Hersteller. einfache-rechnungen.de ist ein unabhängiges Angebot und steht in keiner Verbindung zu diesen Herstellern.

Kosten: Die Prüfung und Erzeugung kostet 0 € für 10 Rechnungen im Monat, danach ab 7,99 € netto. Eine Anbindung durch Coreventa ist ein Festpreisprojekt; den Rahmen klären wir im kostenlosen Erstgespräch. Ihre Rechnungs- und Kundendaten bleiben dabei auf deutschen Servern (Hetzner).

Großhandelsrechnungen als E-Rechnung ausgeben

Kostenlos testen: 10 Rechnungen im Monat, keine Kreditkarte. Für die Anbindung Ihrer Warenwirtschaft sprechen Sie mit uns.

Kostenlos registrieren Anbindung besprechen

Stand: September 2026 · Angaben zu Fremdsystemen nach öffentlichen Herstellerquellen, ohne Gewähr · keine Rechts- oder Steuerberatung.

Quellen (abgerufen am 25.09.2026, ergänzt am 26.09.2026): enventa Group, Produktseite Trade ERP, enventa-group.com/produkt/trade-erp; enventa Group, Modul Trade ERP ZUGFeRD / XRechnung, enventa-group.com/module/trade-erp-zugferd-xrechnung; enventa Group, Umfirmierung Nissen & Velten, enventa-group.com/en/umfirmierung/nissen-velten-technical-trade-solution; SOG, E-Invoice, sog.de/landingpages/e-invoice/; SOG, ERP-Cloud, sog.de/loesungen/cloud/; SOG, ERP kaufen, sog.de/loesungen/kauf/; Brückner System GmbH, WinAB, brueckner-system.com/warenwirtschaftssystem/winab/; Brückner, Fleischhandel, brueckner-system.com/warenwirtschaftssystem/fleischhandel/; Brückner, Broschüre WinAB (2020), brueckner-system.com/wp-content/uploads/2020/01/Broschuere_WinAB.pdf; GDI, E-Rechnung, gdi.de/e-rechnung/; GDI, ERP-Software, gdi.de/erp/; GDI Business-Line Versionsinformationen, gdimbh.release.page/bline-v-info; UN/ECE Recommendation 20 und 21 in der Codeliste der KoSIT.