LSCApp Docs
Troubleshooting & Support

Payment Issues

Declined charges, webhook problems, and stale keys.

Checkout is broken sitewide, or charges fail immediately

The most common cause is a stale or mismatched Stripe key — either the secret key or the publishable key has drifted out of sync with the Stripe account actually being used. Confirm both keys in use are from the same Stripe account/mode (a Stripe account can have multiple sandboxes; keys copied from the wrong one look valid but authenticate against the wrong environment entirely).

A native mobile app has no live environment-variable story — updating a key on the server does nothing for an app that already shipped with the old one baked into its build. If a native app's checkout is broken but the web app's isn't, check whether the app's own build config has its own separate, stale copy of the key.

A webhook-driven action isn't happening (e.g. a lease not activating after payment)

Confirm the webhook is actually configured to point at this environment's real endpoint, and check Stripe's own webhook delivery log for the event in question — a 200 response with no retries means it was received and processed; a failure or retry means it wasn't, and that's the real thing to chase, not the business logic downstream of it.

A refund fired instantly when you expected it to need approval

Confirm the refund approval threshold is actually configured — if it's unset, refunds aren't gated by amount at all for OWNER/ADMIN. Also confirm which path issued the refund: the explicit "Issue refund" button and a reschedule-driven refund are both gated the same way, but a refund from somewhere else in the product may not be — if you find one that isn't, that's worth reporting as a real gap, not assuming is expected.

ACH payment shows "Invoiced" instead of "Paid"

Expected, not a bug — ACH settlement genuinely takes a few business days. The status will update automatically once Stripe confirms settlement.

On this page