Skip to main content
A webhook endpoint is a URL plus the set of event types it should receive. Manage endpoints from the API with a secret key, or from the dashboard. Endpoints are scoped to one mode: a sk_v1_test_… key manages test-mode endpoints, and a live key manages live ones. On Node, npm install @ionicfi/sdk gives you typed calls for every request below; the server SDK guide has details. Each example also shows raw curl. Every write on this API (create, update, delete, rotate) requires an Idempotency-Key header; the SDK types it as a required field on those calls.

Platform webhooks for connected accounts

Open Webhooks in the dashboard. Choose This account for events belonging to the business whose workspace you opened, or Connected accounts for events from merchants connected to your platform. Each view has separate endpoints, signing secrets, and embedded delivery activity. The test/live toggle applies to both. The Connected accounts choice appears only when your current Program and dashboard permissions allow it. For a server integration:
  1. Ask Ionic to enable connect_webhooks for your active Platform Program and approve webhook_endpoints:read and webhook_endpoints:write in its permission ceiling. The target environment and delegated API capability must also be enabled.
  2. In Connect → API keys, select the Webhook management preset and create a restricted Platform key. Save the credential securely. This preset manages endpoints; it does not grant access to connected-account resources.
  3. Use that Platform credential with the endpoint APIs below. Omit Ionic-Account: the endpoint belongs to your Platform and receives its eligible connected-merchant stream. A direct merchant API key cannot select this stream.
  4. Subscribe to the events you need. Delivery also requires an active Connection with the matching resource’s read permission—for example, payments:read for payment events. Minimal account.created / account.updated lifecycle status requires an active Connection and Program, without a profile-read grant. Registering an endpoint does not grant resource permissions.
  5. Verify the webhook signature before using the payload. Its top-level account is the receiving connected account’s Ionic mer_… ID. Match it to the merchant ID your application stored on the order, together with the PaymentIntent ID and mode. Keep processing and deduplication scoped to that merchant.
Program status, environment, capability, and the current permission ceiling are checked on every management request. Existing keys are not automatically widened when Ionic approves additional permissions. The embedded Activity view is inspection-only: delivery attempts and payloads, without secret reveal, secret rotation, endpoint changes, or replay/example sends. Use the native Endpoints tab for configuration and secret rotation. Automated delivery retries still operate; this view does not grant unrestricted manual replay.

Create an endpoint

The response is the endpoint object. The secret is present only in this create response and in a rotate response — store it now; it’s never returned again.
secret appears once. If you lose it, you can’t read it back — rotate to get a new one. Ionic stores only what’s needed to verify; it never persists the raw whsec_ value.

Filtering events

event_types accepts three forms, which you can mix in one array: Subscribe only to what you handle — it keeps your endpoint’s traffic and your logs focused. You can change the set any time with an update.

List, retrieve, update

List responses wrap the array in data:
Update with POST or PATCH and only the fields you’re changing — url, description, or event_types:

Disable and delete

Disable an endpoint to stop deliveries while keeping it (and its secret) intact — useful during maintenance:
disabled and status are two views of the same flag — {"disabled": true} is equivalent to {"status": "disabled"}, and status is only ever active or disabled. Re-enable with {"disabled": false}. Delete removes the endpoint permanently:

Rotate the signing secret

Rotating issues a new secret and returns it once. The previous secret keeps verifying for a brief overlap window, so deliveries already in flight (or signed just before the rotation) still pass — which is why a delivery’s webhook-signature header can carry more than one signature.
Roll out a rotation safely:
1

Rotate

Call rotate_secret and capture the new whsec_ from the response.
2

Accept both

Deploy your handler to verify against the new secret while still accepting the old one during the overlap.
3

Retire the old

Once the window has passed and all deliveries verify with the new secret, drop the old one.

What’s next

Browse the event catalog

Choose the event types to subscribe to.

Verify signatures

Check each delivery against the endpoint’s signing secret.

Set up platform webhooks

Receive events from connected accounts on a Platform endpoint.