Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

How can distributors generate revenue on Morpho?

There are different ways to 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:

FeesVault V2Vault 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

Earn Architecture

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

Vaults Allocation

Examples of possible configurations

ModelControlTrust RequiredComplexityBest For
Fee WrapperHighNoneLowB2B distribution, per-customer vaults
V2 WrapperHighNoneLowIndependent distributors
Offchain AgreementSharedHighMediumStrategic partnerships
Onchain SplitterSharedNoneHighFormal trustless partnerships

1. Fee Wrapper

Wrapper Model

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.

  1. Main Morpho Vault V2: Handles actual capital allocation to Morpho Markets (V1, V2, future versions). This is where yield is generated.
  2. 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

PropertyDescription
ERC-4626 CompliantAll standard vault functions work as expected
Immutably BoundBound to a single Morpho Vault V2 at deployment. Can not be changed
Fee FlexibilityOwner can configure performance fees (up to 50%) and management fees (up to 5%)
Simplified ConfigurationRisk management functions are abdicated, making operation simpler
Shared LiquidityUsers 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 + rewardsApr

Note: avgApy is 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 rewardsApr from 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:

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)
What the Owner CANNOT Do:
  • 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:
Offchain New
  • 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:
Offchain Existing
  • Distributor directs users to existing vault
  • Revenue share calculated based on tracked liquidity contribution
  • Requires tracking mechanism (transaction mapping, user addresses, time-weighted deposits)
Considerations:
  • 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

Splitter Contract

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
Fee Flow:
  1. Vault accrues performance/management fees
  2. Fees sent to splitter contract
  3. Contract automatically distributes per agreement (e.g., 60% curator / 40% distributor, or 50/50)
Advantages:
  • Trustless execution
  • Transparent onchain tracking
  • No manual settlement required
Trade-offs:
  • 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.