Quotas and billing
Nerve operates on a transparent, predictable pricing model designed for developers bringing their own provider credentials.
Pricing model
| Plan | Monthly Fee | Ingest Rate Limit | Monthly Event Quota | Channels & Features |
|---|---|---|---|---|
| Pro (Active) | ₦50,000 / month | 100 RPS | 500,000 events | All 8 providers, circuit breakers, 2-tier rate limiting, RLS isolation |
| Free / Expired Grace | ₦0 / month | 1 RPS | 1,000 events | Testing, evaluation, and degraded fallback |
- Zero channel markups: You pay upstream providers directly under your own commercial terms. Nerve charges only the flat platform fee.
- Paystack integration: Subscriptions are tokenized and billed monthly via Paystack with automated NGN card settlement.
Managing your subscription
Subscription management is restricted to workspace Owners via the dashboard at Settings → Billing:
- Subscribe: Click Upgrade to Pro to initialize Paystack checkout. You will be redirected to the secure Paystack payment modal.
- Server-Side Verification: Paystack redirects back to
app.nervly.io/settings?tab=billing, where the control plane verifies the transaction server-side (POST /console/billing/verify) and activates the 100 RPS / 500k quota immediately. - Cancel Anytime: Click Cancel Subscription to disable recurring billing. Your Pro limits remain active until the end of the current billing period (
current_period_end).
Ingest quota enforcement
Nerve tracks usage in real time using atomic Redis counters in the ingestion path:
- Key Format:
usage:{workspace_id}:{YYYYMM}with a 35-day rolling TTL. - Atomic Metering: The gateway atomically increments this counter on each valid trigger call. If a call is rejected by rate limits or validation, the counter is decremented.
- Nightly Reconciliation: A nightly control plane job reconciles Redis counters against the authoritative count of
messagesrows in PostgreSQL.
When your workspace exceeds its monthly event quota (500,000 events), subsequent trigger requests return 429 Too Many Requests until the next billing period or limit adjustment.
Payment failures and dunning
If an automatic monthly renewal fails, Nerve initiates a structured 7-day grace period:
Day 0: Payment fails ──► Webhook invoice.payment_failed marks status 'past_due'
Email 1: 'Payment Failed — Action Required' sent to owner
(Active limits preserved during grace)
│
Day 4: Mid-grace check ─► Email 2: '3 Days Remaining on Nerve Grace Period' sent
│
Day 7: Grace expires ──► Automated quota sweep cuts limits:
rate_limit_rps = 1, monthly_event_quota = 1,000
Email 3: 'Workspace Limits Degraded / Suspended' sent
- 7-Day Grace: During the grace period, traffic continues to process normally at 100 RPS so unexpected card expires do not disrupt production users.
- Degraded Free Tier: If unpaid after 7 days, limits drop to 1 RPS / 1,000 monthly events.
- Suspension: Prolonged non-payment or explicit subscription disablement marks
workspaces.status = 'suspended', causing the gateway to reject calls with403 Forbidden.