Skip to main content
RemitFlex can POST signed JSON events to your HTTPS endpoints whenever a swap, payment route, collection, local fiat order, or cNGN object is created or changes status. Manage endpoints in the merchant app under Webhooks, or via the API with JWT or an API key that includes api:read / api:write.

Quick setup

1

Create an endpoint

POST /v1/webhooks with an HTTPS url. Optionally set events to an allowlist; omit or pass null to receive all event types.
2

Store the signing secret

The create (and rotate) response includes secret (whsec_…) once. Use it to verify X-Remitflex-Signature.
3

Verify and acknowledge

Validate the signature, then return 2xx within ~10 seconds. RemitFlex retries failed deliveries with exponential backoff (up to 8 attempts).

Delivery headers

Signature verification

Compare v1 from the header to expected (constant-time). Reject if the timestamp is too far from your clock (e.g. ±5 minutes) to limit replay.

Payload shape

data is a resource snapshot. Status transitions include previousStatus and status (previousStatus is null on create).

Event catalog

Every subsequent status change emits *.updated (including cancel/expire), not only terminal states. cngn.customer.enabled fires once when KYC finishes and names match; cngn.customer.failed fires once on KYC failure or customer_name_bvn_mismatch.

API

{webhookEndpointId} is the RemitFlex webhook endpoint UUID from POST or GET /webhooks. Dashboard JWT sessions can call these routes without scopes. API keys need the matching api:read / api:write scope.

Security notes

  • URL must be HTTPS. Private, loopback, and link-local targets are rejected (SSRF protection).
  • Signing secrets are stored server-side so RemitFlex can sign outbound deliveries; the raw value is only shown on create/rotate.