I'm a solo founder, new to this, and PaidCheck has no users yet. That's part of why I'm posting: I'd rather find the holes now. The problem I'm trying to catch is Stripe and your app's own database quietly disagreeing about who is paying. Two versions of it: Someone paid in Stripe but the app never gave them access (often a webhook that failed, or a different email at checkout than at signup). Someone cancelled, or stopped paying (past_due, unpaid), in Stripe but still has paid access in the app. How it works: you give it a Stripe restricted key (read-only; full secret keys are refused), and tell it who has access in your app. That can be a small secret-protected endpoint that returns email, plan and active, a CSV, or nothing at all if you only want the Stripe-side checks. It matches users by Stripe customer ID first, then customer metadata, then email, and flags mismatches. It also flags double charges and webhook problems like undelivered events or disabled endpoints. There's a free one-off report. The page says it uses the key for a single request and keeps nothing. Paid plans ($19/mo for 1 app, $49/mo for up to 5) run the checks daily and send an alert email when a check finds a new issue. Question: if you've run subscriptions in your own app, what Stripe vs. app-access mismatch has bitten you that matching by customer ID, then metadata user ID, then email would not have caught (team seats, a different checkout email, lifetime deals, comped users, something else)? Free report, if you want to try it on a test-mode key: https://paidcheck.app/report I'll read and answer everything, including "this isn't worth building".   submitted by   /u/Due_Anything_5861 [link]   [comments]