FedCheckout
AccueilDocumentationTableau de bord

Démarrer

Vue d'ensembleMode test

Intégrer

Référence de l'APIWebhooksMoyens de paiement

Référence

Codes d'erreurJournal des versions

Référence de l'API

HTTP et JSON. Pas de SDK à installer, pas de bibliothèque à tenir à jour.

Adresse et authentification

https://checkout.fedtopup.com/api/v1
Authorization: Bearer fco_live_…

Chaque réponse porte un FedCheckout-Request-Id : garde-le, c'est ce qui permet de retrouver la requête dans tes journaux comme dans les nôtres.

Points d'entrée

MéthodeCheminCe que ça faitPérimètre
POST/payment_intentsCrée un paiement et une adresse de paiementpayment_intents:create
GET/payment_intentsLes derniers paiements de l'applicationpayment_intents:read
GET/payment_intents/{id}L'état autoritatif d'un paiementpayment_intents:read
POST/payment_intents/{id}/cancelAnnule un paiement encore annulablepayment_intents:write
POST/payment_intents/{id}/captureCapture un paiement réservé (capture manuelle)payment_intents:write
POST/refundsRembourse tout ou partie d'un paiementrefunds:create
GET/refunds/{id}L'état d'un remboursementrefunds:read
POST/payment_linksCrée un lien de paiement partageablepayment_links:create
GET/payment_methodsLes moyens réellement disponibles ici et maintenantpayment_intents:read

Description machine complète : /openapi.json (OpenAPI 3.1).

Idempotence

L'en-tête Idempotency-Key est accepté sur la création d'un paiement et obligatoire sur un remboursement. Rejouer exactement la même requête rend exactement le même objet — jamais un second débit, jamais un second remboursement. C'est aussi ce qui rend un nouvel essai sûr après une coupure réseau.

Réutiliser une clé avec un contenu différent est une erreur d'intégration, pas une création : FedCheckout répond IDEMPOTENCY_CONFLICT (HTTP 409) plutôt que de rendre l'objet de la première requête, qui ne correspondrait pas à ce que tu viens de demander.

Statuts d'un paiement

StatutCe que ça veut dire
requires_payment_methodCréé, en attente d'un choix du client.
requires_actionUne vérification supplémentaire est demandée au client.
processingEn cours chez nous.
provider_pendingLe rail a accepté et n'a pas encore conclu.
provider_unknownRéponse ambiguë. L'argent peut avoir bougé : on réconcilie, on ne redemande RIEN au client.
succeededEncaissé. C'est définitif, hors remboursement.
failedÉchec constaté. Rien n'a été débité.
cancelledAnnulé avant paiement.
expiredLe délai est passé sans paiement.
partially_refunded / refundedTout ou partie du montant est revenu au client.
Ne traite jamais un délai dépassé comme un échec. Si tu reçois provider_unknown, ne relance pas le paiement : interroge GET /payment_intents/{id} ou attends le webhook. FedCheckout tranche tout seul, et rend l'argent si rien n'a abouti.

Périmètres d'une clé

Une clé ne porte que ce dont elle a besoin. Une clé qui n'a pas le périmètre demandé reçoit INSUFFICIENT_SCOPE.

  • payment_intents:create
  • payment_intents:read
  • payment_intents:write
  • refunds:create
  • refunds:read
  • customers:read
  • payment_links:create
  • payment_links:read
  • webhooks:manage

POST /payment_intents

curl https://checkout.fedtopup.com/api/v1/payment_intents \
  -H "Authorization: Bearer $FEDCHECKOUT_SECRET_KEY" \
  -H "Idempotency-Key: commande-7781" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "500.00",
    "currency": "GDS",
    "description": "Commande 7781",
    "external_reference": "ORD-7781",
    "return_url": "https://ton-site.com/merci"
  }'

Réponse 201

{
  "id": "fpay_pi_8K2M…",
  "object": "payment_intent",
  "status": "requires_payment_method",
  "amount": "500.000000",
  "currency": "GDS",
  "mode": "test",
  "capture_method": "automatic",
  "description": "Commande 7781",
  "created_at": "2026-09-21T13:04:11Z",
  "expires_at": "2026-09-21T14:04:11Z",
  "checkout_url": "https://checkout.fedtopup.com/pay/fpay_cs_…"
}
FedCheckout — une infrastructure de paiement de Fed Digital, Gonaïves, Haïti.
DocumentationConditionsConfidentialitéRemboursementsFedTopUp