A client pays by card, Stripe shows the charge succeeded — but the invoice in Managello still says unpaid. This is a known, fixable configuration issue, not lost money.
Why it happens
Managello marks an invoice paid only when Stripe tells it to, via a webhook — never from the browser redirect after checkout. This is intentional and correct: the browser can be closed mid-redirect, but the webhook is authoritative. The trade-off is that if the Stripe webhook isn't configured or can't reach your server, the invoice never updates even though the payment went through.
The fix
- In Settings → Billing → Stripe, confirm the webhook endpoint and webhook signing secret are set. If either is missing or wrong, Managello ignores the events (correctly — it won't trust unsigned calls).
- In your Stripe dashboard, check the webhook endpoint's recent deliveries. Failed deliveries there point straight at the problem (unreachable URL, wrong secret, firewall).
- Open System Health — it shows the webhook heartbeat and recent failures, and an admin can reprocess events from there once the endpoint is fixed.
Once it's configured
Reprocessing the missed event (or the client's payment landing again) will flip the invoice to paid automatically, net of any refunds. You won't need to mark it by hand — and you shouldn't, so the source of truth stays Stripe.