Morpho
Morpho is a decentralized, non-custodial lending protocol that operates on Ethereum and other EVM-compatible networks. The protocol consists of two primary components:
- Morpho Markets providing collateral and borrowable asset pairs,
- Morpho Vaults providing managed yield strategies that allocate deposits across multiple markets.
The P2P.ORG DeFi API supports Morpho on the Ethereum mainnet and Base network. Some strategies (e.g., Steakhouse Financial) are available on both networks.
To retrieve the complete list of available Morpho strategies, send a GET request to the dedicated P2P.ORG /api/defi/v1/earning/strategies endpoint.
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.
A custom identifier linked to your merchant account is required. Get an authentication token to start using DeFi API.
1. Whitelist required addresses
Before any USDT or USDC deposit can be made, three addresses must be whitelisted in your system:
| # | Name | Address |
|---|---|---|
| 1 | P2pMorphoProxyFactory | 0x3FE77F22a81c787B2E8dBF366F963f772E799568 |
| 2 | USDT Token (ERC-20) | 0xdAC17F958D2ee523a2206206994597C13D831ec7 |
| 3 | Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
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 the predictP2pLendingProxyAddress 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.
Whitelist the returned proxy address before attempting the deposit.
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:
| Field | Value |
|---|---|
| Asset | USDT (ERC-20 on Ethereum) |
| Action | Approve |
| Spender / Contract | 0x000000000022d473030f116ddee9f6b43ac78ba3 (Permit2) |
| From Wallet(s) | Your staking wallet address |
| Amount | Unlimited — or set a limit |
| dApp URL (optional) | https://widget.p2p.org — add to tightly restrict scope |
-
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.
The approval and deposit transactions should now route through Fireblocks without being blocked.
What's next?
- Deposit
- Withdrawal
- DeFi API reference