HTTP et JSON. Pas de SDK à installer, pas de bibliothèque à tenir à jour.
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.
| Méthode | Chemin | Ce que ça fait | Périmètre |
|---|---|---|---|
| POST | /payment_intents | Crée un paiement et une adresse de paiement | payment_intents:create |
| GET | /payment_intents | Les derniers paiements de l'application | payment_intents:read |
| GET | /payment_intents/{id} | L'état autoritatif d'un paiement | payment_intents:read |
| POST | /payment_intents/{id}/cancel | Annule un paiement encore annulable | payment_intents:write |
| POST | /payment_intents/{id}/capture | Capture un paiement réservé (capture manuelle) | payment_intents:write |
| POST | /refunds | Rembourse tout ou partie d'un paiement | refunds:create |
| GET | /refunds/{id} | L'état d'un remboursement | refunds:read |
| POST | /payment_links | Crée un lien de paiement partageable | payment_links:create |
| GET | /payment_methods | Les moyens réellement disponibles ici et maintenant | payment_intents:read |
Description machine complète : /openapi.json (OpenAPI 3.1).
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.
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.| Statut | Ce que ça veut dire |
|---|---|
requires_payment_method | Créé, en attente d'un choix du client. |
requires_action | Une vérification supplémentaire est demandée au client. |
processing | En cours chez nous. |
provider_pending | Le rail a accepté et n'a pas encore conclu. |
provider_unknown | Réponse ambiguë. L'argent peut avoir bougé : on réconcilie, on ne redemande RIEN au client. |
succeeded | Encaissé. C'est définitif, hors remboursement. |
failed | Échec constaté. Rien n'a été débité. |
cancelled | Annulé avant paiement. |
expired | Le délai est passé sans paiement. |
partially_refunded / refunded | Tout ou partie du montant est revenu au client. |
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.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:createpayment_intents:readpayment_intents:writerefunds:createrefunds:readcustomers:readpayment_links:createpayment_links:readwebhooks:manage