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