curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/payments/stripe/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/payments/stripe/status"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/payments/stripe/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/payments/stripe/status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/payments/stripe/status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/{app_id}/payments/stripe/status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/payments/stripe/status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"app_id": "6820f3a4e7b91d003c45a1f2",
"stripe_mode": "sandbox",
"sandbox_status": "unclaimed",
"sandbox_is_claimable": true,
"sandbox_claim_url": "https://dashboard.stripe.com/claim/example",
"sandbox_days_until_expiry": 30,
"sandbox_account_id": "acct_T7mK2p9Q4r6S8v",
"test_mode_configured": true,
"live_mode_configured": false,
"live_mode_method": "direct_keys",
"live_keys_configured": false,
"live_account_id": "acct_L8nP3q5R7s9T2v",
"has_tested_payment": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Get Stripe integration status
Reports how far Stripe setup has gone for the app, without returning any credentials.
It covers the sandbox’s status and claim state, and whether test or live credentials are stored.
If Stripe was never set up, every field but app_id comes back false or null.
Requires read access to the app.
curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/payments/stripe/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/payments/stripe/status"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/payments/stripe/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/payments/stripe/status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/payments/stripe/status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/{app_id}/payments/stripe/status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/payments/stripe/status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"app_id": "6820f3a4e7b91d003c45a1f2",
"stripe_mode": "sandbox",
"sandbox_status": "unclaimed",
"sandbox_is_claimable": true,
"sandbox_claim_url": "https://dashboard.stripe.com/claim/example",
"sandbox_days_until_expiry": 30,
"sandbox_account_id": "acct_T7mK2p9Q4r6S8v",
"test_mode_configured": true,
"live_mode_configured": false,
"live_mode_method": "direct_keys",
"live_keys_configured": false,
"live_account_id": "acct_L8nP3q5R7s9T2v",
"has_tested_payment": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Personal access token, sent as Authorization: Bearer <token>. Each operation lists the permission it needs: read_only or full_access. A full-access token can call every operation. A read-only token can call only the operations that list read_only; anything else returns 403 read_only_credential_route_not_allowed.
Path Parameters
ID of the Base44 app.
Query Parameters
Whether to look for any checkout session in sandbox mode. Defaults to false.
Response
Successful Response
Comprehensive Stripe integration status response.
ID of the Base44 app.
"6820f3a4e7b91d003c45a1f2"
Mode inferred from available credentials and sandbox state. Either sandbox or live, or null when neither is available. Defaults to null.
"sandbox"
Stored sandbox status. Either unclaimed, claimed, or expired, or null without a sandbox. Defaults to null.
"unclaimed"
Whether the sandbox is unclaimed, has not expired, has a stored claim link, and the app's workspace allows payment management. Defaults to false.
true
Stored claim link, or null when the sandbox is not claimable, you are a workspace viewer, or the app's workspace restricts payment management. Treat this link as a credential. Defaults to null.
"https://dashboard.stripe.com/claim/example"
Whole days until sandbox expiration, or null for a claimed sandbox or when no expiration is stored. Defaults to null.
30
Stripe sandbox account ID, or null without a sandbox. Defaults to null.
"acct_T7mK2p9Q4r6S8v"
Whether test credentials are available. Defaults to false.
true
Whether live credentials or a connected live account are available. This alone does not mean the app has switched to live keys. Defaults to false.
false
Available live authentication method. Either direct_keys or platform_auth, or null when neither is available. Direct keys take precedence. Defaults to null.
"direct_keys"
Whether live key setup finished completely, including the redeploy that picks up the new keys. A partial failure leaves this false even after keys are stored. Defaults to false.
false
Connected live Stripe account ID, or null before activation. Defaults to null.
"acct_L8nP3q5R7s9T2v"
Whether Stripe reports any checkout session when requested in sandbox mode. A failed lookup also reports false, and a session does not prove payment. Otherwise null. Defaults to null.
false
Was this page helpful?