Développeurs

Une API que votre équipe va vraiment apprécier

REST prévisible, clés d'idempotence, webhooks signés et une sandbox avec rails simulés pour intégrer de bout en bout avant de déplacer le moindre franc.

Créer un compte
Pensé pour les développeurs

Votre premier encaissement en une requête

Du REST propre, une enveloppe JSON prévisible et un identifiant de requête sur chaque réponse. La sandbox reflète la production : même API, mêmes statuts, mêmes webhooks.

  • Clés sandbox et production, limitées par application
  • Webhooks signés HMAC avec protection anti-rejeu
  • Clés d'idempotence sur chaque appel qui déplace de l'argent
  • Des erreurs typées qui disent exactement quoi corriger
  • Specification OpenAPI, collection Postman et llms.txt, tous publies
  • Sessions de checkout hébergées et callbacks à plat pour les connecteurs CRM, ERP et boutiques
POST /v1/collections
curl https://api.capayglobal.com/v1/collections \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: 9f1c-collect-01" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "2500",
    "currency": "XAF",
    "country": "CM",
    "method": "mobile_money",
    "msisdn": "2376XXXXXXXX",
    "merchant_reference": "order-1042"
  }'
201 Created
{
  "status": "success",
  "data": {
    "id": "col_9xKQ2mD41Vb8",
    "object": "collection",
    "status": "pending",
    "amount": "2500",
    "currency": "XAF",
    "country": "CM",
    "method": "mobile_money",
    "merchant_reference": "order-1042",
    "fees": {
      "platform_fee": "50",
      "provider_fee": "0",
      "total_fee": "50",
      "bearer": "merchant"
    },
    "net_amount": null,
    "livemode": false,
    "created_at": "2026-08-30T12:04:11Z"
  },
  "request_id": "req_b0f3d2c1"
}

Votre premier encaissement

Une requete cree une intention de paiement, renvoie un identifiant de requete et, pour le mobile money, envoie l'invite sur le telephone du payeur. Le bac a sable se comporte exactement comme la production.

Obtenir vos cles de testCreez un compte et les cles du bac a sable apparaissent immediatement sur votre page developpeur. Les cles de production s'ouvrent apres la verification de l'entreprise.
POST /v1/collections
curl -X POST https://api.capayglobal.com/v1/collections \
  -H "Authorization: Bearer sk_test_XXXXXXXXXXXX" \
  -H "Idempotency-Key: col-order-10482-a1b2c3" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "5000",
    "currency": "XAF",
    "country": "CM",
    "method": "mobile_money",
    "msisdn": "+237650000001",
    "merchant_reference": "order-10482"
  }'
Reponse
{
  "status": "success",
  "data": {
    "id": "col_7Qm3k1Xa9Zr4",
    "object": "collection",
    "status": "pending",
    "amount": "5000",
    "currency": "XAF",
    "auth_model": "STK_PROMPT",
    "livemode": false
  },
  "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
201 Created
Les montants sont des chaines decimales a la frontiere de l'API et des sous dans le grand livre : rien n'est perdu en virgule flottante. Chaque appel qui deplace de l'argent accepte une cle d'idempotence et chaque reponse porte un identifiant de requete que vous pouvez citer au support.

SDK serveur

Des enveloppes fines et typees autour de la meme API REST, avec l'idempotence et la verification de signature integrees.

TypeScript and NodePublication imminente@capay/sdk
Import
import { Capay } from '@capay/sdk';

Pas encore sur npm. La ligne d'import ci-dessus est définitive : votre intégration ne changera pas lors de la publication.

Lire le guide
PythonPublication imminentecapay
Import
from capay import Capay

Pas encore sur PyPI. La ligne d'import ci-dessus est définitive : votre intégration ne changera pas lors de la publication.

Lire le guide
PHPPublication imminentecapay/capay-php
Import
use Capay\CapayClient;

Pas encore sur Packagist. La ligne d'import ci-dessus est définitive : votre intégration ne changera pas lors de la publication.

Lire le guide

Verifiez chaque webhook

Les signatures sont calculees sur le corps brut et comparees en temps constant, et un horodatage plus vieux que 300 secondes est rejete. Ne faites jamais confiance a un webhook que vous n'avez pas verifie.

X-Capay-Signature
# T is the t= value from X-Capay-Signature; delivery.json is the raw body as received.
T=1767225600
SECRET=whsec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

{ printf '%s.' "$T"; cat delivery.json; } \
  | openssl dgst -sha256 -hmac "$SECRET" -r | cut -d' ' -f1
# Compare the printed hex with each v1= value in the header (either may match
# during a secret rotation), and reject the delivery if |now - T| > 300 s.
En-tete de signature
X-Capay-Signature: t=1767225600,v1=6f8b4c2d9e0a1b3c5d7e9f0a2b4c6d8e0f1a3b5c7d9e1f0a2b4c6d8e0f1a3b5c
X-Capay-Event-Id: evt_2n4Kq8Zr41Xa
X-Capay-Event-Type: collection.completed
Livraison et reessais

Une livraison echouee est reessayee selon un calendrier fixe : 1m, 5m, 30m, 2h, 6h, 12h, 24h, 24h. Un point de terminaison qui echoue 8 fois de suite est desactive et vous en etes informe : un point mort n'avale jamais des evenements en silence.

Deux secrets de signature peuvent etre actifs en meme temps : vous pouvez donc tourner vos cles sans perdre un evenement. Rejetez tout ce qui sort de la fenetre de 300 secondes et stockez l'identifiant d'evenement pour rendre les rejeux inoffensifs.

Le reste de la boite a outils

Des specifications lisibles par machine, une collection a importer, et les outils qui les lisent.

llms.txtToute la documentation aplatie pour les assistants de code, pour que votre IA reponde sur notre API a partir de notre texte.Specification OpenAPILe contrat complet, genere depuis l'API. Importez-le pour construire un client dans n'importe quel langage.Collection PostmanChaque endpoint avec des corps d'exemple et des variables d'environnement, pret a tourner sur le bac a sable.
Ligne de commandeA venirCreez des paiements de test, suivez les evenements et rejouez un webhook vers votre machine locale.@capay/cli
Serveur MCPA venirDonnez a votre assistant de code un acces en lecture a votre bac a sable pour qu'il reponde avec vos vraies donnees.@capay/mcp
Script de paiementA venirOuvrez la page de paiement hebergee dans une fenetre modale sur votre propre page au lieu de rediriger.https://pay.capayglobal.com/capay.js

Commencez à encaisser en Afrique dès aujourd'hui

Créez un compte gratuit, développez sur la sandbox et passez en production après vérification.

Créer un compte

Parlez-nous de vos corridors et de vos volumes à tout moment.