
Crypto Subscription Billing for SaaS: Recurring Payments Without Custody
How SaaS businesses can bill in crypto with BlockBee Subscriptions: plans, renewal reminders, webhooks, pricing in fiat and a launch checklist.
Short answer
A SaaS business can bill in crypto without holding customers' money. With BlockBee Subscriptions you set up plans in the dashboard, create a subscription for each user by API, and BlockBee emails the customer before each renewal. When they pay, the funds go to your wallet and BlockBee sends your app a webhook so you can extend their access.
One thing to know first: crypto subscriptions are not automatic card-style charges. A crypto wallet can't be debited without its owner's approval, so the customer pays each renewal themselves. BlockBee's reminders are there to make that easy.
How crypto billing differs from card billing
| Card subscription | Crypto subscription with BlockBee | |
|---|---|---|
| How renewal happens | The provider charges the saved card | The customer pays after an email reminder |
| Chargebacks | Possible | None: a confirmed blockchain payment can't be reversed by the payer |
| Failed payments | Declines and retries | Renewal simply isn't paid; the subscription expires |
| Where funds go | Your processor balance, then your bank | Your wallet |
| Who can pay | Cardholders | Anyone with crypto, worldwide |
Because renewals aren't automatic, plan for some customers forgetting to pay. Clear reminders, a short grace period and an easy "renew" link in your app help.
How BlockBee Subscriptions work
- Configure plans. In Subscription Settings, set up each plan with a price in fiat, a billing period and the coins you accept. You also add a wallet address for each coin.
- Create a subscription. When a user signs up, your server calls
subscription/createwith your API key, the user's ID in your system and their email. Pass a plan slug inoptionto get a direct payment link for that plan. - The customer pays on BlockBee's hosted page, in any coin you enabled.
- You receive a webhook. On each payment, first or renewal, BlockBee sends
action=renewwith the new end date insubscription_end_date_ts. Update the user's access to match. - BlockBee reminds the customer by email before the subscription ends.
- If they don't renew, BlockBee sends
action=expiredwhen the end date passes. Downgrade or lock the account.
The announcement of BlockBee Subscriptions describes the feature, and the subscriptions guide has the full calls and payloads. BlockBee estimates 10 to 15 minutes for a basic implementation.
Handling the webhooks correctly
- Verify the signature on every webhook before trusting it. BlockBee signs each one with RSA SHA-256; the signature guide has examples in several languages.
- Reply
*ok*with status 200 quickly, or BlockBee will send the webhook again. - Make handling idempotent. Use
subscription_idso a repeated webhook doesn't extend access twice. - Trust the end date, not your own arithmetic. Set access to
subscription_end_date_tsfrom the webhook. - Do slow work later. Reply first, then send emails or provision resources in a background job.
Pricing in fiat, paid in crypto
You set plan prices in a fiat currency such as dollars or euros. The customer pays the equivalent in the coin they choose, at the rate when they pay. The webhook reports both the fiat value expected and the crypto amount paid.
If you don't want to hold volatile coins, accept stablecoins such as USDT or USDC, or set up SwapBee rules in the dashboard to convert incoming coins automatically. Conversion is best effort: if no quote is available, you receive the original coin.
Why non-custodial matters for SaaS
With a custodial processor, subscription revenue builds up in the provider's account until you withdraw it. With BlockBee, each payment is forwarded to your wallet once confirmed, and BlockBee keeps no balance for you. There is nothing to withdraw and no provider balance at risk.
What it costs
BlockBee charges 1% per transaction, falling to 0.25% as your 30-day volume grows, plus the network fee to forward each payment. There are no setup or monthly fees. Each coin has a minimum fee and a minimum payment; payments below the minimum are ignored and lost, so keep plan prices well above the minimums of the coins you accept. See fees and minimums per coin.
Before you launch
- Create a test plan with a short period.
- Subscribe with a small real payment. BlockBee has no sandbox or testnet, so use a cheap coin such as Litecoin and stay above its minimum.
- Check that your app receives the
renewwebhook, verifies it and sets the right end date. - Let the test subscription expire and check the
expiredwebhook locks access. - Send the same webhook twice and confirm access is extended only once.
Frequently asked questions
Can BlockBee charge customers automatically every month?
No. Crypto wallets can't be charged without the owner's approval. BlockBee emails customers before each renewal and they pay themselves.
Can I offer several plans?
Yes. Set up each plan in the dashboard and pass its slug in the option parameter when you create the subscription.
Can customers pay in any coin?
They can pay in any coin you enable for the subscription service. BlockBee supports 100+ cryptocurrencies and tokens.
Do I need a website checkout?
No. BlockBee hosts the payment page. Your app only creates the subscription and handles the webhooks.
To start, create an account and set up your first plan, or read about BlockBee Subscriptions.