AutoBlocksCalm automation for everyday life

Billing and plans

AutoBlocks is paid from day one after your trial — with a 14-day free trial and no card required to explore via marketing CTAs. Two plans: Starter and Plus, each with monthly or annual billing.

Compare on autoblocks.pro/pricing; manage subscription on autoblocks.run/billing.

Source: packages/billing/src/plans.ts, apps/api/src/modules/billing/routes.ts, apps/product-web/src/app/(dashboard)/billing/page.tsx.


Plans and display prices

PlanMonthlyAnnual (per month)Best for
TrialFree for 14 daysEvaluation
Starter$12$10Light personal automation
Plus$24$20Higher volume and webhooks

Display prices are in USD (PLAN_DISPLAY_PRICES). Stripe price IDs are configured in production env (STRIPE_PRICE_* in render.yaml).


Usage limits

LimitTrialStarterPlus
AutoBlocks (routines)3525
Executions / month1005005,000
Inbound webhook endpoints1210
Schedules2315

When a limit is hit, the API returns HTTP 402 with entitlement_limit_exceeded and the current count.


Where billing happens

TaskSiteRoute
Compare plansMarketingautoblocks.pro/pricing
Start trialProductautoblocks.run/signup
View trial days leftProductautoblocks.run/billing
Upgrade / checkoutProductautoblocks.run/billing
Usage metersProductautoblocks.run/billing
flowchart LR
  Pricing["autoblocks.pro/pricing"]
  Signup["autoblocks.run/signup"]
  Trial["14-day trial"]
  Billing["autoblocks.run/billing"]
  Stripe["Stripe Checkout"]
  Active["Paid subscription"]

  Pricing --> Signup --> Trial --> Billing
  Billing --> Stripe --> Active

API endpoints (billing)

MethodPathAuthPurpose
GET/billing/plansNoMarketing + product plan catalog
GET/tenants/:id/billing/trialYesTrial status
GET/tenants/:id/billing/subscriptionYesSubscription + entitlements
POST/tenants/:id/billing/checkoutYesCreate Stripe Checkout session
POST/tenants/:id/billing/portalYesCustomer portal (501 until launch hardening)
POST/billing/webhooks/stripeStripe signatureSubscription lifecycle updates

Checkout body accepts planCode (starter | plus) and interval (month | year).


Checkout flow

sequenceDiagram
  participant You
  participant App as product-web
  participant API
  participant Stripe

  You->>App: Choose Starter or Plus on /billing
  App->>API: POST /tenants/:id/billing/checkout
  API->>Stripe: Create Checkout Session
  Stripe-->>App: Redirect URL
  You->>Stripe: Complete payment
  Stripe->>API: POST /billing/webhooks/stripe
  API->>API: Update subscription in Postgres
  You->>App: Return to /billing — plan active

Trial behavior

PropertyValue
Duration14 days (TRIAL_DAYS)
Card required at signupNo (marketing CTAs)
Limits during trialLower caps — see table above
After trialUpgrade via billing or features may block at limits

Entitlement exceeded — what you see

ResourceSymptomFix
AutoBlocksCannot create newDelete unused or upgrade
ExecutionsRuns return 402Wait for period reset or upgrade
WebhooksCannot add inbound endpointUpgrade or remove endpoint
SchedulesCannot add scheduleUpgrade or remove schedule

Stripe and invoices

TopicDetail
Payment processorStripe
CheckoutHosted Stripe Checkout
WebhooksUpdate tenant subscription state
Customer portalDeferred — contact support for invoice changes until portal ships

Production secrets: STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, price IDs — set in Render dashboard per render.yaml.


Related reading