Verify a token creation on chain: mint, supply, authorities and fee
A transaction signature only says that something landed. To know that the token you intended exists, read the chain.
Use the API
GET /v1/transactions/{signature} fetches the confirmed transaction from Solana and reports the status, the mint address, the supply in base units, the decimals, the recipient and whether the TokenAnvil fee transfer is present in that same transaction (feeVerified). It returns pending until the transaction is confirmed and failed if it errored on chain. GET /v1/tokens/{mint} returns the build record for a token created by your key.
Or check it yourself
Independent verification does not depend on us at all:
import { Connection, PublicKey } from "@solana/web3.js";
const connection = new Connection("https://api.mainnet-beta.solana.com", "confirmed");
const info = await connection.getParsedAccountInfo(new PublicKey(mint));
const mintInfo = info.value.data.parsed.info;
console.log({
supply: mintInfo.supply, // base units, a string
decimals: mintInfo.decimals,
mintAuthority: mintInfo.mintAuthority, // null means revoked: supply is fixed
freezeAuthority: mintInfo.freezeAuthority, // null means no one can freeze holder accounts
});
Compare supply and decimals with what you asked for. Remember that supply is in base units: a supply of 1,000,000 with 9 decimals is 1000000000000000.
What to check
- The mint address in the response matches the one the build call promised.
- Supply and decimals match your parameters.
- Authorities match what you chose (
nullmeans revoked). - The metadata account exists and its URI points at your hosted JSON.
- For billing, the fee transfer to the treasury is inside the same transaction; a creation without it is not counted and may lead to key suspension.
Related: mint and freeze authority, the complete flow.