Webhooks

Customer Events

Afriex delivers real-time notifications to your configured webhook URL whenever a customer is created, updated, or deleted.

The payload structure is identical across all events. Only the event field changes.

Security: Every request includes an x-webhook-signature header and an x-afriex-business-id header carrying your business id. You must verify this signature using Afriex's public key before processing. The key is an elliptic-curve (secp384r1 / P-384) key, not RSA. The signature is ECDSA with SHA-256, DER-encoded and then base64-encoded, computed over the exact raw request body, so verify it before parsing or re-serialising the JSON. See the Webhooks Overview & Security section for verification instructions.

postWebhookcustomer.events

Payload

idstring 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.

event'CUSTOMER.CREATED' | 'CUSTOMER.UPDATED' | 'CUSTOMER.DELETED' required

Identifies which customer event occurred

createdAtstring 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 payload

{
  "id": "8f14e45f-ceea-4e7a-9f1d-6b1c2a3d4e5f",
  "event": "CUSTOMER.UPDATED",
  "createdAt": "2026-04-24T09:13:33.883Z",
  "data": {
    "customerId": "69516dd0464b2213bd74cfad",
    "name": "John Doe",
    "email": "john.doe@example.com",
    "phone": "+2348121123445",
    "countryCode": "NG"
  }
}

Response

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

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.