Where webhooks fit
A payment is asynchronous: you execute a payment and the gateway accepts it for processing. From there, you track progress two ways:- Webhooks: Zeam calls your endpoint when the intent changes state.
- Polling: you read the intent state on demand with
GET /v1/intents/{intentId}.
Registering a webhook
You register and manage webhook endpoints in the Zeam business portal, not
through this API. The gateway only lets you list your registrations with
GET /v1/webhooks.- A destination URL that must use
httpsand be publicly reachable (localhostis rejected). - One or more event types to subscribe to (see below).
Supported event types
The gateway emits payment-intent events. The value is what the registration stores; the wire key is the dotted name on the delivered event.| Event | Wire key | Meaning |
|---|---|---|
IntentInitiated | intent.initiated | A payment intent was initiated. |
IntentProcessing | intent.processing | A payment intent is being processed. |
IntentSuccessful | intent.successful | A payment intent completed successfully. |
IntentFailed | intent.failed | A payment intent failed. |
IntentRefunding | intent.refunding | A refund is in progress. |
IntentRefunded | intent.refunded | A payment intent was refunded. |
IntentRefundFailed | intent.refund.failed | A refund failed. |
IntentCancelled | intent.cancelled | A payment intent was cancelled. |
Testing a registration
The business portal can send a test event to an active registration, so you can confirm your endpoint receives and acknowledges deliveries before relying on real traffic.What to prepare before registering
- A public
httpsendpoint that is reachable from the internet. - Fast acknowledgement: respond with a
2xxquickly and process asynchronously. - Idempotent handling: be ready to receive the same event more than once and de-duplicate on the event’s identifier.
Listing your webhooks
Use the gateway to see what is registered for your association:cURL
id, url, type, isActive, and createdAt. See
GET /v1/webhooks.