For a GramPayBot Solana route, add the public Solana wallet address you control, not the USDT or USDC mint. Solana addresses are base58-encoded public keys. Do not decide that an address is safe from appearance or character count alone: different account types use the same address notation.
Never provide a seed phrase or private key. Start with a low-value test before accepting customer payments.
Wallet, token account and mint
Three values are easy to confuse:
- the wallet address is the public key controlled by the merchant;
- a token account holds the balance for one owner and one mint;
- the mint address identifies the SPL asset.
Wallet software commonly derives an associated token account (ATA) for a wallet and mint and can create it when needed. GramPayBot’s Solana payment URI uses the merchant wallet as recipient and the supported mint as spl-token. Do not copy the ATA or mint into the merchant-wallet field unless the interface explicitly asks for that value.
USDT and USDC are different assets
On Solana mainnet-beta, GramPayBot supports:
- USDT mint:
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB; - USDC mint:
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v.
Both use six decimals, but one cannot pay an invoice for the other. Confirm the full mint from Tether or Circle, then open that address in Solana Explorer and follow the token verification checklist.
What on-curve and off-curve means
An on-curve public key can be controlled by a normal keypair. An off-curve address is commonly a program-derived address (PDA) controlled by program rules rather than a private key. This does not automatically mean malicious, but you must understand who can move funds from it.
The official Solana address-verification guidance recommends fetching the account and inspecting its owner/type. An unfunded on-curve wallet may have no account data yet and can still be a valid destination. A Token Program account must be verified as a token account for the expected mint; a mint account or wrong-mint token account must be rejected.
For an exchange deposit or program-controlled wallet, follow the provider’s exact instructions. Do not infer support from base58 syntax.
Verification before publishing an invoice
- Open the wallet’s Receive screen and select Solana plus USDT or USDC.
- Copy the full public wallet address; do not type it manually.
- Confirm that you control the address or that the exchange credits deposits to it.
- Read minimum-deposit and supported-token rules.
- Verify the expected mint separately.
- Create a low-value test invoice and pay it through Solana.
- Open the transaction signature in Solana Explorer or Solscan.
- Check successful execution, the expected mint,
toUserAccount, amount and token balance change. - Confirm that you can later send or withdraw the received balance.
The sender normally needs SOL for the network fee in a self-custody wallet. Fees change, so the invoice should not promise a fixed amount. An exchange can charge its own withdrawal fee.
Use the exact route
Choose USDT on Solana or USDC on Solana. Sending a token with the same name but another mint, using another network, or transferring SOL does not pay that invoice. Review every available pair in the supported-routes hub.
Next step
Create a tracked crypto payment link
Issue a USDT or USDC invoice manually, send one hosted checkout and follow its payment status without an API.
Explore payment links →