Agent Skill
2/7/2026

autumn-best-practices

Skill for integrating Autumn - the billing and entitlements layer over Stripe.

U
usenotra
62GitHub Stars
1Views
npx skills add usenotra/notra

SKILL.md

Nameautumn-best-practices
DescriptionSkill for integrating Autumn - the billing and entitlements layer over Stripe.

name: autumn-best-practices description: Skill for integrating Autumn - the billing and entitlements layer over Stripe.

Autumn Integration Guide

Always consult docs.useautumn.com for code examples and latest API.

Autumn is a TypeScript-first billing SDK supporting subscriptions, usage-based pricing, credits, trials, and more via Stripe.


Quick Reference

Environment Variables

Installation

npm install autumn-js    # Node.js
pip install autumn-py    # Python

Core Methods

MethodPurpose
customers.createCreate or get customer (idempotent)
checkoutGet Stripe URL or payment preview
attachConfirm purchase (card on file)
cancelCancel subscription
checkVerify feature access
trackRecord usage
products.listGet products with billing scenarios

Core Config Options

OptionNotes
secretKeyRequired. From env AUTUMN_SECRET_KEY
baseURLOptional. Defaults to https://api.useautumn.com

Billing Patterns

Check → Work → Track

Always follow this order for protected actions:

const { data } = await autumn.check({ customer_id, feature_id: "api_calls" });
if (!data.allowed) return { error: "Limit reached" };

const result = await doWork();

await autumn.track({ customer_id, feature_id: "api_calls", value: 1 });
return result;

Two-Step Checkout

const { data } = await autumn.checkout({ customer_id, product_id: "pro" });

if (data.url) return redirect(data.url);  // New customer → Stripe

// Returning customer → show confirmation, then:
await autumn.attach({ customer_id, product_id: "pro" });

Product Scenarios

Use products.list to get scenarios. Don't build custom logic.

ScenarioMeaning
newNot subscribed
activeCurrently on plan
scheduledScheduled for future
upgradeHigher tier available
downgradeLower tier available
renewCancelled, can reactivate

Feature Types

TypeBehavior
booleanAccess granted or denied
meteredUsage tracked against limit
credit_systemPool for multiple features

React Hooks

HookPurpose
useCustomerGet customer, checkout, attach, check
usePricingTableGet products with scenarios
import { AutumnProvider } from "autumn-js/react";

<AutumnProvider>{children}</AutumnProvider>

Handler Imports

FrameworkImport
Next.jsautumn-js/next
React Routerautumn-js/react-router
Honoautumn-js/hono
Expressautumn-js/express
Fastifyautumn-js/fastify
Genericautumn-js/backend

Common Gotchas

  1. URL field - Checkout URL is data.url, not data.checkout_url
  2. Frontend checks - For UX only. Always enforce on backend
  3. Track after success - Only track usage after work completes
  4. Credit systems - Track metered features, not the credit system itself
  5. Cancel via free plan - Prefer attach({ product_id: "free" }) over cancel()
  6. Idempotent creation - customers.create returns existing customer if ID exists

Resources

Skills Info
Original Name:autumn-best-practicesAuthor:usenotra