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

What an SPL token is, and why USDC on Solana is one.

An SPL token is a token on Solana that is created and moved by one of Solana's two shared token programs, rather than by its own smart contract. Each SPL token is defined by a mint account, and every holder keeps the balance in a separate token account. USDC on Solana is an SPL token on the original Token program, with 6 decimals, and a one-off payment through Fianto moves it with the Token program straight from the customer's USDC account to the merchant's.

On this page
What is an SPL token?What is an SPL token made of?Is USDC an SPL token?How is an SPL token different from an ERC-20 token?What does a merchant receive when a customer pays in USDC?Can anyone create an SPL token called USDC?SourcesQuestions
TL;DR
  • SPL tokens are Solana's tokens: data accounts owned by a shared Token program, not separate contracts per token.
  • A token is identified by its mint address. USDC's mint, EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, belongs to the original Token program and has 6 decimals.
  • With Fianto, a one-off payment is one transfer of that mint straight into the merchant's USDC account; Fianto never holds the tokens.

What is an SPL token?

An SPL token is any fungible or non-fungible token on Solana that is managed by a Solana token program. Solana's token documentation puts it in one line: "Tokens on Solana are referred to as SPL (Solana Program Library) Tokens." SPL is the name of the collection of standard programs Solana developers maintain, and the token programs are part of it.

The same page says what that means mechanically: "All tokens on Solana are effectively data accounts owned by a Token Program." A program is Solana's word for on-chain code. Nobody writes new code to launch a token; they ask an existing token program to create a new set of accounts.

What is an SPL token made of?

An SPL token is made of three kinds of account, and knowing which is which explains most of what you see in a wallet or an explorer.

The mint account

The mint account defines the token. It records the total supply, the number of decimals, the mint authority that can create new units and an optional freeze authority. The Solana terminology page adds the rule that matters most for payments: "Different tokens are distinguished by their unique token mint addresses."

The token accounts

A token account holds one token for one owner. The docs define it as an account that "tracks individual ownership of tokens for a specific mint account for a specific owner." Your wallet address owns token accounts but holds no tokens itself; the default one for each token is the associated token account.

The token program

The token program owns all of those accounts and holds the rules for minting, transferring, delegating, freezing and burning. Solana has two: the original Token program, which the Token program documentation says "defines a common implementation for Fungible and Non Fungible tokens", and Token-2022, a superset with optional extensions. The difference between them is the subject of Token-2022 vs the original Token program.

Is USDC an SPL token?

Yes. USDC on Solana is an SPL token on the original Token program. We read Circle's mint on mainnet on 15 October 2026, at 10:26 UTC, with the RPC method getAccountInfo; this is what the account said:

FieldValue on 15 October 2026What it means for a payment
Owner programTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DAThe original Token program, so no Token-2022 extensions apply
Size82 bytesA plain mint with nothing added after the standard fields
Decimals61 USDC is 1,000,000 base units
Supply7,761,626,022,601,143 base unitsAbout 7.76 billion USDC on Solana at that moment; it changes with every mint and burn
Mint authoritySetWhoever holds it can issue new USDC
Freeze authoritySetWhoever holds it can freeze a USDC token account

The freeze authority deserves a sentence of its own: it means a holder's USDC account can be frozen by whoever holds that authority, which the sibling post can USDC be frozen answers in full. The unit maths behind the 6 decimals is in USDC decimals and Solana units.

How is an SPL token different from an ERC-20 token?

An ERC-20 token is its own smart contract that follows a shared interface, while an SPL token is data handled by a shared program. EIP-20 describes itself as a standard "for the implementation of a standard API for tokens within smart contracts", so every ERC-20 token ships its own code. On Solana, the code is shared and only the accounts differ.

SPL token (Solana)ERC-20 token (Ethereum and EVM chains)
Where the logic livesOne shared token program for every tokenA separate contract per token
Where a balance is keptA token account per owner and tokenA mapping inside the token's contract
DecimalsA required field on the mintAn optional method; the standard says callers "MUST NOT expect" it
How a token is identifiedIts mint addressIts contract address
Fees to move itPaid in SOLPaid in the chain's native coin

Shared code has a practical upside for anyone taking payments: a wallet or a checkout that handles one SPL token correctly handles the transfer rules of all of them on that program.

What does a merchant receive when a customer pays in USDC?

A merchant receives USDC base units in the USDC token account of its own wallet, moved there by the Token program in the customer's transaction. With Fianto, the transaction a customer signs for a one-off payment contains a Token program transferChecked instruction: an instruction that names the amount, the mint and the mint's decimals, so the program refuses it if the mint or the decimals do not match. Fianto builds it for exactly one mint, USDC, and checks the signed bytes against it before sending.

  • The price moves from the customer's USDC account straight to the merchant's. Fianto never holds the tokens: there is no Fianto balance and no payout.
  • When a fee is above zero, a second transfer in the same transaction sends it to Fianto's treasury. During the beta there is no Fianto fee; subscription charges carry a flat network fee of 0.01 USDC each today, on plans created since 6 October 2026.
  • For a subscription, the customer approves once and later charges go through the Subscriptions program, which acts as a capped delegate on the customer's USDC account. Solana token delegation explained covers how that cap works.

The merchant's wallet needs its USDC token account before the first sale; without it, Fianto answers merchant_token_account_missing. The full first-payment setup is in accept USDC on Solana.

One USDC mint, straight to your wallet. Open a hosted checkout and see the transfer the customer signs.

See the checkout

Can anyone create an SPL token called USDC?

Anyone can create an SPL token and give it any name, including USDC, because creating a mint takes one CLI command, as Solana's own quickstart shows, and a little SOL. Names and logos are metadata a wallet displays; the mint address is the only identity the chain enforces. That is why Fianto's checkout accepts the one mint Circle publishes and nothing else, whatever a token calls itself.

If you hold a token that looks like USDC and are unsure, compare its mint with Circle's list, as checking real USDC on Solana shows step by step.

Sources
Questions

Questions about SPL tokens.

What does SPL stand for?

Solana Program Library, the set of standard programs Solana developers maintain. The token programs are part of it, so tokens they manage are called SPL tokens.

Is USDC on Solana an SPL token?

Yes. Its mint, EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, is owned by the original Token program and has 6 decimals.

Is SOL an SPL token?

No. SOL is the native coin of Solana and is counted in lamports. It can be wrapped into an SPL token, but a normal SOL balance is not one.

Do I need SOL to send an SPL token?

Yes. Every Solana transaction pays its fee in SOL, whatever token it moves, and opening a token account also needs SOL for rent.

Which SPL tokens does Fianto accept?

Only USDC on Solana. A payment in any other token, or in a token that only calls itself USDC, is never treated as a payment.

Read next.

Solana6 min read

Token-2022 vs the original Token program: what merchants need to know

Token-2022, also called Token Extensions, is a second Solana token program at a different address that does everything the original Token program does and adds opt-in extensions such as transfer fees, a permanent delegate, transfer hooks and pausing. The original program has no extensions and will get no new instructions. USDC on Solana is on the original Token program, so none of those extensions can touch a USDC payment, and Fianto builds every transfer for that program.

DevelopersSolana8 min read

USDC decimals, lamports and Solana units: one page of conversions

USDC on Solana has 6 decimals, so 1 USDC is 1,000,000 base units and 25 USDC is stored and sent as the whole number 25000000. SOL has 9 decimals: 1 SOL is 1,000,000,000 lamports, and every network fee and rent figure on Solana is counted in lamports. Fianto takes prices as decimal strings such as "12.50", returns every amount in its API and webhooks as a string of USDC base units, and never does money arithmetic with floating-point numbers.

SolanaWallets7 min read

How to close empty token accounts on Solana and get SOL back

Closing an empty token account on Solana sends the SOL it holds as rent back to an address you choose, about 0.00149 SOL for a standard 165-byte account opened at today's rate (measured 15 October 2026). Only accounts with a zero token balance can be closed. Keep the USDC account you pay subscriptions from and the one your business gets paid into: with Fianto, a closed payer account fails the next renewal as a counted failure, and a merchant wallet without one cannot take a single new checkout.

Same program, one mint that counts.

Check the mint address and the rest follows.

New posts are announced on X and Discord.