> ## Documentation Index
> Fetch the complete documentation index at: https://base-a060aa97-mux-docs-claude-6.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# IB20.transferFrom

> Generated B20 reference for transferFrom(address,address,uint256).

## Signature

```solidity theme={null}
function transferFrom(address from, address to, uint256 amount) external returns (bool);
```

| Field               | Value                                   |
| ------------------- | --------------------------------------- |
| Selector            | `0x23b872dd`                            |
| Canonical signature | `transferFrom(address,address,uint256)` |

## Description

Transfers `amount` from `from` to `to` using `msg.sender`'s allowance. Emits `Transfer`.

## Parameters

| Parameter | Description          |
| --------- | -------------------- |
| `from`    | Source address.      |
| `to`      | Destination address. |
| `amount`  | Amount to transfer.  |

## Returns

Always `true` on success.

## Reverts

* `ContractPaused(TRANSFER)` when `TRANSFER` is paused.
* `InvalidReceiver` when `to == address(0)`.
* `InvalidSender` when `from == address(0)`.
* `InsufficientAllowance` when the caller's allowance from `from` is below `amount`.
* `PolicyForbids(TRANSFER_EXECUTOR_POLICY, ...)` when `msg.sender != from` and `msg.sender` is not authorized.
* `PolicyForbids(TRANSFER_SENDER_POLICY, ...)` when `from` is not authorized.
* `PolicyForbids(TRANSFER_RECEIVER_POLICY, ...)` when `to` is not authorized.
* `InsufficientBalance` when `from`'s balance is below `amount`.

## Access control

Read-only or ERC-20-standard access rules unless the NatSpec states otherwise.

## Policy interaction

Checks `TRANSFER_EXECUTOR_POLICY` when `msg.sender != from`, plus sender and receiver transfer scopes.

## Example

```solidity theme={null}
IB20(target).transferFrom(from, to, amount);
```
