Overview
Webhooks allow your application to receive real-time notifications when events occur — a transaction succeeds, a recurring payment fails, a dispute is opened. Instead of polling the API, Dime Payments pushes event data to a URL you specify.Setting up a webhook
- Log into the Dime Payments dashboard
- Navigate to Settings > Webhooks
- Click Add Endpoint
- Enter your publicly accessible HTTPS URL
- Select the events you want to receive
- Save
200 HTTP response within 30 seconds or the delivery will be marked as failed and retried.
Event types
| Event | When it fires |
|---|---|
transaction.success | A charge completes successfully |
transaction.failed | A charge is declined or fails |
transaction.refunded | A refund is processed |
transaction.voided | A transaction is voided |
recurring_payment.success | A scheduled recurring payment runs successfully |
recurring_payment.failed | A scheduled recurring payment fails |
recurring_payment.cancelled | A recurring payment is cancelled |
dispute.opened | A chargeback or dispute is filed |
dispute.resolved | A dispute is resolved |
Payload format
All webhook payloads are JSON and follow the same envelope structure:Verifying webhook signatures
Dime Payments signs every webhook payload so you can verify it came from us. A signature is included in theX-Dime-Signature header.
Retries
If your endpoint fails to return a200 response, Dime Payments will retry the delivery with exponential backoff:
| Attempt | Delay |
|---|---|
| 1 | Immediate |
| 2 | 5 minutes |
| 3 | 30 minutes |
| 4 | 2 hours |
| 5 | 8 hours |
Testing webhooks locally
Use a tool like ngrok to expose your local server to the internet during development:https:// URL as your webhook endpoint in the dashboard.
Next steps
- Disputes — understand how chargebacks work
- Payouts — understand how funds are deposited
- API Reference — full endpoint documentation

