API FATHPAY v1
REST · JSON · TLS · Bearer token · idempotence native · rate-limit 60 rpm.
Base URL
https://fathpay.app/api/public/v1Deux environnements selon votre clé : fp_test_… = Sandbox, fp_live_… = Live.
Authentification
Toutes les requêtes (sauf /health) requièrent un header :
Authorization: Bearer fp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGénérez vos clés depuis votre tableau de bord. La clé n'est affichée qu'une seule fois — elle est stockée hashée (SHA-256) côté serveur.
Sécurité
- TLS 1.2+ obligatoire.
- Clés hashées (SHA-256) — impossibles à récupérer en clair.
- Révocation immédiate depuis le dashboard.
- Rate-limit : 60 requêtes/minute par clé (30 sur les écritures).
- Idempotence : header
Idempotency-Keysur les POST sensibles. - Webhooks signés HMAC-SHA256.
- Logs d'accès horodatés et IP traçable.
GET /health
Vérifie l'état du service. Pas d'auth.
curl https://fathpay.app/api/public/v1/health{ "ok": true, "service": "fathpay-api", "version": "v1", "time": "..." }GET /me
Retourne le profil associé à la clé API.
curl https://fathpay.app/api/public/v1/me \
-H "Authorization: Bearer fp_live_..."{
"ok": true,
"environment": "live",
"profile": {
"id": "uuid", "username": "string", "email": "string",
"first_name": "string", "last_name": "string",
"country": "SN", "kyc_status": "approved"
}
}GET /wallets
Liste vos wallets multi-devises (XOF, EUR, USD).
curl https://fathpay.app/api/public/v1/wallets -H "Authorization: Bearer fp_live_..."{
"ok": true,
"wallets": [
{ "id": "uuid", "currency": "XOF", "balance": 125000.00 },
{ "id": "uuid", "currency": "EUR", "balance": 42.50 },
{ "id": "uuid", "currency": "USD", "balance": 0.00 }
]
}GET /transactions
Historique paginé. Paramètres : limit (1-100, def 25), cursor (ISO date), type.
curl "https://fathpay.app/api/public/v1/transactions?limit=20&type=deposit" \
-H "Authorization: Bearer fp_live_..."{
"ok": true,
"transactions": [
{
"id": "uuid", "type": "deposit", "status": "completed",
"currency": "EUR", "amount": 50.00, "fee": 1.00,
"net_amount": 49.00, "reference": "LEEK-...",
"created_at": "2026-05-09T01:23:00Z"
}
],
"next_cursor": "2026-05-09T01:23:00Z"
}POST /transfers
Envoie de l'argent vers un utilisateur FATHPAY (par username). En sandbox, la requête est simulée et ne déplace aucun fonds.
curl -X POST https://fathpay.app/api/public/v1/transfers \
-H "Authorization: Bearer fp_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: tx-2026-05-09-001" \
-d '{
"to_username": "amadou",
"currency": "XOF",
"amount": 5000
}'{ "ok": true, "reference": "API-TRF-..." }Erreurs : insufficient_funds (402), recipient_not_found (404), rate_limited (429).
Webhooks de paiement (entrants)
FATHPAY reçoit les notifications de paiement de sa passerelle sur un endpoint privé sécurisé. La signature est vérifiée via HMAC-SHA256 du body. Tout événement non signé est rejeté en 401 et journalisé.
Codes d'erreur
unauthorized401 — clé manquante/invalide/révoquéeinvalid_request422 — corps mal formé (Zod)insufficient_funds402 — solde insuffisantrecipient_not_found404rate_limited429 — trop de requêtesinvalid_json400
SDK & Support
Support développeur : dev@fathpay.app · WhatsApp +221 78 454 88 46.
SDK officiels (JS, Node, PHP, Python) en cours — l'API REST reste la source de vérité.