Skip to main content
WEBHOOK

Sample Payloads

Transaction Created

Transaction Updated

Transaction Failed

When status transitions to FAILED or REJECTED, the payload’s meta.failureReason describes why using a stable AFX_* code and a customer-safe message. See Failure reasons for the full code list.
Cross-currency transactions also carry a rate field alongside the amounts, holding the realized source-to-destination exchange rate. See Transaction for the full field list.
TRANSACTION.UPDATED is not a terminal-status-only signal. It fires on every status change Afriex considers worth reporting, including intermediate ones such as PROCESSING and CUSTOMER_ACTION_REQUIRED, so a single transaction can produce several. Always branch on the payload’s status field rather than treating any delivery as final.

Body

application/json
id
string<uuid>
required

Unique ID of this event. Every delivery attempt of the same event carries the same id, so use it to ignore a delivery you have already processed.

Example:

"8f14e45f-ceea-4e7a-9f1d-6b1c2a3d4e5f"

event
enum<string>
required

Identifies which transaction event occurred

Available options:
TRANSACTION.CREATED,
TRANSACTION.UPDATED
Example:

"TRANSACTION.UPDATED"

createdAt
string<date-time>
required

When Afriex created the event. Retries keep this value, and the signature covers it, so you can reject a delivery that is older than you expect.

Example:

"2026-04-24T09:13:33.883Z"

data
object
required

Details of the transaction

Response

Acknowledge receipt. Return any 2xx status code quickly. Response body is ignored.