---
title: "Create top-up checkout"
method: POST
path: "/api/billing/topup/create-checkout-session"
---

# Create top-up checkout

`POST /api/billing/topup/create-checkout-session`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/billing/topup/create-checkout-session`
- Auth: HTTP bearer

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Creates a Stripe Checkout page where the card owner reviews and pays for top-up credits for your workspace. Nothing is charged until they pay on that page.

Open `url` in a browser and let the card owner complete the payment. Stripe then returns them to the Base44 billing page, and the credits are added to the workspace shortly after the payment goes through. Get the amounts and prices from [List top-up packs](/api-reference/list-top-up-packs). Send at least one of `message_credits` (a multiple of 50, up to 400) or `integration_credits` (a multiple of 1,000, up to 8,000). Prices are in the workspace's billing currency, US dollars or Israeli shekels, and shekel prices have VAT added at checkout.

Only the workspace owner can buy top-ups, and the workspace needs a paid plan other than Enterprise that isn't past due. A workspace with an open payment dispute can't buy top-ups, and neither can one whose plan is paid through the App Store or Google Play. Checkout isn't available on a workspace billed through Wix. Where Base44 has turned on Wix top-ups, those workspaces buy with [Buy top-up with saved card](/api-reference/buy-top-up-with-saved-card) instead.

This endpoint is limited to 8 requests an hour per user, and requests it rejects count toward the limit. Some workspaces have a different limit. A read-only token is refused, and workspace API keys aren't accepted.

<Note>Top-ups are only available to accounts Base44 has enrolled in top-up credits. Other accounts get a 403.</Note>

## Request body

- CreateTopupCheckoutRequest: Request model for top-up credit purchase.
  - `message_credits` integer: Message credits to buy: a multiple of 50, up to 400. Defaults to 0.
  - `integration_credits` integer: Integration credits to buy: a multiple of 1,000, up to 8,000. Defaults to 0.

## Response `200`

The checkout page to send the card owner to.

- TopUpCheckoutSession
  - `session_id` string, required: ID of the Stripe Checkout session.
  - `url` string, required: Stripe Checkout page for this purchase. Open it in a browser so the card owner can review and pay.

## Other responses

- `400`: An amount isn't a multiple of its pack size, is negative or over the cap, or both are 0. Also returned when the workspace has no active paid plan (free, Enterprise, or past due), when its billing doesn't support top-ups, or when it's billed through Wix.
- `401`: Missing or invalid credentials.
- `403`: Your account isn't enrolled in top-up credits, you aren't the workspace owner, a payment dispute is open on the workspace, or your token is read-only.
- `422`: Validation Error
- `429`: Rate limit exceeded (8 requests an hour).

## Changes

> 66 revisions in range; 1 not diffed.

- **2026-10-26** `395a6758864a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/billing/topup/create-checkout-session/post.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) - [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) - [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/d877a932dc19?raw)
