Zum Inhalt springen

Gutschriften (Self-Billing)

Mit Gutschriften rechnet Ihre Plattform als Leistungsempfänger über die Leistungen ihrer Partner ab, statt auf deren Rechnungen zu warten. Ein Beispiel ist ein Ladenetz, das jeden Monat an die Gastgeber seiner Ladepunkte auszahlt. Fakturnaut erzeugt jede Gutschrift als geprüfte XRechnung oder als ZUGFeRD-PDF, versendet sie auf Wunsch per E-Mail und hält Widerspruch und Annahme fest.

Das Gutschriftverfahren ist in Vorbereitung. Bis es für Ihr Konto freigeschaltet ist, antworten seine Endpunkte mit 404 self-billing.disabled. Live-Schlüssel brauchen einen Tarif mit Gutschriften (402 self-billing.plan-not-included). Testschlüssel funktionieren in jedem Tarif, in der Sandbox.

Diese Seite ist keine Steuerberatung. Jede steuerliche Aussage nennt ihre Quelle. Ob und wie Sie Gutschriften einsetzen, entscheiden Sie mit Ihrer Steuerberatung.

Rollen

Eine Gutschrift ist eine Rechnung, die der Leistungsempfänger ausstellt (§ 14 Abs. 2 Satz 5 UStG). In der E-Rechnung heißt das:

RolleWerIn der E-Rechnung
Aussteller (Leistungsempfänger)Ihr Verkäufer (issuerId, ein Eintrag aus /sellers)Käufer, BG-7
Lieferant (Leistender)Ihr Partner (/suppliers)Verkäufer, BG-4

Fakturnaut setzt beide Parteien, die Nummer (GS-<Jahr>-…), den Rechnungstyp 389 und die Angabe „Gutschrift“, die § 14 Abs. 4 Satz 1 Nr. 10 UStG verlangt.

Lieferanten mit Ihrer eigenen ID

Halten Sie Ihre Partner mit Ihrer eigenen ID (externalId) aktuell. PUT legt einen Lieferanten an (201) oder ändert ihn (200); ein unveränderter Inhalt ändert nichts.

curl -s -X PUT "$BASE/suppliers/by-external-id/host-hotel-muster" -H "Authorization: Bearer $KEY" \
  -H 'Content-Type: application/json' -d '{
    "name": "Hotel Muster KG", "entrepreneur": true, "vatId": "DE812345673", "vatTreatment": "standard",
    "address": {"street": "Seestraße 5", "city": "Berlin", "postCode": "10115", "country": "DE"},
    "contact": {"name": "Erika Muster", "phone": "+49 30 123456", "email": "buchhaltung@hotel-muster.example"},
    "invoiceEmail": "gutschriften@hotel-muster.example", "iban": "DE89370400440532013000"}'
  • Nur Unternehmer. entrepreneur ist Pflicht, und false wird abgelehnt (self-billing.supplier-not-entrepreneur). Eine Gutschrift setzt voraus, dass der Leistende Unternehmer ist (§ 14 Abs. 2 Satz 5 UStG). Eine Zahlung an eine Privatperson ist deshalb keine Gutschrift.
  • Nötig ist eine USt-IdNr. oder eine Steuernummer.
  • smallBusiness: true (Kleinunternehmer) gehört zu vatTreatment: "small-business". Alle anderen Lieferanten haben standard oder reverse-charge.
  • Antworten zeigen IBAN und Steuernummer nur gekürzt (…3000).
  • Jede Änderung löst das Ereignis supplier.updated aus. Es nennt die geänderten Felder, nie deren Werte.

Die Vereinbarung vor der ersten Gutschrift

Eine Gutschrift gilt nur als Rechnung, wenn beide Seiten das Verfahren vorher vereinbart haben (§ 14 Abs. 2 Satz 5 UStG). Halten Sie diese Vereinbarung fest. attestation: true bestätigt den Text self-billing-agreement-v1.

curl -s -X POST "$BASE/suppliers/$SUPPLIER/agreements" -H "Authorization: Bearer $KEY" \
  -H 'Content-Type: application/json' -d '{"sellerId": "'"$SELLER"'", "kind": "terms-clause",
    "concludedOn": "2026-01-01", "validFrom": "2026-01-01", "attestation": true}'

Ohne Vereinbarung, die am Ausstellungstag gilt, wird die Gutschrift abgelehnt. Eine Kopie der Vereinbarung (PDF, PNG oder JPEG, höchstens 10 MB) laden Sie mit POST …/agreements/{id}/document hoch. Endet die Vereinbarung, beenden Sie sie mit POST …/agreements/{id}/revocation.

Eine Gutschrift ausstellen

Jeder Aufruf braucht einen Idempotency-Key. externalReference ist Ihre Auszahlungs-ID und je Schlüsselmodus eindeutig.

curl -s -X POST "$BASE/self-billed-invoices" -H "Authorization: Bearer $KEY" \
  -H 'Idempotency-Key: payout-2026-10-host-hotel-muster' -H 'Content-Type: application/json' -d '{
    "issuerId": "'"$SELLER"'", "supplierExternalId": "host-hotel-muster",
    "externalReference": "payout-2026-10-host-hotel-muster", "delivery": "email", "formats": ["zugferd"],
    "content": {"servicePeriod": {"start": "2026-10-01", "end": "2026-10-31"}, "dueDate": "2026-11-15",
      "lines": [{"name": "Ladestrom Oktober 2026", "quantity": 1240, "unitCode": "KWH", "netPrice": 0.30,
                 "vatCategory": "S", "vatRate": 19}]}}'

Formate. zugferd, xrechnung-ubl oder xrechnung-cii. Ohne formats gilt das preferredFormat des Lieferanten, sonst zugferd. Jedes Format durchläuft vor dem Ausstellen die offizielle Prüfung. GET /self-billed-invoices/{id}/document?format=… lädt eine Datei herunter, …/report prüft sie erneut.

Zustellung.

  • delivery: "email" sendet die Gutschrift an die invoiceEmail des Lieferanten. Dafür muss Ihr Verkäufer verifiziert sein.
  • none (Voreinstellung) heißt: Sie stellen selbst zu. Das halten Sie mit POST …/delivery-marks fest.

Eine Gutschrift geht nie als gewöhnliche XRechnung über Peppol: Das System des Lieferanten würde sie als Eingangsrechnung buchen. Die Zustellung als Peppol BIS Self-Billing 3.0 (delivery: "peppol") ist in Vorbereitung. Bis sie eingeschaltet ist, antwortet peppol mit 422 self-billing.channel-not-supported. Danach geht die Gutschrift an die peppolId des Lieferanten. Ein Lieferant, der auf Peppol nicht für Gutschriften registriert ist, erhält sie an seine invoiceEmail. Ebenso können dann Ihre eigenen Verkäufer, die Peppol-Dokumente über uns empfangen, Gutschriften ihrer Kunden empfangen (PUT /sellers/{id}/peppol/self-billing).

Monatliche Auszahlungsläufe

Ein Batch nimmt bis zu 1.000 Gutschriften und 1 MB auf. Er läuft im Hintergrund, und ein fehlerhafter Eintrag hält die anderen nicht auf. Jeder Eintrag braucht eine externalReference. Ein Eintrag, der mit derselben externalReference und demselben Inhalt erneut gesendet wird, auch in einem neuen Batch, antwortet mit der zuvor ausgestellten Gutschrift; mit anderem Inhalt schlägt er fehl (self-billing.external-reference-taken).

curl -s -X POST "$BASE/self-billed-invoices/batches" -H "Authorization: Bearer $KEY" \
  -H 'Idempotency-Key: payout-2026-10' -H 'Content-Type: application/json' -d @payout-batch.json   # 202
curl -s "$BASE/self-billed-invoices/batches/$BATCH" -H "Authorization: Bearer $KEY"

Ist alles verarbeitet, meldet das Ereignis self_billing.batch.completed das Ergebnis. Ein lauffähiges Beispiel mit curl, Node und jedem SDK liegt im Repository unter examples/self-billing: ein Lauf für drei Gastgeber mit 19 %, mit einem Kleinunternehmer und mit Umkehr der Steuerschuld.

Umsatzsteuer: Kleinunternehmer und § 13b UStG

  • Kleinunternehmer: Die Zeilen tragen vatCategory: "E" mit 0 %. Fakturnaut ergänzt den Hinweis auf § 19 UStG. Zeilen mit Umsatzsteuer werden abgelehnt, denn wer Steuer unberechtigt ausweist, kann sie nach § 14c Abs. 2 UStG schulden.
  • Umkehr der Steuerschuld: Die Zeilen tragen vatCategory: "AE" mit 0 %. Fakturnaut ergänzt „Steuerschuldnerschaft des Leistungsempfängers“ (§ 14a Abs. 5 UStG). Bei Strom eines im Inland ansässigen Lieferanten gilt das nur, wenn Lieferant und Empfänger beide Wiederverkäufer von Strom sind (§ 13b Abs. 2 Nr. 5 Buchst. b, Abs. 5 Satz 4 UStG; Abschnitte 3g.1 und 13b.3a UStAE). Ob das zutrifft, entscheiden Sie mit Ihrer Steuerberatung.

Fakturnaut prüft, dass Steuerart und Lieferant zusammenpassen. Eine steuerliche Beurteilung gibt Fakturnaut nicht.

Widerspruch und Annahme, Korrektur und Storno

Der Lieferant kann der Gutschrift widersprechen. Mit dem Widerspruch verliert sie ihre Wirkung als Rechnung (§ 14 Abs. 2 Satz 6 UStG). Halten Sie Widerspruch oder Annahme fest, so wie sie bei Ihnen eingegangen sind. Fakturnaut zeichnet sie nur auf, es löst nichts automatisch aus.

curl -s -X POST "$BASE/self-billed-invoices/$ID/objection" -H "Authorization: Bearer $KEY" \
  -H 'Content-Type: application/json' -d '{"receivedOn": "2026-11-03", "channel": "letter", "reason": "Menge falsch"}'
curl -s -X POST "$BASE/self-billed-invoices/$ID/acceptance" -H "Authorization: Bearer $KEY" \
  -H 'Content-Type: application/json' -d '{"channel": "email"}'
  • Korrektur: POST …/corrections nennt die Änderung; eine negative Menge mindert.
  • Storno: POST …/cancellation hebt die Gutschrift samt ihren Korrekturen auf.
  • Beide sind eigene Gutschriften mit Rechnungstyp 389 und Bezug auf das Original. Beide brauchen einen Idempotency-Key.

Ereignisse: self_billed_invoice.issued, .objected und .accepted. Sie nennen Datum und Kanal, nie die Begründung (Webhooks).

Abrechnung und Sandbox

  • Jede Gutschrift, Korrektur und jedes Storno zählt als ein Dokument Ihres Tarifs.
  • Mit einem Testschlüssel entstehen Testgutschriften. Sie sind als Test markiert, haben eigene Nummernkreise, werden nie abgerechnet und nach 30 Tagen gelöscht.
  • Lieferanten und Vereinbarungen des Testmodus sind von den Live-Daten getrennt.

Alle Endpunkte stehen in der API-Referenz unter „Self-billing“.

Quellen