Schweizer QR-Rechnungen mit einem API-Aufruf
Erstellen Sie konforme Schweizer QR-Rechnungen in Sekunden. Ein POST-Request liefert ein komplettes PDF mit Einzahlungsschein—bereit für Ihre Kunden. Kein API-Key zum Testen nötig.

QR-Rechnungen selbst bauen? Die Realität.
Schweizer QR-Rechnungen manuell zu erstellen kostet jeden Monat Stunden. Eine eigene Lösung zu entwickeln bedeutet, komplexe SIX-Richtlinien, strukturierte Adressformate und QR-IBAN-Validierung zu meistern.
Ihre erste Rechnung in 60 Sekunden
Senden Sie einen POST-Request um eine komplette Schweizer QR-Rechnung zu generieren.
curl -X POST 'https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"language": "de",
"file_name": "rechnung-001.pdf",
"invoice_number": 1,
"invoice_date": "15/01/2025",
"user_details": {
"name": "Ihre Firma GmbH",
"address": "Bahnhofstrasse 10",
"zip": "8001",
"city": "Zürich",
"iban": "CH93 0076 2011 6238 5295 7"
},
"customer_details": {
"name": "Kunde AG",
"address": "Rue du Marché 5",
"zip": "1204",
"city": "Genève"
},
"invoice_items": [
{
"description": "Beratungsleistungen",
"quantity": 8,
"unit_price": 150.00
}
]
}
}'
Die Antwort enthält eine URL zu Ihrem generierten PDF:
{
"result": "https://storage.googleapis.com/.../rechnung-001.pdf"
}
Das war's. Eine vollständige, konforme Schweizer Rechnung mit QR-Einzahlungsschein.
Warum eine API für Schweizer QR-Rechnungen?
Seit Oktober 2022 haben Schweizer QR-Rechnungen alle alten Einzahlungsscheine ersetzt. Jede Rechnung an Schweizer Kunden benötigt nun einen standardisierten QR-Code mit Zahlungsdaten. Das selbst zu entwickeln bedeutet Wochen Arbeit und laufende Wartung bei Regeländerungen.
Vollständige Konformität seit November 2025
Automatisch geparst und formatiert
CHF/EUR 0.01 bis 999'999'999.99
Nur Schweiz & Liechtenstein
Vollständige Dokumentation
Gehostet in Zürich (europe-west6) für optimale Latenz und Datenhaltung in der Schweiz.
Endpoint
POST https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d
Erforderliche Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
file_name | string | Dateiname des PDF |
invoice_number | integer | Rechnungsnummer |
invoice_date | string | Datum im Format TT/MM/JJJJ |
user_details | object | Ihre Firmendaten |
customer_details | object | Empfängerdaten |
invoice_items | array | Rechnungspositionen |
user_details Objekt:
{
"name": "Firmenname",
"address": "Strasse und Hausnummer",
"zip": "8001",
"city": "Zürich",
"iban": "CH93 0076 2011 6238 5295 7"
}
customer_details Objekt:
{
"name": "Kundenname",
"address": "Strasse und Hausnummer",
"zip": "1204",
"city": "Genève"
}
invoice_items Array:
[
{
"description": "Dienstleistungsbeschreibung",
"quantity": 1.5,
"unit_price": 100.00
}
]
Optionale & MwSt Parameter
Passen Sie Ihre Rechnungen mit diesen zusätzlichen Optionen an.
Optionale Parameter
Optimieren Sie Ihre Rechnungsausgabe mit diesen Einstellungen.
- language: de, fr, it, en (Standard: en)
- currency: CHF oder EUR (Standard: CHF)
- logo_url: URL zu Ihrem Firmenlogo
- qr_reference: Zahlungsreferenz für QR-Beleg
- message: Zusätzliche Mitteilung (max. 140 Zeichen)
- qr_only: Nur QR-Beleg generieren, keine volle Rechnung
- dont_round: Rundung auf 5 Rappen überspringen
MwSt-Parameter
Für MwSt-pflichtige Unternehmen: Steuerberechnung aktivieren.
- vat_enabled: Auf true setzen für MwSt
- vat_percentage: Satz als Dezimalzahl (z.B. 0.081)
- vat_number: Ihre CHE-MwSt-Nummer
- Normalsatz 2024: 8.1% (0.081)
- Reduzierter Satz: 2.6% (0.026) für Lebensmittel, Bücher
QR-Referenztypen
Wählen Sie den passenden Referenztyp für Ihre Bedürfnisse.
- QR-Referenz (QRR): 27-stellig, erfordert QR-IBAN
- Creditor Reference (SCOR): ISO 11649, beginnt mit RF
- Ohne Referenz (NON): Einfache Rechnungen
- QR-IBAN: Bankcodes 30000-31999
Integration in Ihrer Sprache
Sofort einsetzbare Code-Beispiele für gängige Programmiersprachen.
Python
import requests
import json
url = "https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d"
payload = {
"data": {
"language": "de",
"currency": "CHF",
"file_name": "rechnung-2025-001.pdf",
"invoice_number": 1,
"invoice_date": "15/01/2025",
"vat_enabled": True,
"vat_percentage": 0.081,
"vat_number": "CHE-123.456.789",
"user_details": {
"name": "Muster GmbH",
"address": "Bahnhofstrasse 10",
"zip": "8001",
"city": "Zürich",
"iban": "CH93 0076 2011 6238 5295 7"
},
"customer_details": {
"name": "Kunde AG",
"address": "Hauptstrasse 1",
"zip": "3000",
"city": "Bern"
},
"invoice_items": [
{
"description": "Beratungsleistungen Januar 2025",
"quantity": 10,
"unit_price": 180.00
},
{
"description": "Reisekosten",
"quantity": 1,
"unit_price": 45.50
}
]
}
}
response = requests.post(url, json=payload)
result = response.json()
print(f"Rechnungs-URL: {result['result']}")
Node.js (Axios)
const axios = require('axios');
const url = 'https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d';
const payload = {
data: {
language: 'fr',
currency: 'CHF',
file_name: 'facture-2025-001.pdf',
invoice_number: 1,
invoice_date: '15/01/2025',
logo_url: 'https://your-domain.ch/logo.png',
user_details: {
name: 'Votre Entreprise Sàrl',
address: 'Rue du Lac 15',
zip: '1003',
city: 'Lausanne',
iban: 'CH93 0076 2011 6238 5295 7'
},
customer_details: {
name: 'Client SA',
address: 'Avenue de la Gare 8',
zip: '1201',
city: 'Genève'
},
invoice_items: [
{
description: 'Services de développement',
quantity: 40,
unit_price: 120.00
}
]
}
};
axios.post(url, payload)
.then(response => {
console.log('Rechnungs-URL:', response.data.result);
})
.catch(error => {
console.error('Fehler:', error.response?.data || error.message);
});
PHP (cURL)
<?php
$url = 'https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d';
$payload = [
'data' => [
'language' => 'it',
'file_name' => 'fattura-2025-001.pdf',
'invoice_number' => 1,
'invoice_date' => '15/01/2025',
'user_details' => [
'name' => 'La Tua Azienda Sagl',
'address' => 'Via Nassa 20',
'zip' => '6900',
'city' => 'Lugano',
'iban' => 'CH93 0076 2011 6238 5295 7'
],
'customer_details' => [
'name' => 'Cliente SA',
'address' => 'Piazza Grande 5',
'zip' => '6600',
'city' => 'Locarno'
],
'invoice_items' => [
[
'description' => 'Servizi di consulenza',
'quantity' => 5,
'unit_price' => 200.00
]
]
]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
echo "Rechnungs-URL: " . $result['result'];
Antwort-Codes & Validierung
Die API gibt Standard-HTTP-Statuscodes für einfache Fehlerbehandlung zurück.
200 OK
{
"result": "https://storage.googleapis.com/.../rechnung.pdf"
}
422 Unprocessable Entity
{
"error": "Provided IBAN is invalid"
}
Häufige Validierungsfehler:
- Ungültiges IBAN-Format oder Prüfsumme
- Fehlende Pflichtparameter
- Ungültiges Datumsformat (muss TT/MM/JJJJ sein)
- Betrag ausserhalb des gültigen Bereichs
500 Internal Server Error
Diese werden intern überwacht. Falls Sie einen erhalten, senden Sie eine E-Mail an hello@magicheidi.ch mit dem Zeitstempel zur Fehleranalyse.
Automatische Compliance-Updates
Seit dem 22. November 2025 verlangen die SIX Implementation Guidelines Version 2.3 ausschliesslich strukturierte Adressen. Alle Adressen müssen Strassenname, Hausnummer, PLZ, Ort und Land enthalten. Die Magic Heidi API handhabt dies automatisch—wenn Sie eine Adresse wie 'Bahnhofstrasse 10' angeben, parsen und strukturieren wir sie korrekt für den QR-Code.

Häufig gestellte Fragen
Brauche ich eine QR-IBAN?
Nur wenn Sie QR-Referenznummern (QRR) verwenden möchten. Für Creditor References (SCOR) oder ohne Referenz funktioniert eine normale Schweizer IBAN. Prüfen Sie die Positionen 5-9 Ihrer IBAN—liegt die Zahl zwischen 30000 und 31999, ist es eine QR-IBAN.
Kann ich Rechnungen in Euro erstellen?
Ja. Setzen Sie "currency": "EUR" in Ihrer Anfrage. Sowohl CHF als auch EUR werden gemäss QR-Rechnungs-Spezifikation unterstützt.
Funktioniert das für internationale Kunden?
Der QR-Rechnungs-Standard unterstützt nur Schweizer und Liechtensteiner IBANs. Für internationale Rechnungen benötigen Sie ein Schweizer Bankkonto.
Kann ich nur den QR-Einzahlungsschein generieren?
Ja. Setzen Sie "qr_only": true um nur den QR-Einzahlungsschein ohne vollständiges Rechnungsdokument zu erhalten.
Wie füge ich mein Firmenlogo hinzu?
Fügen Sie einen logo_url-Parameter mit einer öffentlich zugänglichen URL zu Ihrem Logo hinzu. Wir empfehlen PNG- oder SVG-Format.
Gibt es ein Rate Limit?
Für Tests ohne API-Key wird eine angemessene Nutzung erwartet. Für Produktionsanwendungen kontaktieren Sie hello@magicheidi.ch um einen API-Key mit definierten Limits anzufordern.
Was diese API besonders macht
Speziell für Schweizer Rechnungsanforderungen entwickelt.
Komplette Rechnungen
Vollständige professionelle Rechnungen, nicht nur QR-Codes
Vier Sprachen
Deutsch, Französisch, Italienisch und Englisch
Eigenes Branding
Logo hinzufügen ohne komplexe PDF-Manipulation
Gratis testen
Keine Kreditkarte oder API-Key erforderlich
Schweizer Hosting
Daten bleiben in Zürich (europe-west6)
Immer konform
Automatische Updates bei Regeländerungen
Starten Sie noch heute mit der Rechnungserstellung
Testen Sie die API mit den obigen Code-Beispielen—keine Authentifizierung nötig. Fordern Sie einen API-Key für den Produktiveinsatz an.
Erste Schritte
- Testen Sie die API mit den obigen Code-Beispielen—keine Authentifizierung nötig
- Integrieren Sie in Ihre Anwendung mit Ihrer bevorzugten Programmiersprache
- Fordern Sie einen API-Key an unter hello@magicheidi.ch für den Produktiveinsatz
Für die vollständige API-Dokumentation und Updates besuchen Sie unser GitHub Repository.
Fragen? Schreiben Sie an hello@magicheidi.ch. Wir antworten in der Regel innerhalb von 24 Stunden.
Magic Heidi ist eine Schweizer Rechnungssoftware für Freiberufler und Kleinunternehmen. Verfügbar für iOS, Android, Mac, Windows und Web.