Get started
How money moves
What the payer signs, where the price and the service fee go, and when a payment counts as paid.
A payer pays with one Solana transaction that their own wallet signs. The price goes straight to the merchant's wallet and any service fee to fianto, in the same transaction. Nothing is held in between.
A one-time payment
Scroll sideways to see the whole diagram →
Show as text
- The payer's wallet signs one transaction. The payer is the only signer.
- That transaction sends the price in USDC straight to the merchant's wallet.
- In the same transaction, the service fee goes to fianto's treasury — only when the service fee is above zero.
- fianto broadcasts the signed transaction and watches the chain. The price goes straight to the merchant's wallet and any service fee to fianto, in the same transaction. Nothing is held in between.
- Subscriptions work differently: fianto's charging key co-signs the subscribe transaction and signs each renewal, within the limits the on-chain program enforces.
The transaction the payer signs holds:
- Two compute-budget instructions.
- A USDC transfer of the price to the merchant's wallet. This transfer carries the session's reference, so fianto can match it to the checkout.
- A USDC transfer of the service fee to fianto's treasury, only when the fee is above zero.
The payer is the only signer and pays the network fee. The wallet only signs: fianto broadcasts the transaction, and rebroadcasts it when needed.
To pay, the payer needs:
- a USDC token account that already exists and is not frozen,
- the price plus the service fee in USDC,
- at least 0.00001 SOL.
A one-time payment costs the payer no rent. fianto never creates token accounts, for the payer or
for the merchant. The merchant's receiving wallet must already have a USDC token account, or
creating a checkout fails with merchant_token_account_missing. Send that wallet any amount of
USDC once to create it.
Confirmed, then finalized
A Solana transaction is first confirmed, then finalized. fianto acts on each step differently:
| Step | What happens |
|---|---|
| Confirmed | The checkout page shows the payer success. |
| Finalized | The order becomes PAID, the payment SUCCEEDED, and fianto sends order.paid and checkout.session.completed to your webhook endpoint. |
The payer's success screen is not proof of payment
The payer sees success at confirmed, before the order is paid. Fulfil an order only from the
order.paid webhook or from the order you read back from the API.
The service fee
The payer pays the service fee
fianto's service fee is capped at 10 % of the price. It is added on top of the price and the payer pays it. It is rounded down in the payer's favour. It goes to fianto's treasury in the same transaction, and only when it is above zero. The checkout page always shows a "Service fee" line.
The fee is fixed on the session when you create it, so a later change never alters a checkout that is already open.
Subscriptions work differently
Scroll sideways to see the whole diagram →
Show as text
- Set the compute budget.
- Create the payer's USDC authority, only when the wallet has none.
- Subscribe, bound to the plan's terms.
- Pull the price to the merchant's wallet; this pull carries the session reference.
- Pull the service fee to fianto's treasury, only when the fee is above zero.
- The first period is charged inside this transaction.
- The payer's wallet signs and is the fee payer: the payer pays the network fee and both rents (the subscription's and, when it is created, the USDC authority's).
- fianto's charging key co-signs and pays nothing.
- The rent is read from Solana at subscribe time.
To subscribe, the payer signs one subscribe transaction. It creates the payer's USDC authority when the wallet has none, subscribes to the plan, pulls the price to the merchant's wallet and pulls the service fee to fianto's treasury when the fee is above zero. The first period is charged inside this transaction.
What the payer pays to subscribe
The payer pays the network fee and two rents: the subscription account's, and the USDC authority's when this transaction creates it. The rent is read from Solana when the payer subscribes and shown on the checkout page. fianto's charging key co-signs and pays nothing.
After that, fianto's charging key takes each renewal, every 30 days or every 365 days as the price sets, and pays the network fee for it. It can only take what the subscription's own on-chain terms allow: at most the plan amount per period, only to the plan's destinations, and nothing after the subscription is cancelled or expired.
A subscription keeps the wallet and the fee it started with. If the merchant's wallet or the fee changes, only new subscribers get the new ones.
See also
Was this page helpful? Tell us