Pont · Documentation
RéférenceAPI

Paiements

Encaisser un client et le rembourser.

Créer un paiement

POST
/v1/payments

Authorization

ApiKey
headerAuthorizationBearer <token>

PONT_API_KEY, pour les routes /v1.

Header Parameters

Idempotency-Key?string

Clé d'idempotence (8 à 255 caractères). Sans elle, Pont utilise auto:<type>:<reference>.

Length8 <= length <= 255

Request Body

application/json
  1. body
amount*integer

Montant en unités entières de la devise.

Range1 <= value
currency*Currency

Devise : le XOF et le XAF n'ont pas de décimales, les montants sont des entiers.

Value in"XOF""XAF"
country*Country

Pays (ISO 3166-1 alpha-2).

Value in"BJ""TG""CI""SN""BF""ML""NE""GN""CM""CG""CD""GA"
customer*
reference*string

Votre référence (commande, facture), 1 à 64 caractères. Sert aussi de clé d'idempotence par défaut.

Length1 <= length <= 64
method?string

Moyen de paiement.

Value in"mobile_money""card"
operator?Operator

Opérateur Mobile Money (<opérateur>_<pays>), indépendant des codes des agrégateurs.

Value in"mtn_bj""moov_bj""celtiis_bj""moov_tg""tmoney_tg""mtn_ci""orange_ci""moov_ci""wave_ci""orange_sn""free_sn""wave_sn""expresso_sn""wizall_sn""orange_bf""moov_bf""orange_ml""moov_ml""mtn_cm""orange_cm""mtn_cg""airtel_cg""airtel_ga"
description?string

Libellé affiché au client, 255 caractères au plus.

Lengthlength <= 255
returnUrl?string

Adresse où ramener le client après un paiement hébergé.

Formaturi
metadata?

Métadonnées libres, renvoyées dans les réponses et les webhooks.

preAuthorisationCode?string

Code à usage unique généré avant le paiement (Orange Burkina via PawaPay) : 1 à 36 caractères alphanumériques.

Match^[A-Za-z0-9]{1,36}$

Response Body

Paiement créé.

application/json
  1. response
id*string

Identifiant Pont.

mode*string

Mode du serveur au moment de la création.

Value in"test""live"
country*string

Pays (ISO 3166-1 alpha-2).

Value in"BJ""TG""CI""SN""BF""ML""NE""GN""CM""CG""CD""GA"
currency*Currency

Devise : le XOF et le XAF n'ont pas de décimales, les montants sont des entiers.

Value in"XOF""XAF"
provider*string

Agrégateur choisi par Pont (fedapay, pawapay, paydunya, kkiapay, sandbox ou un agrégateur personnalisé).

attemptId*string

Identifiant unique de la tentative, transmis à l'agrégateur quand il l'accepte.

providerRef*|null
failureCode*|null
needsReconciliation*boolean

true quand l'état réel chez l'agrégateur est inconnu : Pont vérifie à chaque cycle, ne réessaie jamais ailleurs.

metadata*

Vos métadonnées libres (valeurs de 500 caractères au plus).

createdAt*integer

Date de création, en millisecondes Unix.

updatedAt*integer

Dernière mise à jour, en millisecondes Unix.

status*PaymentStatus

Statut normalisé d'un paiement. Seul succeeded est vérifié auprès de l'agrégateur.

Value in"created""pending""processing""succeeded""failed""expired""cancelled""refunded""partially_refunded"
amount*integer

Montant en unités entières.

operator*|null
reference*string

Votre référence.

nextAction*||||null
curl -X POST 'http://localhost:8787/v1/payments' \  -H 'Content-Type: application/json' \  -d '{  "amount": 5000,  "currency": "XOF",  "country": "BJ",  "customer": {    "phone": "+2290100000001"  },  "reference": "commande-42"}'
{  "id": "pay_84a49a19050240ebb01077bdb806c672",  "mode": "test",  "status": "pending",  "amount": 5000,  "currency": "XOF",  "country": "BJ",  "provider": "sandbox",  "attemptId": "466a0f26-3cde-4876-938e-1e97db9e4c17",  "providerRef": "sbx_466a0f26-3cde-4876-938e-1e97db9e4c17",  "operator": null,  "reference": "commande-42",  "nextAction": {    "type": "await_customer",    "message": "Validez le paiement sur votre téléphone (simulation)."  },  "failureCode": null,  "needsReconciliation": false,  "metadata": {},  "createdAt": 1792000000000,  "updatedAt": 1792000000000}

Lire un paiement

GET
/v1/payments/{id}

Authorization

ApiKey
headerAuthorizationBearer <token>

PONT_API_KEY, pour les routes /v1.

Path Parameters

id*string

Identifiant Pont du paiement (pay_…).

Response Body

Le paiement.

application/json
  1. response
id*string

Identifiant Pont.

mode*string

Mode du serveur au moment de la création.

Value in"test""live"
country*string

Pays (ISO 3166-1 alpha-2).

Value in"BJ""TG""CI""SN""BF""ML""NE""GN""CM""CG""CD""GA"
currency*Currency

Devise : le XOF et le XAF n'ont pas de décimales, les montants sont des entiers.

Value in"XOF""XAF"
provider*string

Agrégateur choisi par Pont (fedapay, pawapay, paydunya, kkiapay, sandbox ou un agrégateur personnalisé).

attemptId*string

Identifiant unique de la tentative, transmis à l'agrégateur quand il l'accepte.

providerRef*|null
failureCode*|null
needsReconciliation*boolean

true quand l'état réel chez l'agrégateur est inconnu : Pont vérifie à chaque cycle, ne réessaie jamais ailleurs.

metadata*

Vos métadonnées libres (valeurs de 500 caractères au plus).

createdAt*integer

Date de création, en millisecondes Unix.

updatedAt*integer

Dernière mise à jour, en millisecondes Unix.

status*PaymentStatus

Statut normalisé d'un paiement. Seul succeeded est vérifié auprès de l'agrégateur.

Value in"created""pending""processing""succeeded""failed""expired""cancelled""refunded""partially_refunded"
amount*integer

Montant en unités entières.

operator*|null
reference*string

Votre référence.

nextAction*||||null
curl -X GET 'http://localhost:8787/v1/payments/string'
{  "id": "pay_84a49a19050240ebb01077bdb806c672",  "mode": "test",  "country": "BJ",  "currency": "XOF",  "provider": "fedapay",  "attemptId": "string",  "providerRef": "string",  "failureCode": "string",  "needsReconciliation": true,  "metadata": {    "property1": "string",    "property2": "string"  },  "createdAt": 0,  "updatedAt": 0,  "status": "created",  "amount": 0,  "operator": "mtn_bj",  "reference": "string",  "nextAction": {    "type": "redirect",    "url": "http://example.com"  }}
POST
/v1/payments/{id}/refresh

Authorization

ApiKey
headerAuthorizationBearer <token>

PONT_API_KEY, pour les routes /v1.

Path Parameters

id*string

Identifiant Pont du paiement.

Response Body

Le paiement à jour.

application/json
  1. response
id*string

Identifiant Pont.

mode*string

Mode du serveur au moment de la création.

Value in"test""live"
country*string

Pays (ISO 3166-1 alpha-2).

Value in"BJ""TG""CI""SN""BF""ML""NE""GN""CM""CG""CD""GA"
currency*Currency

Devise : le XOF et le XAF n'ont pas de décimales, les montants sont des entiers.

Value in"XOF""XAF"
provider*string

Agrégateur choisi par Pont (fedapay, pawapay, paydunya, kkiapay, sandbox ou un agrégateur personnalisé).

attemptId*string

Identifiant unique de la tentative, transmis à l'agrégateur quand il l'accepte.

providerRef*|null
failureCode*|null
needsReconciliation*boolean

true quand l'état réel chez l'agrégateur est inconnu : Pont vérifie à chaque cycle, ne réessaie jamais ailleurs.

metadata*

Vos métadonnées libres (valeurs de 500 caractères au plus).

createdAt*integer

Date de création, en millisecondes Unix.

updatedAt*integer

Dernière mise à jour, en millisecondes Unix.

status*PaymentStatus

Statut normalisé d'un paiement. Seul succeeded est vérifié auprès de l'agrégateur.

Value in"created""pending""processing""succeeded""failed""expired""cancelled""refunded""partially_refunded"
amount*integer

Montant en unités entières.

operator*|null
reference*string

Votre référence.

nextAction*||||null
curl -X POST 'http://localhost:8787/v1/payments/string/refresh'
{  "id": "pay_84a49a19050240ebb01077bdb806c672",  "mode": "test",  "country": "BJ",  "currency": "XOF",  "provider": "fedapay",  "attemptId": "string",  "providerRef": "string",  "failureCode": "string",  "needsReconciliation": true,  "metadata": {    "property1": "string",    "property2": "string"  },  "createdAt": 0,  "updatedAt": 0,  "status": "created",  "amount": 0,  "operator": "mtn_bj",  "reference": "string",  "nextAction": {    "type": "redirect",    "url": "http://example.com"  }}

Rembourser un paiement

POST
/v1/payments/{id}/refunds

Authorization

ApiKey
headerAuthorizationBearer <token>

PONT_API_KEY, pour les routes /v1.

Path Parameters

id*string

Identifiant Pont du paiement.

Header Parameters

Idempotency-Key?string

Clé d'idempotence (8 à 255 caractères). Sans elle, Pont utilise auto:<type>:<reference>.

Length8 <= length <= 255

Request Body

application/json
  1. body
amount?integer

Montant à rembourser. Sans montant : remboursement du restant.

Range1 <= value

Response Body

Remboursement créé.

application/json
  1. response
id*string
mode*string
Value in"test""live"
paymentId*string

Paiement remboursé.

status*TransferStatus

Statut d'un retrait ou d'un remboursement.

Value in"pending""processing""succeeded""failed""cancelled"
amount*integer
currency*Currency

Devise : le XOF et le XAF n'ont pas de décimales, les montants sont des entiers.

Value in"XOF""XAF"
provider*string
attemptId*string
providerRef*string|null
failureCode*string|null
needsReconciliation*boolean
createdAt*integer
updatedAt*integer
curl -X POST 'http://localhost:8787/v1/payments/string/refunds' \  -H 'Content-Type: application/json' \  -d '{  "amount": 2000}'
{  "id": "re_3c1f0a9e2b7d4e56a8f1c0d2e4b69a77",  "mode": "test",  "paymentId": "string",  "status": "pending",  "amount": 0,  "currency": "XOF",  "provider": "string",  "attemptId": "string",  "providerRef": "string",  "failureCode": "string",  "needsReconciliation": true,  "createdAt": 0,  "updatedAt": 0}