> For the complete documentation index, see [llms.txt](https://docs.caishen.tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caishen.tech/using-agent-cash-1.md).

# Using Agent Cash

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

> **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

### 🏦 Cash Accounts

#### 💰 Get Account Balance

Get current balance of all tokens for a specific account.

**Parameters**

| Name    | Type   | Description            |
| ------- | ------ | ---------------------- |
| account | number | The account identifier |

**Returns**

```
'BalanceResponse'
```

**📘 Example**

```
balance = await sdk.cash.get_balance({"account": 1})
```

#### 💵 Deposit

Deposit a supported token into the account.

**Parameters**

| Name   | Type                | Description           |
| ------ | ------------------- | --------------------- |
| params | `DepositCashParams` | Token and amount info |

**Returns**

```
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**

```
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**

```
TransactionResponse
```

**📘 Example**

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

#### 🪙 Get Supported Tokens

```
tokens = await sdk.cash.get_supported_tokens()
```

***

### 🛠 Types

#### `TokenWithPrice`

```
type TokenWithPrice = Token & {
  priceUSD: str;
}
```
