Billing & Usage
lnkify ships with a plan/quota system (Free, Starter, Pro). On the hosted service these gate features and are billed through Stripe. The Billing screen (/billing) shows your current plan and usage.
Self-hosting? Billing is off by default
Quotas and plan gates are only enforced when an operator sets BILLING_ENFORCE=true. A default self-hosted instance runs with BILLING_ENFORCE=false, so every feature is available and quotas are not enforced. The rest of this page describes behavior when billing is enabled.
Plans at a Glance
| Capability | Free | Starter | Pro |
|---|---|---|---|
| Links / month | 25 | 1,000 | 7,500 |
| API access | — | ✅ | ✅ |
| MCP access | — | ✅ | ✅ |
| Bulk operations | — | ✅ (up to 100) | ✅ (up to 500) |
| Custom domains | 0 | 1 | 5 |
| Bio pages | 1 | 3 | 10 |
| Webhooks | 0 | 0 | 5 |
| Analytics retention | 90 days | 365 days | 730 days |
| GraphQL / MCP rate limit | 60/min | 120/min | 240/min |
Pricing is shown in-app on the Billing screen and via the plans GraphQL query, which returns each plan's server-configured price strings.
Usage & Quota
Each account has a monthly link allowance based on its plan. The Billing screen shows:
- Links created this billing period vs. your allowance
- Any refill links added on top of the base allowance
- The current period start/end
Programmatically, query meSub (current plan and subscription status) and meUsage (the usage meter) — see Queries.
Refill Packs & Auto-Refill
If you exhaust your monthly link allowance, refill packs add more links for the current period without changing your plan. You can enable auto-refill so packs are purchased automatically when usage crosses a threshold:
- Threshold — the usage percentage that triggers a refill
- Pack size — how many links each refill adds
- Monthly spend cap — an upper bound so auto-refill never exceeds what you allow
Manage this with the updateAutoRefill mutation / meAutoRefill query.
Upgrading & Managing Your Subscription
On the hosted service, billing is handled by Stripe:
- Open Billing (
/billing) - Choose a plan to start a Stripe Checkout session (
createCheckoutSession) - To update payment details or cancel, open the Stripe customer portal (
createPortalSession)
Self-hosters who want paid tiers must configure Stripe — see the STRIPE_* variables in Configuration.
What Happens at the Limit
When billing is enforced and you hit a quota:
- Link allowance reached — new link creation is blocked until the next period or a refill.
- Feature not in plan — calls to gated features (API keys, MCP, extra domains/bio pages/webhooks) return a
FEATURE_NOT_IN_PLANerror. - Past-due subscriptions get a short grace period (
BILLING_GRACE_DAYS, default 3) before enforcement tightens.
Next: Developer Docs