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

# Transferencia entre cuentas de gasto

Mueve dinero entre dos de tus propias **cuentas de gasto** de Fluz: retira de una cuenta de gasto de origen y deposita en una cuenta de gasto de destino en una sola operación, usando la mutación `transferInternalBalance`.

<Note>
  **Esto transfiere entre tus propias cuentas de gasto.**

  Una cuenta de gasto es una cuenta de saldo en efectivo (el tipo `UserCashBalance`). Esta mutación mueve fondos de una de tus cuentas de gasto a otra. Para enviar fondos a un **usuario de Fluz diferente**, usa [Transferir a otra billetera de Fluz](/features/transfer-to-another-fluz-wallet) en su lugar.
</Note>

***

## Transferir fondos entre cuentas de gasto

Para mover fondos de una cuenta de gasto a otra, usa la mutación `transferInternalBalance`. Recibe un objeto de entrada `TransferInternalBalanceInput` que identifica la cuenta de gasto de origen, la cuenta de gasto de destino y el monto.

### TransferInternalBalanceInput

| Campo                        | Tipo    | Requerido | Descripción                                                                                                                                                                           |
| ---------------------------- | ------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| amount                       | Float!  | Sí        | El monto a transferir desde la cuenta de gasto de origen a la cuenta de gasto de destino.                                                                                             |
| idempotencyKey               | String! | Sí        | Una cadena única generada por el cliente para garantizar el procesamiento idempotente de la solicitud. Si se envía la misma clave varias veces, solo se procesa la primera solicitud. |
| sourceUserCashBalanceId      | UUID!   | Sí        | La cuenta de gasto de la cual se retirarán fondos.                                                                                                                                    |
| destinationUserCashBalanceId | UUID!   | Sí        | La cuenta de gasto en la que se depositarán los fondos.                                                                                                                               |

<Callout icon="💡">
  ### Ambos IDs deben ser de tus propias cuentas de gasto.

  Usa [Obtener cuentas de gasto](/features/get-spend-accounts) para buscar el `userCashBalanceId` de cada cuenta de gasto. El origen y el destino deben ser dos cuentas de gasto diferentes, y la cuenta de origen debe tener suficiente saldo disponible para cubrir la transferencia.
</Callout>

### Solicitud de ejemplo

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

### Ejemplo de entrada

En este ejemplo, se mueven \$6.00 desde la cuenta de gasto de origen hacia la cuenta de gasto de destino.

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

### Respuesta de ejemplo

***

## Entender la respuesta

Una transferencia interna se registra como dos movimientos vinculados: un **withdraw** desde la cuenta de gasto de origen y un **deposit** en la cuenta de gasto de destino. La respuesta devuelve ambos.

| Nombre del campo   | Tipo               | Descripción                                             |
| ------------------ | ------------------ | ------------------------------------------------------- |
| cashBalanceDeposit | CashBalanceDeposit | El depósito realizado en la cuenta de gasto de destino. |
| withdraw           | Withdraw           | El retiro realizado desde la cuenta de gasto de origen. |

### cashBalanceDeposit

El objeto `cashBalanceDeposit` contiene detalles sobre el depósito en la cuenta de gasto de destino.

| Nombre del campo       | Tipo                      | Descripción                                                                                                  |
| ---------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------ |
| cashBalanceDepositId   | UUID!                     | Identificador único del depósito del saldo en efectivo.                                                      |
| depositDisplayId       | String!                   | Identificador de visualización del depósito, destinado a interfaces de usuario.                              |
| depositAmount          | String!                   | El monto del depósito.                                                                                       |
| depositFee             | String                    | Tarifa asociada con el depósito, si aplica.                                                                  |
| bankCardId             | UUID                      | Identificador de la tarjeta bancaria utilizada para el depósito.                                             |
| bankAccountId          | UUID                      | Identificador de la cuenta bancaria utilizada para el depósito.                                              |
| paypalVaultId          | UUID                      | Identificador del vault de PayPal utilizado para el depósito.                                                |
| transactionDate        | DateTime!                 | Fecha y hora en que se realizó la transacción.                                                               |
| clearedDate            | DateTime                  | Fecha y hora en que el depósito se compensó, si aplica.                                                      |
| status                 | CashBalanceDepositStatus! | Estado actual del depósito.                                                                                  |
| expectedClearedDate    | DateTime!                 | Fecha y hora estimadas para que el depósito se compense.                                                     |
| cashBalanceDepositType | CashBalanceDepositType!   | Tipo del depósito del saldo en efectivo, incluyendo CASH\_BALANCE, GIFT\_CARD\_PREPAYMENT, RESERVE\_BALANCE. |
| cashBalanceSettlements | \[CashBalanceSettlement]  | Detalles de tiempo de compensación para el depósito, incluyendo estado y tipo.                               |

### withdraw

El objeto `withdraw` contiene detalles sobre el retiro desde la cuenta de gasto de origen.

| Nombre del campo      | Tipo            | Descripción                                                                         |
| --------------------- | --------------- | ----------------------------------------------------------------------------------- |
| withdrawId            | UUID!           | Identificador único del retiro.                                                     |
| amount                | String!         | El monto retirado.                                                                  |
| processingFee         | String!         | Tarifa cobrada por procesar el retiro.                                              |
| chargedFee            | String!         | Tarifa cobrada al usuario por el retiro.                                            |
| status                | String!         | Estado interno del retiro.                                                          |
| displayStatus         | String!         | Estado de visualización amigable para el usuario del retiro.                        |
| withdrawSource        | WithdrawSource! | El saldo de origen desde el cual se retiraron los fondos.                           |
| submissionDate        | DateTime!       | Fecha y hora en que se envió el retiro.                                             |
| createdAt             | DateTime!       | Fecha y hora en que se creó el retiro.                                              |
| updatedAt             | DateTime!       | Fecha y hora de la última actualización del retiro.                                 |
| transactionLogId      | UUID            | Identificador del registro de transacción asociado.                                 |
| externalTransactionId | String          | Identificador de transacción externo del gateway de pago (para ACH).                |
| payoutId              | String          | Identificador de pago del gateway de pago (para PayPal/Venmo).                      |
| emailAddress          | String          | Dirección de correo electrónico asociada con el retiro.                             |
| bankAccountId         | UUID            | Identificador de la cuenta bancaria utilizada (si aplica).                          |
| userCashBalanceId     | UUID            | Identificador de la cuenta de gasto de origen desde la que se retiraron los fondos. |
| seatId                | UUID            | El identificador del asiento asociado con la cuenta.                                |

<Warning>
  **Se requiere autorización**

  Esta mutación requiere el alcance `MAKE_INTERNAL_TRANSFER`. Asegúrate de que tu token de acceso tenga concedido este alcance antes de intentar una transferencia interna entre cuentas de gasto.
</Warning>

<br />
