Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions blog/2026-07-05-solana-paymaster/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
slug: solana-paymaster
title: "Solana Paymaster: Pay Gas in USDT"
description: Candide now supports Solana. Send SPL transfers from accounts that hold zero SOL, with fees paid in USDT, through a paymaster built on Kora.
authors: [marc]
tags: [solana, paymaster, kora, usdt, gasless, wdk]
---

# Solana Paymaster: Pay Gas in USDT

We just shipped our first product outside the EVM. The Solana Paymaster lets accounts that hold zero SOL send SPL token transfers, with the network fee paid in USDT inside the same transaction.

<!-- truncate -->

## The same problem, one more chain

We've spent years on this problem for EVM chains: users hold stablecoins, not gas tokens. On Solana it's the same story with different names. An account holding USDT but no SOL can't move its own money, and asking a stablecoin user to go buy SOL first is where most wallets lose them.

Our EVM answer is the ERC-4337 token paymaster. Our Solana answer is a paymaster built on [Kora](https://solana.com/docs/tools/kora), Solana Foundation's open fee payer standard. The paymaster cosigns each transaction as its fee payer, fronts the SOL for fees and rent, and collects the equivalent in USDT within the same transaction. Because it speaks Kora's JSON-RPC protocol, any Kora client works with it. No proprietary SDK required.

## One config object, one call

The paymaster works with any Kora client. If you're using [Wallet Development Kit (WDK)](https://docs.wallet.tether.io) by Tether, the whole flow is one config object and one call:

```ts
import { WalletAccountSolanaGasless } from '@tetherto/wdk-wallet-solana-gasless'

const wallet = new WalletManagerSolanaGasless(seedPhrase, {
provider: rpcUrl,
paymasterUrl, // your Candide Solana Paymaster endpoint
paymasterAddress,
paymasterToken: { address: USDT_MINT },
transferMaxFee: 1_000000n, // abort if the fee exceeds 1 USDT
})

const account = await wallet.getAccount(0)
await account.transfer({ token: USDT_MINT, recipient, amount: 100000n })
```

## Try it

- [Guide: Pay Gas in USDT on Solana](/wallet/guides/pay-gas-in-usdt-solana/)
- [Runnable example](https://github.com/candidelabs/tether-wdk-candide/tree/main/solana-gasless/01-usdt-gas)
- Get your Solana Paymaster endpoint at [dashboard.candide.dev](https://dashboard.candide.dev)

## Where this is going

Mainnet USDT is the only fee token today. Sponsored transactions, where you cover fees for your users the way InstaGas does on EVM chains, are next.

If you're building a stablecoin product on Solana, try it and tell us what breaks.

~ Marc

---

*P.S. If you want to see the whole flow including fee quoting and confirmation, it's on [GitHub](https://github.com/candidelabs/tether-wdk-candide/tree/main/solana-gasless/01-usdt-gas).*
8 changes: 8 additions & 0 deletions docs/wallet/api/supported-networks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,14 @@ export const exclusiveChainList = [
### Testnet
<ChainListTable items={testChainList} />

## Solana

The Solana Paymaster covers transaction fees and collects them in USDT, so accounts never need to hold SOL. It runs [Kora](https://solana.com/docs/tools/kora), the Solana Foundation's open fee-payer standard. See the [guide](/wallet/guides/pay-gas-in-usdt-solana/).

| Network | Service | Fee token |
|---------|---------|-----------|
| <img src="/img/networks/solana.svg" width="20" style={{verticalAlign: "middle", marginRight: "6px"}} /> Solana Mainnet | Solana Paymaster (Kora) | USDT |

## Exclusive Networks

These networks are available as an add-on by request. Don't see yours? We can evaluate support for any EVM-equivalent chain on demand. [Contact us](https://t.me/heymarcopolo) to request access.
Expand Down
53 changes: 19 additions & 34 deletions docs/wallet/intro.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Candide Developer Platform
description: Complete toolkit for building user-friendly Ethereum applications with Smart Accounts. Features ERC-4337 and EIP-7702 support, gas abstraction, chain abstraction, social login, and cross-chain deposit routing
image: /img/posters/atelier-meta.png
keywords: [erc-4337, account abstraction, paymaster, bundler, Smart Wallets, chain abstraction, forwarding address]
keywords: [erc-4337, account abstraction, paymaster, bundler, Smart Wallets, chain abstraction, forwarding address, solana, solana paymaster]
sidebar_position: 1
---

Expand Down Expand Up @@ -55,41 +55,30 @@ export const GETTING_STARTED_ITEMS = [
"Upgrade existing EOAs to smart accounts with Calibur (passkeys, multi-key) or Simple Account",
route: "/wallet/guides/getting-started-calibur",
},
{
title: "Pay Gas in USDT on Solana",
description:
"Send SPL transfers from accounts with zero SOL through the Solana Paymaster, built on Kora",
route: "/wallet/guides/pay-gas-in-usdt-solana",
},
];

<CardList items={GETTING_STARTED_ITEMS} />

<Callout title="Using AI to build faster">
Every page has a <strong>Copy Page</strong> button in the toolbar. Paste it directly into Claude or ChatGPT with a pre-filled prompt. For agents and IDE integrations like Claude Code or Cursor, point them to <a href="https://docs.candide.dev/llms.txt"><code>/llms.txt</code></a> for a full index of the docs.
Every page has a <strong>Copy Page</strong> button in the toolbar. Paste it directly into Claude or ChatGPT with a pre-filled prompt. For agents and IDE integrations like Claude Code or Cursor, point them to <a href="https://docs.candide.dev/llms.txt"><code>/llms.txt</code></a> for a full index, or install the <a href="https://github.com/candidelabs/skills">Candide agent skills</a>.
</Callout>

## Core Features

*Smart accounts are programmable contracts, unlocking capabilities impossible with traditional EOAs.*

### Gas Abstraction
- Gasless transactions: [Sponsor user fees](/wallet/guides/send-gasless-tx/) with flexible rules and policies
- ERC-20 gas payments: Let users [pay gas in any token](/wallet/guides/pay-gas-in-erc20/) (USDC, DAI, etc.). No ETH required
## Look It Up

### Modern Authentication
- Passkey integration: [Onchain WebAuthn](/wallet/plugins/passkeys/) support for biometric login. No seed phrases
- Social login: [Email and OAuth](/wallet/guides/authentication/#social--email) integration
Reference material for when you're mid-integration and need an answer, not a tutorial.

### Chain Abstraction
- Sign once, execute on every chain: one signature authorizes [UserOperations across every chain](/wallet/guides/chain-abstraction-overview/) you target
- Same account everywhere: one address on every EVM network where Safe is deployed

### Advanced Transactions
- Batch operations: [Execute multiple transactions](/wallet/guides/getting-started/) atomically
- Spending controls: [Set limits and policies](/wallet/plugins/allowance) for subscriptions and recurring payments

### Security
- Account recovery: [Social Recovery](/wallet/plugins/recovery-with-guardians) or [traditional](/wallet/recovery/auth-api/) recovery options
- Multi-signature: A single account controlled with [multiple signatures](/wallet/guides/multisig/)

## Onboarding & Deposits

Users don't always arrive on the chain your app runs on. [Forwarding Address](/forwarding-address/overview/) gives each user one deposit address that accepts funds from any supported chain and routes them automatically to the destination wallet. Built for onramps, exchange withdrawals, and payment flows.
| Reference | Concepts |
|-----------|----------|
| [Bundler RPC methods](/wallet/bundler/rpc-methods/) | [Account Abstraction](/account-abstraction/intro/) |
| [Paymaster RPC methods](/wallet/paymaster/rpc-methods/) | [ERC-4337 overview](/wallet/bundler/erc-4337-intro/) |
| [Bundler error codes](/wallet/technical-reference/bundler-error-codes/) | [Chain abstraction](/wallet/guides/chain-abstraction-overview/) |
| [Supported networks](/wallet/api/supported-networks/) | [Account recovery](/wallet/recovery/overview/) |

## Developer Tools

Expand All @@ -98,6 +87,7 @@ Users don't always arrive on the chain your app runs on. [Forwarding Address](/f
| [AbstractionKit SDK](/wallet/abstractionkit/introduction/) | TypeScript library for building and sending UserOperations. First-class support for Safe and EIP-7702 accounts. |
| [Bundler](/wallet/bundler/rpc-methods/) | ERC-4337 compliant nodes for submitting UserOperations on all major EVM chains |
| [Paymaster](/wallet/paymaster/rpc-methods/) | Sponsor gas or accept ERC-20 token payments with configurable policies |
| [Solana Paymaster](/wallet/guides/pay-gas-in-usdt-solana/) | Gasless Solana transactions with fees collected in USDT. Built on Kora |
| [InstaGas](/instagas/overview/) | No-code dashboard to set gas sponsorship rules. No Solidity required |
| [Forwarding Address](/forwarding-address/overview/) | One deposit address per user that routes funds from any supported chain to the destination wallet |
| [Account Recovery](/wallet/recovery/overview/) | Email/SMS recovery with an alert system and automatic on-chain execution |
Expand All @@ -106,7 +96,7 @@ Access [Candide's Dashboard](https://dashboard.candide.dev) to get API keys and

## Chains Supported

Candide is available on all major EVM equivalent networks. Reach out if you need a network added.
Candide is available on all major EVM equivalent networks, plus Solana through the [Solana Paymaster](/wallet/guides/pay-gas-in-usdt-solana/). Reach out if you need a network added.

import { NetworkList } from "/src/components/NetworkList";

Expand All @@ -116,9 +106,4 @@ See the full list of [supported networks](/wallet/api/supported-networks/), incl

## Support & Feedback

- Join our [Discord](https://discord.gg/7R4g9XcxDQ)
- Twitter: [@candidelabs](https://twitter.com/candidelabs)
- Email: team@candidelabs.com
- Telegram: [@heymarcopolo](https://t.me/heymarcopolo)

We have night owls and early birds on the team. Expect a reply regardless of your timezone.
Find us on [Discord](https://discord.gg/7R4g9XcxDQ), [Twitter](https://twitter.com/candidelabs), [Telegram](https://t.me/heymarcopolo), or at team@candidelabs.com. We have night owls and early birds on the team. Expect a reply regardless of your timezone.
4 changes: 2 additions & 2 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -212,9 +212,9 @@ const config = {
},
image: 'img/posters/atelier-meta.png',
announcementBar: {
id: 'new-chains-somnia-hyperevm-tempo',
id: 'solana-paymaster-launch',
content:
'Now live on Somnia, HyperEVM, and Tempo. <a href="/wallet/api/supported-networks">See all supported networks</a>',
'Pay gas in USDT on Solana is live. <a href="/wallet/guides/pay-gas-in-usdt-solana/">Read the guide</a>',
backgroundColor: '#fce7f0',
textColor: '#1a1a1a',
isCloseable: true,
Expand Down
19 changes: 19 additions & 0 deletions static/img/networks/solana.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.