Plans and limits
Rate limits, the monthly request quota, webhook endpoints, partner fee caps and white-label per plan, how to read your usage, and how paid plans are billed in USDC with LayerHop's own crypto subscriptions.
Every account starts on Free. Paid plans raise the limits and add white-label, and they are paid the way your own customers pay you: with a LayerHop subscription, an invoice in USDC each month that you pay with any token on any chain.
Paid plans are not switched on yet. Until LayerHop enables them, every account has the Free limits below (the same limits as without plans), the plan endpoints return
404, and nobody is billed. Prices and limits below are placeholders and may change before launch.
What each plan includes#
| Free | Pro | Scale | |
|---|---|---|---|
| Price | 0 | 49 USDC / month | 299 USDC / month |
| Rate limit (per API key) | 120 requests/minute | 600 requests/minute | 3,000 requests/minute |
| Live requests per month | no quota | 2,000,000 | 20,000,000 |
| Webhook endpoints | 10 | 25 | 100 |
| Partner fee cap | 50 bps | 100 bps | 150 bps |
| White-label widget and checkout | no | yes | yes |
| Priority support | no | no | yes |
GET /v1/plans returns the current catalog with exact prices, so you never have to hard-code it.
- Rate limit applies per API key, as today. A higher limit LayerHop set on a key by hand still wins. Over it you get
RATE_LIMITED(HTTP 429) withretry-after. - Monthly quota counts the live requests (
lh_live_…keys) of all your keys in the calendar month (UTC). Test-mode keys and requests without a key never count. Over it you getQUOTA_EXCEEDED(HTTP 429) until the 1st of next month or until you upgrade. Responses carryx-quota-limitandx-quota-remaining. - Partner fee cap is the highest
feeBpsyour partner profile can charge on top of LayerHop's fee. The total of both stays capped at 150 bps. - White-label hides "Routed by LayerHop" under the widget (with
hidePoweredByand your partner id inintegrator) and "Secured by LayerHop" on hosted checkout. LayerHop checks your plan on its servers: settinghidePoweredBywithout a white-label plan changes nothing.
Check your plan and usage#
curl https://api.layerhop.com/v1/account/plan -H "x-api-key: $LAYERHOP_API_KEY"{
"plan": { "id": "pro", "name": "Pro", "rateLimitRpm": 600, "monthlyRequests": 2000000, "webhookEndpoints": 25, "whiteLabel": true },
"status": "active",
"periodEnd": "2026-11-21T10:00:00.000Z",
"expiresAt": "2026-12-01T10:00:00.000Z",
"usage": { "requests": 18234, "monthlyRequests": 2000000, "resetsAt": "2026-11-01T00:00:00.000Z", "rateLimitRpm": 600, "webhookEndpoints": { "used": 2, "limit": 25 } }
}This endpoint never counts against the quota, so it still answers after QUOTA_EXCEEDED. The dashboard's Billing page shows the same numbers.
Upgrade, change or cancel#
In the dashboard, open Billing and pick a plan:
- LayerHop starts a monthly subscription and issues the first invoice (to the email on your account).
- Pay it on the hosted invoice page with any token on any chain. It settles in USDC on Base.
- The plan applies within about a minute of the payment settling. Each month a new invoice is emailed; pay it to keep the plan.
| Status | Meaning |
|---|---|
free |
No paid plan. |
active |
Paid and renewing. |
past_due |
This month's invoice is past its due date. The plan stays on during the grace period. |
grace |
The paid period ended and the renewal is unpaid. The plan stays until expiresAt, then the account is on Free. |
canceling |
You canceled. The plan stays until the end of the period you paid for, then the account is on Free. |
- Upgrading bills the new plan at once. Moving to a cheaper plan starts it when the period you already paid ends. There is no proration.
- Cancel (downgrade to Free) stops renewals and voids any unpaid invoice. You keep the paid plan until its period ends.
- An unpaid renewal keeps the plan for 10 days after the period ends (3 days to the invoice's due date plus the 7-day subscription grace), then the account is on Free. Your keys, webhooks and data stay. Only the limits change.
If you go over a Free limit after a downgrade (for example more webhook endpoints than Free allows), existing endpoints keep working, but you can't add new ones until you are under the limit.
Last updated