Security

Our actual posture, stated plainly. SaaS-appropriate, no theater.

  • Webhook intake is HMAC-verified with your Stripe webhook secret (real Stripe-Signature scheme); unsigned requests are rejected.
  • The stats API requires a Bearer API key — and when no key is configured the endpoint refuses requests outright (fail-closed) rather than going public; the webhook receiver fails closed the same way when its signing secret is unset.
  • Card numbers are never seen, transmitted, or stored by DunnGuard — all updates go through Stripe-hosted pages.
  • All secrets are environment-configured; structured logs never include them.
  • Every payment attempt the runner makes carries an idempotency key, and retries are capped by the card networks' own attempt ceilings — careless reattempts are fee-bearing, so the runner will not make them.
  • Report a vulnerability: email us and we'll respond within 2 business days.
What we don't claim: we don't claim certifications we don't hold, we don't claim "military-grade" anything, and we don't claim a system can't fail — we claim the specific controls above and a 2-business-day response on reports.