For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
WebsiteDashboardGet API key
  • Get Started
    • Welcome
    • Quickstart
    • Agent onboarding
    • Service keys
    • Core Concepts
  • Guides
    • Hosted Mode
    • Webhook Mode
    • Audio Mode
    • SMS and Conversations
    • Compliance and Consent
    • Billing and Usage
    • Voice zones
    • SMS zones
  • Reference
    • Authentication
    • API Overview
    • Errors and Testing
  • API Reference
  • Changelog
    • Cloudflare Insights CSP
    • Agent-native key management
    • Postpaid auto-charge
    • Cents-honest pricing
    • Stripe payments foundation
    • Hosted/webhook mode rename
    • Upgrading to v0.5.7.0
LogoLogo
WebsiteDashboardGet API key
On this page
  • What changed
  • API compatibility
  • Top-up packs
  • What you need to do
Changelog

Stripe payments foundation

2026-04-28 · v0.5.0.0 · platform

Was this page helpful?
Previous

Hosted/webhook mode rename

2026-04-20 · v0.3.0.0 · breaking

Next
Built with

Headline. Payment processing moved to Stripe. The API and SDK surfaces are unchanged. Customers see Stripe Checkout instead of the previous processor.

v0.5.0.0 migrates Saperly’s payment processor to Stripe. The customer-facing API path /api/v1/billing/add-funds keeps the same request and response shape. The visible difference is the Checkout screen, which is now Stripe-hosted with Stripe’s branding.

What changed

  • Stripe is the payment processor. New customers see Stripe Checkout when they add funds.
  • Schema additions for an idempotent webhook audit trail: a stripe_events table, a payment_intents ledger, and a stripe_customer_id column on billing accounts.
  • Webhook handler at /api/webhooks/stripe for payment_intent.succeeded, payment_intent.payment_failed, refund.created, charge.dispute.created, and subscription events. The handler is transactionally idempotent, so replaying a webhook does not double-credit.
  • Refund correctness. Refunds debit credits proportionally instead of in raw cents, so a full refund collapses cleanly to the original credit grant.
  • /api/health reports version: 0.5.0.0 post-deploy.

API compatibility

/api/v1/billing/add-funds accepts the same request shape and returns the same response shape it always has. Code that consumes the SDK does not need to change.

The legacy webhook path /api/webhooks/lemonsqueezy now returns 410 Gone with a year-long cache header, pointing integrators at /api/webhooks/stripe. If you had nothing subscribed to the legacy path, you can ignore it.

Top-up packs

Top-up pack pricing is unchanged from the prior processor:

  • 1,000 credits = $13
  • 2,500 credits = $30
  • 5,000 credits = $55
  • 10,000 credits = $100

These are documented for archival reference. v0.5.3 retired the credits unit on customer-facing surfaces. See Cents-honest pricing reprice for the post-reprice model.

What you need to do

Nothing on your side. If you saved Stripe billing portal links from the prior processor’s flow, they no longer apply. Stripe-hosted Checkout is the entry point now.