
Private LP Deals Through Merkl: Why and How
Companies regularly negotiate liquidity directly with large liquidity providers (LPs): a committed amount of liquidity in exchange for an agreed rate. It is one of the fastest ways to bootstrap a new market or guarantee liquidity depth from day one. Why run these deals through Merkl? A neutral engine computes what each LP is owed, payment streams in real time, and the deal stays confidential.
What is a private LP deal
A private LP deal is a negotiated agreement between a company and a specific liquidity provider. The LP commits capital to a pool, market, or vault. In return, the company commits to an agreed rate, almost always negotiated in dollar terms.
These deals exist everywhere in onchain finance, but the payment side has typically been handled by hand: a spreadsheet to track the liquidity provided, and a transfer from the company's treasury at the end of the deal period.
The limits of manual settlement
Four structural problems come with settling these deals manually.
Computing what is owed is hard ❌
Liquidity moves. An LP deposits 50k, adds 100k, withdraws part of it, and the amount owed has to reflect all of it, time-weighted. Running this computation by hand is error-prone and does not scale when several LPs enter and exit at different times. The paying team then has to convince each LP that its numbers are right, and disagreements are common.
Payment comes last ❌
The LP provides liquidity on day one and gets paid weeks or months later. Until then, the LP carries counterparty risk on the full amount, and delays are frequent.
Trust is asymmetric ❌
The LP's side of the deal is verifiable onchain from the start. The company's side is a promise. Nothing guarantees the budget exists, or that it will be paid without friction.
The payer carries the volatility ❌
Deals are negotiated in dollars, but LPs are very often paid in the company's native token. If the token depreciates over the period, the company has to pay out more tokens at settlement to reach the promised dollar amount. The longer the period, the bigger the exposure. And sometimes the token is not even live yet: the deal starts before the token exists.
How Merkl solves it
Running the deal as a Merkl campaign flips all four problems.
A trusted third party runs the computation ✅
The Merkl engine measures each address's liquidity over time and computes what is owed, continuously, following the campaign rules both parties agreed on. Deposits, top-ups, and partial withdrawals are all reflected automatically, whether the deal covers one LP or dozens entering at different times. Neither side has to produce a spreadsheet or convince the other of its math.
Paid in real time ✅
The LP starts accruing from the first block of the campaign and can claim at any time. There is no end-of-period settlement, so there is nothing to wait for.
Funds are deposited upfront ✅
The campaign budget is deposited in Merkl's Distributor contract at creation. The LP knows the money is there and will be distributed automatically according to the campaign's conditions. Merkl sits between the two parties as a neutral distribution layer: the company cannot delay or renegotiate the payment, and the LP cannot claim more than the terms allow.
No volatility exposure for the payer ✅
Because payment streams continuously at current prices, the company never accumulates a dollar-denominated debt in a depreciating token. With a fixed-rate distribution, the engine converts the agreed dollar rate into tokens day after day, at the price of the day. The rate promised in dollars is the rate paid, whatever the token does over the period. And if the reward token is not live yet, the deal can run as a pre-TGE campaign: Merkl tracks each LP's accrual from day one, and the amounts become claimable once the token launches.
Setting it up in practice
A private LP deal is a standard Merkl campaign with two things added: a whitelist and the privacy option. Any campaign type works (a lending market, a liquidity pool, a vault).
1. Restrict the campaign to the deal's addresses. Add the LP's addresses to the campaign whitelist. As soon as a whitelist is set, every other address is implicitly excluded, so only the negotiated parties earn from this budget.
2. Make the campaign private. Add the privacy option to the campaign configuration. The campaign's parameters, rules, and eligibility stay hidden from the public. You control who can view the deal: the LP sees their own terms and tracks their accrual, and you can grant view access to internal addresses, auditors, or partners.
3. Recommended: manage the whitelist via API. A whitelist written directly in the campaign can only be changed by overriding the campaign onchain. If the deal may evolve (new addresses, additional LPs), manage the whitelist via the Merkl API instead: add or remove addresses with a simple API call, no onchain transaction, and changes propagate within roughly two hours. This is enabled by the Merkl Key Value Store feature, and the list stays confidential.
Example configuration
Below is the configuration of a real private LP deal that ran through Merkl, anonymized. It pays a fixed rate in a stablecoin on a lending market:
{
"distributionChainId": 1,
"computeChainId": 1,
"creator": "0x1234567890AbcdEF1234567890aBcdef12345678",
"campaignType": 47,
"market": "0xaaaa000000000000000000000000000000000000000000000000000000000000",
"rewardToken": "0x2222222222222222222222222222222222222222",
"amount": "10000000000",
"startTimestamp": 1790000000,
"endTimestamp": 1792600000,
"computeScoreParameters": {
"computeMethod": "genericTimeWeighted"
},
"distributionMethodParameters": {
"distributionMethod": "FIX_APR",
"distributionSettings": {
"apr": "0.05",
"rewardTokenPricing": true,
"targetTokenPricing": true
}
},
"whitelist": [
"0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD"
],
"options": {
"privacy": {
"optionKey": "privacy",
"creatorCanView": true,
"recipientsCanView": true,
"authorizedAddresses": [
{
"address": "0x9876543210FedCba9876543210fEdcBA98765432",
"canManageAccess": true
}
]
}
}
}
The whitelist restricts the campaign to the LP's address. Under the privacy option, recipientsCanView lets the LP see their own terms and track their accrual, and authorizedAddresses grants view access to internal addresses; everyone else sees nothing. FIX_APR with pricing enabled pays the agreed rate in tokens at current prices, continuously.
The easiest way to create a private campaign is through the dedicated templates in Merkl Studio, which include the privacy configuration by default.
What each party sees
| Party | Visibility |
|---|---|
| The LP | Their own terms and accrual, and nothing else |
| The public | Nothing. The campaign does not appear in the Merkl app |
| The creator and authorized addresses | The full campaign configuration |
Because private campaigns flow through the same Distributor contract as every public campaign on Merkl, they are mixed into a large volume of transactions across hundreds of tokens. Correlating a specific deposit with a specific claim is computationally difficult, which is what keeps the deal confidential onchain, not just in the app.
This setup is already used in production, including by leading stablecoin issuers.
Related Guides

How a Merkl campaign is built: understanding the configuration
Learn how every Merkl campaign is built from a configuration, with its two layers: standard fields and structured inputs, explained simply.
Keep custody of your tokens with token wrappers
Run Merkl campaigns without ever transferring your reward tokens — Merkl is just the distribution infrastructure, you stay in control of the funds