Billing

Recurring revenue, billed exactly right.

Subscriptions, seats and usage-based pricing with trials, proration and retries built in. Change your pricing without changing your code.

Change the pricing, watch the invoice.

Switch between flat plans, seats and usage to see how the next invoice is built, including proration for mid-cycle changes.

  • Flat, seat and usage pricing
  • Trials, renewals and retries
  • Prorated invoices
Seats at renewal8
Added mid-cycle3

Next invoice

Renews Oct 1

  • Team plan × 8 seats$12.00 per seat$96.00
  • 3 seats added Sep 16Prorated for 15 of 30 days$18.00
Total before tax$114.00

Tax is added for each customer's location at checkout.

Subscription lifecycle

One subscription over a year

Follow one customer through a year. Trials, upgrades, failed payments, pauses and cancellations each produce the right invoice and a webhook your app can act on.

What happened

Trialing

Trial started

Maria signs up for Pro with a 14-day trial. Her card is saved but not charged.

Invoice

No invoice for this event

Webhook

POST /webhooks/pandabase
{
  "type": "subscription.created",
  "data": {
    "status": "trialing",
    "plan": "pro_monthly",
    "trial_end": "2026-09-15"
  }
}

Prorations use the days left in the billing period.

Customer portal

A billing portal for your customers

A hosted portal for plan changes, cards, invoices and cancellations. Link to it from your app with one API call.

  • Plan changes with prorationCustomers upgrade or downgrade and see exactly what they'll pay today.
  • Offers before they cancelShow a discount or a pause based on why they want to leave.
  • Your brand, your domainUse your logo and colors, and serve it from your own subdomain.
billing.orbitnote.com

Current plan: Pro · $49.00/month

Days left this period
12
Due today
$60.00

Developers

The Billing API

Subscriptions, usage and the customer portal in a few calls, with SDKs for Node.js, Python and Go.

  • Trials with or without a card
  • Monthly, yearly or custom intervals
  • Proration on every plan change
Explore the docs
import Pandabase from "@pandabase/node";const pandabase = new Pandabase(process.env.PANDABASE_SECRET_KEY);const subscription = await pandabase.subscriptions.create({  customer: "cus_M42x",  items: [{ price: "price_pro_monthly" }],  trial_period_days: 14,  metadata: { workspace: "ws_orbitnote" },});console.log(subscription.status); // "trialing"

Start a subscription

Create a subscription with a trial. Pandabase charges the saved payment method when the trial ends and on every renewal.

FAQ

Frequently asked questions

Answers about subscriptions, proration and the customer portal. Ask us anything else.

  • Flat plans, per-seat pricing, usage-based pricing with included amounts and tiers, or a mix, like a platform fee plus usage. Plans can renew monthly, yearly or on a custom interval, with or without a trial.