How can distributors generate revenue on Morpho?
Curators and distributor channels have different ways to charge fees.
A distributor channel is any platform, application, or service that integrates Morpho's functionality to offer it to their own users. This includes wallets, DeFi aggregators, portfolio management apps, or custom interfaces that embed Morpho vaults. These distributors make Morpho accessible to users who might not otherwise directly interact with the Morpho protocol, and they can earn fees by facilitating these interactions.
To generate revenue, a distributor has several possibilities developed below:
- Own its own revenue layer (a Fee Wrapper or a Vault V2 Wrapper)
- Have an agreement with a curator (onchain or offchain)
Fees
Morpho Vault V2 can charge 2 types of fees, while Morpho Vault V1 has only one:
| Fees | Vault V2 | Vault V1 |
|---|---|---|
| Performance fee (taken on the native yield) | ✅ 0% → 50% | ✅ 0% → 50% |
| Management fee (taken on the Assets Under Curation) | ✅ 0% → 5% | ❌ |
Architecture
Here is the setup of the current Earn architecture with USDC as an example

Here is the vault model illustrating asset flow in terms of allocation

Examples of possible configurations
| Model | Control | Trust Required | Complexity | Best For |
|---|---|---|---|---|
| Fee Wrapper | High | None | Low | B2B distribution, per-customer vaults |
| V2 Wrapper | High | None | Low | Independent distributors |
| Offchain Agreement | Shared | High | Medium | Strategic partnerships |
| Onchain Splitter | Shared | None | High | Formal trustless partnerships |
1. Fee Wrapper

A Fee Wrapper is a Vault V2 configured in a specific, constrained mode that enables distribution channels to add a fee layer on top of an existing Morpho Vault V2.
- Main Morpho Vault V2: Handles actual capital allocation to Morpho Markets (V1, V2, future versions). This is where yield is generated.
- Fee Wrapper: A lightweight Vault V2 that deposits into the main Morpho Vault V2, with the sole purpose of adding a fee layer per customer/distributor.
Key Properties
| Property | Description |
|---|---|
| ERC-4626 Compliant | All standard vault functions work as expected |
| Immutably Bound | Bound to a single Morpho Vault V2 at deployment. Can not be changed |
| Fee Flexibility | Owner can configure performance fees (up to 50%) and management fees (up to 5%) |
| Simplified Configuration | Risk management functions are abdicated, making operation simpler |
| Shared Liquidity | Users share the liquidity of the underlying Morpho Vault V2 |
Use Cases
- B2B Distribution: Distributors can deploy one Fee Wrapper per customer, each with custom fee configurations
- Revenue Sharing: Split native yield between the distribution channel and end users (e.g., 50/50 split via fee configuration)
- White-Label Products: Distributor can offer Morpho yield under their own brand with their own fee structure
Yield and Rewards
Native Yield (Inside ERC-4626 Flow)Native yield comes from interest paid by borrowers on underlying Morpho Markets. It accrues automatically to shares over time, requiring no separate claim, shares simply appreciate in value. Users withdraw the same token they deposited (e.g., USDC) plus accrued interest. Performance and management fees are applied to this yield.
External Rewards (Outside ERC-4626 Flow)External rewards (e.g., MORPHO tokens) come from incentives provided by Morpho governance, market creators, or token issuers, and are distributed via Merkl (updated every 8 hours). These rewards require a separate claim action through Merkl and are automatically forwarded to end depositors by default. It is possible to implement custom distribution, for this specific reward routing (e.g., distributor claims rewards instead of users), coordinate with the Merkl team for address remapping configuration.
Integration Guide
Exact query and formulas used in this page so partners can integrate the same post-fee APY logic directly. No on-chain reads needed — all data comes from the API.
1. Query the Morpho API
Endpoint: POST https://api.morpho.org/graphql
Use the fee wrapper address directly (not the underlying Morpho Vault V2 address) along with the chainID as variables.
query FeeWrapperAPY($feeWrapper: String!, $chainId: Int!) {
feeWrapper: vaultV2ByAddress(address: $feeWrapper, chainId: $chainId) {
avgNetApy
avgNetApyExcludingRewards
performanceFee
managementFee
name
symbol
rewards {
supplyApr
asset { address, symbol }
}
adapters {
items {
type
address
... on MorphoVaultV2Adapter {
innerVault {
address
name
avgApy
performanceFee
managementFee
rewards {
supplyApr
asset { address, symbol }
}
}
}
}
}
}
}2. Compute Net APY (6h rolling avg)
// From API response:
// grossApy = feeWrapper.adapters[0].innerVault.avgApy (6h rolling avg)
// Rewards = innerVault.rewards[].supplyApr (pass through to depositors)
adapterYield = grossApy * (1 - innerVault.performanceFee) - innerVault.managementFee
wrapperPerfFeeDeduction = max(adapterYield, 0) * feeWrapper.performanceFee
nativeYield = adapterYield - wrapperPerfFeeDeduction - feeWrapper.managementFee
rewardsApr = sum(innerVault.rewards[].supplyApr)
netApy = nativeYield + rewardsAprNote:
avgApyis the 6h rolling average — provides a stable, smoothed rate. Rewards are sourced from the inner vault (innerVault.rewards[]), rewards are distributed via Merkl based on the inner vault's market positions.
The API also exposes avgNetApy and avgNetApyExcludingRewards on the fee wrapper. These are 6h rolling net values computed by the API.
For newly deployed fee wrappers, these fields may be noisy or zero until sufficient history accumulates. The manual computation using innerVault.avgApy is recommended for consistent results across all wrappers.
If rewards are redirected via Merkl address remapping, omit
rewardsAprfrom the final sum (end users do not receive them).
More FeeWrapper API data can be found here.
Deployment
The simplest deployment method uses the FeeWrapperDeployer periphery contract:
- FeeWrapperDeployer source code
- Fee Wrapper Demo App, allows you to:
- Deploy a Fee Wrapper
- Check if a Fee Wrapper is properly configured
- Update fees on an existing Fee Wrapper
- Enter a fee wrapper address to see the full yield breakdown
Find the factory addresses in addresses section.
Security Considerations
What the Owner CAN Do:- Change performance fees (up to 50%, timelocked)
- Change management fees (up to 5%, timelocked)
- Change fee recipients (timelocked)
- Add/remove allocators (timelocked)
- Change the underlying vault (abdicated)
- Add new adapters (abdicated)
- Remove the existing adapter (abdicated)
- Access user funds directly
- Prevent users from exiting (via forceDeallocate)
2. Offchain Agreement Model
Setup: Distributor and curator establish a legal revenue-sharing agreement for liquidity provided.
Two Options: Option A - New Dedicated Vault:
- Curator launches new vault (V1 or V2) exclusively for distributor's users
- Fee split negotiated up-front (e.g., 50/50 on performance fees)
- Clean attribution of liquidity and fees
Option B - Existing Vault:

- Distributor directs users to existing vault
- Revenue share calculated based on tracked liquidity contribution
- Requires tracking mechanism (transaction mapping, user addresses, time-weighted deposits)
- Legal contract enforces agreement
- Option B requires reliable attribution system
- Settlement handled offchain (periodic payouts)
Use Case: Best for strategic partnerships where trust exists or when onchain complexity isn't warranted.
3. Onchain Splitter Contract Model

Setup: Smart contract automatically splits fees between curator and distributor based on pre-defined terms.
Requirements:- Dedicated new vault (V1 or V2) for the partnership
- Splitter contract receives fee recipient role
- Automated distribution of fees to both parties
- Vault accrues performance/management fees
- Fees sent to splitter contract
- Contract automatically distributes per agreement (e.g., 60% curator / 40% distributor, or 50/50)
- Trustless execution
- Transparent onchain tracking
- No manual settlement required
- Requires dedicated vault (curator unlikely to share existing vault)
- Additional smart contract complexity
- Gas costs for splitting operations
Use Case: Best for formal partnerships requiring trustless, transparent revenue sharing with onchain guarantees.
