No Fianto fee during the beta. Any fee comes with at least 30 days notice. See pricing
SolanaCompare8 min read

Solana Pay has no recurring payments, and the reason is in how a request ends.

Solana Pay cannot take recurring payments: its spec defines a transfer request and a transaction request, and both end with the customer signing one transaction, with no standing permission left behind for next month. As of 15 October 2026 the spec does not mention recurring payments or subscriptions at all. For recurring USDC on Solana you need a delegation the customer approves once, which is what Solana's Subscriptions program provides and what Fianto, the publisher of this post, runs subscriptions on.

On this page
What is Solana Pay?Why can't Solana Pay take recurring payments?What do you use for recurring payments on Solana instead?What does a Solana Pay request look like next to a subscription?How is Fianto's checkout related to a Solana Pay transaction request?When is plain Solana Pay enough?SourcesQuestions
TL;DR
  • Solana Pay is a URL standard for one payment: a transfer request lets the wallet build a transfer, a transaction request fetches a transaction from a server.
  • Either way the customer signs one transaction, which expires once its recent blockhash is more than 150 slots old, so nothing in it can renew.
  • Recurring payments on Solana use the Subscriptions program instead: one approval, then capped charges each period.

What is Solana Pay?

Solana Pay is an open standard for putting a payment request inside a URL, so any wallet that reads the URL can pay it. The spec describes itself as "a standard protocol to encode Solana transaction requests within URLs to enable payments and other use cases." It is not a company, a checkout page or a processor, and it charges no fee of its own. It defines two kinds of request:

  • A transfer request, in the spec's words, "describes a non-interactive request for a SOL or SPL Token transfer." The URL carries the recipient, the amount and the token, and the wallet builds the transfer itself.
  • A transaction request "describes an interactive request for any Solana transaction." The wallet calls the merchant's server, the server returns a transaction, and the wallet validates it "as untrusted" and signs it.

An SPL token is any token issued on Solana's token programs; USDC is one. A wallet signature is the customer's approval of one specific transaction, with its amounts and accounts fixed at the moment of signing.

Why can't Solana Pay take recurring payments?

Solana Pay cannot take recurring payments because every request produces one transaction that the customer signs once, and that signature cannot be replayed next month. Solana's documentation says "a transaction's recent blockhash is valid for 150 slots", so a signed payment either lands soon or expires. There is no field in either request type for a period, a cap or a second charge.

A recurring payment needs something different in kind: a standing permission, stored on chain, that lets a named party move a limited amount from the wallet later without a new signature. Solana Pay never creates one. A merchant using it for a monthly plan has to send a fresh request every month and hope the customer pays it, which is a reminder system, not a subscription.

The comparison below puts the two Solana Pay requests next to the Subscriptions program, the part of Solana that does handle recurring payments.

Transfer requestTransaction requestSubscriptions program plan
Who builds the transactionThe wallet, from the URLThe merchant's serverThe subscribe transaction once, then each charge by an allowed collector
Customer signaturesOne per paymentOne per paymentOne, at subscribe
Repeats on a scheduleNoNoYes, each period, up to the plan's cap
Limits on later chargesNone: there are no later chargesNone: there are no later chargesAmount per period, destination wallets and collectors, enforced by the program
Typical useA QR code at a till, a tip, a one-off invoiceA checkout that needs custom logicMonthly or yearly plans

What do you use for recurring payments on Solana instead?

For recurring payments on Solana you use the Subscriptions program, a public program on Solana at De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44. Solana's docs describe three models, compared in Solana Subscriptions and Allowances, for merchants. A fixed delegation lets another party "spend up to a fixed total amount"; a recurring delegation lets it "spend up to a limit that resets every period"; and a subscription plan lets "a merchant publish billing terms that users can accept."

The plan model is the one built for selling subscriptions, because the merchant writes the terms once and every subscriber accepts the same ones. Fianto uses it: each recurring price gets a plan that fixes the amount per period (the price plus fees), the period (30 or 365 days) and the wallets the money may go to, and names the keys allowed to collect. The customer signs once at checkout; the program refuses any later charge above the cap or to another wallet. The delegation underneath is explained in Solana token delegation explained, and the head-term page on Solana subscriptions covers the fees and the wallets that work.

With Fianto the merchant pays nothing, not even the SOL for renewals. The customer pays 0.01 USDC with each subscription charge today, the Solana fee of the subscribe transaction (under $0.01), and account rent. As of 15 October 2026 that is about 0.00144 SOL for the subscription account, returned when they reclaim it after the subscription ends, and about 0.00119 SOL once on a wallet's first subscription, not returned; Solana is cutting rent in phases, so the checkout shows the exact live amount.

Sell a monthly or yearly USDC plan on Solana. The customer approves once.

See how subscriptions work

What does a Solana Pay request look like next to a subscription?

A Solana Pay transfer request for 20 USDC is a single URL. The format follows the spec; the recipient and reference here are placeholders, and the token is the USDC mint Circle lists for Solana:

transfer-request.txt
solana:<recipient-wallet>
  ?amount=20
  &spl-token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
  &reference=<one-time-public-key>
  &label=Quillfern%20Labs
  &message=Pro%20plan%2C%20October

Everything that request can do is in that line: one transfer of 20 USDC to one wallet. To bill the same customer in November you create a new URL with a new reference, and they scan or click it again.

A Fianto subscription for the same 20 USDC a month asks for one signature too, but the transaction does more. It sets up the wallet's approval for the program if the wallet has none, subscribes the wallet to the plan with a cap of 20.01 USDC per 30 days (the price plus today's 0.01 USDC network fee, with no Fianto fee during the beta), and pays the first period. Two minutes after each 30-day period ends, Fianto's charging key collects the next one. If the wallet is short, Fianto tries again one hour, six hours and a day after the period boundary, and the fourth failure ends the subscription.

How is Fianto's checkout related to a Solana Pay transaction request?

Fianto's one-off checkout borrows two ideas from Solana Pay, but it is not a Solana Pay URL. The first is the server-built transaction. As in a transaction request, Fianto's server builds the payment and the customer's wallet only signs it, here through the Wallet Standard solana:signTransaction feature in a browser rather than through a solana: link. A wallet that can only sign-and-send is refused with wallet_unsupported, because Fianto broadcasts the transaction itself.

The second is the reference key. Solana Pay's spec lets a request add a reference account because "Solana validators index transactions by these account keys", so a merchant can find the payment with the getSignaturesForAddress RPC method. Fianto adds a 32-byte reference to the transfer to the merchant for the same reason, and a sweep finds the payment by that address if anything else misses it.

What Fianto adds is checking. Before broadcasting, the backend decodes the signed bytes the wallet returns and refuses them unless every part matches what it built: the fee payer, the programs, each transfer's mint, source, destination and amount, the reference and the blockhash. Then it waits for the chain. The customer sees success at confirmed, and the order turns PAID, with a signed order.paid webhook, only at finalized; confirmed vs finalized explains the gap. The docs page on the payment lifecycle has each state.

When is plain Solana Pay enough?

Plain Solana Pay is enough when every payment is a one-off and you are happy to confirm payments yourself. It fits well for:

  • In-person sales, where a QR code at the counter is faster than any checkout page.
  • Tips and donations of whatever amount the payer picks.
  • A developer who wants no third party at all and will watch the chain for each reference.

It stops being enough once you need the same customer to pay again without being asked, or you want a hosted page, signed webhooks, a dashboard and a cancel portal around the payment. That is the point to compare it with a hosted checkout; what a hosted USDC checkout does that a wallet address does not walks through the difference, and accepting USDC on Solana covers the one-off setup.

Sources
Questions

Questions about Solana Pay and recurring payments.

Does Solana Pay support subscriptions?

No. As of 15 October 2026 the Solana Pay spec defines transfer requests and transaction requests, each ending in one signed transaction, and does not mention recurring payments or subscriptions.

Can I send a Solana Pay link every month instead?

You can, but the customer has to open and pay each one, so a missed month is a missed payment. That is a reminder, not an automatic renewal.

How do recurring payments work on Solana?

Through a delegation the customer approves once. The Subscriptions program stores a plan with an amount per period, destination wallets and allowed collectors, and refuses any charge outside it.

Is Fianto built on Solana Pay?

No. Fianto's checkout uses the Wallet Standard in the browser, with a server-built transaction and a reference key like Solana Pay's, and its subscriptions use the Subscriptions program.

Does Solana Pay charge a fee?

Solana Pay is an open standard, not a service, so it has no fee of its own. The payer pays the normal Solana network fee for the transaction they sign.

Read next.

Solana10 min read

Solana Subscriptions and Allowances: the three delegation models, for merchants

Solana's Subscriptions and Allowances program gives a merchant three ways to take money from a customer's wallet later: a fixed delegation (a spending budget), a recurring delegation (a limit that resets each period, on terms the customer sets) and a subscription plan (billing terms the merchant publishes). Use a plan for fixed-price monthly or yearly products such as SaaS, API tiers and memberships. It is the only model Fianto runs, and Fianto operates the keys, the collection and the retries, so you run none of them.

Solana9 min read

Solana confirmed vs finalized: when a payment is final, and what Fianto waits for

A Solana payment is confirmed once validators holding more than two-thirds of the stake have voted on its block, usually about one slot after it lands, and finalized once that block can no longer be rolled back, which takes about 12.8 seconds until the Alpenglow upgrade activates (scheduled for 21 October 2026). Fianto shows the customer a receipt at confirmed, but marks the order PAID and sends order.paid only at finalized. Once Alpenglow is live, solana.com expects finality in roughly 150 milliseconds, and confirmed and finalized become the same state.

Payments8 min read

How crypto recurring payments work: push, pull and the four billing models

Crypto recurring payments work in one of two ways: the customer pushes a new payment every period, usually after an invoice link, or the customer approves once and the merchant pulls each charge within an on-chain limit. A wallet never pays on its own, so a true automatic renewal needs that approval and a program that enforces it. On Solana, Fianto uses the Solana Foundation's Subscriptions program for this and pulls each period's USDC straight into the merchant's wallet.

One request pays once. A plan keeps paying.

Put your monthly price on a plan and let the customer approve it one time.

New posts are announced on X and Discord.