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

How to see and revoke token approvals on Solana, and which one to leave alone.

A token approval on Solana is a delegate set on one of your token accounts: an address allowed to move tokens from it, and each account holds only one at a time. You can see and remove it in some wallets (in Solflare, under Settings, Security & Privacy, Spending approvals) or with the spl-token command line, and revoking takes effect at once. Before you revoke the delegate on your USDC account, check whether it belongs to the Solana Subscriptions program: that single approval is shared by every subscription your wallet pays through the program, so removing it makes each of them fail at its next renewal.

On this page
What is a token approval on Solana?How do you see which delegates your token accounts have?What does revoking a token approval actually do?What does a subscription approval look like in a revoke tool?What happens to your subscriptions if you revoke that approval?Which token approvals should you revoke?SourcesQuestions
TL;DR
  • A Solana token account stores one delegate and one delegated amount; approving a new delegate replaces the old one, and revoking clears it.
  • Disconnecting a site in your wallet does not remove a delegate. Only a revoke, signed by the account owner, does.
  • The Subscriptions program's approval on your USDC account is shared by all your subscriptions through it; to stop one, cancel it instead of revoking.

What is a token approval on Solana?

A token approval on Solana is a delegate recorded on a token account: another address that may transfer or burn up to an approved amount of that account's tokens without asking you each time. A token account is the account that holds one kind of token for your wallet; your USDC sits in a USDC token account, separate from your SOL. Solana's documentation on approving a delegate is precise about the limit: "A token account stores one current delegate and one delegated amount at a time."

That is a different model from Ethereum, where one token balance can carry many open allowances to many contracts. Unlock Protocol's membership renewals rely on such an allowance, as token-gating vs subscriptions shows. On Solana there is one slot per token account. The same page adds: "Approving a new delegate replaces the previous delegate and allowance on the account."

Solflare shows the request for a delegate with a plain warning, quoted in its help article on delegations: "Signing this transaction will allow your funds to be spent at a future date without your approval". If you saw that and do not remember why, the approval is worth checking. Warnings like it are explained in what wallet transaction warnings mean.

How do you see which delegates your token accounts have?

You see a token account's delegate either in a wallet that lists spending approvals or by reading the account directly. Two ways, from the tools' own documentation:

In Solflare

Solflare lists delegates as spending approvals. A help article on token approvals in the Seed Vault Wallet help centre, which describes Solflare throughout and is dated 9 July 2025, gives the path: "Head over to Settings -> Security & Privacy -> Spending approvals and select the dApp you want to revoke approval from." The same screen is where you revoke.

With the spl-token command line

The Solana token program's command-line documentation shows spl-token account-info printing a line Delegation: (not set) for an account with no delegate. A set delegate shows its address and amount there instead. The owner commands listed on that page include spl-token approve and spl-token revoke; spl-token --help gives the full syntax.

If your wallet has no approvals screen, the command line or a revoke site is left. A revoke site asks you to connect and sign a transaction like any other site, so open it from an address you typed yourself; fake approval checkers are one of the tricks described in wallet drainers and fake payment requests.

What does revoking a token approval actually do?

Revoking a token approval removes the delegate from that one token account and sets the delegated amount to zero; it moves no tokens and undoes no past transfer. Solana's page on revoking a delegate says: "After revocation, the previous delegate no longer has authority to transfer or burn tokens on behalf of the token account." In the standard Token Program, the account owner signs the revoke, so it costs a Solana network fee like any transaction.

Disconnecting a site is a different action. The Solflare-based help article puts it in one line: "Disconnecting merely stops the website from seeing your wallet; the underlying blockchain approval remains active." A site you disconnected can still pull tokens through a delegate it holds.

ActionRemoves the delegateStops the site seeing your addressMoves tokens back
Disconnect the site in the walletNoYesNo
Revoke the delegateYesNoNo
Approve a different delegateYes, it replaces itNoNo

What does a subscription approval look like in a revoke tool?

A subscription approval from the Solana Subscriptions program shows up as one delegate on your USDC token account, approved for the largest amount a token account can record. The program's README says: "For each (user, mint) pair, the program creates a Subscription Authority (SA) PDA and sets it as the single delegate on the user's token account with u64::MAX approval." A mint is the token itself, USDC here. A PDA is an address owned by a program rather than by a private key.

The amount is u64::MAX, 18,446,744,073,709,551,615 base units, which for USDC with its 6 decimals reads as about 18.4 trillion USDC. A revoke tool may well show that as unlimited, and on the token account alone it is. The limits sit one level up: the authority moves tokens only for a subscription the program has recorded, to the wallets that subscription names, and no more than its cap per period. How those checks work, and why a plain approve is a poor fit for subscriptions, is in Solana token delegation explained.

The authority is shared. Every subscription your wallet pays in USDC through the program, at Fianto or at another service built on it, goes through that one delegate.

What happens to your subscriptions if you revoke that approval?

Revoking the Subscriptions program's approval stops every subscription that shares it from renewing, but it cancels none of them. Approving some other app as the delegate of the same USDC account has the same effect, because the new delegate replaces the old one. At Fianto both cases are recorded as a revoked delegation, which counts as a failed renewal: the subscription goes past due, Fianto tries again about one hour, six hours and a day after the due date, and after the fourth counted failure the subscription ends.

If you revoked by mistake, sign in to the customer portal at fianto.xyz/my while the subscription is past due. When its latest counted failure is the revoked approval and no cancel is scheduled, the portal offers a button labelled "Renew approval": you sign one transaction, which renews the shared approval and brings forward the blocked retries of each Fianto subscription on that wallet that went past due because of the revoke. It does not reset the attempts already used. It also re-enables every USDC subscription that wallet holds through the program, at any service, including one you meant to stop by revoking, so cancel that one with its service first. What a past-due subscription goes through is in the docs page on failed renewals.

Which token approvals should you revoke?

Revoke an approval when you cannot name the app that holds it, or when you have finished with that app. A short rule set:

  • A delegate on a token account you no longer use with any app: revoke it.
  • A delegate you do not recognise, especially one that appeared after a site asked you to "verify" or "claim" something: revoke it, and move what is left in that wallet to a fresh one if you signed anything you did not read.
  • A delegate an app still needs for an open position or order: leave it until you close that position, or the app's next step can fail.
  • The Subscriptions program authority on your USDC account while you have subscriptions you want to keep: leave it, and cancel the ones you do not want one by one.

See how a Fianto subscription renews, retries and ends, and what one approval allows.

How auto-renewal works
Sources
Questions

Questions about token approvals on Solana.

Can a Solana token account have more than one delegate?

No. A token account holds one delegate and one delegated amount at a time, and approving a new delegate replaces the previous one.

Does disconnecting a site from my wallet revoke its approval?

No. Disconnecting only stops the site seeing your wallet. The delegate stays on the token account until you revoke it.

Does revoking an approval give me back tokens that were already taken?

No. A revoke only stops future transfers by that delegate; transfers that already happened stay where they went.

Why does my USDC account show an unlimited approval after subscribing?

The Solana Subscriptions program sets its authority as the delegate for the maximum amount, and limits each subscription through its own on-chain terms instead. With Fianto, each subscription's cap per period is fixed when you subscribe.

Is revoking the subscription approval the same as cancelling?

No. It makes every subscription that shares the approval fail at its next renewal, and each ends only after the fourth counted failure. Cancel in the portal at fianto.xyz/my instead.

Read next.

Wallets9 min read

Solana wallet drainers and fake payment requests: how to spot a malicious transaction

A Solana wallet drainer is a website or app built to make you sign a transaction that hands your tokens, or control over your token accounts, to someone else. Nothing it does can be undone once the transaction lands, so the only defence is reading the request before you approve: who gets paid, how much, and whether it contains anything other than a transfer. A genuine Fianto one-off payment, served from checkout.fianto.xyz, holds one USDC transfer of the price to the merchant, plus a second transfer to Fianto only when there is a Fianto fee, and there is none during the beta.

Wallets8 min read

Phantom and Solana wallet warnings: "This transaction may be unsafe" explained

Phantom's simulation warning means the wallet could not predict what a transaction will do, and its new-domain notice means Phantom has not reviewed the site yet; neither is a finding that the transaction is malicious. Phantom's FAQ lists three causes for its simulation warning: more than one signer, a transaction close to Solana's size limit, and a transaction that would fail. Treat any warning as a reason to read the request yourself, and on a Fianto checkout a one-off payment should show only the Total leaving in USDC plus a small SOL fee.

WalletsGuides8 min read

How to cancel a crypto subscription, and why revoking the approval is not the same

To cancel a USDC subscription paid through Fianto, sign in at fianto.xyz/my with the paying wallet, press Cancel subscription on its card and approve one transaction. Nothing more is charged, and the subscription stays active until the end of the period you already paid for. Removing the token approval in your wallet does not cancel it: the next renewal fails, the subscription goes past due, and every other subscription sharing that approval breaks too.

Check the delegate before you clear it.

If it is the Subscriptions program, cancel instead.

New posts are announced on X and Discord.