SwissQRLink

API

QR-Rechnung per API als Bild erzeugen

Schick die Rechnungsangaben an einen Endpunkt und erhalte den Swiss QR Code oder den ganzen Einzahlungsschein als Bild – normgeprüft, ohne Registrierung, ohne Datenspeicherung.

Du wählst, was zurückkommt

Swiss QR Code, live von der API erzeugt
part=qr-codeNur der QR-Code
Ganzer Einzahlungsschein, live von der API erzeugt
part=payment-partGanzer Einzahlungsschein mit Empfangsschein

So rufst du sie auf

https://www.swissqrlink.ch/api/public/v1/qr-bill – per GET mit URL-Parametern (ideal für <img>) oder per POST mit JSON. Die Felder sind dieselben wie beim Dynamic Link.

curl -o einzahlungsschein.png "https://www.swissqrlink.ch/api/public/v1/qr-bill?part=payment-part&credAccount=CH0209000000100013997&credName=Max%20Muster&credAddress=Musterstrasse&credBuildingNumber=123&credZip=8001&credCity=Z%C3%BCrich&credCountry=CH&amount=500"
const res = await fetch("https://www.swissqrlink.ch/api/public/v1/qr-bill?part=payment-part&format=png", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    credAccount: "CH0209000000100013997",
    credName: "Max Muster", credAddress: "Musterstrasse", credBuildingNumber: "123",
    credZip: "8001", credCity: "Zürich", credCountry: "CH",
    amount: 500, reference: "RF18539007547034",
  }),
});
const image = await res.blob();

Felder

Alle Werte als Text, der Betrag darf bei POST auch eine Zahl sein. Unbekannte Felder werden abgelehnt.

FeldPflichtInhalt
credAccountjaIBAN oder QR-IBAN (CH/LI), mit oder ohne Leerzeichen
credNamejaName des Empfängers, max. 70 Zeichen
credAddress, credBuildingNumberjaStrasse und Hausnummer
credZip, credCityja4-stellige PLZ und Ort
credCountryneinCH (Standard) oder LI, muss zur IBAN passen
amountneinBetrag, z. B. 500 oder 49.90 – leer lassen für offenen Betrag
currencyneinCHF (Standard) oder EUR
referenceje nach KontoBei QR-IBAN Pflicht: 27-stellige QR-Referenz. Sonst optional: RF-Referenz
additionalInformationneinMitteilung, max. 140 Zeichen
debName, debAddress, debBuildingNumber, debZip, debCity, debCountryneinZahlende Person – entweder ganz oder gar nicht ausfüllen

Optionen

Optionen stehen immer in der Adresse, auch bei POST.

OptionStandardWerte
partqr-codeqr-code (nur Swiss QR Code) oder payment-part (ganzer Einzahlungsschein)
formatpngpng oder svg
size1024 / 2480Breite in Pixel (nur PNG): QR-Code 100–2000, Einzahlungsschein 100–2480. Standard ist 2480 px, also 300 dpi Druckqualität. Die Breite wird für den QR-Code auf ganze Module gerundet, damit die Kanten pixelscharf bleiben
margin4Ruhezone um den QR-Code in Modulen, 0–10
languageDESprache des Einzahlungsscheins: DE, FR, IT oder EN

Fehler und Limits

Fehler kommen als application/problem+json mit code und einer Feldliste in errors.

StatusCodeBedeutung
400invalid_request / invalid_optionsUnbekanntes Feld, falscher Typ, kaputtes JSON oder ungültige Option
401invalid_api_keyAuthorization-Header gesendet – heute werden keine Schlüssel vergeben
405method_not_allowedAndere Methode als GET, POST oder OPTIONS
413 / 415payload_too_large / unsupported_media_typePOST grösser als 8 KB oder ohne Content-Type: application/json
422validation_failedAngaben verletzen die QR-Rechnungsnorm – Details pro Feld
429rate_limitedLimit erreicht, Wartezeit in Retry-After

Jede Anfrage zählt fürs Limit, auch fehlerhafte. Den Stand siehst du in den Kopfzeilen RateLimit-Limit, RateLimit-Remaining und RateLimit-Reset.

Tarife

Gleicher Endpunkt, keine Datenspeicherung – die Tarife unterscheiden sich nur im Kontingent. Preise in CHF, exkl. MWST.

Free

CHF 0

dauerhaft kostenlos

  • 100 Anfragen pro Minute
  • 250 pro Tag
  • Ohne Registrierung

Sofort nutzbar

Starter

CHF 19

pro Monat

  • 120 Anfragen pro Minute
  • 25'000 pro Tag
  • Eigener API-Schlüssel

In Vorbereitung

Pro

CHF 59

pro Monat

  • 600 Anfragen pro Minute
  • Unbegrenzt pro Tag
  • Mehrere Schlüssel, Support

Auf Anfrage

Interesse an Starter oder Pro? Melde dich über das Hilfe-Fenster unten rechts.

Häufige Fragen

Kostet die API etwas?
Free ist dauerhaft kostenlos und ohne Registrierung: 100 Anfragen pro Minute, 250 pro Tag. Starter und Pro folgen mit API-Schlüssel.
Werden Rechnungsdaten gespeichert?
Nein. Die Angaben werden nur für die Antwort verarbeitet. Für das Rate-Limit zählen wir einzig eine unlesbar gehashte Absenderkennung während 24 Stunden.
Was ist der Unterschied zum Dynamic Link?
Der Dynamic Link öffnet eine Rechnungsseite zum Bezahlen. Die API liefert dir direkt ein Bild für eigene PDFs, E-Mails oder Vorlagen.