Managing Webhooks

List All Webhooks

curl https://api.inflowpay.xyz/api/webhook \
  -H "X-Inflow-Api-Key: inflow_prod_your_key"

Response:

[
  {
    "webhookId": "webhook_abc123",
    "webhookUrl": "https://yourserver.com/webhooks/inflow"
  }
]

Get a Specific Webhook

curl https://api.inflowpay.xyz/api/webhook/{webhookId} \
  -H "X-Inflow-Api-Key: inflow_prod_your_key"

Check Webhook Status

See whether a webhook is active or has failures:

curl https://api.inflowpay.xyz/api/webhook/{webhookId}/status \
  -H "X-Inflow-Api-Key: inflow_prod_your_key"

Response:

{
  "webhookId": "webhook_abc123",
  "webhookUrl": "https://yourserver.com/webhooks/inflow",
  "status": "enabled",
  "failureReason": null
}

Status Values

StatusDescription
enabledWebhook is active and receiving events
disabledWebhook has been manually disabled

If your endpoint consistently fails to respond with a 200 status, Inflow may disable it. The failureReason field will explain why.

Enable or Disable a Webhook

# Disable
curl -X PATCH https://api.inflowpay.xyz/api/webhook/{webhookId} \
  -H "X-Inflow-Api-Key: inflow_prod_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "status": "disabled" }'

# Re-enable
curl -X PATCH https://api.inflowpay.xyz/api/webhook/{webhookId} \
  -H "X-Inflow-Api-Key: inflow_prod_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "status": "enabled" }'

Get signing secret

Retrieve the Svix signing secret for an endpoint (for signature verification):

curl https://api.inflowpay.xyz/api/webhook/{webhookId}/secret \
  -H "X-Inflow-Api-Key: inflow_prod_your_key"
{
  "webhookId": "webhook_abc123",
  "secret": "whsec_…"
}

Update subscribed event types

Replace the full list of event types this endpoint receives (see Overview & event types):

curl -X PATCH https://api.inflowpay.xyz/api/webhook/{webhookId}/event-types \
  -H "X-Inflow-Api-Key: inflow_prod_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "eventTypes": [
      "connect.payment.authorized",
      "connect.payment.settled"
    ]
  }'

Marketplaces use connect.* names. Direct merchants use unprefixed names (payment.settled, etc.). An empty array subscribes to all events.

Delete a Webhook

curl -X DELETE https://api.inflowpay.xyz/api/webhook/{webhookId} \
  -H "X-Inflow-Api-Key: inflow_prod_your_key"

Response:

{
  "message": "Webhook deleted successfully"
}

API Summary

ActionMethodEndpoint
Create webhookPOST/api/webhook
List webhooksGET/api/webhook
List event types (direct only)GET/api/webhook/event-types
List sent eventsGET/api/webhook/events
Replay an eventPOST/api/webhook/events/{eventId}/replay
Event delivery statusGET/api/webhook/events/{eventId}/delivery
Get webhookGET/api/webhook/{webhookId}
Get signing secretGET/api/webhook/{webhookId}/secret
Get statusGET/api/webhook/{webhookId}/status
Update statusPATCH/api/webhook/{webhookId}
Update event typesPATCH/api/webhook/{webhookId}/event-types
Delete webhookDELETE/api/webhook/{webhookId}

All webhook endpoints require the private API key (X-Inflow-Api-Key). Webhook management is API-only — it is not available from the Dashboard.

Limits

  • Maximum 5 webhooks per account.
  • Each webhook URL must be unique within your account.
  • URLs must use HTTPS.

Retry & Failure Policy

If your endpoint does not respond with a 2xx within 15 seconds, Inflow retries with exponential backoff — up to 10 attempts spread over several hours to days. If all retries fail, the webhook is automatically disabled.

Check the webhook status endpoint and the failureReason field to diagnose issues. Once fixed, re-enable the webhook via the update status endpoint.