Test and go live

Run it once more as a customer would, then move it to live, row by row.

Pay with test tokens

Get QBFT, QBitFlow's test token, from the QBFT faucet, which also lists each test network's coin. The dashboard's Dashboard/Tools sends QBFT too (to each wallet once every 6 hours per chain) and can run a test payment into your wallet. Then pay a test checkout the way your customers will (how to pay).

What test mode does differently

WhatTest modeLive
PricesAt most $5: a product's, an inline price, and a checkout's amount with its feesNo cap
Paid withFaucet tokens, on test networksReal tokens, on the mainnets
Subscription frequencyAt least 5 minutesAt least 1 hour, and a price above $0.25
Subscription billsOnly when you run one (the test bill)On their due date, by QBitFlow
Redirect URLshttp:// or https://https:// only
Customer emailsNever sentSent
Webhook retries3 retries, 5 minutes, 30 minutes and 2 hours after the failed attempt1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours after the failed attempt, then every 12 hours, for 3 days
A failing endpointNever turned off, no emailIts team emailed after 24 hours, turned off after 3 days

Go live

Live is a separate set of spaces: nothing carries over. Switch the dashboard to Live, then redo what your integration needs, row by row:

0 of 7 done

  • a live key (sk_live_…), created in the dashboard switched to live

    a test key never sees or creates live data

  • the receiving wallets on the mainnets, per chain (dashboard: POST /wallets, POST /token-wallets), and the currencies they accept, before any checkout (a space whose wallets accept nothing opens none: 409 merchant_not_ready; check with GET /wallets/accepted-currencies)

    test wallets are for test networks; the organization fee also needs the organization's own wallet on each chain (GET /organization/wallets, routes/members.md)

  • created again in live (new uuids)

    references may be the same as in test (unique per space and mode)

  • created again in live, each with its own new secret

    test endpoints only receive test events; store the live secret separately

  • invited again in live (POST /invitations with a live key); their fee and trust are per mode

    a member of test only → 404 in live

  • set in live (PUT /settings/:key with a live credential); the dashboard can apply one change to both modes

    values are per space and mode

  • nothing to do

    owners and admins work in both modes

Then swap your server's QBITFLOW_API_KEY and QBITFLOW_WEBHOOK_SECRET for the live ones. Keep the two secrets apart: each endpoint signs with its own.

Live redirects are https:// only: a live checkout's successUrl and cancelUrl, and your live checkout.defaults setting, which payment links and checkouts without URLs use. http:// answers 400 validation_failed: check the setting in live before your first payment.

Check it

Make one small live payment with real tokens. Its event (payment.completed, or subscription.created) reaches your live endpoint in Dashboard/Settings/Events (Live), and your server acts on it.