Wenn Sie ein SaaS-Produkt an EU-Kunden verkaufen, unterliegen Sie den EU-MwSt.-Regeln. Die gute Nachricht: Die Regeln sind logisch, sobald man das zugrundeliegende Framework versteht. Dieser Leitfaden gibt Ihnen den praktischen Rahmen ohne Rechtstheorie.
Die zwei grundlegenden Regeln
| Szenario | MwSt. abgeführt von | Angewendeter Satz | Rechnungshinweis |
|---|---|---|---|
| B2B EU-Kunde, gültige USt-IdNr. | Käufer (Reverse Charge) | 0% auf Ihrer Rechnung | "Reverse Charge — Art. 196 EU-MwSt.-Richtlinie" |
| B2C EU-Kunde | Sie (Lieferant) | Satz des Kundenlandes | MwSt.-Betrag explizit ausgewiesen |
| Nicht-EU-Kunde | Keine Partei | 0% (außerhalb des Geltungsbereichs) | "Nicht umsatzsteuerpflichtig" |
Note
Wenn Ihre jährlichen B2C-Verkäufe in alle EU-Länder zusammen 10.000 Euro überschreiten, müssen Sie sich entweder in jedem Land einzeln für die MwSt. registrieren oder das EU One Stop Shop (OSS)-Verfahren nutzen.
async function berechneUStBehandlung({ kundenland, ustIdNr }) {
const EU_LAENDER = ['AT','BE','BG','CY','CZ','DE','DK','EE','ES','FI',
'FR','GR','HR','HU','IE','IT','LT','LU','LV','MT',
'NL','PL','PT','RO','SE','SI','SK'];
if (!EU_LAENDER.includes(kundenland)) {
return { satz: 0, verfahren: 'ausserhalb_eu', rechnungshinweis: 'Nicht umsatzsteuerpflichtig' };
}
if (ustIdNr) {
const res = await fetch('https://api.taxid.dev/v1/validate', {
method: 'POST',
headers: { 'Authorization': `Bearer ${process.env.TAXID_API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ taxId: ustIdNr })
});
const { valid } = await res.json();
if (valid) return { satz: 0, verfahren: 'reverse_charge', rechnungshinweis: 'Reverse Charge — Art. 196 MwStSystRL' };
}
const ratesRes = await fetch(`https://api.taxid.dev/v1/rates?country=${kundenland}`, {
headers: { 'Authorization': `Bearer ${process.env.TAXID_API_KEY}` }
});
const { standard_rate } = await ratesRes.json();
return { satz: standard_rate, verfahren: 'standard' };
}Start validating EU VAT numbers
Free plan — 100 validations/month. No credit card required.