> ## 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.

# Transfer Between Spend Accounts

Move money between two of your own Fluz **spend accounts** — withdrawing from a source spend account and depositing into a destination spend account in a single operation, using the `transferInternalBalance` mutation.

<Note>
  **This transfers between your own spend accounts.**

  A spend account is a cash balance account (the `UserCashBalance` type). This mutation moves funds from one of your spend accounts to another. To send funds to a **different Fluz user**, use [Transfer to Another Fluz Account](/features/transfer-to-another-fluz-wallet) instead.
</Note>

***

## Transfer Funds Between Spend Accounts

To move funds from one spend account to another, use the `transferInternalBalance` mutation. It takes a `TransferInternalBalanceInput` input object identifying the source spend account, the destination spend account, and the amount.

### TransferInternalBalanceInput

| Field                        | Type    | Required | Description                                                                                                                                                 |
| ---------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| amount                       | Float!  | Yes      | The amount to transfer from the source spend account to the destination spend account.                                                                      |
| idempotencyKey               | String! | Yes      | A unique client-generated string to ensure idempotent request processing. If the same key is submitted multiple times, only the first request is processed. |
| sourceUserCashBalanceId      | UUID!   | Yes      | The spend account to withdraw funds **from**.                                                                                                               |
| destinationUserCashBalanceId | UUID!   | Yes      | The spend account to deposit funds **into**.                                                                                                                |

<Callout icon="💡">
  ### Both IDs must be your own spend accounts.

  Use [Get Spend Accounts](/features/get-spend-accounts) to look up the `userCashBalanceId` for each spend account. The source and destination must be two different spend accounts, and the source must have enough available balance to cover the transfer.
</Callout>

### Sample Request

GraphQL

```text theme={null}
mutation transferInternalBalance($input: TransferInternalBalanceInput!) {
  transferInternalBalance(input: $input) {
    cashBalanceDeposit {
      cashBalanceDepositId
      depositDisplayId
      depositAmount
      depositFee
      bankAccountId
      transactionDate
      clearedDate
      status
      expectedClearedDate
      cashBalanceDepositType
      cashBalanceSettlements {
        cashBalanceSettlementId
        cashBalanceDepositId
        availabilityType
        status
      }
    }
    withdraw {
      withdrawId
      amount
      processingFee
      chargedFee
      status
      displayStatus
      withdrawSource
      submissionDate
      createdAt
      updatedAt
      transactionLogId
      externalTransactionId
      payoutId
      emailAddress
      bankAccountId
      userCashBalanceId
      seatId
    }
  }
}
```

### Example Input

In this example, \$6.00 moves from the source spend account into the destination spend account.

JSON

```text theme={null}
{
  "idempotencyKey": "1f1df3e7-5d43-4e3d-83de-31922d4aefb7",
  "amount": 6.00,
  "sourceUserCashBalanceId": "6d1b4b19-deef-42f5-80d7-ec34804ce090",
  "destinationUserCashBalanceId": "bb584e49-d030-4a6e-a5a9-1c34368cbaed"
}
```

### Sample Response

***

## Understanding the Response

An internal transfer is recorded as two linked movements: a **withdraw** from the source spend account and a **deposit** into the destination spend account. The response returns both.

| Field Name         | Type               | Description                                          |
| ------------------ | ------------------ | ---------------------------------------------------- |
| cashBalanceDeposit | CashBalanceDeposit | The deposit made into the destination spend account. |
| withdraw           | Withdraw           | The withdrawal taken from the source spend account.  |

### cashBalanceDeposit

The `cashBalanceDeposit` object contains details about the deposit into the destination spend account.

| Field Name             | Type                      | Description                                                                                          |
| ---------------------- | ------------------------- | ---------------------------------------------------------------------------------------------------- |
| cashBalanceDepositId   | UUID!                     | Unique identifier for the cash balance deposit.                                                      |
| depositDisplayId       | String!                   | Display identifier for the deposit, intended for user-facing purposes.                               |
| depositAmount          | String!                   | The amount of the deposit.                                                                           |
| depositFee             | String                    | Fee associated with the deposit, if applicable.                                                      |
| bankCardId             | UUID                      | Identifier of the bank card used for the deposit.                                                    |
| bankAccountId          | UUID                      | Identifier of the bank account used for the deposit.                                                 |
| paypalVaultId          | UUID                      | Identifier of the PayPal vault used for the deposit.                                                 |
| transactionDate        | DateTime!                 | Date and time when the transaction was made.                                                         |
| clearedDate            | DateTime                  | Date and time when the deposit cleared, if applicable.                                               |
| status                 | CashBalanceDepositStatus! | Current status of the deposit.                                                                       |
| expectedClearedDate    | DateTime!                 | Expected date and time for the deposit to clear.                                                     |
| cashBalanceDepositType | CashBalanceDepositType!   | Type of the cash balance deposit, including CASH\_BALANCE, GIFT\_CARD\_PREPAYMENT, RESERVE\_BALANCE. |
| cashBalanceSettlements | \[CashBalanceSettlement]  | Settlement time details for the deposit, including status and type.                                  |

### withdraw

The `withdraw` object contains details about the withdrawal from the source spend account.

| Field Name            | Type            | Description                                                       |
| --------------------- | --------------- | ----------------------------------------------------------------- |
| withdrawId            | UUID!           | Unique identifier for the withdrawal.                             |
| amount                | String!         | The amount withdrawn.                                             |
| processingFee         | String!         | Fee charged for processing the withdrawal.                        |
| chargedFee            | String!         | Fee charged to the user for the withdrawal.                       |
| status                | String!         | Internal status of the withdrawal.                                |
| displayStatus         | String!         | User-friendly display status of the withdrawal.                   |
| withdrawSource        | WithdrawSource! | The source balance from which funds were withdrawn.               |
| submissionDate        | DateTime!       | Date and time when the withdrawal was submitted.                  |
| createdAt             | DateTime!       | Date and time when the withdrawal was created.                    |
| updatedAt             | DateTime!       | Date and time when the withdrawal was last updated.               |
| transactionLogId      | UUID            | Identifier of the associated transaction log.                     |
| externalTransactionId | String          | External transaction identifier from payment gateway (for ACH).   |
| payoutId              | String          | Payout identifier from payment gateway (for PayPal/Venmo).        |
| emailAddress          | String          | Email address associated with the withdrawal.                     |
| bankAccountId         | UUID            | Identifier of the bank account used (if applicable).              |
| userCashBalanceId     | UUID            | Identifier of the source spend account funds were withdrawn from. |
| seatId                | UUID            | The seat identifier associated with the account.                  |

<Warning>
  **Authorization required**

  This mutation requires the `MAKE_INTERNAL_TRANSFER` scope. Ensure your access token has been granted this scope before attempting an internal transfer between spend accounts.
</Warning>

<br />
