Webhooks

One of the great features of Loop's integration with Stripe is that you can continue to use Stripe's webhooks for any automations you have. Since Loop updates the Customer and Invoice record automatically, Stripe webhooks continue to fire.


Stripe webhooks

When an invoice's payment status in Stripe changes to paid, the invoice.paid event in Stripe will be emitted. We suggest you also listen to the payment.intent_succeeded to ensure you are notified of a payment.


Common confusion

When a Loop payment occurs, a payment_intent.canceled event is emitted. This is because Stripe will want to charge the payment method on file (fiat). Thus, Loop cancels this event and instead updates the invoice to be paid outside of Stripe."The invoice.paid event will emit once the payment takes place on chain and Loop marks the invoice as paid. There is nothing you need to do here but be aware of this.

If you have Stripe already configured, you may also already be listening to the invoice.charge.succeeded event from Stripe. This invoice.charge.succeeded event is triggered specifically when a single charge associated with an invoice successfully completes, while an invoice.paid event is triggered whenever an entire invoice is marked as paid, which can include scenarios where the payment was manually marked as paid outside of a standard charge process (which is the case when you use Loop!). As a result, it is important to ensure you are listening to invoice.paid.


Loop webhooks

If you would like, you can still listen to webhook events emitted from Loop. Loop has its own set of webhook events separate from Stripe and listening to these events is not required if you are using the Stripe integration. When running testing, some teams like to listen to Loop webhooks in Slack. If you would like to do this, let us know.