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

# Request Internal Transfer Approval

`requestInternalTransfer`

Submit a manager approval request to move funds between two spend accounts on the same Fluz account. When approved, Fluz executes the internal transfer.

This is different from account-to-account transfers. Use `requestAccountTransfer` when moving funds between Fluz accounts. See [Request Account Transfer Approval](/features/request-account-transfer-approval).

## Scopes

| Action             | Scope                       |
| ------------------ | --------------------------- |
| Create request     | `REQUEST_INTERNAL_TRANSFER` |
| List requests      | `LIST_APPROVALS`            |
| Approve or decline | `MANAGE_APPROVALS`          |

## Webhook Identifiers

| Field          | Value    |
| -------------- | -------- |
| `approvalType` | `PAYOUT` |
| `approvalCode` | `500402` |

Webhook events: `APPROVAL_CREATE`, `APPROVAL_APPROVE`, `APPROVAL_DECLINE`, and `APPROVAL_HANDLER_ERROR` on execution failure.

> Internal transfers and account transfers share the same `approvalType` and `approvalCode`. Use the original request mutation or inspect the approval payload in your integration to distinguish them.

## Create a Request

### RequestInternalTransferInput

| Field                          | Type  | Required | Description                                   |
| ------------------------------ | ----- | -------- | --------------------------------------------- |
| `amount`                       | Float | Yes      | Amount to transfer. Must be greater than zero |
| `sourceUserCashBalanceId`      | UUID  | Yes      | Spend account to withdraw from                |
| `destinationUserCashBalanceId` | UUID  | Yes      | Spend account to deposit to                   |

Source and destination must be different spend accounts.

### Sample Mutation

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

### Sample Response

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

## Approve a Request

Call `approveApprovalRequest` with the `approvalId`. Requires `MANAGE_APPROVALS`.

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

On approval, Fluz transfers funds between the specified spend accounts.

## Decline a Request

Call `declineApprovalRequest` with the `approvalId`. Requires `MANAGE_APPROVALS`.

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

No transfer is executed when a request is declined.
