Get payment transaction
Changed on<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>
Returns one payment in full, read live from its payment provider.
Get the required transaction_id from List payment transactions. Send the row's timestamp too when you have it, and send action=refund for a refund row, since Wix tracks a refund under its own ID.
<Warning>The response includes the customer's personal details, such as the cardholder name, masked card number, and billing email and phone. Only a user with write access to the app can read it, and only with a personal access token set to Full access.</Warning>
Stripe resolves a Checkout Session, invoice, or dispute ID to the charge behind it, so transaction_id in the response can differ from the one you sent. Keep using the ID from the transactions list, since that's the one checked against the app.
<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/{transaction_id}
- Auth: HTTP bearer
Path parameters
ID of the Base44 app.
ID of the transaction, taken from transaction_id on a row from List payment transactions.
Query parameters
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.
The row's own timestamp from List payment transactions, which makes the lookup faster. Leave it out rather than guess, since a wrong value can make the transaction look like it isn't the app's.
The row's own action from the transactions list. Either payment or refund. Send refund for a refund row so the payment it refunded is returned. Defaults to payment.
Response
The payment, in full.
Example response
{
"transaction_id": "ch_T7mK2p9Q4r6S8v",
"status": "partially_refunded",
"payment_type": "one_time",
"created_date": "2026-08-25T10:00:00Z",
"currency": "USD",
"amount": 2500,
"fee": 103,
"net": 2397,
"service_fee": 50,
"refunded_amount": 1000,
"refunds": [
{
"amount": 1000,
"created_date": "2026-08-26T09:15:00Z",
"id": "re_T7mK2p9Q4r6S8v",
"status": "succeeded"
}
],
"method_kind": "card",
"card_network": "visa",
"card_masked": "4242",
"card_holder": "Jane Doe",
"provider_id": "stripe",
"merchant_account_id": "4f1c2a7e-9b3d-4e8f-a6c5-2d7e9f0b1a3c",
"display_order_id": "10042",
"items": [
{
"amount": 2500,
"name": "Oak side table",
"quantity": 1
}
],
"billing": {
"name": "Jane Doe",
"address": "500 Terry Francine St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94158",
"country_code": "US",
"email": "jane@example.com",
"phone": "+14155550123"
},
"shipping": {
"name": "Jane Doe",
"address": "500 Terry Francine St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94158",
"country_code": "US",
"email": "jane@example.com",
"phone": "+14155550123"
},
"disputes": [],
"history": [
{
"date": "2026-08-26T09:15:00Z",
"kind": "refund",
"lines": [
{
"amount": 1000,
"label": "refunded_amount"
}
],
"status": "succeeded"
},
{
"date": "2026-08-25T10:00:00Z",
"kind": "payment",
"lines": [
{
"amount": 2500,
"label": "amount"
},
{
"amount": -103,
"label": "processing_fee"
},
{
"amount": 2397,
"label": "net"
}
],
"status": "succeeded"
}
],
"decline_reason": "Your card has insufficient funds."
}Changes
- breaking
the
queryrequest parameteractionwas restricted to a list of enum values - breaking
queryrequest parameteractionlist-of-types was narrowed by removing typesnull - breaking
queryrequest parametertimestamplist-of-types was narrowed by removing typesnull - info
added the new enum value
paymentto thequeryrequest parameteraction - info
added the new enum value
refundto thequeryrequest parameteraction - info
for the
queryrequest parameteraction, the type was generalized from no type tostring - info
for the
queryrequest parametertimestamp, the type was generalized from no type tostring, and format from no format todate-time
- breaking
- info
the endpoint scheme security
PersonalAccessTokenAuthwas added to the API
- info