Liens de paiement
Un lien de paiement ouvre une page sécurisée d'Integral Pay où votre client choisit son moyen de paiement et confirme. Vous le partagez par SMS, WhatsApp, e-mail ou sur vos réseaux, ou vous y redirigez vos clients depuis votre site.
Ventes sur les réseaux sociaux, factures ponctuelles, cotisations, dons, et boutiques en ligne (voir Retour sur votre site).
Sans développement
Dans votre espace, rubrique Liens de paiement, cliquez sur Ajouter : titre, montant fixe ou libre, date d'expiration éventuelle. L'adresse du lien s'affiche après l'enregistrement, prête à être partagée.
Par l'API
POST /api/v1/pay-links/
| Champ | Type | Obligatoire | Règle |
|---|---|---|---|
title | texte | non | Titre affiché au client |
description | texte | non | 255 caractères au maximum |
is_amount_fixed | booléen | non | true : montant imposé ; false (défaut) : le client saisit le montant |
fixed_amount | décimal | si montant fixe | Entier, de 100 à 2 000 000 XOF |
expires_at | date | non | ISO 8601, dans le futur ; absent : lien permanent |
redirect_url | texte | non | Adresse https:// de retour après le paiement (détails) |
metadata | objet | non | JSON de 4 000 caractères au maximum, renvoyé dans les webhooks |
La devise est toujours celle de votre projet (XOF) ; les moyens de paiement proposés sont ceux actifs pour votre projet.
- Python
- Node.js
- PHP
- cURL
resp = session.post(f"{API_BASE}/pay-links/", json={
"title": "Abonnement mensuel",
"is_amount_fixed": True,
"fixed_amount": "5000",
"metadata": {"customer_id": "C-42"},
}, timeout=30)
resp.raise_for_status()
payment_url = resp.json()["payment_url"]
const { status, data } = await api('POST', '/pay-links/', {
title: 'Abonnement mensuel',
is_amount_fixed: true,
fixed_amount: '5000',
metadata: { customer_id: 'C-42' },
});
const paymentUrl = data.payment_url;
$response = $client->post('pay-links/', ['json' => [
'title' => 'Abonnement mensuel',
'is_amount_fixed' => true,
'fixed_amount' => '5000',
'metadata' => ['customer_id' => 'C-42'],
]]);
$paymentUrl = json_decode($response->getBody(), true)['payment_url'];
curl -X POST https://integralpay.tech/api/v1/pay-links/ \
-H "X-Api-Key: $INTEGRALPAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Abonnement mensuel", "is_amount_fixed": true, "fixed_amount": "5000"}'
Réponse · 201 Created
{
"id": "3f2d1a4b-8c6e-4f1a-9b2d-5e7c8a9b0c1d",
"merchant": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"token": "Yd8PxPQh3KpL2mN7qR4tVw",
"payment_url": "https://integralpay.tech/pay/Yd8PxPQh3KpL2mN7qR4tVw/",
"title": "Abonnement mensuel",
"description": "",
"currency": "XOF",
"is_amount_fixed": true,
"fixed_amount": "5000.00",
"is_active": true,
"expires_at": null,
"redirect_url": "",
"metadata": {"customer_id": "C-42"},
"sessions_count": 0,
"created_at": "2026-11-06T10:15:30Z",
"updated_at": "2026-11-06T10:15:30Z"
}
GET /api/v1/pay-links/ liste vos liens ; GET /api/v1/pay-links/{id}/ en renvoie un. sessions_count compte les visites de la page de paiement.
Être notifié des paiements
Un lien seul ne prévient pas votre système. Pour enregistrer automatiquement chaque paiement, configurez un webhook : chaque paiement fait par un lien y est envoyé avec link_title et link_metadata, les données que vous avez données au lien.