On this page
- Phantom shows "This dApp could be malicious. Do not proceed unless you are certain it is safe." when it cannot simulate a transaction; a separate notice covers domains it has not reviewed.
- The documented causes are multiple signers, a transaction near the size limit, and a transaction that would fail, so honest sites can trigger warnings and scam sites can avoid them.
- A Fianto one-off payment has one signer and a handful of instructions, and Fianto checks your USDC and SOL before your wallet opens. A subscription checkout has two signers.
Which warning is your wallet showing?
The warning text tells you which check failed, so start by matching it. These are the messages as their sources publish them on 15 October 2026; wallet wording changes between versions.
| Message | Source | What it means |
|---|---|---|
| "This dApp could be malicious. Do not proceed unless you are certain it is safe." | Phantom's developer docs | Phantom could not simulate the transaction, so it cannot show what it will do |
| "Failed to estimate balance changes. This transaction may be unsafe" | A developer's question in Phantom's docs repository, April 2024 | An earlier wording, from the title of a developer's question about a transaction their backend also signed: no balance-change preview was possible |
| "This domain is new or has not been reviewed yet. Proceed with caution." | Phantom's developer docs | Phantom has not reviewed the site; the docs say it "typically disappears after a few days once the domain has been reviewed" |
| A warning about an unverified asset | Solflare help, 10 July 2024 | "Solflare incorporates warnings to alert you when interacting with unverified assets." |
A site Phantom has judged malicious is different again: its scam guide says blocked domains trigger a warning when you try to connect. That is a verdict, not a failed prediction, and the answer to it is to leave. For a token warning on something called USDC, the mint address decides, as checking real USDC on Solana shows.
Why does a wallet fail to simulate a transaction?
A wallet fails to simulate a transaction when it cannot run it against the current state of the chain and get a clean result. Simulation is a dry run. Solana's RPC method for it "Simulates a signed transaction using the chain data available at the requested commitment, without broadcasting it." The wallet reads the predicted token balances before and after, and shows you the difference.
Phantom's FAQ says "If Phantom can't accurately simulate a transaction, users may see a warning message. This can happen when:"
- "The transaction has multiple signers"
- "The transaction approaches Solana's size limit"
- "The transaction would fail during simulation"
The size limit is 1,232 bytes, according to Solana's transaction docs. A transaction fails in simulation for the same reasons it fails for real: not enough tokens, not enough SOL for the fee, an account that does not exist, or a recent blockhash that has expired (see "Blockhash not found"). Solana's docs also say "Fees are still charged on failure", so a warning that predicts a failure is worth heeding even on a site you trust; why a Solana payment fails goes through the common errors.
Does a wallet warning mean the site is a scam?
No, a warning on its own does not mean the site is a scam, and the absence of a warning does not mean it is safe. Two of Phantom's three listed causes, more than one signer and a large transaction, are ordinary in legitimate apps. In the other direction, Phantom's own 2021 safety post said its simulation "does not provide a guarantee", and a drainer that builds a short, single-signer transaction can produce a clean preview of a transfer you did not mean to make.
A practical rule: proceed through a warning only when all three of these hold.
- You reached the site by your own route, typed or bookmarked, not through an unexpected message.
- The domain in the address bar is the one you expect for this service.
- You can say what every instruction or balance change in the request is for. If the request includes an approval or an owner change you did not expect, stop. If you already approved one, revoking a token approval on Solana removes it.
If any of them fails, reject. Rejecting signs nothing and sends nothing. How drainers build their requests, and what to do if you already signed one, is in wallet drainers and fake payment requests.
Should a Fianto one-off payment trigger a warning?
A Fianto one-off payment is built to avoid every cause on Phantom's list, though no site can promise how a wallet will judge it. Checked against the list:
| Phantom's listed cause | A Fianto one-off payment |
|---|---|
| Multiple signers | One signer: you, the payer, who also pays the Solana fee |
| Near the size limit | A legacy transaction of two compute-budget instructions and one USDC transfer, or two when a Fianto fee applies (none during the beta), with no lookup tables |
| Would fail in simulation | Before your wallet opens, Fianto checks that your USDC account exists and is not frozen, that it holds the Total, and that the wallet keeps enough SOL for the fee and its own minimum balance |
When one of those checks fails, the checkout tells you instead of handing your wallet a transaction that would fail. A wallet short of SOL, for example, sees a line that starts "Not enough SOL for the Solana network fee and this wallet's minimum balance." and says how much to add; why you need SOL to send USDC explains the minimum balance.
One cause the checkout cannot rule out is time. The transaction carries a recent blockhash and expires, so a wallet prompt left open long enough can fail its simulation. Reject it, and the checkout keeps your wallet under "Paying from" and says "You declined the payment in your wallet, so nothing was sent. Press Pay when you are ready to try again." Fianto asks wallets only to sign, never to sign and send (which is why some wallets cannot pay at checkout), and sends the signed transaction itself; for transactions with more than one signer, Phantom's developer docs recommend signTransaction rather than sign-and-send.
See every line the checkout shows before your wallet opens.
How the hosted checkout worksWhy can a subscription checkout look different in your wallet?
A Fianto subscription checkout is a larger transaction with two signers, which puts it on Phantom's list. Besides you, Fianto's charging key signs it, because the program lets only a listed collector pull the first period; Fianto adds that signature after checking what you signed, and the key pays nothing. The transaction creates the subscription on chain with a cap per period, pays the first period to the merchant and any fees to Fianto, and, on a wallet's first subscription, sets up the USDC permission the program uses.
So read it against the checkout page rather than against the preview alone. The page shows "Charged today", the network fee (0.01 USDC with each charge today, on plans created since 6 October 2026), the SOL for account rent (rounded up to the next 0.001 SOL), and "Most [merchant name] can charge", the cap per period that the program enforces. The USDC leaving now should match "Charged today", which already includes the network fee. Sign message vs sign transaction covers what the subscription approval is, and What it costs in the payer docs lists each charge.
How do site owners clear a Phantom warning?
Site owners clear a Phantom simulation warning by removing its cause, and Phantom's developer docs set out the fixes:
- Limit the transaction to one signer, or have Phantom sign first with signTransaction and collect the other signatures afterwards.
- Split a large transaction into several requests, or use Address Lookup Tables to shrink it.
- Simulate it yourself on your own RPC node, with signature verification turned off, before asking for a signature, so a transaction that would fail never reaches the wallet.
- If the warning stays, contact Phantom's review team through the form the docs link.
The new-domain notice needs no code change: it clears once Phantom has reviewed the domain. In the April 2024 discussion, a Phantom team member answered a developer whose backend paid the fee and signed first: "If the user has to sign and broadcast a transaction there's no way that I'm aware of to bypass that." Merchants on Fianto do none of this; the checkout builds and sends the transaction.
- Phantom developer docs: Domain and transaction warnings
- Phantom developer docs: FAQ
- Phantom docs repository, discussion #209 (April 2024)
- Phantom: Staying safe with Phantom (7 October 2021)
- Phantom: Common crypto scams
- Solflare help: The token I bought is frozen (10 July 2024)
- Solana RPC docs: simulateTransaction
- Solana docs: Transactions