- Morpho Markets providing collateral and borrowable asset pairs,
- Morpho Vaults providing managed yield strategies that allocate deposits across multiple markets.
Integration prerequisites
Morpho operates through a proxy-based model. Each user creates their own proxy contract, which subsequently facilitates revenue sharing between parties. Since a new P2P Morpho proxy is deployed deterministically at deposit time, the smart contract receiving the deposit does not exist on-chain before the first deposit. Accordingly, the pre-calculated address must be whitelisted in advance. If your platform uses whitelists restricting which contracts users can deposit to, follow the steps below to ensure successful integration.1. Whitelist required addresses
Before any USDT or USDC deposit can be made, three addresses must be whitelisted in your system:
Note for USDC: For the USDC token address, follow the same whitelisting pattern (0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)
2. Whitelist future proxy address
The proxy address is derived deterministically from your depositor wallet address — it does not exist on-chain until the first deposit is made. To get your pre-calculated proxy address, call thepredictP2pLendingProxyAddress read function on the P2pMorphoProxyFactory contract directly on Etherscan:
- Go to the contract’s Read Contract tab on Etherscan: 0x3FE77F22a81c787B2E8dBF366F963f772E799568 – Read Contract.
- Find the
predictP2pLendingProxyAddressfunction. - Enter the following parameters:
_clientAddress: your depositor wallet address._clientBasisPoints:9000.
- Click Query. The returned address is your future proxy address.
3. Configure transaction authorization policy (TAP)
This step is required to allow USDT → Permit2 approvals through your system. Without it, the approval transaction will be blocked at the policy layer.Note: The steps below describe the flow for Fireblocks. The actual UI for your integration may use slightly different naming or layout, but the overall process and intent remain the same.
- Refer to the Fireblocks Console → Settings → Governance → Transaction Authorization Policy section.
- Go to the “Approve” section (not “Transfers”).
- Add a new rule:
- Add another rule with USDC (ERC-20 on Ethereum) as the asset, keeping all other fields the same.
- Save the policy before proceeding.
4. Check deposit
Note: The steps below describe the general deposit flow via the P2P widget. Exact button labels and screen layout for your system may vary — follow the same overall process as described.With all whitelisting and TAP configuration complete:
- Open the P2P.ORG widget at https://widget.p2p.org.
- Connect via Fireblocks.
- Select USDT (or USDC) on Ethereum.
- Initiate the deposit.