Fees
One fee, lower as you grow, taken by the contract. The network fee is on top, quoted first. Checkout fees are yours to add.
Example · a $100.00 price and $20.00 of VAT, at 0.99%
| Price | $100.00 |
|---|---|
| VAT (20%), your line | $20.00 |
| Processing fee | $1.20 paid by your customer |
| Charged | $121.20 + network fee, quoted before signing |
Example · the contract's split
| Charged | $121.20 |
|---|---|
| QBitFlow's 0.99% | −$1.20 |
| You keep | $120.00 the price and your line |
QBitFlow's fee
It follows your organization's volume (pricing):
The schedule · GET /organization/pricing
| Your first $5,000 ever | 0.5% the offer |
|---|---|
| Then, over the last 30 days: under $50,000 | 0.99% |
| $50,000 to $100,000 | 0.75% |
| $100,000 and more | 0.5% |
- The offer comes first. A new organization pays 0.5% until its volume ever reaches $5,000. Then the offer ends for good: a later refund doesn't bring it back.
- Then your last 30 days set the rate: today and the full UTC days before it. It goes down as your volume grows, and back up if it drops.
- A payment takes the rate of the volume before it, on its whole amount. The payment that crosses a tier pays the old rate; the next one, the new.
- What counts: live payments and subscription bills, your members' included, as your customers paid them (price, tax, fee lines), minus approved refunds. Test mode and unpaid checkouts don't.
- When it's fixed: a checkout keeps the rate it had when created; a subscription's bill takes the rate of the day it's charged. A tier you cross applies to new checkouts within a minute.
- Your organization's settings show your rate now, your volume and what's next. A custom rate set by QBitFlow replaces the schedule.
Each payment records the rate it took (settlement.feePercent) and, in settlement.split, the
split as the contract paid it, in USD and in the token's smallest unit:
| Part | What it is |
|---|---|
platform | QBitFlow's fee |
referral | when someone referred you, their share of QBitFlow's fee, taken from QBitFlow's fee, never from yours (its rate: settlement.referralFee.feePercent; the standard terms: 20% of QBitFlow's fee for 6 months) |
organization | a marketplace's commission on a seller's payment |
merchant | what reached your wallet |
In the token, the parts add up exactly to amountMinUnits.
Avoid
Recompute the split from the rates
Do
Show settlement. as recorded
Network fees
Your customer pays it, on top, never out of what you receive:
- Quoted before signing, when they pick a currency.
- In a token, exact: QBitFlow's operator sends the transaction and pays the gas; your customer pays it back in the token, in what they sign.
- In a chain's own coin, the wallet sends and sets the fee: the checkout shows an estimate.
- Recorded as
networkFeeinsettlement.split, apart fromamount. Everything the wallet sent ispaidMinUnits.
When your wallet sends something (a refund, a payout), it pays that transaction's network fee.
Checkout fees
A checkout can add lines to its price, shown one by one and paid with it: once for a payment, with every bill for a subscription.
checkout-create-payment-fees.sh
# The customer pays the price plus your lines and, with processingFee, QBitFlow's fee (grossed up,# so you keep the price and your lines). Test mode caps the total at $5, fees included; the# network fee comes on top.curl https://api.qbitflow.app/v2/checkout-sessions/payment \ -H "X-API-Key: $QBITFLOW_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ "productName": "T-shirt", "description": "Blue, size M", "priceUsd": "3.99", "reference": "order-1044", "successUrl": "https://shop.example.com/orders/success?uuid={{UUID}}", "cancelUrl": "https://shop.example.com/orders/cancel", "fees": { "items": [{ "label": "Shipping", "description": "Standard, 3 to 5 days", "amountUsd": "0.75" }], "processingFee": true } }'# 201: a CreatedCheckoutSession ({ "link": "https://…/checkout?uuid=pay@…", "uuid": "pay@…", "expiresAt": "…" })// The customer pays the price plus your lines and, with processingFee, QBitFlow's fee (grossed// up, so you keep the price and your lines). Test mode caps the total at $5, fees included; the// network fee comes on top.const session = await client. checkoutSessions. createPayment( { productName: 'T-shirt', description: 'Blue, size M', priceUsd: '3.99', // USD reference: 'order-1044', successUrl: `https://shop.example.com/orders/success?uuid=${Placeholders. UUID}`, cancelUrl: 'https://shop.example.com/orders/cancel', fees: { items: [{ label: 'Shipping', description: 'Standard, 3 to 5 days', amountUsd: '0.75' }], processingFee: true, // omitted: your checkout.customerPaysProcessingFee setting decides },});console.log(`Redirect the customer to ${session.link}`);session = client. checkout_sessions. create_payment( product_name="T-shirt", description="Blue, size M", price_usd="3.99", # USD: you keep the price and your lines reference="order-1044", success_url=f"https://shop.example.com/orders/success?uuid={qbitflow. PLACEHOLDER_UUID}", cancel_url="https://shop.example.com/orders/cancel", fees=qbitflow.CheckoutFees( # Your own lines (up to 10), shown to the customer and paid with the price. items=[ qbitflow.FeeItem( label="Shipping", description="Standard, 3 to 5 days", amount_usd="0.75" ), ], # The customer also pays QBitFlow's processing fee, a last line computed by QBitFlow. processing_fee=True, ),)# The customer pays the price plus every line (then the network fee on top).print("Send the customer to", session.link)// The customer pays the price plus every line: $3.99 + $0.75 + the processing fee. You// keep the price and your lines. Test mode caps the total, fees included, at $5.session, err := client. CheckoutSessions. CreatePayment( ctx, &qbitflow. CreatePaymentSessionParams{ ProductName: "T-shirt", Description: "Blue, size M", PriceUSD: "3.99", Reference: "order-1044", SuccessURL: "https://shop.example.com/orders/success?uuid=" + qbitflow.PlaceholderUUID, CancelURL: "https://shop.example.com/orders/cancel", Fees: &qbitflow.CheckoutFees{ Items: []qbitflow.FeeItem{ {Label: "Shipping", Description: "Standard, 3 to 5 days", AmountUSD: "0.75"}, }, // QBitFlow's processing fee, grossed up so you keep the price and your lines. // Left nil, your checkout.customerPaysProcessingFee setting decides. ProcessingFee: new(true), },})if err != nil { log.Fatal(err)}fmt.Println("Redirect the customer to", session.Link)$session = $client->checkoutSessions->createPayment( new \QBitFlow\Params\CreatePaymentSessionParams( productName: 'T-shirt', description: 'Blue, size M', priceUsd: '3.99', reference: 'order-1044', successUrl: 'https://shop.example.com/orders/success?uuid=' . \QBitFlow\Placeholders::UUID, cancelUrl: 'https://shop.example.com/orders/cancel', fees: new \QBitFlow\Params\CheckoutFees( items: [ new \QBitFlow\Params\FeeItem(label: 'Shipping', amountUsd: '0.75', description: 'Standard, 3 to 5 days'), ], processingFee: true, // the customer pays QBitFlow's fee: you keep 3.99 + 0.75 ),));echo "Pay at {$session->link}\n"; // the customer pays the price, the shipping and the processing fee- Your lines (
fees.items): up to 10, each alabel(1 to 40 characters, one line), an optionaldescriptionand anamountUsd(above 0, at most $1,000,000, 2 decimals). - The processing fee (
fees.processingFee: true): your customer pays QBitFlow's fee, at the checkout's rate. Computed on the price and your lines, grossed up and rounded up to the cent, so you keep at least both. Omitted, yourcheckout.customerPaysProcessingFeesetting decides;falseturns it off. A marketplace seller's checkout follows the organization's setting: another value answers403 processing_fee_set_by_organization. - The amount is the price plus every line: what's charged, split and recorded as
amountUsd(amountin the token), with itspriceUsdandfees. Test mode's price cap counts the lines (test mode). - A subscription locks its lines with its price (
fees, next topriceUsd): every bill charges both, whatever the product's price or your fee becomes. The cap your customer signs is sized on that amount. - Lines are fixed when the session is created. A marketplace's commission is never passed on.