Events
Each request contains an event, the payment data, a timestamp and livemode. You choose which events you receive in API and Logs or through the API.
| Event | When |
|---|---|
payment.completed |
Payment confirmed (SUCCESS status). This is the event to wait for before fulfilling. |
payment.failed |
Payment failed or declined (FAILED status). |
payment.cancelled |
Payment abandoned by the customer (page left, session expired) or cancelled by the merchant (CANCELLED status). Event added on September 19, 2026: webhooks configured before that date only receive it once ticked in API and Logs. |
payment.updated |
Any other status change: REFUNDED, back to PENDING. |
transfer.succeeded |
Outgoing transfer credited to the recipient’s account (data = the transfer, see Send money). |
transfer.failed |
Transfer rejected by the operator or the provider, with data.failure. |
Request body
Section titled “Request body”{ "event": "payment.completed", "livemode": true, "data": { "id": "cmf3k2p1x0001abcd9e8f7g6h", "order_id": "CS-MF3K2A-9X1QZ", "status": "SUCCESS", "amount": 5000, "currency": "XOF", "provider": "PayDunya", "provider_reference": "pd_7f3a9c", "customer_name": "Awa Koné", "customer_email": "awa@example.com", "customer_phone": "+2250700000000", "metadata": { "order_id": "1042", "source": "checkout_session" }, "completed_at": "2026-09-02T10:17:42.000Z" }, "timestamp": "2026-09-02T10:17:42.000Z"}| Field | Description |
|---|---|
data.id |
Session identifier, the same one returned at creation |
data.order_id |
Cartflox reference (CS-...) |
data.status |
SUCCESS, FAILED, PENDING, CANCELLED or REFUNDED |
data.provider |
Gateway that processed the payment |
data.provider_reference |
Reference at the aggregator, useful for reconciliation |
data.metadata |
Your metadata, enriched with the source (checkout_session, payment_link…) |
data.completed_at |
Confirmation date, null until the payment succeeds |
livemode |
true in production, false for a payment made with a test key (test mode) |