Debt Repayment


  • Interface containing required methods for performing collateral top ups on a lending protocol

  • This needs to be implemented by each protocol-specific top up handler (e.g. Aave Handler, Compound Handler)


  • LP token holders can register a position on a supported protocol for debt repayment

  • Positions can get updated or removed at any time

  • Keepers can execute debt repayments

  • Debt Repayments are executed through pre-registered top-up handlers


  • Handles fees charged on debt repayment amount

Integrating Protocols for Debt Repayment

There is a number of protocols for which Mero supports debt repayments.

Currently the following protocols are supported:

We aim to add support to various other protocols. Please reach out if you are interested in integrating with Mero by emailing

This section outlines how protocols can be integrated with Mero. Note that in the future integration will be subject to approval from the Mero DAO.

Getting Started: Top Up Handlers

Integrating a new protocol can be relatively straightforward. The top up logic is mostly abstracted away and handled by the TopUpAction contract. This contract handles the registration/deletion/updating of positions, while also containing a list of all supported Top up handlers. A top up handler is a contract which contains the top up logic for a specific protocol. Hence, integrating a new protocol requires to create a new top up handler for it.

A top up handler contains the following interface.

function topUp(bytes32 account, address underlying, uint256 amount, bytes memory extra) external payable

Tops up the account for the protocol

  • account: Account to be topped up

  • underlying: Underlying currency to be used for top up

  • amount: Amount to be topped up

  • extra: Arbitrary data that can be passed to the handler

TopUpHandler.getUserFactor(address account, bytes memory extra) external returns (uint256)

Returns a factor for the user which should always be >= 1 for sufficiently colletaralized positions and should get closer to 1 when collaterization level decreases

  • account: Account for which to get the factor

  • extra: Arbitrary data that can be passed to the handler

An example implementation of a top up handler is given by the Top Up Handler for Compound.

Adding A Top Up Handler

Once a new protocol top up handler has been implemented it only needs to be added to the TopUpAction contract. This can be done via the following method:

updateTopUpHandler(bytes32 protocol, address handlerAddress) external

Update an existing or add a new top up handler.

  • protocol: Name of the protocol as bytes32

  • handlerAddress: Address of the handler