Concepts

Customer emails

Your customers hear from you at every step, with nothing to build. Or turn any email off and send your own.

  1. ReceiptThey subscribeWhat left their wallet, the network fee on its own row
  2. Bill at risk3 days before a billOnly if it wouldn't go through: what to fix, and where
  3. Failed billA bill failsAt each attempt: why, and the next try
  4. Receipt ✓Each bill paidWith its period and the link to their page

Two ways to run them

  • Let QBitFlow send them (the default). Receipts, a reminder before a bill that wouldn't go through, failed bills and a trial's end go out in your name, at the right moment, with the link to fix what needs fixing. Nothing to build.
  • Send your own. Turn an email off in Dashboard/Settings/Notifications and send yours from the webhook event it comes with (below). Mix freely: keep the receipts, write your own reminders.

To your customers

EmailSent whenSetting (default)Its webhook event
Receipta payment, or a subscription's bill, is recorded (the first bill included)emails.customerReceipts (on)payment.completed, subscription.billed
Bill at risk3 days before a bill that wouldn't go throughemails.customerBillAtRisk (on)subscription.upcomingBill with a check false
Every upcoming bill3 days before each bill, and before a trial endsemails.customerUpcomingBill (off)subscription.upcomingBill
Failed billeach failed attemptemails.customerBillingFailed (on)subscription.billingFailed
Trial endeda trial ends unconfirmedemails.customerTrialEnded (on)subscription.statusChanged (trialExpired)

What each one says, then each one as your customers get it:

  • Receipt: what was charged, the network fee on its own row, the total that left their wallet, the network, their wallet and the transaction on the explorer. A bill's adds its period and the link to their subscription's page.
  • Before a bill: the amount and its token, the date and the link to their page. A bill at risk says what to do first: top up the allowance (allowanceSufficient: false), add funds to the wallet (balanceSufficient: false) or set a new maximum (maxPerPeriodSufficient: false). A trial's asks them to confirm the subscription to keep it.
  • Failed bill: why, when it's tried again (or that the subscription is cancelled after the last attempt), and the link to fix it.
  • Trial ended: the link to confirm the subscription before it's cancelled.

Example · rendered from QBitFlow's templates

  • Receipt: You paid Example Store 49.0023 USDC; You paid Example Store 9.9921 USDC
  • Bill at risk: Your next Example Store bill won't go through
  • Upcoming bill: Your Example Store subscription bills on Nov 5, 2026; Your Example Store free trial ends on Nov 5, 2026
  • Failed bill: Your Example Store subscription wasn't billed; Your Example Store subscription was cancelled
  • Trial ended: Your Example Store free trial has ended
Example Store and its data are examples: yours carry your name, colour and support email.

In Dashboard/Settings/Notifications, Preview email under each setting shows it in your own branding, and sends it to you.

When they're sent, and when not

  • Live mode only. Test mode never emails your customers: send yourself a live payment to see one.
  • Only to a customer with an email. A checkout that asked nothing (checkout.customerDetails) or was only given your customerReference may leave none to write to.
  • One email per bill before it. Every upcoming bill includes the bill at risk: with both on, a customer gets one email. The timing is subscriptions.upcomingBillDays (3 days by default): at 0, or for a period no longer than it, there's no reminder. A trial is never at risk, and a check that couldn't be made doesn't count.
  • No reminder for a paused, stopped or cancelled subscription: it isn't billed.

In your name

Every customer email is from your name "via QBitFlow": your branding's display name, else your organization's. With a support email in Dashboard/Settings/Branding, replies go to you, and it and your support link sit in the footer. The button wears your primary colour when it reads on white (QBitFlow's blue otherwise). Your logo isn't shown: loading it would tell you when your customer opened the email.

Emails to you and your sellers

  • Failing webhooks (emails.webhookFailures, on): your team, once an endpoint has failed for 24 hours, and when it's disabled after 3 days. Never for a test-mode endpoint.
  • Getting-started tips (emails.productTips, on): your organization's owner, the next step to go live, until the first live payment. Each has a link to stop them.
  • Your sellers, in a marketplace: their invitation (unless you send it yourself, sendEmail: false), and from QBitFlow, with no setting, when you trust them and when you release their held funds: it's their own money.
  • A seller's customers get the emails the seller chose while members.customerEmails is on (the default); off, yours.

Example · rendered from QBitFlow's templates

  • Failing webhooks: Your webhook endpoint keeps failing; Your webhook endpoint was disabled
  • Getting-started tips: Welcome to QBitFlow; Connect the wallet you'll be paid in; Create your first product; Try a test payment; Your test payments work: go live; You received your first live payment
  • Invitation: Example Store invited you to QBitFlow
  • Trusted: Example Store now pays you directly
  • Funds released: Example Store paid you 412.5 USDC
Example Store and its data are examples: yours carry your name, colour and support email.