Skip to main content
March 23rd 2026

Usage alerts and balances.limit_reached webhook

You can now configure usage alerts on customers and entities to get notified when usage crosses a threshold. Alerts are set via billingControls.usageAlerts and fire a balances.usage_alert_triggered webhook. Supports both absolute usage counts and percentage-of-allowance thresholds.A new balances.limit_reached webhook fires when a customer hits a usage limit — whether it’s the included allowance, a max purchase cap, or a spend limit. See the webhooks reference and spend limits & usage alerts guide for details.
March 17th 2026

Express, Elysia, and Web Standard adapters for autumn-js

The autumn-js SDK now ships adapters for Express, Elysia, and any framework that uses the Fetch API Request/Response objects. You can set up the autumnHandler in your backend with a single import — no manual request parsing required.
  • Express: Import from autumn-js/express and mount with app.use(). Requires express.json() before the handler
  • Elysia / Web Standard: Import from autumn-js/fetch and use with Elysia’s .mount(), Cloudflare Workers, Deno, or any Fetch-based runtime
  • Existing adapters: Next.js (autumn-js/next) and Hono (autumn-js/hono) continue to work as before
See the setup guide for framework-specific code examples.

Explicit customer creation required for check and track

The /check and /track endpoints no longer auto-create customers. If you call these endpoints with a customer_id that doesn’t exist, the API now returns a customer_not_found error instead of silently creating the customer.This change encourages explicit customer lifecycle management and prevents accidental customer creation from typos or stale IDs.
  • Create customers first: Call customers.getOrCreate during signup or login before using check or track
  • Handle the error: If a customer doesn’t exist, the API returns error code customer_not_found

autumn-js SDK 1.0.0

The autumn-js SDK has been promoted from beta to stable at version 1.0.0.

New framework adapters

The autumn-js SDK now includes adapters for Express, Elysia, and any Web Standard compatible runtime (Cloudflare Workers, Deno). Import from the adapter that matches your backend:
FrameworkImport path
Next.jsautumn-js/next
Honoautumn-js/hono
Elysia / Web Standardautumn-js/fetch
Expressautumn-js/express
Otherautumn-js/backend
See the setup guide and the autumnHandler reference for full examples.
  • Express adapter for autumnHandler via autumn-js/express - #979
  • Web Standard adapter for autumnHandler via autumn-js/fetch (Elysia, Cloudflare Workers, Deno) - #979
  • Explicit customer creation required for check and track endpoints - #968
  • autumn-js SDK promoted to 1.0.0 stable release - #968
  • New Express, Elysia, and Web Standard adapters for autumnHandler - #985
  • Improved API reference field descriptions for preview endpoints - #985
  • checkout_session_params.subscription_data (including metadata) is now properly deep-merged with Autumn’s internal parameters instead of being overwritten - #996
March 16th 2026

Balance and usage carry-over on plan upgrades

You can now preserve a customer’s remaining balances and usage when they upgrade plans. Two new parameters on billing.attach give you fine-grained control over what happens to consumable features during an immediate upgrade.
  • carry_over_balances: Unused credits or balances from the old plan are carried forward to the new one — so customers don’t lose what they’ve already paid for
  • carry_over_usages: Prior usage is deducted from the new plan’s allowance, preventing customers from getting a free reset on upgrade
  • Per-feature control: Optionally scope carry-over to specific features using feature_ids
See the attach API reference for details.

Feature flags in customer and entity responses

Boolean features are now returned as a dedicated flags object on customer and entity API responses. This makes it easier to check on/off feature access without calling the check endpoint separately.
  • Separate from balances: Flags live under flags in the response, clearly separated from consumable balances
  • Available everywhere: Returned on customer get, list, entity get, and entity create endpoints
  • Includes metadata: Each flag shows the originating plan, expiration, and feature ID
See the check endpoint and customer endpoints for the updated response format.
  • Balance carry-over on immediate plan upgrades via carry_over_balances - #861
  • Usage carry-over on immediate plan upgrades via carry_over_usages - #875
  • Boolean features returned as flags in customer and entity objects - #950
  • Updated API, SDKs, and frontend with new flag fields - #951
  • Fixed customer retrieval query causing errors in certain configurations - #958, #959
  • Fixed trial upgrade reliability when unsetting trial periods - #958
March 13th 2026

Autumn Checkout

We’ve launched Autumn Checkout — a hosted confirm-before-charge flow that gives customers a clear preview before completing their purchase.When a customer with a saved payment method subscribes or updates their plan, they’re now sent to Autumn Checkout instead of being charged directly. This lets them review exact pricing — including prorations, usage charges, and discounts — before confirming.
  • Preview before you pay: Customers see immediate charges and next-cycle estimates before confirming
  • Works everywhere: Supports new subscriptions, plan upgrades, and quantity updates
  • Handles edge cases: Built-in flows for 3DS authentication, payment failures, and action-required states
  • No API changes: Just follow the paymentUrl returned by billing.attach or billing.update
When you call billing.attach or billing.update, the returned paymentUrl routes customers to:
  • Stripe Checkout — if they don’t have a saved payment method
  • Autumn Checkout — if they do, so they can review and confirm the charge
After confirmation, customers are redirected to your successUrl.
February 25th 2026

Volume-Based Tiered Pricing

You can now choose between graduated and volume-based tiered pricing for your plans. With volume pricing, the entire usage quantity falls into a single tier instead of splitting across tiers — useful for models where the per-unit price depends on total consumption.
  • Two tier modes: Choose graduated (split across tiers) or volume (single tier applies to all units)
  • Backward compatible: Existing graduated plans work without changes; volume is opt-in via tier_behavior
  • Full stack: Supported in the plan editor, attach/checkout previews, Stripe invoices, and the API

Batch Attach

Attach multiple plans to a customer in a single API request. Each plan can have its own customization, feature quantities, and trial settings — all validated and applied atomically with a distributed lock.
  • One request, multiple plans: Attach several plans at once with per-plan customization
  • Preview support: Preview the combined batch before committing via /billing.preview_multi_attach
  • Concurrency safe: Distributed lock prevents conflicting concurrent attaches

Lazy Entitlement Resets

Entitlement resets now happen lazily on read, so customers see fresh balances instantly without waiting for a cron cycle. An atomic Postgres function and Redis Lua script prevent double-resets under concurrency.
  • Instant resets: Stale entitlements are reset the moment they’re fetched
  • Atomic & safe: Per-row locking in Postgres and atomic Redis Lua patching prevent double-resets
  • Hardened cron fallback: Batch reset cron bounded with max iterations and timeouts
  • Volume-based tiered pricing alongside graduated pricing - #765
  • Batch attach: attach multiple plans in one request - #815
  • Lazy entitlement resets for instant balance refreshes - #800, #802
  • Atomic Redis updates for customer data and entities (CRDT-safe) - #812, #813
  • Mobile navigation with sticky top bar and slide-in sidebar - #760
  • 12/24-hour date and time picker for balance reset scheduling - #760
  • Stripe coupon support in attach discount dropdown - #819
  • Metadata on Stripe invoice line items (product ID, price ID, coupon IDs) - #817
  • RPC router for Plans (create/get/update/delete) - #750
  • RPC router for Features (list/get/create/update/delete) - #762
  • Hardened reset cron with bounded batches and timeouts - #808
  • Customer filter and UI cleanups - #755
  • Unit tests GitHub Action - #801
  • Fixed scheduled switches failing when a Stripe coupon was deleted - #759
  • Fixed events table showing empty - #822
  • Fixed customer balance UI - #816
  • Fixed balance subrow to always show /granted - #779, #780
  • Fixed attach dashboard one-off products - #789
  • Fixed create customer body expand - #787
  • Fixed Vercel marketplace status not ready - #778
  • Fixed discounts on upgrades in legacy attach - #772
  • Fixed invoice without payment method - #770
  • Fixed SQS client restart - #767, #768
  • Fixed impersonation - #793
  • Fixed reset for past-due customer entitlements - #805, #806
  • Fixed zero denominator issue - #746
  • Fixed Vercel transfer request blocking - #744
  • Fixed discounts on scheduled subscriptions - #742
  • Fixed invoice cron race condition - #747
  • Fixed custom plan detection in subscription updates - #784
  • Fixed success URL handling for v2 attach checkout - #786
  • Fixed preview attach concurrency lock - #758
  • New POST /billing.multi_attach and POST /billing.preview_multi_attach for batch plan attaches - #815
  • New POST /billing.setup_payment for collecting payment methods before plan attach - #797
  • New attach/update subscription V1 params: plan_id, feature_quantities, customize, free_trial, transition_rules - #749, #752
  • RPC endpoints for Plans: /plans.create, /plans.get, /plans.update, /plans.delete - #750
  • RPC endpoints for Features: /features.list, /features.get, /features.create, /features.update, /features.delete - #762
  • Added PATCH /customers/:customer_id for partial updates - #774
  • Metadata added to Stripe invoice line items - #817
  • V2 API docs with multi-version OpenAPI specs and SDK generation pipeline - #773
January 12th 2026

Dynamic onboarding prompts

We’ve added a new in-app onboarding guide to help you get your billing set up in less than 30 minutes.
  • Docs in app: Access documentation directly within the dashboard
  • 3 prompts → full billing setup: Complete your entire billing configuration in just 3 steps
  • Dynamic code snippets: Get code snippets and prompts tailored to your specific pricing config
  • Real-time updates: See your progress update as you complete each step


  • Code cleanup and refactoring in Stripe billing plan evaluation system - #525
  • Added customerId to request context for improved tracking and observability - #520
  • Improved cache verification workflow with free product filtering and Sentry alert tags - #519
  • Major Redis Lua refactor with cache versioning, filtering, and safer updates - #512
  • Fixed multi-region cache deletion to delete from all configured regions - #539
  • Fixed import path casing issue for createProrationinvoice - #537
  • Fixed TypeScript type compatibility in BullMQ worker - #538
  • Fixed type annotations in OpenAPI definitions and RevenueCat mappings - #533, #534
  • Fixed migration logic for product downgrades and cancellations - #529
  • Fixed subscription migration to prevent auto-uncanceling during version updates - #527
  • Fixed included_usage calculation in V1.2 API backward compatibility layer - #526
  • Implemented Redis-first caching for add-to-balance operations - #524
  • Simplified Stripe webhook cache refresh strategy - #523
  • Removed redundant plan_version field from subscription API schema - #522
  • Fixed duplicate features in plan editor when closing edit feature sheet - #508
  • Added entity_id parameter support to legacy balance update endpoint - #532
  • Added /configs/push and /configs/nuke endpoints for managing organization configuration in sandbox environments - #521
  • Implemented idempotency protection for billing endpoints using idempotency-key header - #516
  • Added new POST /customers/list V2 endpoint with plan filtering, subscription status filtering, and search functionality - #518, #517
December 26th 2025

Add to balance in the dashboard

Merry Christmas! 🎄You can now add to a customer’s balance directly from the dashboard. This is useful for giving extra credits to a customer.You can input a positive or negative value in this field.

  • Balance management enhancements with atomic “Add to Balance” feature - #503
  • Product copy workflow streamlined with direct environment selection - #501
  • Plan feature sheet with discard/update actions and change detection - #499
  • Base price display logic centralized into reusable utility - #488
  • Stripe secret key authentication always available, improved UI - #491
  • Console logs removed from production builds for cleaner output - #487
  • Sign-in flow simplified by removing onboarding redirect logic - #484
  • Enter key handler added for email sign-in and cache improvements - #483
  • Plan editor UI enhanced with better pricing configuration - #481
  • Hono dependency pinned to exact version for build consistency - #494
  • UI refinements and number formatting improvements - #500
  • Add-on products no longer carry usage from main products - #502
  • Base price display component type handling fixed - #496
  • Invoice checkout cache invalidation fixed for null customer IDs - #490
  • One-off products properly handled during subscription upgrades - #489
  • Sandbox redirect logic restored for non-deployed organizations - #486
  • Dashboard checkout success URL fixed for production environments - #485
  • Transfer endpoint cache clearing URL pattern corrected - #482
  • Cache race condition in attach flow resolved with timestamp guards - #479
  • RevenueCat payment processor integration added and reverted - #497, #495, #435, #493
  • Added manual secret key override to Hono autumnHandler
  • Added checkoutSessionParams to PricingTable component from autumn-js/react
  • Added new_billing_subscription to the attach endpoint, allowing you to create a new Stripe subscription instead of combining with an existing one
December 24th 2025

RevenueCat integration

We just released a new integration with RevenueCat, to let you manage your mobile app subscriptions and billing with Autumn.This is especially helpful for users that have a mix of web and mobile users, and want to manage their billing in one place.
This is currently in beta, please reach out to us on Discord or email us at hey@useautumn.com to get access.

December 18th 2025

List and aggregate events endpoints

We just released two new endpoints to retrieve usage data that your customers have sent to Autumn.You can use this to display a billing event log, and a timeseries chart of usage data, so you can provide first-class billing observability out of the box!
December 16th 2025
You can now open a customer’s Stripe customer portal directly from the customer page. You can quickly preview this and send to customers that want to manage their payment methods or see past invoices.
Stripe customer portal

December 10th 2025

Usage columns in your customer list

Preview a customer’s current credit balances straight from the customer list. Now you can see who’s worth peeking into!
Usage columns
December 5th 2025

Autumn is live in us-east

Autumn is live on US-East! Previously all requests were hitting our us-west DB.Now, we’re reading and writing from multiple Redis caches, so both checking feature balances and tracking usage events are faster and more reliable.More regions coming soon!
US-East region
December 1st 2025

Dark mode

Dark mode is here. No need to say more. We know you guys are all night owls.We also shipped an entirely new design for the plan editor and customer pages, to make managing your plans and customers easier.
Dark mode