Reverse Charge

Reverse Charge in der E-Rechnung: Kategorie AE, § 13b UStG und EU-Kunden (ZUGFeRD/XRechnung)

Kurze Antwort: Bei Reverse Charge schuldet Ihr Kunde die Umsatzsteuer. Ihre Rechnung weist keine Steuer aus, enthält die Angabe „Steuerschuldnerschaft des Leistungsempfängers“ und bei Kunden in anderen EU-Staaten beide USt-IdNrn. In einer E-Rechnung nach EN 16931 heißt das: Steuerkategorie AE, Steuersatz 0, Steuerbetrag 0, Befreiungsgrund VATEX-EU-AE und die USt-IdNr. des Käufers im XML. Zur E-Rechnung verpflichtet sind Sie nur, wenn Sie und Ihr Kunde im Inland ansässig sind, also etwa bei Bauleistungen nach § 13b UStG. Für Kunden in anderen EU-Staaten ist sie zulässig, aber keine Pflicht. Unten finden Sie die Regeln, die XML-Felder, typische Validierungsfehler und ein Beispiel mit curl und TypeScript, das wir gegen die Produktions-API ausgeführt haben.

Wann Reverse Charge gilt

Reverse Charge (Umkehr der Steuerschuldnerschaft) bedeutet: Nicht der leistende Unternehmer schuldet die Umsatzsteuer, sondern der Leistungsempfänger. Für Rechnungssteller aus Deutschland gibt es zwei typische Gruppen.

1. Dienstleistungen an Unternehmen in anderen EU-Staaten

Nach § 3a Abs. 2 UStG wird eine sonstige Leistung an einen Unternehmer für dessen Unternehmen dort ausgeführt, von wo aus der Empfänger sein Unternehmen betreibt. Verkaufen Sie ein SaaS-Abo an eine SAS in Paris, ist der Ort der Leistung Frankreich. In Deutschland fällt keine Umsatzsteuer an, Ihr Kunde schuldet sie in Frankreich. Für Ihre Rechnung gilt § 14a Abs. 1 UStG: Sie müssen die Angabe „Steuerschuldnerschaft des Leistungsempfängers“ machen, Ihre USt-IdNr. und die Ihres Kunden angeben und die Rechnung bis zum 15. Tag des Monats ausstellen, der auf den Monat der Leistung folgt.

§ 3a Abs. 2 gilt nur vorbehaltlich der Absätze 3 bis 8 sowie der §§ 3b und 3e. Eine Leistung im Zusammenhang mit einem Grundstück wird zum Beispiel dort ausgeführt, wo das Grundstück liegt. Prüfen Sie Sonderfälle mit Ihrer Steuerberatung.

Die Gegenrichtung regelt § 13b Abs. 1 UStG: Erbringt ein Unternehmer aus einem anderen EU-Staat eine solche Leistung an Ihr Unternehmen, schulden Sie die Steuer in Deutschland (§ 13b Abs. 5). Die Rechnung kommt dann vom ausländischen Anbieter.

2. Inländische Fälle nach § 13b Abs. 2 UStG

Auch zwischen zwei deutschen Unternehmen kann die Steuerschuld wechseln. § 13b Abs. 2 UStG nennt unter anderem:

Bei Bauleistungen und Gebäudereinigung schuldet Ihr Kunde die Steuer nur, wenn er selbst nachhaltig entsprechende Leistungen erbringt. Davon ist auszugehen, wenn ihm das Finanzamt das mit einer höchstens drei Jahre gültigen Bescheinigung bestätigt hat (§ 13b Abs. 5 UStG). Ihre Rechnung muss nach § 14a Abs. 5 UStG die Angabe „Steuerschuldnerschaft des Leistungsempfängers“ enthalten; die Umsatzsteuer wird nicht gesondert ausgewiesen. Alle übrigen Pflichtangaben bleiben, siehe Pflichtangaben einer E-Rechnung.

Zusammenfassende Meldung

Dienstleistungen nach § 3a Abs. 2 UStG in einem anderen EU-Staat, für die der Kunde dort die Steuer schuldet, melden Sie zusätzlich in der Zusammenfassenden Meldung an das Bundeszentralamt für Steuern, bis zum 25. Tag nach Ablauf des Kalendervierteljahres (§ 18a Abs. 2 UStG). Innergemeinschaftliche Warenlieferungen sind grundsätzlich monatlich zu melden (§ 18a Abs. 1 UStG). Die Meldung läuft neben der Rechnung; fakturai erstellt sie nicht.

Gilt die E-Rechnungspflicht bei Reverse Charge?

Nach § 14 Abs. 2 Satz 2 Nr. 1 UStG ist eine Rechnung an einen anderen Unternehmer für dessen Unternehmen als E-Rechnung auszustellen, wenn der leistende Unternehmer und der Leistungsempfänger im Inland ansässig sind. Ansässig heißt: Sitz, Geschäftsleitung, eine an dem Umsatz beteiligte Betriebsstätte oder ersatzweise Wohnsitz bzw. gewöhnlicher Aufenthalt im Inland. Reverse Charge allein befreit also nicht von der E-Rechnung; entscheidend ist, wo beide Seiten ansässig sind.

FallZusätzliche AngabenE-Rechnungspflicht in Deutschland?
SaaS, Beratung oder Entwicklung für ein Unternehmen in Frankreich, Österreich usw. (§ 3a Abs. 2 UStG)§ 14a Abs. 1: Hinweis „Steuerschuldnerschaft des Leistungsempfängers“, beide USt-IdNrn., Rechnung bis zum 15. des FolgemonatsNein, der Kunde ist nicht im Inland ansässig. Eine E-Rechnung ist mit Zustimmung des Kunden zulässig.
Bauleistung an ein deutsches Bauunternehmen (§ 13b Abs. 2 Nr. 4 UStG)§ 14a Abs. 5: Hinweis „Steuerschuldnerschaft des Leistungsempfängers“, kein gesonderter SteuerausweisJa, beide sind im Inland ansässig. Übergangsregeln nach § 27 Abs. 38 UStG.
Gebäudereinigung für einen deutschen Reinigungsbetrieb (§ 13b Abs. 2 Nr. 8 UStG)§ 14a Abs. 5, wie bei BauleistungenJa, beide sind im Inland ansässig.
Ein Anbieter aus einem anderen EU-Staat erbringt eine Dienstleistung an Ihr Unternehmen (§ 13b Abs. 1 UStG)Die Rechnung stellt der ausländische Anbieter; Sie schulden die SteuerNein, sofern der Anbieter keine an dem Umsatz beteiligte Betriebsstätte im Inland hat.

Das BMF-Schreiben vom 15.10.2025, das das Schreiben vom 15.10.2024 ändert, stellt in Rn. 17 klar: Die Regeln zur E-Rechnung gelten auch für Rechnungen über Umsätze, für die der Leistungsempfänger die Steuer nach § 13b UStG schuldet, „wenn sowohl Leistender als auch Leistungsempfänger im Inland ansässig sind“. Im selben Schreiben ergänzt das BMF den Umsatzsteuer-Anwendungserlass (Abschnitt 14.1 Abs. 6): Ist mindestens einer der beteiligten Unternehmer nicht im Inland ansässig, besteht keine Pflicht zur E-Rechnung. Die Rechnung kann dann auf Papier oder mit Zustimmung des Empfängers als E-Rechnung oder in einem anderen elektronischen Format ausgestellt werden.

Für Ihre Kunden in anderen EU-Staaten heißt das: Eine ZUGFeRD-Rechnung nach EN 16931 ist eine vollwertige Rechnung, sofern der Kunde dem elektronischen Empfang zugestimmt hat (§ 14 Abs. 1 Satz 5 UStG). Viele Teams mit eigenem Billing nutzen deshalb ein Format für alle Geschäftskunden. Für inländische § 13b-Fälle gelten die Übergangsregeln aus § 27 Abs. 38 UStG: Für Leistungen bis Ende 2026 sind Papier oder, mit Zustimmung, PDF erlaubt, wenn die Rechnung bis 31.12.2026 übermittelt wird; für Leistungen im Jahr 2027 nur noch bei höchstens 800.000 Euro Vorjahresumsatz. Details: Übergangsfristen 2025 bis 2028.

So sieht Reverse Charge in EN 16931 aus

ZUGFeRD/Factur-X und XRechnung setzen beide die Norm EN 16931 um. Die Regeln zu den Steuerkategorien gelten deshalb in beiden Formaten gleich. Für Reverse Charge steht der Code AE aus der Codeliste UNTDID 5305, für den Befreiungsgrund der Code VATEX-EU-AE aus der VATEX-Liste.

FeldBedeutungWert bei Reverse Charge
BT-151Steuerkategorie der PositionAE
BT-152Steuersatz der Position0
BT-118Steuerkategorie in der Steueraufschlüsselung (BG-23)AE
BT-119Steuersatz der Steueraufschlüsselung0
BT-116BemessungsgrundlageSumme der Nettobeträge mit AE
BT-117Steuerbetrag0.00
BT-120Befreiungsgrund als Textz. B. „Steuerschuldnerschaft des Leistungsempfängers“
BT-121Befreiungsgrund als CodeVATEX-EU-AE
BT-31USt-IdNr. des VerkäufersIhre USt-IdNr.
BT-48USt-IdNr. des KäufersUSt-IdNr. Ihres Kunden

Die BR-AE-Regeln

So sieht das im XML aus. Der Auszug stammt aus der Rechnung, die wir für diesen Beitrag über die Produktions-API erzeugt haben (Beispiel weiter unten):

<!-- Position 1 (Position 2 identisch kodiert) -->
<ram:ApplicableTradeTax>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:CategoryCode>AE</ram:CategoryCode>
  <ram:RateApplicablePercent>0</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>

<!-- Käufer (BT-48) -->
<ram:SpecifiedTaxRegistration>
  <ram:ID schemeID="VA">FR99999999999</ram:ID>
</ram:SpecifiedTaxRegistration>

<!-- Steueraufschlüsselung (BG-23) -->
<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>0.00</ram:CalculatedAmount>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:ExemptionReason>Steuerschuldnerschaft des Leistungsempfängers</ram:ExemptionReason>
  <ram:BasisAmount>166.90</ram:BasisAmount>
  <ram:CategoryCode>AE</ram:CategoryCode>
  <ram:ExemptionReasonCode>VATEX-EU-AE</ram:ExemptionReasonCode>
  <ram:RateApplicablePercent>0</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>

Häufige Validierungsfehler

FehlerRegelTypische Ursache
Positionen mit 0 %, aber Kategorie SBR-S-05Das Billing-System setzt nur den Steuersatz auf 0, nicht die Kategorie.
AE ohne USt-IdNr. des KäufersBR-AE-02Die USt-IdNr. fehlt im Kundenstamm oder wird nicht übergeben.
AE mit 19 %BR-AE-05Kategorie umgestellt, Steuersatz nicht.
Steuerbetrag in der AE-Aufschlüsselung nicht 0BR-AE-09Die Steuer wurde trotzdem berechnet oder durch Rundung erzeugt.
Kein BefreiungsgrundBR-AE-10Der Hinweis steht nur im Freitext oder auf der PDF, nicht in BT-120 oder BT-121.
Kategorie O zusammen mit USt-IdNrn.BR-O-02„Nicht steuerbar“ gewählt, aber Verkäufer- oder Käufer-USt-IdNr. übergeben.

fakturai fängt die meisten dieser Fälle schon vor der Erzeugung ab und antwortet mit HTTP 422, statt eine fehlerhafte Datei zu bauen. Die Meldungen aus der Produktion, wörtlich:

Weitere Regeln und ihre Ursachen finden Sie unter Häufige Validierungsfehler beheben. Eine bestehende Datei, auch aus einem anderen Tool, prüfen Sie ohne Konto im Validator.

Andere Steuerkategorien mit 0 %

Neben AE kennt EN 16931 weitere Kategorien, bei denen der Steuersatz 0 ist. Sie folgen eigenen Regeln:

CodeBedeutungPflicht im XMLfakturai
ZNullsatz, z. B. Lieferung von Solarmodulen nach § 12 Abs. 3 UStGKein Befreiungsgrund erlaubt (BR-Z-10)vat_category "Z", vat_rate "0"
ESteuerbefreiter UmsatzBefreiungsgrund als Text oder Code ist Pflicht (BR-E-10)vat_category "E" und vat_exemption_reasons.E mit text und/oder code
KInnergemeinschaftliche Lieferung von Waren; Rechnung nach § 14a Abs. 3 UStG mit beiden USt-IdNrn. bis zum 15. des FolgemonatsUSt-IdNr. des Käufers (BR-IC-02), Liefer- oder Leistungsdatum (BR-IC-11), Lieferland (BR-IC-12), Befreiungsgrund (BR-IC-10)vat_category "K"; Lieferland aus der Käuferadresse, Standardtext und VATEX-EU-IC
GAusfuhr in ein Land außerhalb der EUBefreiungsgrund (BR-G-10), USt-IdNr. des Verkäufers (BR-G-02)vat_category "G"; Standardtext und VATEX-EU-G
ONicht steuerbarKeine USt-IdNr. von Verkäufer oder Käufer (BR-O-02)nicht unterstützt

Bei Steuerbefreiungen verlangt auch § 14 Abs. 4 Satz 1 Nr. 8 UStG einen Hinweis darauf, dass eine Steuerbefreiung gilt. Welche Kategorie und welcher Befreiungsgrund auf Ihren Umsatz passen, ist eine steuerliche Frage und keine technische.

Beispiel: SaaS-Abo an einen Kunden in Frankreich

Angenommen, Sie betreiben ein SaaS-Produkt in Deutschland und rechnen den November 2026 mit einem Kunden in Paris ab, der eine französische USt-IdNr. hat: drei Nutzer im Pro-Plan zu 49 Euro und ein API-Zusatzpaket zu 19,90 Euro, netto. Verkäuferdaten (Name, Adresse, Ihre USt-IdNr., Bankverbindung) kommen aus Ihrem fakturai-Profil, die Rechnungsnummer vergibt fakturai fortlaufend. Im Body setzen Sie pro Position vat_category auf "AE" und vat_rate auf "0":

{
  "invoice_date": "2026-11-01",
  "due_date": "2026-11-15",
  "service_period": {
    "start": "2026-11-01",
    "end": "2026-11-30"
  },
  "currency": "EUR",
  "buyer": {
    "name": "Exemple Logiciel SAS",
    "address": {
      "line_one": "12 Rue Exemple",
      "postcode": "75002",
      "city": "Paris",
      "country": "FR"
    },
    "vat_id": "FR99999999999",
    "contact_email": "factures@example.com"
  },
  "lines": [
    {
      "name": "Pro-Plan, 3 Nutzer (November 2026)",
      "quantity": "3",
      "unit": "C62",
      "unit_price": "49.00",
      "vat_rate": "0",
      "vat_category": "AE"
    },
    {
      "name": "API-Zusatzpaket 10.000 Aufrufe (November 2026)",
      "quantity": "1",
      "unit": "C62",
      "unit_price": "19.90",
      "vat_rate": "0",
      "vat_category": "AE"
    }
  ]
}

Als invoice.json gespeichert, schicken Sie ihn so an die API:

curl -X POST https://fakturai.de/api/v1/invoices \
  -H "Authorization: Bearer $FAKTURAI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/pdf" \
  -H "Idempotency-Key: kunde-fr-2026-11" \
  --data @invoice.json \
  --dump-header headers.txt \
  --output invoice.pdf

Ohne vat_exemption_reasons schreibt fakturai für AE den Text „Steuerschuldnerschaft des Leistungsempfängers“ (BT-120) und den Code VATEX-EU-AE (BT-121). Eigenen Text senden Sie als vat_exemption_reasons.AE.text. Wenn Sie nur einen Text angeben, schreibt fakturai keinen Code; wollen Sie beides, senden Sie zusätzlich code. Alle Felder stehen in der API-Dokumentation und im JSON-Schema.

Dasselbe in TypeScript

Wenn Ihr Backend die Rechnung selbst zusammenbaut, reicht eine kleine Funktion. Sie unterscheidet bewusst nur zwei Fälle: Kunde in Deutschland (19 %) oder Unternehmen in einem anderen EU-Staat mit USt-IdNr. (AE). Alles andere bricht mit einem Fehler ab, statt still eine falsche Kategorie zu setzen.

// reverse-charge.mts: Node.js mit eingebautem fetch, ohne weitere Pakete
const OTHER_EU = new Set([
  "AT", "BE", "BG", "CY", "CZ", "DK", "EE", "ES", "FI", "FR", "GR", "HR", "HU", "IE",
  "IT", "LT", "LU", "LV", "MT", "NL", "PL", "PT", "RO", "SE", "SI", "SK",
]);

type Customer = {
  name: string;
  street: string;
  postcode: string;
  city: string;
  country: string; // ISO 3166-1 alpha-2
  vatId?: string; // USt-IdNr. des Kunden, vorher auf Gültigkeit geprüft
  email?: string;
};
type Item = { name: string; quantity: string; unitPrice: string };

// Vereinfachte Regel für B2B-Dienstleistungen nach § 3a Abs. 2 UStG. Ausnahmen
// (z. B. Grundstücksleistungen) und Warenlieferungen klären Sie mit Ihrer Steuerberatung.
function vatFor(customer: Customer) {
  if (customer.country === "DE") return { vat_rate: "19.00" };
  if (OTHER_EU.has(customer.country) && customer.vatId) {
    return { vat_rate: "0", vat_category: "AE" };
  }
  throw new Error(`${customer.name}: Drittland oder EU-Kunde ohne USt-IdNr. ist nicht abgedeckt`);
}

export function buildInvoice(
  customer: Customer,
  items: Item[],
  period: { start: string; end: string },
  dueDate: string,
) {
  const vat = vatFor(customer);
  return {
    invoice_date: period.start, // Abo im Voraus abgerechnet
    due_date: dueDate,
    service_period: period,
    currency: "EUR",
    buyer: {
      name: customer.name,
      address: {
        line_one: customer.street,
        postcode: customer.postcode,
        city: customer.city,
        country: customer.country,
      },
      vat_id: customer.vatId,
      contact_email: customer.email,
    },
    lines: items.map((item) => ({
      name: item.name,
      quantity: item.quantity,
      unit: "C62",
      unit_price: item.unitPrice,
      ...vat,
    })),
  };
}

const body = buildInvoice(
  {
    name: "Exemple Logiciel SAS",
    street: "12 Rue Exemple",
    postcode: "75002",
    city: "Paris",
    country: "FR",
    vatId: "FR99999999999",
    email: "factures@example.com",
  },
  [
    { name: "Pro-Plan, 3 Nutzer (November 2026)", quantity: "3", unitPrice: "49.00" },
    { name: "API-Zusatzpaket 10.000 Aufrufe (November 2026)", quantity: "1", unitPrice: "19.90" },
  ],
  { start: "2026-11-01", end: "2026-11-30" },
  "2026-11-15",
);

const resp = await fetch("https://fakturai.de/api/v1/invoices", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.FAKTURAI_API_KEY}`,
    "Content-Type": "application/json",
    Accept: "application/pdf",
    "Idempotency-Key": "kunde-fr-2026-11",
  },
  body: JSON.stringify(body),
});
if (resp.status !== 201) throw new Error(`${resp.status}: ${await resp.text()}`); // 422 = Daten prüfen
const pdf = Buffer.from(await resp.arrayBuffer()); // ZUGFeRD/Factur-X-PDF mit CII-XML
console.log(resp.headers.get("x-facturai-invoice-number"), pdf.length, "Bytes");

Wir haben den Code mit TypeScript 5.9 im Strict-Modus typgeprüft und unter Node.js 26 ausgeführt. Der erzeugte Body ist identisch mit dem JSON oben. Für Abos aus Stripe oder Chargebee zeigt der Beitrag E-Rechnung aus Stripe oder Chargebee erzeugen, wie Sie die Rechnungsdaten aus dem Webhook übernehmen.

Geprüft gegen die Produktions-API

Geprüft am 05.11.2026: Genau diesen Body haben wir mit einem neuen Testkonto und synthetischen Verkäuferdaten an https://fakturai.de/api/v1/invoices geschickt. Antwort: HTTP 201, application/pdf, eine PDF mit eingebettetem factur-x.xml (Profil EN 16931). Im XML stehen in beiden Positionen und in der Steueraufschlüsselung die Kategorie AE mit Satz 0, Bemessungsgrundlage 166,90 Euro, Steuerbetrag 0,00 Euro, Gesamtbetrag 166,90 Euro, der Befreiungsgrund „Steuerschuldnerschaft des Leistungsempfängers“ mit VATEX-EU-AE sowie die USt-IdNr. des Kunden. Die PDF zeigt in der Spalte USt. „0 % (AE)“, in der Summe „MwSt. 0 % (AE) auf 166,90 €“ und darunter den Hinweis „(AE) Steuerschuldnerschaft des Leistungsempfängers. USt-IdNr. des Leistungsempfängers: FR99999999999“, dazu das Land in der Käuferadresse.

Die Datei haben wir anschließend im kostenlosen Validator geprüft: KoSIT-Ergebnis „accept“, PDF/A konform, 0 harte Fehler und 4 Hinweise. Die Prüfung mit der fakturai-Engine meldete zusätzlich Mustang „valid“. Die Hinweise stammen aus Peppol- und XRechnung-Regeln (etwa BR-DE-15 zur Käuferreferenz, die bei Rechnungen an Behörden Pflicht ist) und wurden nicht als Fehler gewertet. Eine erneute Anfrage mit demselben Idempotency-Key ergab HTTP 409 und keine zweite Rechnung.

Grenzen von fakturai

So starten Sie

Legen Sie unter /de/signup kostenlos ein Konto an, hinterlegen Sie Ihr Verkäuferprofil mit USt-IdNr. und erzeugen Sie einen API-Key. Der kostenlose Plan enthält 5 erzeugte Rechnungen pro Monat; bezahlte Pläne sind noch nicht buchbar.

Kostenlos starten

Was fakturai nicht ersetzt

Diese Seite ist eine technische Anleitung mit Einordnung der Rechtslage und keine Rechts- oder Steuerberatung. Ob und wie Reverse Charge auf Ihre Umsätze anzuwenden ist, klären Sie mit Ihrer Steuerberatung. fakturai ist keine Buchhaltungssoftware. Es erzeugt und prüft die technische Struktur nach EN 16931; Inhalt, steuerliche Beurteilung, Versand und Aufbewahrung Ihrer Rechnungen bleiben in Ihrer Verantwortung. Es gibt keine Rechts-, Steuer- oder Zustellungsgarantie.

Quellen

Alle Quellen abgerufen am 05.11.2026.

Weiterlesen