Export payment transactions
Changed on<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>
Downloads the app's payments, refunds, and lost disputes for one payment provider as a CSV file, newest first.
The file starts with a header row, then has one row per transaction with these columns:
- Date: The transaction time in UTC as the analytics store records it, for example 2026-08-25 10:00:00
- Customer: The customer's name or email, or the provider's customer ID when neither can be resolved
- Transaction ID: The provider's ID for the transaction
- Status: Either succeeded, refunded, or failed
- Amount: In the currency's major unit, so 25.00 rather than 2500
- Currency: An uppercase three-letter ISO 4217 code
Cells are quoted, and cells a spreadsheet would read as a formula start with '.
The file covers the app's whole history unless you pass period or both start_date and end_date. It stops at 10,000 rows without saying so in the file, so narrow the window when a download reaches that size.
Customer names are looked up from the provider within a 20-second budget for the whole file, so a large export can leave some Customer cells with only an ID, or empty.
The file includes one mode per provider:
- Stripe: Live when the app's stored key is a live key, test otherwise.
- Wix Payments: Live, unless test-mode reporting is enabled for your account. Then it follows the app's Wix Payments test-mode setting.
Results come from an analytics store and can lag behind the payment provider.
<Note>This endpoint accepts a personal access token belonging to a user with write access to the app. A read-only personal access token is refused, and so is a viewer.</Note>
Request
- Base URL: https://app.base44.com
- URL: https://app.base44.com/api/apps/{app_id}/payments/analytics/transactions/export
- Auth: HTTP bearer
Path parameters
ID of the Base44 app.
Query parameters
Start of the window as an ISO 8601 timestamp. Send it with end_date, because a date sent on its own is ignored.
End of the window as an ISO 8601 timestamp. Send it with start_date.
Window to use when you don't send both dates, counted back over whole UTC days including today. Either 7d, 30d, or 90d. Defaults to no window, which covers the app's whole history.
Comma-separated currency codes, for example usd,eur. Defaults to no currency filter.
Payment provider whose transactions to use. Either stripe or wix. stripe covers payments taken through the app's Stripe integration, and wix covers payments taken through Wix Payments (Base44 Payments). The provider has to be connected to the app.
Comma-separated statuses to include, from succeeded, refunded, and failed. For example, succeeded,refunded leaves out lost disputes. Defaults to every status.
Response
The CSV file, sent as an attachment named after the app and today's date.
Changes
- breaking
the
queryrequest parameterperiodwas restricted to a list of enum values - breaking
queryrequest parametercurrencieslist-of-types was narrowed by removing typesnull - breaking
queryrequest parameterend_datelist-of-types was narrowed by removing typesnull - breaking
queryrequest parameterperiodlist-of-types was narrowed by removing typesnull - breaking
queryrequest parameterstart_datelist-of-types was narrowed by removing typesnull - breaking
queryrequest parameterstatuslist-of-types was narrowed by removing typesnull - info
added the new enum value
30dto thequeryrequest parameterperiod - info
added the new enum value
7dto thequeryrequest parameterperiod - info
added the new enum value
90dto thequeryrequest parameterperiod - info
for the
queryrequest parametercurrencies, the type was generalized from no type tostring - info
for the
queryrequest parameterend_date, the type was generalized from no type tostring, and format from no format todate-time - info
for the
queryrequest parameterperiod, the type was generalized from no type tostring - info
for the
queryrequest parameterstart_date, the type was generalized from no type tostring, and format from no format todate-time - info
for the
queryrequest parameterstatus, the type was generalized from no type tostring
- breaking
- info
the endpoint scheme security
PersonalAccessTokenAuthwas added to the API
- info