SaaS

Crypto payments for SaaS

Let customers pay each billing period in USDT and other crypto. You create a payment per invoice through the API, send the link and extend access when the webhook says the payment is complete.

  • One invoice per billing period
  • A payment per invoice through the API
  • Access extended by webhook
USDT and USDCNo card chargebacksWallet withdrawal at network fee
USDTTetherUSDCUSD CoinBTCBitcoinLTCLitecoinTRXTRONBNBBNBETHEthereumTONComing soonToncoin
TRC20TRONERC20EthereumBEP20BNB Smart ChainTONComing soonThe Open NetworkBitcoinBitcoinLitecoinLitecoin

When crypto fits a SaaS business

Crypto is a second way to pay, next to cards, for the customers the card rails fail:

  • teams in countries your card processor does not serve, or whose cards are declined for foreign software;
  • companies that prefer to pay a large annual invoice by transfer rather than by card;
  • developer, infrastructure and hosting buyers who already hold dollar stablecoins.

A crypto payment cannot be reversed by the sender, so there are no card chargebacks on these invoices. It adds a payment method; it does not replace card billing for everyone else.

The model: one invoice per billing period

Card billing charges a stored card automatically. A crypto payment has to be started by the customer, so the model that works is a prepaid invoice for each period:

  1. Shortly before the period ends, your system creates an invoice and a Qvard payment for it.
  2. The customer gets a link to the hosted payment page, picks an asset and a network and pays.
  3. When the payment is complete, Qvard calls your webhook and you extend the subscription.

There is no stored payment method and no automatic charge. Qvard does not offer recurring billing as a product, so renewal reminders, the grace period and plan changes are your own logic.

How it works

Create the payment from your backend with one POST to https://api.qvard.com/api/v1/payment: your key in the x-api-key header, your invoice number as id and the amount as price, in US dollars unless you send currency, for example INR. The response contains a redirectUrl, the address of the hosted payment page; put it in the invoice email.

When the payment is complete, Qvard sends a webhook with your id and the status completed. Check the x-api-key header, mark the invoice paid only if it is not paid yet, answer exactly HTTP 200 and extend the subscription. The exchange rate on the payment page is fixed for one hour.

Node.jsrenew.js
// A few days before a period ends: create the invoice and its payment.
async function createRenewalInvoice(sub) {
  const invoice = await db.invoices.create({ subscriptionId: sub.id, amountInr: sub.planPriceInr, status: 'open' });

  const res = await fetch('https://api.qvard.com/api/v1/payment', {
    method: 'POST',
    headers: { 'x-api-key': process.env.QVARD_API_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ id: String(invoice.id), price: invoice.amountInr, currency: 'INR' })
  });
  const { redirectUrl } = await res.json();
  await mailer.send(sub.email, 'Your renewal invoice', 'Pay here: ' + redirectUrl);
}

// In the webhook handler, when status is "completed" (and the x-api-key header matches).
async function onPaid(invoiceId) {
  const invoice = await db.invoices.markPaidIfOpen(invoiceId); // null if already paid
  if (invoice) await db.subscriptions.extend(invoice.subscriptionId, '1 month');
}

What stays on your side

Be clear about what you build and what the gateway does for you.

  • You: invoices, reminders, the grace period, upgrades and downgrades, refunds and accounting.
  • The gateway: the payment page, addresses, network monitoring, payment statuses and the webhook.

If a customer pays only part of an invoice the payment gets the partial status and no completion webhook is sent; keep the invoice open and ask for the rest. Return URLs after payment are not available yet, so give customers a billing page that shows the real invoice status.

Money and fees

There is no subscription fee for the gateway. The commission is individual to your project and, per the pricing page, starts at 1% and can go down to 0.1%. Funds sit on your Qvard balance and you withdraw them to your own wallet; the withdrawal costs only the network fee. Withdrawal to a bank account in fiat is not available. Pricing stays in dollars; customers pay the equivalent in the asset and network they choose.

What is ready today

The integration is through the API, which takes a developer; there is no ready-made billing plugin yet, and payment links and a separate sandbox are in development. Read the full guide in crypto payments for SaaS, the invoicing side in crypto invoicing for B2B SaaS and the webhook rules in how to secure crypto payment webhooks. The request formats are in the developer documentation, and a demo invoice shows what your customer sees.

FAQ

FAQ

A quick overview of how Qvard handles payments, integration and merchant operations.

What is Qvard?

Qvard is a custodial crypto payment gateway for businesses that need hosted checkout, invoices, API payments and merchant balances.

Which assets are supported?

You can accept USDT, USDC, BTC, LTC, TRX, BNB and ETH. USDT is available on several networks, so customers can pay through the route they already use. TON and USDT on TON are coming soon.

Is it good for developers?

Yes. The integration is built around creating a payment, redirecting the customer to redirectUrl and receiving a final webhook status, so orders in your system update automatically.

Can I customize checkout?

Yes. You can set the shop name, logo, button color and localized texts so the payment page feels like part of your product. Custom return URLs (successUrl/failUrl) are coming soon.

What do I need to get started?

Create a merchant account and complete business verification. After testing a demo invoice, connect hosted checkout or the API and start accepting real payments.

How do withdrawals work?

Funds are tracked in merchant balances separated by asset and network. You can withdraw manually or set up withdrawal rules for automatic payouts.

Launch crypto payments without building blockchain infrastructure

Use Qvard as your payment layer: checkout, invoices, status tracking, balances and withdrawals.