API pour votre propre logiciel
Java, PHP, Node.js, Python ou tout site avec son propre backend (aussi derrière nginx). Un seul appel : POST /api/v1/qr avec l'article et le prix.
Affichez un QR code SEPA pour un article et un prix. Votre client le scanne avec son app bancaire et paie par virement, directement sur le compte GloryPay du vendeur.
Choisissez ce qui convient à votre boutique. Chaque option crée le même QR code SEPA, et l'argent arrive directement sur le compte GloryPay du vendeur.
Le QR GloryPay suit la norme européenne EPC (virement SEPA). Voici où en sont les apps bancaires aujourd'hui. (état au 19/10/2026)
Caméra: scanne le QR d'un autre écran ou d'un papier. Même téléphone: lit le QR d'un PDF ou d'une image sur le téléphone même.
| Banque | Caméra | Même téléphone |
|---|---|---|
| Belgique | ||
| KBC / KBC Brussels partager le PDF vers KBC Mobile (SmartPaste) | Oui | Oui |
| BNP Paribas Fortis (Easy Banking App) | Oui | Non précisé |
| Belfius | Oui | Non précisé |
| ING België | Inconnu | Inconnu |
| Argenta | Inconnu | Inconnu |
| Allemagne · appelé "GiroCode" là-bas | ||
| Sparkasse Fotoüberweisung > Importieren (PDF, PNG, JPEG) | Oui | Oui |
| DKB import de PDF ou photo (retours d'utilisateurs) | Oui | Probablement |
| Deutsche Bank photos existantes | Oui | Oui |
| ING Deutschland | Oui | Non précisé |
| Commerzbank | Oui | Non précisé |
| Volksbank / Raiffeisenbank (VR Banking) | Oui | Non précisé |
| N26 | Oui | Non précisé |
| Pays-Bas | ||
| ING | Oui | Non précisé |
| bunq | Oui | Non précisé |
| Knab | Oui | Non précisé |
| ASN Bank, SNS, RegioBank | Oui | Non précisé |
| Rabobank | Non | Non |
| ABN AMRO | Non | Non |
| Triodos | Non | Non |
| France | ||
| BNP Paribas, Société Générale, Crédit Agricole et BPCE introduisent encore le QR. Pas encore fiable. | ||
| Revolut testé par GloryPay (compte français) : photo de l'écran et import du PDF fonctionnent | Oui | Oui |
Source : pages d'aide des banques, pas testé par nous app par app.
Chaque vendeur avec un compte GloryPay reçoit un code vendeur de GloryPay. Demandez-le via le support. Le nom et l'IBAN du vendeur sont liés au code par GloryPay et ne peuvent jamais être modifiés via l'API.
Gardez le code sur votre serveur. Ne le mettez jamais dans une page web, une app ou du JavaScript lisible par les clients.
Code de test. À côté du code vendeur, il existe un code de test (il commence par gps_test_). Le vendeur le crée dans l'espace membre (Boutique en ligne & développeurs), ou vous le créez dans l'espace développeur. Avec un code de test, l'API répond exactement de la même façon, avec "test": true, mais le QR code ne contient pas d'ordre de paiement, la page de paiement affiche "TEST · ne pas payer" et la demande expire après 1 heure au maximum. Utilisez-le pour construire et tester votre intégration, puis passez au code vendeur.
POST https://glorypay.com/api/v1/qr
Authorization: Bearer <code vendeur>
Content-Type: application/json
{
"article": "Série photo Été",
"price": 24.99,
"order": "WC-10452",
"return_url": "https://shop.example/thanks",
"valid_minutes": 1440
}| Champ | Obligatoire | Description |
|---|---|---|
article | oui | Ce que le client achète, 140 caractères max. |
price | oui | Montant en EUR, de 0.01 à 100000. |
order | non | Votre numéro de commande, 60 caractères max. Affiché sur la page de paiement. |
return_url | non | Lien https vers votre boutique, affiché sur la page de paiement. |
valid_minutes | non | De 5 à 10080 (7 jours). Par défaut 1440 (24 heures). |
Réponse 201 :
{
"id": "Hk7pQ2xZra",
"test": false,
"status": "open",
"article": "Série photo Été",
"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"> (en option ?size=120 à 1000), ou insérez directement qr_svg. Le client la scanne avec l'app bancaire de son téléphone.payment_url. Cette page affiche des boutons pour copier l'IBAN, le montant et la communication, un bouton pour télécharger l'ordre de paiement en PDF, et le QR code.Le QR code suit la norme européenne EPC (virement SEPA). Les apps bancaires remplissent automatiquement le bénéficiaire, l'IBAN, le montant et la communication structurée.
L'argent arrive directement sur le compte GloryPay du vendeur. Le vendeur retrouve le paiement dans l'app GloryPay grâce à la communication structurée (reference). La confirmation automatique du paiement n'est pas encore disponible.
GET https://glorypay.com/api/v1/qr/{id} renvoie la demande avec son status : open, expired ou cancelled. Après expiration, l'image renvoie 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":"Série photo Été","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']) . '">Payer avec votre app bancaire</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: "Série photo Été", price: 24.99, order: "WC-10452" }),
});
const qr = await res.json(); // qr.qr_svg_url, qr.payment_url, qr.referencevar body = """
{"article":"Série photo Été","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() contient qr_svg_url, payment_url et referenceimport os, requests
r = requests.post(
"https://glorypay.com/api/v1/qr",
headers={"Authorization": f"Bearer {os.environ['GLORYPAY_SELLER_CODE']}"},
json={"article": "Série photo Été", "price": 24.99, "order": "WC-10452"},
timeout=20,
)
qr = r.json() # qr["qr_svg_url"], qr["payment_url"], qr["reference"]