Skip to main content
Creem provides comprehensive tools for managing active subscriptions, including updating seat counts, changing billing information, upgrading/downgrading plans, and enabling self-service management for your customers.

Managing Subscription Changes

Update Billing Information

Customers can update their payment method through the Customer Portal:
  • Next.js
  • TypeScript SDK
  • Better Auth
  • REST API
import { CreemPortal } from "@creem_io/nextjs";

export function ManageBillingButton({ customerId }: { customerId: string }) {
  return (
    <CreemPortal customerId={customerId}>
      <button>Manage Billing</button>
    </CreemPortal>
  );
}

Customer Portal

Learn more about the Customer Portal and its features.

Subscription Upgrades & Downgrades

Programmatic Upgrades

Upgrade or downgrade a subscription to a different product using the subscription upgrade endpoint:
  • TypeScript SDK
  • REST API
import { createCreem } from "creem_io";

const creem = createCreem({
  apiKey: process.env.CREEM_API_KEY!,
  testMode: process.env.NODE_ENV !== "production",
});

// Upgrade subscription to a different product
const upgraded = await creem.subscriptions.upgrade({
  subscriptionId: "sub_YOUR_SUBSCRIPTION_ID",
  productId: "prod_PREMIUM_PLAN", // New product ID
  updateBehavior: "proration-charge-immediately",
});

console.log("Subscription upgraded:", upgraded);

Update Behavior Options

When upgrading or downgrading subscriptions, you can control how the change is processed:
BehaviorDescription
proration-charge-immediatelyCalculate prorated amount and charge immediately. Starts a new billing cycle from today.
proration-chargeCalculate prorated amount as credit and add to next invoice. Maintains original billing cycle.
proration-noneNo proration. Change takes effect on next billing cycle with no immediate charges.
Proration Example:If a customer upgrades from a $10/month plan to a $30/month plan halfway through their billing cycle:
  • proration-charge-immediately: Customer is charged ~$10 now (the difference for the remaining half of the month) and $30 on the next billing date.
  • proration-charge: Customer receives ~$5 credit (unused half of old plan) and pays ~$25 on next billing date ($30 - $5).
  • proration-none: Customer continues paying $10 until the next billing cycle, then pays $30.

API Reference - Upgrade Subscription

View the complete upgrade subscription endpoint documentation.

Updating Seat Count

For seat-based subscriptions, you can update the number of seats:
  • TypeScript SDK
  • REST API
import { createCreem } from "creem_io";

const creem = createCreem({
  apiKey: process.env.CREEM_API_KEY!,
  testMode: process.env.NODE_ENV !== "production",
});

// First, get the subscription to retrieve the item ID
const subscription = await creem.subscriptions.get({
  subscriptionId: "sub_YOUR_SUBSCRIPTION_ID",
});

const itemId = subscription.items[0].id;

// Update the seat count
const updated = await creem.subscriptions.update({
  subscriptionId: "sub_YOUR_SUBSCRIPTION_ID",
  items: [
    {
      id: itemId,
      units: 10, // New seat count
    },
  ],
  updateBehavior: "proration-charge-immediately",
});

Seat-Based Billing

Learn more about implementing seat-based pricing models.

Dashboard Management

You can also manage subscriptions directly through the Creem Dashboard:
  • View subscription details - See customer info, billing history, and status
  • Modify subscriptions - Change seat counts, update pricing
  • Pause subscriptions - Temporarily pause without canceling
  • Cancel subscriptions - End recurring billing
Simply navigate to a subscription and click “Modify Subscription” to make changes.

Next Steps