SaaS & subscriptions

Give every customer their own deposit address. Each renewal they pay lands in your wallet, and a signed callback tells your app which account to extend.

Why TrezorPay fits

One address per customer

Use the customer id in the callback URL: the same URL always returns the same address, so it works for every renewal.

Credit in your currency

Add convert=1 and the callback carries the payment value in USD, EUR or 35 other currencies, ready to compare with the plan price.

Your billing, your rules

TrezorPay moves the money, your app owns the plan: billing periods, grace days, upgrades and reminders work exactly the way you decide, with no subscription engine to fit into.

How it works

  1. Create the customer address

    At sign-up, call /create/ with a callback URL carrying the customer id.

  2. The customer pays each period

    Show the address on the billing page; renewals go to the same address.

  3. Extend the plan on the callback

    Match value_coin_convert against the plan price and extend the subscription.

The request
GET /trc20/usdt/create/?callback=https://app.example/billing?customer=42&address=YOUR_WALLET&convert=1&multi_token=1

Questions

Can I charge automatically every month?

Crypto wallets cannot be debited, so renewals stay in your hands: send a reminder before the due date and show the same address. Each payment triggers its own callback, and your app extends the plan on its own terms.

What if a customer pays too little?

The callback carries the exact amount received, so your app decides: extend partially, ask for the difference, or credit a balance.

Other use cases

Start in one request

No sign-up, no API key. Put in your wallet and callback URL and you are live.