Private LP Deals Through Merkl: Why and How
Getting started

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.

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

PartyVisibility
The LPTheir own terms and accrual, and nothing else
The publicNothing. The campaign does not appear in the Merkl app
The creator and authorized addressesThe 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.

Want to go deeper?

Explore the technical documentation to understand how Merkl works under the hood.

Let's build together

Discover how Merkl can boost your business

Related Guides