Register your webhook endpoint
Add your endpoint URL in the RemitFlex dashboard:Provide a publicly accessible HTTPS URL on your server (for example,
https://api.yourapp.com/webhooks/remitflex). RemitFlex does not support plain HTTP endpoints.You can register multiple endpoints and subscribe different endpoints to different event subsets. This is useful for separating payment notifications from compliance alerts.
Supported event types
| Event | Triggered when |
|---|---|
payment.created | A new payment has been initiated |
payment.processing | The payment is actively being settled |
payment.settled | Funds have settled on-chain |
payment.delivered | Fiat has been deposited into the recipient’s account |
payment.failed | The payment could not be completed (includes failure_reason) |
payment.cancelled | The payment was cancelled before processing |
conversion.completed | A currency conversion has finished |
offramp.settled | The off-ramp bank transfer has been submitted |
offramp.delivered | Fiat delivery confirmed by the destination bank |
offramp.failed | The off-ramp could not be completed (includes failure_reason) |
compliance.review_required | A transaction has been flagged for manual compliance review |
Webhook payload structure
Every event RemitFlex sends has the same envelope structure:| Field | Type | Description |
|---|---|---|
id | string | Unique event ID, prefixed evt_. Use this to deduplicate retried deliveries. |
type | string | The event type string (e.g., payment.delivered) |
created_at | string | ISO 8601 timestamp when the event was generated |
data | object | Event-specific payload; structure varies by type |
Verify webhook signatures
RemitFlex signs every webhook request with HMAC-SHA256 using your webhook secret. The signature is sent in theX-RemitFlex-Signature header:
Retry policy
If your endpoint returns a non-2xx HTTP status code or fails to respond within 10 seconds, RemitFlex considers the delivery failed and retries automatically:| Attempt | Delay after previous failure |
|---|---|
| 1st retry | 30 seconds |
| 2nd retry | 5 minutes |
| 3rd retry | 30 minutes |
| 4th retry | 2 hours |
| 5th retry | 8 hours |
Because retries mean the same event may arrive more than once, make your handler idempotent. Use the
id field (e.g., evt_01HX9P5S...) to record which events you have already processed and skip duplicates.Responding to webhooks
Your endpoint must return an HTTP200 response to acknowledge receipt. RemitFlex treats any status outside the 2xx range as a failure and schedules a retry.
Keep your response fast. If you need to perform slow operations (database writes, downstream API calls), acknowledge the webhook immediately and process the payload asynchronously: