Incentive Programs
Aave reserves may offer additional incentives beyond base lending rates.
Incentive Types
Supply Incentives: Extra APR for supplying assets to reserves
Borrow Incentives: APR discounts for borrowing from reserves
Conditional Incentives: Bonus rewards requiring specific supply + borrow combinations
Each reserve's incentives array contains all active incentive programs. The incentive data includes:
APR bonuses/discounts with formatted percentages
Reward token information (for Aave governance incentives)
Claim links (for Merit programs)
Conditional requirements (for complex incentives)
You can find the incentives associated with a reserve in the incentives array of the Reserve object.
These incentives come from two main sources:
Merit Programs
Third-party programs that provide extra APR rewards for specific lending activities. These require separate claiming through external platforms.
Merit programs are third-party initiatives. Aave Labs does not guarantee these programs and accepts no liability for third-party rewards.
Where:
MeritSupplyIncentive: Extra APR for supplying assets to reserves
MeritBorrowIncentive: APR discounts for borrowing from reserves
MeritBorrowAndSupplyIncentiveCondition: Extra APR for supplying and borrowing the specified pair of assets
For each of these types, a claim link to the ACI Merit UI is provided.
Aave Governance Rewards
Incentives set by Aave governance through the RewardsController, typically distributed in AAVE tokens or other approved reward tokens.
Where:
AaveSupplyIncentive: Extra APR for supplying assets to reserves
AaveBorrowIncentive: APR discounts for borrowing from reserves
In both cases, the reward token address and symbol are provided.
Claim Merit Rewards
Users can know if they have claimable Merit rewards and claim them, following the steps below.
First, determine if a user has claimable rewards.
- React
- TypeScript
- GraphQL
Use the useUserMeritRewards hook to fetch the user's claimable rewards and the transaction to claim them.
Fetch the user's claimable rewards and the transaction to claim them.
If data is null, the user has no claimable rewards.
Finally, if the user has claimable rewards, they can claim them by sending the transaction.
- React
- TypeScript
- GraphQL
Use the useSendTransaction hook for the wallet library of your choice to send the transactions in the execution plan.
Viem
import { useWalletClient } from "wagmi";import { useUserMeritRewards } from "@aave/react";import { useSendTransaction } from "@aave/react/viem";
// …
const { data: walletClient } = useWalletClient();const { data } = useUserMeritRewards({ // … suspense: true,});
const [sendTransaction, sending] = useSendTransaction(walletClient);
// …
const execute = async () => { if (data !== null) { const result = await sendTransaction(data.transaction);
if (result.isErr()) { console.error(result.error.message); } else { console.log("Merit claim rewards successful with hash:", result.value); } }};