Using Agent Cash

Caishen SDK provides the only wallets which support gasless stablecoin swaps, powered by Agent Cash.

🏦 Cash Accounts

Cash is a chain-abstracted, gasless stablecoin system designed to make stablecoin transfers seamless, fast, and free.

πŸ” What is Cash?

Cash is an internal ERC-20-compatible asset that abstracts away the complexity of stablecoins across chains. It enables instant, gasless transfers between wallets without needing users to worry about:

  • Native gas tokens (e.g., ETH, MATIC)

  • Stablecoin formats (e.g., USDC vs USDT)

  • Blockchain networks (e.g., Arbitrum, Base, Solana)

πŸ§ͺ How It Works

  • Deposit: Users deposit supported stablecoins (e.g., USDC, USDT) from chains like Arbitrum, Base, or Solana.

  • Issue: The system issues equivalent Cash tokens 1:1, held in an abstracted balance.

  • Send: These Cash tokens can be sent to any wallet address instantly with zero gas cost.

  • Withdraw: When users withdraw, their Cash tokens are burned and they receive the original stablecoin on the selected chain.

⚠️ Different combinations of agentId and userId result in separate Cash balances.

βœ… Benefits

  • πŸ’Έ Gasless transfers (no ETH/SOL required)

  • ⚑ Cross-chain abstraction

  • πŸ”„ Simple send/receive interface

  • πŸ” Fully backed, 1:1 redeemable


πŸ’± Supported Stablecoins

Chain
Token
Symbol
Address

Arbitrum

USDC

USDC

0xaf88...5831

Arbitrum

USDT

USDT

0xFd08...cbb9

Base

USDC

USDC

0x8335...2913

Solana

USDC

USDC

EPjFWd...TDt1v

See CASH_SUPPORTED_TOKENS for full details.

πŸ’° Get Account Balance

Get current balance of all tokens for a specific account.

Parameters

Name
Type
Description

account

number

The account identifier

Returns

Promise<BalanceResponse>

πŸ“˜ Example

const balance = await sdk.cash.getBalance({ account: 1 });

πŸ’΅ Deposit

Deposit a supported token into the account.

Parameters

Name
Type
Description

params

DepositCashParams

Token and amount info

Returns

Promise<TransactionResponse>

πŸ“˜ Example

await sdk.cash.deposit({
  account: 1,
  tokenAddress: '0x...',
  amount: '1000000000000000000',
});

πŸ’Έ Withdraw

Withdraw a supported token from the account.

Parameters

Name
Type
Description

params

WithdrawCashParams

Token and amount info

Returns

Promise<TransactionResponse>

πŸ“˜ Example

await sdk.cash.withdraw({
  account: 1,
  tokenAddress: '0x...',
  amount: '1000000000000000000',
});

πŸ” Send

Send supported tokens between accounts.

Parameters

Name
Type
Description

params

SendTransactionParams

Token, to/from, etc.

Returns

Promise<TransactionResponse>

πŸ“˜ Example

await sdk.cash.send({
  fromAccount: 1,
  toAccount: 2,
  tokenAddress: '0x...',
  amount: '1000000000000000000',
});

πŸͺ™ Get Supported Tokens

const tokens = await sdk.cash.getSupportedTokens();

πŸ›  Types

type TokenWithPrice = Token & {
  priceUSD: string;
};

Last updated