---
title: "Reconcile webhook events"
space: "Integrations"
url: "https://integrations.frappe.cloud/integrations/payment-integration/stripe/reconciliation"
updated: "2026-09-08"
---

Each verified webhook is routed to a handler that creates or updates ERPNext documents. The result is recorded in the **Stripe Webhook Log**.


| Event                           | Action                                 |
| ------------------------------- | -------------------------------------- |
| `checkout.session.completed`    | Settle Payment Request → Payment Entry |
| `payment_intent.succeeded`      | Payment Entry                          |
| `invoice.paid`                  | Sales Invoice + Payment Entry          |
| `invoice.payment_failed`        | Dunning comment on Subscription        |
| `charge.refunded`               | Comment on Payment Entry               |
| `customer.subscription.updated` | Update subscription link               |
| `customer.subscription.deleted` | Mark subscription cancelled            |


**Failed events** are retried hourly (up to 5 times). Each retry runs in a savepoint so one bad event doesn't block others.