Give each of your agents its own key with spending limits, and see every payment decision it makes.
$9 / month
For solo builders and vibe coders. 3 agent keys, spend limits, signed receipts, and a 30-day history of every decision.
$49 / month
Everything in Builder, plus 25 agent keys, human approval for unusual payments, a 1-year history, and CSV export.
Custom
Everything in Business, plus custom limits, company-wide caps, 2-year audit history, key-less agent sign-in with your cloud identity, SIEM streaming, invoiced or usage-based billing, and trials.
Card plans renew automatically every month and you can cancel anytime from your account page. Payments are handled by Stripe; we never see your card.
Plans can be bought with USDC on Base or Solana using any x402 client. These are prepaid for 30 days and don't renew automatically.
WALLET_KEY=0x... npx tsx subscribe.ts builderScript: examples/subscribe.ts. Save the ownerKey it prints.
Right after checkout you'll see your owner key once. It manages your account, so store it like a password.
On your account page, paste your owner key and create a key for each agent, with the sellers it may pay and how much it may spend.
Before each payment, the agent sends the price and wallet to Lumière PayCheck and only pays if the answer is "allow". Afterward it reports whether the call worked, which helps every buyer (you can turn that off).
Pick whichever matches how your agent works.
For Claude, Cursor, or any agent that follows instructions. Add the MCP server (https://lumierepaycheck.org/mcp) and paste:
Before paying any x402 endpoint, call the Lumière PayCheck check_payment tool with the endpoint URL, the amount, and the payTo wallet from its 402 quote. Only pay if allow is true. If it returns allow false, tell me the reasons instead of paying. After paying, call report_outcome with the receipt and whether the response was usable.Your agent key goes in the header. Pay only when the outcome is "allow".
const d = await fetch("https://lumierepaycheck.org/v1/authorize", {
method: "POST",
headers: { "content-type": "application/json",
authorization: "Bearer " + AGENT_KEY },
body: JSON.stringify({ url, amount, payTo, network }),
}).then(r => r.json());
if (d.outcome !== "allow") throw new Error(d.reasons.join("; "));Want the payment blocked automatically unless it's allowed? Use the guarded payer example. Full guide: subscriptions.md.