OpenSettle
ProductDevelopersPricingCustomersBlogDocs
Sign inStart building
Getting started
  • Overview
  • Quickstart
  • Core concepts
  • Supported chains
Billing
  • Checkouts
  • Subscriptions
  • Invoices
  • Refunds
Developer
  • API reference
  • SDKs
  • Webhooks
  • Errors
  • CLI
Operations
  • Reconciliation
  • Analytics
  • Security posture
OpenSettle

Stablecoin billing infrastructure. Non-custodial by design.

OpenSettle is not a money transmitter, custodian, or exchange. Funds settle directly to merchant wallets.

Get the changelog in your inbox

Product news and deep engineering notes. Unsubscribe in one click.

Product
  • Overview
  • Pricing
  • Integrations
  • vs. Stripe
  • Roadmap
  • Changelog
Developers
  • Documentation
  • API reference
  • Quickstart
  • Webhooks
  • System status
Company
  • About
  • Customers
  • Partners
  • Blog
  • Careers
  • Press
  • Brand
  • Contact sales
Legal
  • Security
  • Trust center
  • Terms
  • Privacy
  • Compliance
  • DPA
  • Subprocessors
  • Cookies
© 2026 OpenSettle Labs, Inc. All rights reserved.security.txt
All systems operational
Billing›Subscriptions

Subscriptions.

OpenSettle supports three autopay modes. Each makes a different trade-off between friction, wallet compatibility, and renewal certainty. Most merchants ship with invoice-and-pay, then promote allowance mode as the default over time.

Invoice-and-pay

The lowest-common-denominator. We email the customer a renewal link 7 days, 3 days, and 1 day before the renewal date. They click, sign the transaction, and the subscription renews. Works on every wallet on every chain. Expect a renewal success rate in the 85–92% range.

ERC-20 allowance (recommended)

The card-on-file of crypto. On signup, the customer approves a capped spending allowance to our Subscription contract. On each renewal, the contract pulls the pre-agreed amount. No further customer action needed. Supports every EVM chain and Tron (TRC-20 is ERC-20 compatible). Expect 96–98% renewal success.

create-allowance-subscription.ts
const sub = await os.subscriptions.create({
  customer: "cus_9fX0a2E1",
  price: "price_pro_monthly",
  settlement: { chain: "base", token: "USDC" },
  autopay: "allowance",
  allowance: {
    // cap is 2.5× the monthly rate by default
    multiplier: 2.5,
    // revoke automatically if unused for 90 days
    auto_revoke_after_days: 90,
  },
});

Smart-wallet autopay (ERC-4337)

For customers on smart wallets (Safe, Coinbase Smart Wallet, Privy, et al.), we request a scoped session key: cap, duration, and allowed target. No per-renewal signature, and the customer can revoke the session at any time. Currently on Ethereum, Base, Arbitrum, and Polygon.

Dunning

When a renewal fails (insufficient balance, revoked allowance, network issue), we emit a subscription.past_due webhook, retry once an hour for 48 hours, and email the customer with a recovery link. You can disable dunning or customize it under Settings → Dunning.

Subscription lifecycle

  • trialing — subscription created with a trial period.
  • active — current and paid.
  • past_due — renewal failed; dunning engaged.
  • paused — paused by merchant or customer.
  • canceled — ended. Terminal state.
WebhooksAPI reference