Developers

GloryPay QR API

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.

Façons d'utiliser GloryPay QR

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.

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.

Lire la documentation de l'API

Plugin WooCommerce

Pour les boutiques WordPress. Ajoute le moyen de paiement GloryPay QR au checkout et affiche le QR code sur la page de remerciement.

Télécharger glorypay-qr.zip

Module PrestaShop en test

Pour PrestaShop 1.7.7, 8 et 9. La commande reçoit le statut "En attente du paiement GloryPay QR" et la page de confirmation affiche le QR code.

Télécharger glorypayqr.zip

Boutique de démo

Découvrez le checkout du côté du client : choisissez un produit, payez par QR et voyez ce que voit votre client.

Ouvrir la boutique de démo

Accès : code vendeur

GloryPay crée un code vendeur après vérification du nom et de l'IBAN du vendeur. Utilisez-le uniquement sur votre serveur, jamais dans une page web ou une app.

Demander un code vendeur

Espace développeur

Invité par un vendeur ? Connectez-vous pour voir son code vendeur et son code de test, le journal de vos requêtes API, les plugins et les apps bancaires qui lisent le QR code.

Ouvrir l'espace développeur

Quelles apps bancaires lisent le QR code ?

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.

BanqueCaméraMême téléphone
Belgique
KBC / KBC Brussels
partager le PDF vers KBC Mobile (SmartPaste)
OuiOui
BNP Paribas Fortis (Easy Banking App)OuiNon précisé
BelfiusOuiNon précisé
ING BelgiëInconnuInconnu
ArgentaInconnuInconnu
Allemagne · appelé "GiroCode" là-bas
Sparkasse
Fotoüberweisung > Importieren (PDF, PNG, JPEG)
OuiOui
DKB
import de PDF ou photo (retours d'utilisateurs)
OuiProbablement
Deutsche Bank
photos existantes
OuiOui
ING DeutschlandOuiNon précisé
CommerzbankOuiNon précisé
Volksbank / Raiffeisenbank (VR Banking)OuiNon précisé
N26OuiNon précisé
Pays-Bas
INGOuiNon précisé
bunqOuiNon précisé
KnabOuiNon précisé
ASN Bank, SNS, RegioBankOuiNon précisé
RabobankNonNon
ABN AMRONonNon
TriodosNonNon
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
OuiOui

Source : pages d'aide des banques, pas testé par nous app par app.

Conseil pour votre client sur téléphone

  1. Les boutons copier (IBAN, montant, communication) fonctionnent avec toutes les banques.
  2. "Télécharger l'ordre de paiement (PDF)" fonctionne avec KBC, Revolut, Sparkasse, Deutsche Bank et probablement DKB.
  3. Le QR code sert à payer avec un second appareil ou sur un ordinateur.

1. Obtenir un code vendeur

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.

2. Créer un QR code

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
}
ChampObligatoireDescription
articleouiCe que le client achète, 140 caractères max.
priceouiMontant en EUR, de 0.01 à 100000.
ordernonVotre numéro de commande, 60 caractères max. Affiché sur la page de paiement.
return_urlnonLien https vers votre boutique, affiché sur la page de paiement.
valid_minutesnonDe 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"
}

3. L'afficher à votre client

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.

4. Vérifier le paiement

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.

Erreurs

Statuserror
401missing_seller_code, invalid_seller_code
400missing_article, invalid_price, invalid_return_url, invalid_valid_minutes
500db_error, try_again
503not_configured

Exemples

curl

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"}'

PHP (WordPress / WooCommerce)

$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>';

Node.js

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.reference

Java (11+)

var 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 reference

Python

import 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"]