# Borrow

The borrow function transfers an asset from the protocol to the user, and creates a borrow balance which begins accumulating interest based on the [Borrow Rate](https://docs.belugas.io/atokens/borrow-rate) for the asset. The amount borrowed must be less than the user's [Account Liquidity](https://docs.belugas.io/comptroller/get-account-liquidity) and the market's available liquidity.

To borrow Ether, the borrower must be 'payable' (solidity).

**BErc20 / CEther**

```
function borrow(uint borrowAmount) returns (uint)
```

* `msg.sender`: The account to which borrowed funds shall be transferred.
* `borrowAmount` : The amount of the underlying asset to be borrowed.
* `RETURN`: 0 on success, otherwise an [Error code](https://docs.belugas.io/atokens/error-codes)

**Solidity**

```
BErc20 bToken = BErc20(0x3FDA...);
require(bToken.borrow(100) == 0, "got collateral?");
```

**Web3 1.0**

```javascript
const bToken = CEther.at(0x3FDB...);
await bToken.methods.borrow(50).send({from: 0xMyAccount});
```
