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/expressand mount withapp.use(). Requiresexpress.json()before the handler - Elysia / Web Standard: Import from
autumn-js/fetchand 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
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.getOrCreateduring signup or login before usingcheckortrack - 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
Theautumn-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:| Framework | Import path |
|---|---|
| Next.js | autumn-js/next |
| Hono | autumn-js/hono |
| Elysia / Web Standard | autumn-js/fetch |
| Express | autumn-js/express |
| Other | autumn-js/backend |
autumnHandler reference for full examples.Improvements
Improvements
- Express adapter for
autumnHandlerviaautumn-js/express- #979 - Web Standard adapter for
autumnHandlerviaautumn-js/fetch(Elysia, Cloudflare Workers, Deno) - #979 - Explicit customer creation required for
checkandtrackendpoints - #968 autumn-jsSDK promoted to1.0.0stable release - #968- New Express, Elysia, and Web Standard adapters for
autumnHandler- #985 - Improved API reference field descriptions for preview endpoints - #985
Bug fixes
Bug fixes
checkout_session_params.subscription_data(includingmetadata) 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 onbilling.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 forcarry_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
Feature flags in customer and entity responses
Boolean features are now returned as a dedicatedflags 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
flagsin 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
Improvements
Improvements
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
paymentUrlreturned bybilling.attachorbilling.update
How it works
How it works
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
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
Improvements
Improvements
- 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
Bug Fixes
Bug Fixes
- 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
API
API
- New
POST /billing.multi_attachandPOST /billing.preview_multi_attachfor batch plan attaches - #815 - New
POST /billing.setup_paymentfor 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_idfor 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

Improvements
Improvements
- Code cleanup and refactoring in Stripe billing plan evaluation system - #525
- Added
customerIdto 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
Bug Fixes
Bug Fixes
- 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_usagecalculation 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_versionfield from subscription API schema - #522 - Fixed duplicate features in plan editor when closing edit feature sheet - #508
API
API
- Added
entity_idparameter support to legacy balance update endpoint - #532 - Added
/configs/pushand/configs/nukeendpoints for managing organization configuration in sandbox environments - #521 - Implemented idempotency protection for billing endpoints using
idempotency-keyheader - #516 - Added new
POST /customers/listV2 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.
Improvements
Improvements
- 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
Bug Fixes
Bug Fixes
- 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
API
API
- RevenueCat payment processor integration added and reverted - #497, #495, #435, #493
- Added manual secret key override to Hono
autumnHandler - Added
checkoutSessionParamstoPricingTablecomponent fromautumn-js/react - Added
new_billing_subscriptionto theattachendpoint, 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.- RevenueCat integration: Documentation
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!- List Events: React hooks and API reference
- Aggregate Events: React hooks and API reference


December 16th 2025
Stripe customer portal link within the customer page
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.
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!
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!


