Customer paid on Stripe but your app still says Free? Check this
Ship ItChecked against the official source
Source checked 3 Oct 2026 · Published 4 Oct 2026 · Last reviewed 4 Oct 2026 · By Ctrl+Z Therapy (how we test)
The short answer
If you built it with Lovable's Stripe integration, it doesn't use webhooks by default: your app checks payment and subscription status directly with Stripe, and recognizes a subscriber when the email they sign in with matches the email on their Stripe customer record. Paid with one email, signed in with another? No match. If your app does use webhooks, Stripe retries failed deliveries for up to three days in live mode, and the same event can arrive more than once, or out of order.
What to do
- Ask the customer which email they paid with, and compare it with the email they sign in with.
- Using webhooks? In Stripe, open Workbench, then Webhooks, then Event deliveries. Failed deliveries show there with their status code.
- Going live? Switch all three: the live API key, the live price IDs and the live webhook secret. Test and live mode use different ones.
Source
Checked on 3 Oct 2026. Prices, limits and settings change, so check the source before you rely on them.