Skip to main content

faq

Webhook FAQ​

Q: How do I know if my webhook subscription is working?​

A: Use the test endpoint (POST {{BaseUrl}}/apps/api/webhooks/test) and check delivery logs via GET /apps/api/webhooks/logs.

Q: My webhook was disabled. How do I re-enable it?​

A: Update your webhook URL via POST {{BaseUrl}}/apps/api/webhooks. This resets the failure counter and re-enables the subscription.

Q: Can I have multiple webhook URLs?​

A: No, each business can have only one webhook subscription. All events are sent to the same URL. The webhook configuration is tied to your business entity.

Q: What if I miss a webhook?​

A: You can always query the contract status via the API. Webhooks are for real-time updates, but the API is the source of truth.

Q: Is the webhook payload the same for all events?​

A: Every webhook uses the same envelope (id, event, createdAt, data). The properties inside data depend on the event, and on whether the contract has milestones. For example, payment.completed includes paymentId, transactionId, transactionReference, and invoiceId. dispute.created and dispute.resolved omit status and amount, and include milestoneId only when the dispute is on a milestone. See Payload Reference.

Q: How long are webhook delivery logs retained?​

A: WePay retains delivery logs that you can access via the API. We recommend keeping your own logs for at least 90 days for troubleshooting.

Q: What happens if my server is down when a webhook is sent?​

A: WePay will retry delivery up to 5 times with exponential backoff (10s, 30s, 2min, 10min, 1hr). If all retries fail, check your delivery logs when your server is back up.