Skip to content
StillChecksOut
Menu

October 28, 2026

Paid, and locked out

Stripe has the customer. Your app does not. The quiet failure mode of an AI-built checkout.

The webhook handler was generated once, then a later prompt renamed the users table. Checkout still took the card. The row that was supposed to grant access never got written. The customer has a receipt and a login that says they are on the free plan.

The other direction happens too. A comp account, or a bug that sets has_access to true, leaves someone inside a product they are not paying for.

StillChecksOut compares two lists you already have. A restricted Stripe key, read-only, supplies the emails on an active subscription. A Postgres role that can only read access_list(email, has_access) supplies who your app thinks is allowed in. The difference is the report: paid but locked out, or access without paying.

The credentials are encrypted before they are stored, and they are never sent back to the browser. The comparison starts on the Starter plan.