> For the complete documentation index, see [llms.txt](https://docs.belugas.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.belugas.io/atokens/borrow.md).

# 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](/atokens/borrow-rate.md) for the asset. The amount borrowed must be less than the user's [Account Liquidity](/comptroller/get-account-liquidity.md) 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](/atokens/error-codes.md)

**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});
```
