Your users never need SOL for fees.
Pimlico pays Solana transaction fees for your users, or lets them pay in USDC or USDT instead. Kora-compatible, and live on mainnet and devnet.
// User taps "Send": no SOL, no fee prompt
const { signature } = await pimlico.signAndSendTransaction({
transaction: userSignedTransaction,
})
// ✓ Confirmed on Solana
// ✓ Fee paid: sponsored by youTwo ways to cover the fee
Every Solana transaction names a fee payer. Make it Pimlico, then choose who ends up paying.
You pay it
The user never sees a fee. You cover it from your Pimlico balance.
Build the transaction
Set Pimlico’s signer as the fee payer.
The user signs
Only their own signature, with no SOL needed for the fee.
Pimlico pays and sends
Pimlico adds the fee payer’s signature and submits the transaction.
Charged to your balance
Itemized with your sponsorship spending in the dashboard.
Your users pay it in USDC or USDT
The user pays the fee in a stablecoin they already hold, not in SOL.
Get a quote
The fee is priced in USDC or USDT before anyone signs.
Add the payment
A token transfer to Pimlico joins the transaction.
The user signs once
Their action and the fee go out as one transaction.
Pimlico pays and sends
Pimlico checks the payment, pays the network fee and submits.
Built on Kora’s API
Pimlico speaks the JSON-RPC API of Kora, the Solana Foundation’s open-source fee payer. Integrate with the official @solana/kora client, or send the JSON-RPC calls yourself.
Running your own Kora node today? The methods below work against Pimlico unchanged, without a node to operate.
- getPayerSigner
- getBlockhash
- getSupportedTokens
- estimateTransactionFee
- signAndSendTransaction
import { KoraClient } from "@solana/kora"
// The same Pimlico API key you use on EVM chains
const pimlico = new KoraClient({
rpcUrl: "https://solana.pimlico.io/v1/mainnet/rpc?apikey=API_KEY",
})
// Set Pimlico's signer as the transaction's fee payer
const { signer_address: feePayer } = await pimlico.getPayerSigner()
// The user signs, Pimlico co-signs as fee payer and sends
const { signature } = await pimlico.signAndSendTransaction({
transaction: userSignedTransaction, // base64
})
// ✓ Fee paid by Pimlico, charged to your balance// Users pay the fee in USDC or USDT instead
const { payment_instruction, payment_amount } =
await pimlico.getPaymentInstruction({
transaction, // base64, Pimlico's signer as fee payer
fee_token: USDC_MINT,
source_wallet: user,
})
// Show the user payment_amount, add payment_instruction to the
// transaction, have the user sign it, then send it
const { signature } = await pimlico.signAndSendTransaction({
transaction: userSignedTransactionWithPayment,
})
// ✓ Fee paid in USDC, not SOLWorks with Privy’s Solana wallets
Privy’s embedded Solana wallets can sign a transaction without sending it, so Pimlico can be its fee payer. Users log in with email or a social account, sign once, and never need SOL for the fee.
Pimlico can also collect the fee in USDC or USDT, on the same API key and dashboard you’d use with Privy on EVM chains.
import {
useSignTransaction,
useWallets,
} from "@privy-io/react-auth/solana"
import { KoraClient } from "@solana/kora"
import { getBase64Decoder } from "@solana/kit"
const pimlico = new KoraClient({
rpcUrl: "https://solana.pimlico.io/v1/mainnet/rpc?apikey=API_KEY",
})
const { wallets } = useWallets()
const { signTransaction } = useSignTransaction()
// Build it with Pimlico's signer as the fee payer (encoded bytes)
const { signer_address: feePayer } = await pimlico.getPayerSigner()
const transaction = buildTransaction({ feePayer, instructions })
// The user signs with their Privy embedded wallet
const { signedTransaction } = await signTransaction({
transaction,
wallet: wallets[0],
})
// Pimlico adds the fee payer's signature and sends it
const { signature } = await pimlico.signAndSendTransaction({
transaction: getBase64Decoder().decode(signedTransaction),
})One dashboard for Solana and EVM
Solana runs on the same API keys as your EVM chains and sits beside them everywhere you look: usage, sponsorship spending, and a transaction log that links every signature to Solscan.
When someone asks whether a transaction landed or who paid for it, the answer is one filter away.
Solana transaction logs
Illustrative data
| Signature | Type | Network | Status | Fee |
|---|---|---|---|---|
| 4vJ9…uKq2 | Sponsored | Solana | Included | $0.0012 |
| 2nXa…8hTe | Paid in USDC | Solana | Included | 0.0031 USDC |
| 5Gk3…pW7r | Paid in USDT | Solana | Included | 0.0029 USDT |
| 3hQm…Zc1b | Sponsored | Solana Devnet | Pending | $0.0011 |
Pimlico has processed 250M+ transactions and sponsored 100M+ across 100+ chains. Solana runs on the same platform, with the same team and 24/7 support behind it.
Frequently asked questions
Can I use my existing Pimlico API key?
Yes. Every Pimlico API key works on Solana. Point the Kora client at https://solana.pimlico.io/v1/mainnet/rpc?apikey=YOUR_KEY (or swap mainnet for devnet), and Solana shows up next to your EVM usage in the dashboard.
Which Solana networks are supported?
Solana mainnet and devnet.
Which tokens can users pay fees in?
USDC and USDT. The fee is quoted in the token before the user signs, so they see the exact amount they are paying.
How am I billed for sponsored Solana fees?
Sponsored fees are charged to your Pimlico balance, the same way as gas sponsorship on EVM chains, and itemized under Usage in the dashboard.
Do sponsorship policies work on Solana?
Not yet. Policies apply to EVM chains today, and Solana support is coming. Until then, sponsored Solana transactions aren’t capped by policy rules.
Is it compatible with Kora?
Yes. The endpoint speaks Kora’s JSON-RPC API and supports getPayerSigner, getBlockhash, getSupportedTokens, estimateTransactionFee, signAndSendTransaction, so the @solana/kora client works with it.
Does it work with Privy?
Yes. Privy’s embedded Solana wallets can sign a transaction without sending it. Build the transaction with Pimlico’s signer as the fee payer, have the user sign it with Privy’s useSignTransaction hook, then send it through Pimlico.
Do my users need a smart account?
No. On Solana the fee payer is its own signer on the transaction, so users keep the wallet they already have.