On this page
- 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.
| Action | Removes the delegate | Stops the site seeing your address | Moves tokens back |
|---|---|---|---|
| Disconnect the site in the wallet | No | Yes | No |
| Revoke the delegate | Yes | No | No |
| Approve a different delegate | Yes, it replaces it | No | No |
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- Solana documentation: Approve delegate
- Solana documentation: Revoke delegate
- Solana program docs: Token program and spl-token CLI
- Solana Foundation: the Subscriptions program (README)
- Solflare help: Understanding delegations (spending approvals)
- Seed Vault Wallet help: Understanding token approvals (9 Jul 2025)
- Fianto docs: Failed renewals