Skip to main content

What is SteadPay?

SteadPay is a billing enforcement layer for Stripe-powered SaaS products. When a subscriber’s payment fails, SteadPay intercepts their next login with a non-bypassable overlay that requires them to update their card before continuing. No emails. No grace periods. No revenue leakage.

How it works

1

Stripe sends a webhook

When a payment fails, Stripe fires an invoice.payment_failed event to SteadPay. SteadPay classifies it as a soft decline (retriable) or hard decline (card rejected outright) and updates the subscriber’s status accordingly.
2

Your app checks the subscriber's status

On every authenticated session, your enforcement snippet (or mobile SDK) calls the SteadPay status API with the subscriber’s Stripe customer ID.
3

SteadPay enforces the gate

  • Active — nothing shown, subscriber continues normally.
  • Warning — a dismissable banner prompts the subscriber to update their card.
  • Lockout — a full-screen overlay prevents all app access until the card is updated.
4

Subscriber updates their card

The overlay loads a Stripe-hosted Payment Element directly. Once the card is updated successfully, the gate dismisses and the session resumes.

Enforcement surfaces

SteadPay provides four ways to integrate — pick the one that matches your stack:
SurfaceBest for
JS snippetWeb apps — add one <script> tag
React Native SDKReact Native apps
Flutter SDKFlutter apps
Swift SDKiOS / macOS (SwiftUI or UIKit)
Android SDKAndroid (Jetpack Compose)

Prerequisites

  • A Stripe account in live mode
  • SteadPay account (sign up here)
  • Your subscriber’s stripe_customer_id available at login time