Skip to content

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

CapabilityFreeStarterPro
Links / month251,0007,500
API access
MCP access
Bulk operations✅ (up to 100)✅ (up to 500)
Custom domains015
Bio pages1310
Webhooks005
Analytics retention90 days365 days730 days
GraphQL / MCP rate limit60/min120/min240/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:

  1. Open Billing (/billing)
  2. Choose a plan to start a Stripe Checkout session (createCheckoutSession)
  3. 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_PLAN error.
  • Past-due subscriptions get a short grace period (BILLING_GRACE_DAYS, default 3) before enforcement tightens.

Next: Developer Docs

Released under the MIT License.