Webhooks
Webhooks
Webhooks notify your application in real-time when events happen — payments, subscription changes, refunds, and more.
Setting Up Webhooks
Via Dashboard
To activate webhooks for your account, within your Recurrente account, go to:
Settings → Developers and API.
There click on “Webhooks”, and continue to add the endpoint where you want the requests to be sent.
Via API
Webhook Event Types
Recurrente sends webhooks for the following events:
payment_intent.succeeded
Emitted with a successful card charge (credit or debit). The funds are already in your Recurrente balance.
Example response:
payment_intent.failed
Failed card charge.
Example response:
subscription.create
If the product is recurring, this event is emitted in addition to payment.succeeded with the subscription information.
Example response:
subscription.past_due
Emitted when a subscription’s automatic charge fails for the first time.
Note: In a subscription, when a payment fails, Recurrente attempts to charge it again 3 and 5 days later. If both retry attempts fail, the subscription is canceled at that time.
subscription.paused
Emitted when a subscription is paused. A paused subscription will not be charged again until it is reactivated.
subscription.cancel
Emitted when a subscription’s automatic charge fails for the third time.
Note: In a subscription, when a payment fails, Recurrente attempts to charge it again 3 and 5 days later. If both retry attempts fail, the subscription is canceled at that time.
bank_transfer_intent.pending
Emitted when a bank transfer charge is initiated. As soon as the money is received in the account, bank_transfer_intent.succeeded will be emitted. Otherwise, bank_transfer_intent.failed will be emitted.
bank_transfer_intent.succeeded
Emitted with a successful bank transfer charge. The funds are already in your Recurrente balance.
bank_transfer_intent.failed
Emitted with a failed bank transfer charge. This happens when the funds are not received in the bank account, or the wrong amount is received.
setup_intent.succeeded
Emitted when a subscription with a trial period is successfully initiated. Also emitted when a card is tokenized without charging it.
setup_intent.cancelled
Emitted when a card cannot be tokenized without charging it. This happens when the first payment of a subscription with a trial period fails.
Webhook Payload
Each webhook POST includes a JSON body with the event data. The structure varies by event type.
Best Practices
- Return 2xx quickly — Acknowledge receipt before doing heavy processing
- Handle duplicates — Webhooks may be delivered more than once; use the event ID for idempotency
- Verify the source — Validate that requests come from Recurrente’s servers
- Process asynchronously — Use a queue for heavy processing after acknowledging receipt
Retries
If your endpoint doesn’t respond with a 2xx code, Recurrente will retry sending the webhook:
- Immediately after the first failure
- 1 minute later
- 5 minutes later
- 30 minutes later
- 2 hours later
- 6 hours later

