---
title: "转账"
description: "了解如何从你的钱包发起和管理转账。"
url: https://docs.fystack.io/zh/withdrawals
last_updated: 2026-11-13
---

> ## Documentation index
> Fetch the complete documentation index at: https://docs.fystack.io/llms.txt
> Use it to discover all available pages before exploring further.

# 转账

本指南介绍如何将资金从你的钱包转账到外部地址。

---

## 发起提现请求

**Endpoint:** `POST /wallets/:wallet_id/request-withdrawal`

从钱包创建一个新的提现请求。该提现需要经过授权用户的审批。

### 请求头

- `X-Idempotency-Key` (header, recommended): 用于标识此次提现的 UUID，确保它只被处理一次。如果在 24 小时内再次发送相同的 key，系统会返回原始请求的缓存响应，而不会创建重复的提现。

  请将该 key 与你自己系统中的提现记录绑定：如果你内部的提现或转账 ID 是 UUID，可直接使用；否则请在创建该记录时生成一次 UUID 并一同保存。每次重试都发送相同的 key。不要每次尝试都生成新的 key，因为每个新的 key 都会被视为一笔新的提现。

### 参数

- `asset_id` (string, required): 要提现的资产的 UUID。
- `amount` (string, required): 提现金额，使用十进制字符串格式。
- `recipient_address` (string, required): 接收资金的区块链地址。

### 响应

- `id` (string): 提现请求的 UUID。
- `status` (string): 提现的当前状态：
  - `PENDING_APPROVAL`：等待授权用户审批
  - `PENDING`：已批准，等待处理
  - `EXECUTED`：交易已发送到区块链
  - `SUCCESS`：交易已在区块链上确认
  - `REJECTED`：提现被审批人拒绝
  - `FAILED`：交易执行失败
- `wallet_id` (string): 来源钱包的 UUID。
- `asset_id` (string): 被提现资产的 UUID。
- `amount` (string): 提现金额。
- `recipient_address` (string): 目标区块链地址。
- `creator_id` (string): 创建该提现请求的用户的 UUID。
- `withdrawal_approvals` (array): 授权用户的审批状态列表。
- `created_at` (string): 请求创建的时间戳。
- `updated_at` (string): 最后一次状态更新的时间戳。

> **Info.** 提现流程如下：
>
> 1. PENDING_APPROVAL → 等待所需的审批
> 2. PENDING → 已批准，排队等待处理
> 3. EXECUTED → 交易已发送到区块链
> 4. SUCCESS → 交易已确认
>
> 如果被拒绝或失败：
>
> - REJECTED → 审批人拒绝了该提现
> - FAILED → 交易执行失败

**请求** `POST /wallets/:wallet_id/request-withdrawal`

```typescript
import { FystackSDK, Environment } from "@fystack/sdk"

const apiCredentials = {
  apiKey: process.env.API_KEY,
  apiSecret: process.env.API_SECRET
}

const sdk = new FystackSDK({
  credentials: apiCredentials,
  environment: Environment.Sandbox,
  logger: true
})

const response = await sdk.requestWithdrawal(
  "e0851607-417a-475a-b399-5f3aa262b81d",
  {
    assetId: "f1be472d-1338-43ff-b547-06faba7ecce7",
    amount: "0.001",
    recipientAddress: "0xe6EBF81E9C225BbCEa9b5399E0D0d0f29f30f119"
  }
)
```

```bash
curl -X POST https://api.fystack.io/api/v1/wallets/e0851607-417a-475a-b399-5f3aa262b81d/request-withdrawal \
  -H "ACCESS-API-KEY: your_api_key" \
  -H "ACCESS-TIMESTAMP: 1667836889" \
  -H "ACCESS-SIGN: YourBase64EncodedSignature==" \
  -H "X-Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{
    "asset_id": "f1be472d-1338-43ff-b547-06faba7ecce7",
    "amount": "0.001",
    "recipient_address": "0xe6EBF81E9C225BbCEa9b5399E0D0d0f29f30f119"
  }'
```

```json
{
  "success": true,
  "message": "success",
  "code": 0,
  "data": {
    "id": "0de79230-a820-4bd4-b020-883d395faa87",
    "wallet_id": "e0851607-417a-475a-b399-5f3aa262b81d",
    "asset_id": "f1be472d-1338-43ff-b547-06faba7ecce7",
    "amount": "1000",
    "recipient_address": "0x7c2BbE2e02af09F1cf9aFd4A79EC201DC841675a",
    "status": "PENDING_APPROVAL",
    "creator_id": "075243c1-962e-4803-83da-d73c78b8b060",
    "withdrawal_approvals": [
      {
        "id": "9a85c312-7d3b-4c6f-9f4e-123456789abc",
        "withdrawal_id": "0de79230-a820-4bd4-b020-883d395faa87",
        "user_id": "075243c1-962e-4803-83da-d73c78b8b060",
        "status": "PENDING",
        "created_at": "2025-08-11T17:37:29.815148+07:00",
        "updated_at": "2025-08-11T17:37:29.815148+07:00"
      },
      {
        "id": "8b74d123-9e5f-4a2d-8c3b-987654321def",
        "withdrawal_id": "0de79230-a820-4bd4-b020-883d395faa87",
        "user_id": "165243c1-962e-4803-83da-d73c78b8b070",
        "status": "APPROVED",
        "created_at": "2025-08-11T17:37:29.815148+07:00",
        "updated_at": "2025-08-11T17:38:15.623147+07:00"
      }
    ],
    "created_at": "2025-08-11T17:37:29.815148+07:00",
    "updated_at": "2025-08-11T17:37:29.815148+07:00"
  }
}
```

---

## 获取提现状态

**Endpoint:** `GET /wallets/:wallet_id/withdrawals/:withdrawal_id`

获取提现请求的当前状态。

### 响应

- `success` (boolean): 表示请求是否成功。
- `data` (object): 包含提现详情。
  - `id` (string): 提现请求的 UUID。
  - `status` (string): 提现的当前状态。
  - `amount` (string): 提现金额。
  - `recipient_address` (string): 目标区块链地址。
  - `creator` (object): 创建该提现的用户信息。
  - `asset` (object): 被提现资产的详情。
  - `transaction` (object): 执行后的完整交易详情。

**请求** `GET /wallets/:wallet_id/withdrawals/:withdrawal_id`

```typescript
import { FystackSDK, Environment } from "@fystack/sdk"

const apiCredentials = {
  apiKey: process.env.API_KEY,
  apiSecret: process.env.API_SECRET
}

const sdk = new FystackSDK({
  credentials: apiCredentials,
  environment: Environment.Sandbox,
  logger: true
})

// Get withdrawal status
const withdrawal = await sdk.getWithdrawalStatus(
  "e0851607-417a-475a-b399-5f3aa262b81d",
  "4cebc6c3-1e46-4166-ab59-86a59971215f"
)

// Check withdrawal status
if (withdrawal.status === 'SUCCESS') {
  console.log('Transaction hash:', withdrawal.transaction.tx_hash)
  console.log('Amount:', withdrawal.amount)
  console.log('Asset:', withdrawal.asset.symbol)
}

// Check approval status
const approvals = withdrawal.withdrawal_approvals
const pendingApprovals = approvals.filter(a => a.status === 'PENDING')
const approvedCount = approvals.filter(a => a.status === 'APPROVED').length

console.log('Pending approvals:', pendingApprovals.length)
console.log('Approved count:', approvedCount)
```

```bash
curl -X GET https://api.fystack.io/api/v1/wallets/e0851607-417a-475a-b399-5f3aa262b81d/withdrawals/4cebc6c3-1e46-4166-ab59-86a59971215f \
  -H "ACCESS-API-KEY: your_api_key" \
  -H "ACCESS-TIMESTAMP: 1667836889" \
  -H "ACCESS-SIGN: YourBase64EncodedSignature=="
```

```json
{
  "success": true,
  "message": "success",
  "code": 0,
  "data": {
    "id": "4cebc6c3-1e46-4166-ab59-86a59971215f",
    "created_at": "2025-07-29T21:44:23.763113+07:00",
    "updated_at": "2025-07-29T21:45:07.204964+07:00",
    "amount": "0.000001622515351558",
    "status": "SUCCESS",
    "recipient_address": "0xf2acfF1D9d576E9b8B7C7d58A449F599A9A54edA",
    "creator_id": "075243c1-962e-4803-83da-d73c78b8b060",
    "creator": {
      "id": "075243c1-962e-4803-83da-d73c78b8b060",
      "username": "Dev team"
    },
    "asset_id": "a469642e-5466-4d69-834d-537f33ee5c81",
    "asset": {
      "id": "a469642e-5466-4d69-834d-537f33ee5c81",
      "name": "Ethereum Sepolia",
      "symbol": "ETH",
      "decimals": 18,
      "logo_url": "https://icons.iconarchive.com/icons/cjdowner/cryptocurrency-flat/512/Ethereum-ETH-icon.png",
      "is_native": true,
      "address_type": "evm",
      "network_id": "23d13c03-1f3c-4e2a-9aef-1771a244b7f6"
    },
    "withdrawal_approvals": [
      {
        "id": "dfa94b32-83f5-4808-8091-9a3c270d4f1d",
        "status": "PENDING",
        "user": {
          "username": "Thi Nguyen",
          "email": "nguyendanganhthi247@gmail.com"
        }
      },
      {
        "id": "776303fd-762e-4593-9f66-93631dd226e0",
        "status": "APPROVED",
        "user": {
          "username": "Dev team",
          "email": "devteam@fystack.io"
        }
      }
    ],
    "transaction": {
      "tx_hash": "0xa1ec8bab32baebad1211e838d655777640e78102b39b008bd00a8b3e5d1f3c00",
      "status": "confirmed",
      "block_number": 8868747,
      "from_address": "0xA793457d84CFD255Ed68295984300C4f799E759F",
      "to_address": "0xf2acfF1D9d576E9b8B7C7d58A449F599A9A54edA",
      "amount": "0.000001622515351558",
      "tx_fee": "0.000001296799854",
      "price_native_token": "3808.475025265875",
      "direction": "out",
      "type": "withdrawal",
      "method": "transfer"
    }
  }
}
```
