Subscription upgrade and downgrade methods
Billing
One-time purchases are optional single purchases on a subscription plan. For example, AI credit packs, storage top-ups, or feature unlocks. You configure them on the plan under One-time charges. Customers buy them after they subscribe, or you assign them from the admin.
Each one-time purchase on a plan can be:
| Setting | Options |
|---|---|
| Usage | Unmetered (access only) or Metered (track consumption against purchased units) |
| Pricing | Flat (fixed price per purchase) or Package (price per set number of units) |
| Expiry | Never expires or Expires with the billing cycle |
On the plan details page, purchased items show units granted, amount paid, expiry, and current usage for metered purchases.
Authorized customers can buy one-time purchases from the portal Plan page.
Enable the self-serve portal and plan management. See Self-serve portal for users or Self-serve portal for organizations.
For B2B organization billing, ensure the organization member has a role with the org:write:billing system permission (for B2C users, billing write access is granted automatically).
The customer opens the portal and goes to Plan.
In One-time purchases, they select Purchase or Buy more.
For package-priced purchases, they choose how many packages to buy, then confirm payment.
If no payment method is on file, the customer is prompted to add one before checkout completes.
You can grant a one-time purchase without the customer going through the portal:
Open the user or organization and select Billing.
In the One-time purchases section, select Assign or Assign more.
For package-priced purchases, enter the number of packages.
Choose:
You need permission to create billing agreements.
When a one-time purchase is metered, purchased or assigned units set the allowance. You can record consumption via the Management API after the first purchase or admin assignment (paid or complimentary) completes.
See Add metered usage for a customer via API.
One-time purchases belong to the current billing agreement.
| Event | What happens |
|---|---|
| Customer changes plan | Active one-time purchases on the old agreement are forfeited. Kinde lists them in the confirmation dialog. No refund is issued. |
| Customer cancels | The same forfeiture rules apply. The cancel dialog warns when active purchases exist. |
| Customer buys again on a new plan | Treated as a new purchase. Prior payment is not credited. |
See Subscription upgrade and downgrade methods and Cancel a subscription.
API reference for these endpoints is generated from the OpenAPI spec:
| Endpoint | Purpose |
|---|---|
GET /api/v1/billing/one_time_purchases | List current paid, non-expired purchases for a customer |
GET /api/v1/billing/meter_usage | Page usage records and read the grant snapshot |
POST /api/v1/billing/meter_usage | Record usage, including metered one-time purchases after the first purchase or assignment |
Enable the read:billing_one_time_purchases, read:meter_usage, and create:meter_usage scopes on your M2M application as needed.
You cannot delete a plan while customer one-time purchase records still reference a published plan version on that plan. Remove or migrate customers first.