Guides / Webhooks
Event types
Weav sends a signed POST whenever something you need to know about happens. Set where it goes with PUT /v1/webhook-endpoint; see Where each webhook goes.
| Event | When | data key |
|---|---|---|
PAYMENT_COMPLETED |
The customer paid. | payment |
PAYMENT_FAILED |
The payment expired or was declined. | payment |
PAYMENT_CANCELLED |
The payment was canceled. | payment |
PAYMENT_REVERSED |
A completed payment was reversed after a chargeback, and the amount came off your balance. | payment, reversal |
PAYMENT_REFUNDED |
Weav recorded a refund, partial or full. payment.status says which. |
payment, refund |
CHECKOUT_COMPLETED |
A checkout was paid. checkout.payment is the payment that paid it. |
checkout |
CHECKOUT_EXPIRED |
A checkout ran out without being paid. A payment still in progress keeps it open until that payment ends. | checkout |
PAYMENT_METHOD_SAVED |
Your customer saved their card and their bank confirmed it. It’s ACTIVE: you can charge it. |
payment_method |
PAYMENT_METHOD_FAILED |
The bank’s check failed, or the save link ran out. | payment_method |
PAYMENT_METHOD_REMOVED |
A saved card was removed. It can’t be charged again. | payment_method |
WITHDRAWAL_COMPLETED |
A withdrawal reached your bank. | withdrawal |
WITHDRAWAL_FAILED |
A withdrawal failed and the amount was returned to your balance. | withdrawal |
Delivery
- Your URL must use HTTPS. Weav verifies your TLS certificate.
- Webhooks come from two fixed addresses,
18.136.62.102and18.139.176.153. See IP addresses. - A delivery succeeds only when your endpoint answers with a
2xxwithin 10 seconds. Anything else is retried, for about 7 days. See Retries. - When retries run out, the delivery waits in the dashboard for you to repost it.
- The dashboard shows every attempt, with its status code, response and duration.
- The same event can arrive twice. Use the resource’s
reference_idto make sure you handle it only once. - Events can arrive out of order. Trust the
statusin the body, or read the resource again.
Reply right away and do the work in a queue. A handler that runs longer than 10 seconds counts as failed, and you’ll receive the same event again.