Skip to main content
WEBHOOK

Authorizations

Authorization
string
header
required

Merchant API key (fp_live_* for live, fp_test_* for sandbox) or an admin-tier JWT (company admin or root admin). Non-admin JWTs are rejected with 403; live API keys additionally require the merchant's API access to be enabled.

Body

application/json

Payload POSTed to the merchant's configured webhook URL when a payment transitions to a terminal state. Deliveries are signed: the X-Fluid-Signature header carries the hex HMAC-SHA256 of the raw JSON body, keyed with the merchant's webhook secret, and X-Fluid-Event carries the event name. Delivery is at-least-once (up to 5 retries with exponential backoff on connection failures, timeouts, and 5xx responses; 10-second timeout), so receivers must tolerate duplicates. Webhooks fire only for transactions created by API-key-authenticated requests, and only when the merchant has both a webhook URL and a webhook secret configured. The destination must be a public HTTPS URL: a delivery that fails outbound-safety validation at any point — a non-HTTPS scheme, a private or internal host, an unresolvable hostname, too many redirects, or any other unsafe-URL condition — is skipped entirely and never retried.

event
enum<string>
required

Event name. payment.completed fires for a successful purchase or authorization; payment.captured, payment.voided, and payment.refunded fire for successful captures, voids, and refunds; payment.declined and payment.error fire when any of those operations is declined by the provider or fails processing. Verifications never emit webhooks.

Available options:
payment.completed,
payment.declined,
payment.error,
payment.voided,
payment.refunded,
payment.captured
created_at
string<date-time>
required

ISO 8601 timestamp (UTC) of when the event was emitted.

data
object
required

Snapshot of the transaction the event describes.

Response

200

Return any 2xx status to acknowledge receipt. 5xx responses, connection failures, and timeouts are retried up to 5 times with exponential backoff; 4xx responses are logged and not retried.