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

# Solicitar Aprobación de Transferencia Interna

`requestInternalTransfer`

Envía una solicitud de aprobación de un gerente para mover fondos entre dos cuentas de gasto dentro de la misma cuenta de Fluz. Cuando se aprueba, Fluz ejecuta la transferencia interna.

Esto es diferente de las transferencias entre cuentas. Usa `requestAccountTransfer` cuando muevas fondos entre cuentas de Fluz. Consulta [Solicitar Aprobación de Transferencia entre Cuentas](/features/request-account-transfer-approval).

## Alcances

| Acción             | Scope                       |
| ------------------ | --------------------------- |
| Crear solicitud    | `REQUEST_INTERNAL_TRANSFER` |
| Listar solicitudes | `LIST_APPROVALS`            |
| Aprobar o rechazar | `MANAGE_APPROVALS`          |

## Identificadores de Webhook

| Campo          | Valor    |
| -------------- | -------- |
| `approvalType` | `PAYOUT` |
| `approvalCode` | `500402` |

Eventos de webhook: `APPROVAL_CREATE`, `APPROVAL_APPROVE`, `APPROVAL_DECLINE`, y `APPROVAL_HANDLER_ERROR` en caso de falla de ejecución.

> Las transferencias internas y las transferencias entre cuentas comparten el mismo `approvalType` y `approvalCode`. Usa la mutación de la solicitud original o inspecciona el payload de la aprobación en tu integración para distinguirlas.

## Crear una Solicitud

### RequestInternalTransferInput

| Campo                          | Tipo  | Requerido | Descripción                                 |
| ------------------------------ | ----- | --------- | ------------------------------------------- |
| `amount`                       | Float | Sí        | Monto a transferir. Debe ser mayor que cero |
| `sourceUserCashBalanceId`      | UUID  | Sí        | Cuenta de gasto desde la cual retirar       |
| `destinationUserCashBalanceId` | UUID  | Sí        | Cuenta de gasto a la cual depositar         |

El origen y el destino deben ser cuentas de gasto diferentes.

### Mutación de Ejemplo

```graphql theme={null}
mutation {
  requestInternalTransfer(
    input: {
      amount: 50.00
      sourceUserCashBalanceId: "6d1b4b19-deef-42f5-80d7-ec34804ce090"
      destinationUserCashBalanceId: "bb584e49-d030-4a6e-a5a9-1c34368cbaed"
    }
  ) {
    success
    messageId
    error {
      code
      message
    }
  }
}
```

### Respuesta de Ejemplo

```json theme={null}
{
  "data": {
    "requestInternalTransfer": {
      "success": true,
      "messageId": "1234567890"
    }
  }
}
```

## Aprobar una Solicitud

Llama a `approveApprovalRequest` con el `approvalId`. Requiere `MANAGE_APPROVALS`.

```graphql theme={null}
mutation {
  approveApprovalRequest(approvalId: "07df5653-43a8-4532-9881-3ab5857bbe12") {
    success
    approvalId
    action
  }
}
```

Al aprobar, Fluz transfiere fondos entre las cuentas de gasto especificadas.

## Rechazar una Solicitud

Llama a `declineApprovalRequest` con el `approvalId`. Requiere `MANAGE_APPROVALS`.

```graphql theme={null}
mutation {
  declineApprovalRequest(approvalId: "07df5653-43a8-4532-9881-3ab5857bbe12") {
    success
    approvalId
    action
  }
}
```

No se ejecuta ninguna transferencia cuando una solicitud es rechazada.
