USDC retainers for agencies and contractors.
Your client approves the retainer once from their Solana wallet. Each period, Fianto collects the agreed amount straight to your wallet; the on-chain program refuses anything above the cap they signed. Extra work goes out as a one-off payment.
A retainer is a price
Create a product for the client or the service, with a monthly (30-day) or yearly (365-day) price in USDC. Open a checkout session for it with the engagement as your order_ and send your client the link. They approve once; the first period is paid then, and each later period on its due date.
The cap the client signs is the retainer plus the flat network fee each renewal carries, 0.01 USDC today. The Subscriptions program checks every collection against that cap and your receiving wallet, so a request for more, or to another wallet, is refused on chain. Each paid period is recorded with its Solana transaction, so the history of a retainer is a list of signatures your client can check on any explorer.
The link you send
A checkout session's link works until the session expires; set expires_ to give your client a deadline. If the link lapses, POST /v1/checkout-sessions/{id}/link issues a new one for the same open session, and POST /v1/checkout-sessions/{id}/cancel withdraws it. Before signing, your client sees your name, the amount, the cap and the wallet the money goes to; their wallet shows the same.
When the scope changes
A price cannot be edited. For a new rate, add a new price, open a new checkout for the client, and cancel the old subscription with the API, now or at the end of its period. The client approves the new amount in their own wallet: nobody can raise it for them.
Extra work and expenses
Bill a one-off amount with a checkout session in mode: "payment", using up to 50 line items with a name, quantity and amount each. The client pays from their wallet and order. reaches your server with your order ID. Invoices are not built yet: every order and subscription period is recorded with its Solana transaction, and the dashboard exports payments, orders and subscriptions as CSV.
If a period is not paid
If the client's wallet is short on the due date, nothing is taken. Fianto tries again one hour, six hours and one day into the period, and you get subscription. at the first failure. If the fourth attempt fails, the retainer ends; a missed period is never charged later. Fianto takes no partial amount. The dashboard shows the retainer as past due, with the reason and the time of the next attempt.
