Skip to main content

How producer pricing works

Producer pricing has four parts. This page describes their structure only. It doesn't state any figure, because every figure is configuration that can change: read the live values from the quote endpoints listed below.

The four parts​

PartWhat it isWho sets it
Claim feeA small one-time payment when you claim a producer account. It covers your first period.Lightning Enable
RenewalA payment per period, priced in dollars and converted to sats when you ask for it. The base price includes one active proxy.Lightning Enable
Per-proxy incrementAn amount added to the renewal for each active proxy beyond the ones the base price includes.Lightning Enable
Buyer price per callWhat a buyer pays for each call to your proxy. If you don't set one when you claim, a default applies.You

The claim fee is there to keep out spam signups, not to earn revenue. The renewal and the per-proxy increment pay for the hosted service. The buyer price per call is your revenue: buyers pay it to your wallet. Lightning Enable does not hold funds; your wallet provider facilitates custody and settlement.

Where each figure is read​

Read every figure from a quote at the moment you need it. A quote has no side effects and creates no invoice.

FigureWhere to read it
Claim feeGET /api/producer/claim, in the price block (sats and usdCents). The covers block says how many days the claim covers.
Renewal, as published with the claimGET /api/producer/claim, in the renewal block: baseUsdCents and baseSats, its conversion at the live rate kept between the configured minimum and maximum, includedProxies, periodDays, and the renewal endpoint.
Renewal, as you'd pay it nowGET /api/merchant/subscription/renew, in priceSats and periodDays, with the full calculation in breakdown. This is the amount a renewal challenge charges. If it differs from the claim quote's renewal block, this one is what you pay.
Per-proxy incrementGET /api/producer/claim, in renewal.perProxyUsdCents and renewal.perProxySats, its conversion at the live rate. When no rate is available, the minimum applies and perProxySats is zero.
Your current renewal and proxy countGET /api/producer/claim/status, in renew.quoteSats, renew.usdCents, and renew.activeProxies.
Buyer price per callThe price you set on the proxy. The claim quote's limits block gives the lowest and highest price a claimed proxy accepts (minProxyPriceSats, maxProxyPriceSats).

Prices that are pegged to dollars are converted to sats when the quote or the challenge is issued, so the sats figure moves with the exchange rate. If the exchange rate is unavailable, the renewal is priced at its configured sats minimum rather than refused, and the sats figure is always kept between a configured minimum and maximum.

A renewal challenge you already hold is honored at the sats amount it was issued for, even if the price changes before you pay. The challenge still expires, and the usual eligibility rules still apply.

The claim endpoint answers only where the claim flow is turned on. The renewal quote is described in the Merchant Settings API, and paying it is walked through in Renew in sats.

How the renewal is calculated​

The renewal is priced per endpoint, and an endpoint here means an active proxy on your account. Inactive proxies and proxies on other accounts don't count. The calculation is:

  • The base price, which includes the number of proxies in includedProxies.
  • Plus the per-proxy increment for each active proxy beyond those.
  • Converted to sats at the current exchange rate, then kept within the configured minimum and maximum.

The renewal quote's breakdown block shows each step for your account: baseUsdCents, perProxyUsdCents, includedProxies, activeProxies, billableExtraProxies, usdCentsTotal, the btcUsd rate used, the resulting sats, and pricedAt. To lower the renewal, deactivate the proxies you no longer need before you renew.

Each payment adds one period (periodDays) to your paid-through date. You can prepay ahead, up to a limit; past it, the quote answers eligible: false with reason: "PrepaidCapReached" until the paid-through date comes closer.

Signals before a period ends​

A producer account might have no email address, so Lightning Enable signals an upcoming lapse to your agent and to your buyers' agents in two ways:

  • The l402.subscription.expiring webhook. If your account has a callback URL, Lightning Enable sends this event about seven days and about one day before your paid-through date. It carries the paid-through date, the days left, the renew endpoint, and the current renewal quote in sats. Set the callback URL with PUT /api/merchant/webhook-url. The payload is described in the Producer API Reference.
  • The proxy manifest. The JSON manifest of each proxy you own carries paid_through and renewal { endpoint, period_days } in its service block, so a buyer's agent can see a lapse coming. The manifest carries no price; the live figure is always the quote.

You can also read paidThrough from GET /api/producer/claim/status at any time.

Figures are configuration​

Every figure on this page is configuration and can change without a docs update. Don't copy a figure from a quote into your code or your own docs. Read the quote each time, and set any spending limit in your agent from the quoted amount.

What happens when a period lapses​

Nothing charges you automatically. When your paid-through date passes:

  • Authenticated calls answer 403 with action_required: "renew_subscription" and the renew endpoint.
  • A daily job moves the account to the Free Producer Sandbox, and the sandbox limits apply to new proxies and to challenge volume. Your existing proxies stay in place and keep serving buyers.
  • Nothing is deleted. Your account, API key, proxies, prices, and payment history stay in place, and the account stays active so it can reach the renew endpoint.
  • Paying the renewal restores the plan. For a lapsed account, the new period starts from your payment; a renewal paid before the period ends adds its period to your current paid-through date instead.

Sats that buyers already paid went to your wallet when they paid, so a lapse never holds back money you earned.