> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fluz.app/llms.txt
> Use this file to discover all available pages before exploring further.

# 通过钱包转移资金

> 完整的总账生命周期——创建消费账户、为其存款、在账户间转账、提回到外部账户，并在每一步核验余额。

本快速入门演示完整的钱包资金流转：开设一个专用的消费账户、为其注资、在账户之间移动资金、将资金提回到外部账户，并在每一步核对总账——这是每张卡和每笔交易流程背后的底层管道。

<Info>
  **先决条件**

  * 一个**带有暂存应用的 Fluz 账户**——任何快速入门的第 1–2 步，或参见[准备你的账户](/get-started/prepare-accounts)和 [API 凭证](/get-started/api-credentials)。
  * 一个已关联的**测试银行账户**用于存款与提款环节——你的沙盒自带测试资金来源，或从[测试银行账户](/test-bank-accounts)添加更多。
  * 每个动账变更都需要唯一的 `idempotencyKey`——参见[幂等性](/concepts/idempotency)。
</Info>

## 完整流程

<Steps>
  <Step title="铸造包含四个钱包 scope 的令牌" icon="key">
    此流程涉及四个 scope——每个能力一个：

    ```json theme={null}
        {
          "scopes": ["MANAGE_PAYMENT", "LIST_PAYMENT", "MAKE_INTERNAL_TRANSFER", "MAKE_WITHDRAWAL"]
        }
    ```

    `MANAGE_PAYMENT` 用于创建账户和存款，`LIST_PAYMENT` 用于读取，`MAKE_INTERNAL_TRANSFER` 在你的账户间移动资金，`MAKE_WITHDRAWAL` 将资金转出。铸造详情：[API 凭证](/get-started/api-credentials)。
  </Step>

  <Step title="创建一个消费账户" icon="wallet">
    消费账户是具名的子总账——“Team Travel（团队差旅）”“Operations（运营）”“Marketing（市场）”——在同一 Fluz 账户下分隔预算。

    <CodeGroup>
      ```graphql Mutation theme={null}
          mutation createUserCashBalance($input: CreateUserCashBalanceInput!) {
            createUserCashBalance(input: $input) {
              userCashBalanceId
              nickname
              availableCashBalance
              status
            }
          }
      ```

      ```json Variables theme={null}
          { "input": { "nickname": "Team Travel" } }
      ```

      ```json Response theme={null}
          {
            "data": {
              "createUserCashBalance": {
                "userCashBalanceId": "f8a3c9e1-7b2d-4f5e-9c8a-1d2e3f4a5b6c",
                "nickname": "Team Travel",
                "availableCashBalance": "0",
                "status": "ACTIVE"
              }
            }
          }
      ```
    </CodeGroup>

    保存 `userCashBalanceId`——后续每一步都会用它来指向该账户。你的账户还自带一个**默认**消费账户；你将在第 4 步在两者之间转账。
  </Step>

  <Step title="为其存款" icon="banknote-arrow-down">
    使用 `depositCashBalance` 从已关联的资金来源为新账户注资，并通过 `userCashBalanceId` 指定目标：

    <CodeGroup>
      ```graphql Mutation theme={null}
          mutation depositCashBalance($input: DepositCashBalanceInput!) {
            depositCashBalance(input: $input) {
              cashBalanceDeposits { depositAmount status }
              balances {
                cashBalance { availableBalance totalBalance pendingBalance }
              }
            }
          }
      ```

      ```json Variables theme={null}
          {
            "input": {
              "idempotencyKey": "3c9e1f8a-2b7d-4e5f-8c9a-6b5a4f3e2d1c",
              "amount": 100.00,
              "depositType": "CASH_BALANCE",
              "userCashBalanceId": "<TEAM_TRAVEL_ACCOUNT_ID>",
              "bankAccountId": "<YOUR_TEST_BANK_ACCOUNT_ID>"
            }
          }
      ```
    </CodeGroup>

    依据资金来源不同，存款可能即时结算，或在 2–5 个工作日内结算；返回的 `balances` 反映当前可用金额。资金来源 ID 可从 `getWallet` 获取——参见[查看资金来源](/features/view-funding-sources)。
  </Step>

  <Step title="在你的账户之间转账" icon="arrow-left-right">
    使用 `transferInternalBalance` 将 \$25 从新账户转入默认账户。系统会内部记录为两个关联的动账——从来源账户提款、向目标账户存款——响应会同时返回两者：

    <CodeGroup>
      ```graphql Mutation theme={null}
          mutation transferInternalBalance($input: TransferInternalBalanceInput!) {
            transferInternalBalance(input: $input) {
              withdraw { withdrawId amount status userCashBalanceId }
              cashBalanceDeposit { cashBalanceDepositId depositAmount status }
            }
          }
      ```

      ```json Variables theme={null}
          {
            "input": {
              "idempotencyKey": "1f1df3e7-5d43-4e3d-83de-31922d4aefb7",
              "amount": 25.00,
              "sourceUserCashBalanceId": "<TEAM_TRAVEL_ACCOUNT_ID>",
              "destinationUserCashBalanceId": "<DEFAULT_ACCOUNT_ID>"
            }
          }
      ```
    </CodeGroup>

    两个 ID 必须都是你自己的消费账户，且不能相同，并且来源账户需要有足够的可用余额。向**其他 Fluz 用户**转账是不同的操作——[转到另一个 Fluz 钱包](/features/transfer-to-another-fluz-wallet)。
  </Step>

  <Step title="提回到外部账户" icon="banknote-arrow-up">
    使用 `withdrawCashBalance` 将资金提至外部账户完成闭环——此处示例为 ACH：

    <CodeGroup>
      ```graphql Mutation theme={null}
          mutation withdrawCashBalance($input: WithdrawCashBalanceInput!) {
            withdrawCashBalance(input: $input) {
              withdraws { withdrawId amount status displayStatus withdrawMethod }
            }
          }
      ```

      ```json Variables theme={null}
          {
            "input": {
              "idempotencyKey": "550e8400-e29b-41d4-a716-446655440000",
              "amount": 50.00,
              "method": "BANK_ACH",
              "source": "CASH_BALANCE",
              "cashBalanceId": "<TEAM_TRAVEL_ACCOUNT_ID>",
              "bankAccountId": "<YOUR_TEST_BANK_ACCOUNT_ID>"
            }
          }
      ```
    </CodeGroup>

    `method` 也接受 `BANK_CARD`（推卡到卡，`bankCardId`）、`PAYPAL`（`paypalVaultId`），以及 `VENMO`（`venmoAccountId`）——每种方式都需要提供对应的 ID 字段。ACH 通常在 1–3 个工作日内结算，因此初始状态预期为 `PENDING` / `PROCESSING`。完整参考：[提至外部账户](/features/withdraw-to-external-account)。
  </Step>

  <Step title="核验总账" icon="list-checks">
    使用 `getUserCashBalances` 读取账户，闭合整个流程：

    ```graphql theme={null}
        query {
          getUserCashBalances {
            userCashBalances {
              userCashBalanceId
              nickname
              availableCashBalance
              totalCashBalance
              lifetimeCashBalance
              isDefault
              status
            }
            totalCount
          }
        }
    ```

    你应能从数值中看到这段“故事”："Team Travel" 的 `lifetimeCashBalance` 为 100.00，而可用余额减少（转出 25、提取 50），你的默认账户增加 25.00。`lifetimeCashBalance` 只增不减——它是所有存入行为的审计轨迹。
  </Step>
</Steps>

## 大功告成 🎉

你已经跑完了完整的总账生命周期——创建、注资、转移、转出、核验。这些账户是其他一切的基础：

<CardGroup cols={2}>
  <Card title="从该账户为虚拟卡注资" icon="credit-card" href="/quickstart/create-and-spend-with-a-virtual-card">
    将 `userCashBalanceId` 指向你的新账户，以实现按预算清晰分账的卡片支出。
  </Card>

  <Card title="向另一个 Fluz 用户汇款" icon="send" href="/features/account-to-account-transfers">
    查询收款人并进行钱包到钱包的转账。
  </Card>

  <Card title="管理消费账户" icon="settings" href="/features/edit-spend-accounts">
    随时间重命名、关闭并管理账户。
  </Card>

  <Card title="交易活动" icon="receipt" href="/features/get-all-transactions">
    上述每一次动账，尽在一个可筛选的动态流中，并带有备注与分类。
  </Card>
</CardGroup>

<Note>
  **想了解更多？** 通过 [support@fluz.app](mailto:support@fluz.app) 联系我们，与专家交流或预约演示。
</Note>
