API für deine eigene Software
Java, PHP, Node.js, Python oder jede Website mit eigenem Backend (auch hinter nginx). Ein Aufruf: POST /api/v1/qr mit dem Artikel und dem Preis.
Zeige einen SEPA-QR-Code für einen Artikel und einen Preis. Dein Kunde scannt ihn mit seiner Banking-App und zahlt per Überweisung, direkt auf das GloryPay-Konto des Verkäufers.
Wähle, was zu deinem Shop passt. Jede Möglichkeit erstellt denselben SEPA-QR-Code, und das Geld geht direkt auf das GloryPay-Konto des Verkäufers.
Der GloryPay-QR folgt dem europäischen EPC-Standard (SEPA-Überweisung). So weit sind die Banking-Apps heute. (Stand 19/10/2026)
Kamera: scannt den QR von einem anderen Bildschirm oder Papier. Gleiches Handy: liest den QR aus einem PDF oder Bild auf dem Handy selbst.
| Bank | Kamera | Gleiches Handy |
|---|---|---|
| Belgien | ||
| KBC / KBC Brussels PDF an KBC Mobile teilen (SmartPaste) | Ja | Ja |
| BNP Paribas Fortis (Easy Banking App) | Ja | Nicht angegeben |
| Belfius | Ja | Nicht angegeben |
| ING België | Unbekannt | Unbekannt |
| Argenta | Unbekannt | Unbekannt |
| Deutschland · dort "GiroCode" genannt | ||
| Sparkasse Fotoüberweisung > Importieren (PDF, PNG, JPEG) | Ja | Ja |
| DKB Import von PDF oder Foto (Nutzerberichte) | Ja | Wahrscheinlich |
| Deutsche Bank vorhandene Fotos | Ja | Ja |
| ING Deutschland | Ja | Nicht angegeben |
| Commerzbank | Ja | Nicht angegeben |
| Volksbank / Raiffeisenbank (VR Banking) | Ja | Nicht angegeben |
| N26 | Ja | Nicht angegeben |
| Niederlande | ||
| ING | Ja | Nicht angegeben |
| bunq | Ja | Nicht angegeben |
| Knab | Ja | Nicht angegeben |
| ASN Bank, SNS, RegioBank | Ja | Nicht angegeben |
| Rabobank | Nein | Nein |
| ABN AMRO | Nein | Nein |
| Triodos | Nein | Nein |
| Frankreich | ||
| BNP Paribas, Société Générale, Crédit Agricole und BPCE führen den QR noch ein. Noch nicht zuverlässig. | ||
| Revolut von GloryPay getestet (französisches Konto): Foto vom Bildschirm und PDF-Upload funktionieren | Ja | Ja |
Quelle: Hilfeseiten der Banken, nicht von uns pro App getestet.
Jeder Verkäufer mit einem GloryPay-Konto erhält von GloryPay einen Verkäufercode. Frag ihn über den Support an. Name und IBAN des Verkäufers werden von GloryPay mit dem Code verknüpft und können nie über die API geändert werden.
Bewahre den Code auf deinem Server auf. Setze ihn nie in eine Webseite, eine App oder JavaScript, das Kunden lesen können.
Testcode. Neben dem Verkäufercode gibt es einen Testcode (er beginnt mit gps_test_). Der Verkäufer erstellt ihn im Mitgliederbereich (Webshop & Entwickler), oder du erstellst ihn im Entwickler-Bereich. Mit einem Testcode antwortet die API genau gleich, mit "test": true, aber der QR-Code enthält keinen Zahlungsauftrag, die Zahlungsseite zeigt "TEST · nicht bezahlen" und die Anforderung läuft nach höchstens 1 Stunde ab. Nutze ihn, um deine Integration zu bauen und zu testen, und wechsle dann zum Verkäufercode.
POST https://glorypay.com/api/v1/qr
Authorization: Bearer <Verkäufercode>
Content-Type: application/json
{
"article": "Fotoserie Sommer",
"price": 24.99,
"order": "WC-10452",
"return_url": "https://shop.example/thanks",
"valid_minutes": 1440
}| Feld | Pflicht | Beschreibung |
|---|---|---|
article | ja | Was der Kunde kauft, max. 140 Zeichen. |
price | ja | Betrag in EUR, von 0.01 bis 100000. |
order | nein | Deine Bestellnummer, max. 60 Zeichen. Wird auf der Zahlungsseite angezeigt. |
return_url | nein | https-Link zurück zu deinem Shop, wird auf der Zahlungsseite angezeigt. |
valid_minutes | nein | Von 5 bis 10080 (7 Tage). Standard 1440 (24 Stunden). |
Antwort 201:
{
"id": "Hk7pQ2xZra",
"test": false,
"status": "open",
"article": "Fotoserie Sommer",
"order": "WC-10452",
"amount": "24.99",
"currency": "EUR",
"merchant": "Seller name",
"iban": "BE68539007547034",
"reference": "+++123/4567/89002+++",
"epc": "BCD\n002\n1\nSCT\n...",
"qr_svg": "<svg ...>",
"qr_svg_url": "https://glorypay.com/api/v1/qr/Hk7pQ2xZra/svg",
"payment_url": "https://glorypay.com/p/Hk7pQ2xZra",
"expires_at": "2026-10-19T14:40:00.000Z"
}<img src="{qr_svg_url}" width="280" alt="SEPA QR code"> (optional ?size=120 bis 1000) oder füge qr_svg direkt ein. Der Kunde scannt es mit der Banking-App auf seinem Handy.payment_url. Diese Seite zeigt Kopier-Buttons für IBAN, Betrag und Verwendungszweck, einen Button zum Herunterladen des Zahlungsauftrags als PDF und den QR-Code.Der QR-Code folgt dem europäischen EPC-Standard (SEPA-Überweisung). Banking-Apps füllen Empfänger, IBAN, Betrag und den strukturierten Verwendungszweck automatisch aus.
Das Geld kommt direkt auf das GloryPay-Konto des Verkäufers. Der Verkäufer findet die Zahlung in der GloryPay-App anhand des strukturierten Verwendungszwecks (reference). Eine automatische Zahlungsbestätigung gibt es noch nicht.
GET https://glorypay.com/api/v1/qr/{id} gibt die Anforderung mit ihrem status zurück: open, expired oder cancelled. Nach Ablauf antwortet das Bild mit 410.
| Status | error |
|---|---|
| 401 | missing_seller_code, invalid_seller_code |
| 400 | missing_article, invalid_price, invalid_return_url, invalid_valid_minutes |
| 500 | db_error, try_again |
| 503 | not_configured |
curl -X POST https://glorypay.com/api/v1/qr \
-H "Authorization: Bearer $GLORYPAY_SELLER_CODE" \
-H "Content-Type: application/json" \
-d '{"article":"Fotoserie Sommer","price":24.99,"order":"WC-10452"}'$r = wp_remote_post('https://glorypay.com/api/v1/qr', [
'headers' => [
'Authorization' => 'Bearer ' . GLORYPAY_SELLER_CODE,
'Content-Type' => 'application/json',
],
'body' => wp_json_encode([
'article' => $product_name,
'price' => $order_total,
'order' => $order_id,
'return_url' => $thank_you_url,
]),
]);
$qr = json_decode(wp_remote_retrieve_body($r), true);
echo '<img src="' . esc_url($qr['qr_svg_url']) . '" width="280" alt="SEPA QR code">';
echo '<a href="' . esc_url($qr['payment_url']) . '">Mit deiner Banking-App zahlen</a>';const res = await fetch("https://glorypay.com/api/v1/qr", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.GLORYPAY_SELLER_CODE}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ article: "Fotoserie Sommer", price: 24.99, order: "WC-10452" }),
});
const qr = await res.json(); // qr.qr_svg_url, qr.payment_url, qr.referencevar body = """
{"article":"Fotoserie Sommer","price":24.99,"order":"WC-10452"}""";
var req = HttpRequest.newBuilder(URI.create("https://glorypay.com/api/v1/qr"))
.header("Authorization", "Bearer " + System.getenv("GLORYPAY_SELLER_CODE"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
var res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
// res.statusCode() == 201, res.body() enthält qr_svg_url, payment_url und referenceimport os, requests
r = requests.post(
"https://glorypay.com/api/v1/qr",
headers={"Authorization": f"Bearer {os.environ['GLORYPAY_SELLER_CODE']}"},
json={"article": "Fotoserie Sommer", "price": 24.99, "order": "WC-10452"},
timeout=20,
)
qr = r.json() # qr["qr_svg_url"], qr["payment_url"], qr["reference"]