7. Liens de paiement

Encaissez sans coder : chaque particulier dispose d'un lien permanent à montant libre et d'un QR code. Vous pouvez aussi créer des liens à montant fixe. Le client paie sur la page hébergée par Kratos Pay, par Mobile Money ou par carte si le moyen est autorisé.

Lien permanent

GET/payment-links/staticJeton de session

Retourne votre lien permanent : public_url, qr_code_svg, qr_code_url.

Créer un lien pour une cause précise

POST/personal/payment-linksJeton de session

Pour une cagnotte, une facture… Autorisez les moyens de paiement voulus dans allowed_providers.

Corps de la requête
{
  "title": "Cagnotte anniversaire",
  "description": "Participation au cadeau",
  "amount": 5000,
  "currency": "XAF",
  "is_amount_fixed": true,
  "allowed_providers": [
    "orange_money_cm",
    "mtn_momo_cm"
  ],
  "redirect_url": "https://monsite.com/merci",
  "expires_at": "2026-12-31T23:59:59Z",
  "max_uses": 100
}
Réponse 201 (extrait)
{
  "success": true,
  "data": {
    "uuid": "b2c3d4e5-...",
    "slug": "cagnotte-anniversaire-xkf72a",
    "title": "Cagnotte anniversaire",
    "amount": "5000.00",
    "currency": "XAF",
    "is_amount_fixed": true,
    "status": "active",
    "use_count": 0,
    "max_uses": 100,
    "public_url": "https://payment.kratospay.com/cagnotte-anniversaire-xkf72a",
    "images": []
  },
  "meta": {
    "request_id": "...",
    "timestamp": "..."
  }
}
  • États d'un lien (status) : active, disabled, expired, max_uses_reached. Liste : GET /personal/payment-links.
  • Erreurs : 400/422 si le montant manque pour un lien fixe, ou si un réseau de allowed_providers n'existe pas.

Ce que fait la page de paiement

Pour information, ou si vous créez votre propre page de paiement :

RouteRôleRéponses
GET /public/payment-links/{slug}Affiche le lien. Répond 200 même si le lien est indisponible (is_available: false + unavailable_reason : disabled, expired ou max_uses_reached).200, 404 si slug inconnu
POST /public/payment-links/{slug}/transactionsCrée le paiement du client (provider, phone_number, amount, idempotency_key). amount n'est obligatoire que si le lien est à montant libre.201 (pending), 404, 422 (lien indisponible, réseau non autorisé, montant manquant)
GET /public/transactions/{uuid}/statusAttente du résultat : reste ouverte jusqu'à 20 s tant que le statut est pending ; à rappeler immédiatement.200 : { uuid, status, amount, currency, provider }