Pay SUI gas with stablecoins_

Pay gas with stablecoins. Your users never need to hold SUI. Drop-in SDK and API.

Mainnet not yet available — testnet only.
terminal
$pnpm add @stablestation/sponsor

See the full example below.

Supported stablecoins

How it works

Two calls. No SUI in the user wallet required.

01

prepare()

The SDK fetches config, builds stablecoin payment into your transaction, estimates gas, and returns bytes ready for signing.

02

Sign + execute()

The user's wallet signs the prepared bytes. Then execute() sends them to the API, which validates, co-signs, and submits on-chain.

03

Done

You get back a digest and execution status. The user never needed SUI — payment happened in stablecoin.

app.ts
1import { SuiGrpcClient } from "@mysten/sui/grpc";
2import { Transaction } from "@mysten/sui/transactions";
3import { stableStation } from "@stablestation/sponsor";
4
5const client = new SuiGrpcClient({ network: "testnet" })
6 .$extend(stableStation({
7 apiUrl: "https://stablestation.mystenlabs.com/api/v1",
8 }));
9
10// Build your transaction as usual
11const tx = new Transaction();
12tx.moveCall({ target: "0x...::module::function" });
13
14// 1) Prepare sponsored bytes
15const prepared = await client.stableStation.prepare({
16 transaction: tx,
17 sender: myAddress,
18 stablecoin: "USDC",
19});
20
21// 2) User signs prepared bytes
22const { signature } = await wallet.signTransaction(prepared.txBytes);
23
24// 3) API co-signs + executes
25const result = await client.stableStation.execute(prepared, signature);
26console.log(result.digest, result.succeeded, result.error);