> ## 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)新增更多。
  * 每一個移動資金的 mutation 都需要唯一的 `idempotencyKey` — 參見[冪等性](/concepts/idempotency)。
</Info>

## 完整流程

<Steps>
  <Step title="鑄造具四個錢包範圍的權杖" icon="key">
    此流程會觸及四個範圍 — 每個能力對應一個：

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