Skip to main content
The Apps API is in beta. Its endpoints and responses may change.
These endpoints cover the app’s payment setup: connecting and configuring Stripe or Wix Payments, managing a Stripe product and price catalog, reading payment analytics, and recognizing the webhook traffic the providers send back to Base44.

Prerequisites

  • A personal API key. See Authentication to get one.
  • An app you can edit. Most operations here require write access, not just read access.

App ID

Endpoints that act on a specific app include the app’s ID in the URL path as app_id. To get your app ID:
  1. Go to app.base44.com.
  2. Open your app in the app editor.
  3. Copy the app ID from the editor URL: "https://app.base44.com/apps/<app_id>/editor".

Two independent providers

An app connects to Stripe, Wix Payments, or the legacy Payments by Wix integration. These are separate setups with separate credentials, so connecting one does not affect the others, and the analytics and dashboard-link endpoints take a provider-specific path rather than a shared one.
Payments by Wix is a legacy integration. It supports existing connections only, and new installations are not supported.

Stripe: sandbox first, then live

A Stripe integration starts in a test sandbox and moves to live mode only when you configure or provision live keys.
  1. Install Stripe integration sets up the sandbox and stores test credentials. It reuses an existing usable installation rather than creating a duplicate.
  2. Get Stripe onboarding link returns a link to claim the sandbox or resume unfinished activation, refreshing onboarding state as it does.
  3. Switch to live mode with either Configure live Stripe keys, which stores keys you already have from Stripe, or Provision live Stripe keys, which creates them after Stripe activation. Provisioning is limited to 5 requests per user per 60 seconds.
  4. Get Stripe integration status reports the current mode and setup state without returning any API keys.
Onboarding and claim links are one-time credentials. Treat a link returned by these endpoints the same way you’d treat a password.
Remove Stripe integration deletes the sandbox record and stored secrets and clears the app’s Stripe mode. It does not delete the Stripe account or catalog, revoke credentials at Stripe, or redeploy functions that already deployed with the old credentials.

The Stripe catalog

The product and price endpoints read and write the catalog of whichever Stripe account the app’s stored credentials select. Live keys reach the live catalog, and test keys reach the test catalog, so two apps sharing one Stripe account share its catalog too. List Stripe products and List Stripe prices each return a single batch of up to 100 records, with no cursor to retrieve the rest. There’s no way to page through a catalog larger than the batch you request. Updates only touch the fields you send. Update Stripe product and Update Stripe price leave omitted or null fields unchanged, and an empty update body leaves the record as it was. A price’s amount, currency, and recurring schedule can’t be changed after creation. Creating a product or price is not idempotent: retrying a create request can leave you with a duplicate.

Inbound payment webhooks

Base44 registers the webhook endpoints under Webhooks with the payment provider for you, and the provider is the only caller. You can’t invoke them for your own app or repoint them. They’re documented so you can recognize the traffic and read the acknowledgements they return.
Every webhook responds with the same acknowledgement shape: a status of processed, acknowledged, ignored, or (Stripe only) logged, plus an optional reason or action explaining it. These endpoints authenticate the provider’s signature instead of a Base44 API key, so they carry no api_key requirement. A verified event that fails processing returns an error so the provider retries it. An event Base44 can’t attribute to an app, such as one missing the app ID it expects back, is acknowledged as ignored rather than failed.

Payment analytics

Get payment analytics is the revenue summary: totals and a daily breakdown, both filterable by currency and window (7, 30, or 90 days, or an explicit start_date/end_date pair sent together). Every money field is in the currency’s smallest unit, so 2500 in USD is $25.00.
When a window mixes currencies, summary.currency comes back null and the totals are a sum across currencies. Filter to a single currency before treating a total as a real amount.
Get recent payment transactions and Get top payment customers return bounded results (up to 10 rows) with no cursor for more, and they include customer names and emails when Stripe enrichment succeeds. Both endpoints read from an analytics store that can lag behind the provider, so a payment that just happened may not show up immediately.

Rate limits

Provisioning live Stripe keys is limited to 5 requests per user per 60 seconds. See Rate limits for the base limit that applies to every other operation here.