Backed by

Combinator

We made Stripe easy for AI

Stripe subscriptions, usage tracking, and paywalls in 3 functions, 0 webhooks. Build pricing plans in 30 minutes and never touch it again.

autumn.config.ts

import { product, feature, pricedFeature } from "atmn";

export const pro = product({
  id: "pro",
  items: [
    feature({
      feature_id: "messages",
      included_usage: 10,
      interval: "month",
    }),
    pricedFeature({
      feature_id: "tools_use",
      price: 0.01,
      interval: "month",
    }),
  ],
});

Pro

10 messages per month

$0.01 per tools uses per month

Usage & Overage

Credits

Seat-based

Pay upfront

autumn.config.ts

import { product, feature, pricedFeature } from "atmn";

export const pro = product({
  id: "pro",
  items: [
    feature({
      feature_id: "messages",
      included_usage: 10,
      interval: "month",
    }),
    pricedFeature({
      feature_id: "tools_use",
      price: 0.01,
      interval: "month",
    }),
  ],
});

Pro

10 messages per month

$0.01 per tools uses per month

Usage & Overage

Credits

Seat-based

Pay upfront

How it works

How it works

A simple, 3 step payments experience for developers (and LLMs)

A simple, 3 step payments experience for developers (and LLMs)

1

Handle any payment with one function

2

Usage tracking, limits and billing

3

No webhooks required, just check for feature access

Stripe without Autumn

Stripe with Autumn

stripe.ts

// 1. Create checkout session
stripe.checkout.sessions.create({
  customer: "cus_1234567890",
  line_items: [
    {
      price: "price_1MotwRLkdIwHu7ixYcPLm5uZ",
      quantity: 1,
    },
  ],
  success_url: "https://useautumn.com",
  mode: "subscription",
});

// 2. Update subscription (upgrades)
const currentSub = await stripe.subscriptions.retrieve(subscriptionId)

const newSubItems = currentSub.items.map((item) => ({
  id: item.id,
  deleted: true,
}));

newSubItems.push({
  price: "price_1MotwRLkdIwHu7ixYcPLm5uZ", // new price
  quantity: 1,
})

await stripe.subscriptions.update(subscriptionId, { 
  items: newSubItems,
  proration_behavior: "create_prorations",
});

// 3. One time payments / add ons
stripe.invoices.create({
  customer: "cus_1234567890",
  items: [
    {
      price: "price_1MotwRLkdIwHu7ixYcPLm5uZ",
      quantity: 1,
    }
  ],
})

// 4. Schedule downgrade
stripe.subscriptionSchedules.create({
  customer: "cus_1234567890",
  start_date: endOfBillingPeriod,
  phases: [
    {
      items: [{
        price: "price_1MotwRLkdIwHu7ixYcPLm5uZ",
        quantity: 1,
      }],
      default_payment_method: paymentMethod?.id,
    },
  ],
})

Expand code

upgrade-button.tsx

const { checkout } = useAutumn();

<Button 
  onClick={async () => {
    await checkout({ productId: "pro" });
  }}
/>

Generate Stripe checkout URLs, or handle upgrades, downgrades, and one-time payments for add-ons or top-ups.

Stripe without Autumn

Stripe with Autumn

stripe.ts

// 1. Create checkout session
stripe.checkout.sessions.create({
  customer: "cus_1234567890",
  line_items: [
    {
      price: "price_1MotwRLkdIwHu7ixYcPLm5uZ",
      quantity: 1,
    },
  ],
  success_url: "https://useautumn.com",
  mode: "subscription",
});

// 2. Update subscription (upgrades)
const currentSub = await stripe.subscriptions.retrieve(subscriptionId)

const newSubItems = currentSub.items.map((item) => ({
  id: item.id,
  deleted: true,
}));

newSubItems.push({
  price: "price_1MotwRLkdIwHu7ixYcPLm5uZ", // new price
  quantity: 1,
})

await stripe.subscriptions.update(subscriptionId, { 
  items: newSubItems,
  proration_behavior: "create_prorations",
});

// 3. One time payments / add ons
stripe.invoices.create({
  customer: "cus_1234567890",
  items: [
    {
      price: "price_1MotwRLkdIwHu7ixYcPLm5uZ",
      quantity: 1,
    }
  ],
})

// 4. Schedule downgrade
stripe.subscriptionSchedules.create({
  customer: "cus_1234567890",
  start_date: endOfBillingPeriod,
  phases: [
    {
      items: [{
        price: "price_1MotwRLkdIwHu7ixYcPLm5uZ",
        quantity: 1,
      }],
      default_payment_method: paymentMethod?.id,
    },
  ],
})

Expand code

upgrade-button.tsx

const { checkout } = useAutumn();

<Button 
  onClick={async () => {
    await checkout({ productId: "pro" });
  }}
/>

Generate Stripe checkout URLs, or handle upgrades, downgrades, and one-time payments for add-ons or top-ups.

1

2

3

Handle any payment with one function

Everything you'll need

Everything you'll need

Autumn is packed with features out the box, and you can change pricing without touching code.

Autumn is packed with features out the box, and handles the complexity while you grow

UI Components

Drop in our react components, or customize our shadcn/ui variants

UI Components

Drop in our react components, or customize our shadcn/ui variants

Flexible pricing

Credits, usage-limits, tiers, prepaid, add-ons, seats, rollovers and more

Flexible pricing

Credits, usage-limits, tiers, prepaid, add-ons, seats, rollovers and more

Custom plans

Set custom pricing, features and usage limits for any customer

Custom plans

Set custom pricing, features and usage limits for any customer

Versions & Grandfathering

Version your products and migrate customers when you're ready

Versions & Grandfathering

Version your products and migrate customers when you're ready

Usage Analytics

Show usage analytics charts for users every billing cycle

Usage Analytics

Show usage analytics charts for users every billing cycle

Referral Programs

Give away discounts or free credits whenever users refer friends

Referral Programs

Give away discounts or free credits whenever users refer friends

Founders love Autumn

Founders love Autumn

Autumn lets you go back to building your core product faster, and never worry about billing again.

Daniel Edrisiar

Literally cannot imagine going without it. Thank you.

We had some pretty crazy usage-based limitations for different features, as well as a free trial, and had... 



Daniel Edrisiar

Literally cannot imagine going without it. Thank you.

We had some pretty crazy usage-based limitations for different features, as well as a free trial, and had... 



Ben Y

What migrating to Autumn does (scroll!)

Ben Y

What migrating to Autumn does (scroll!)

Nizzy

Amazing product. Amazing founders.

Nizzy

Amazing product. Amazing founders.

Benny Kok

Autumn fixed stripe. Trust me. Save you at least a week and potentially months of Stripe integration time. I wish we could have discovered Autumn earlier.

Benny Kok

Autumn fixed stripe. Trust me. Save you at least a week and potentially months of Stripe integration time. I wish we could have discovered Autumn earlier.

Max Prilutskiy

Autumn is awesome. We've been happy customers since the very beginning - it was a no-brainer to be honest. The founders are in true founder mode.

Max Prilutskiy

Autumn is awesome. We've been happy customers since the very beginning - it was a no-brainer to be honest. The founders are in true founder mode.

Can Vardar

@autumnpricing is so good it ruined every other tool for me. nothing else even feels right anymore

Can Vardar

@autumnpricing is so good it ruined every other tool for me. nothing else even feels right anymore

Start for Free

Start for Free

Autumn enables complex pricing but ours is simple. Free, or a flat fee. No additional transaction fees*.

Autumn enables complex pricing but ours is simple. Free, or a flat fee. No additional transaction fees*.

Builder

Free

Free until $8K Monthly Revenue

Up to $8K processed monthly

10 products

Discord support

Startup

$375

$8K-50K Monthly Revenue

Up to $50K processed monthly

Unlimited products

Slack support

Growth

Custom

$50K+ MRR

Over $50K MRR processed

Unlimited products

Slack support

*Autumn is built on top of Stripe Billing (for now), so their fees (~0.7%) still apply.

*Autumn is built on top of Stripe Billing (for now), so their fees (~0.7%) still apply.

San Francisco & London