curl --request POST \
--url https://app.base44.com/api/payment-webhooks/stripeimport requests
url = "https://app.base44.com/api/payment-webhooks/stripe"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://app.base44.com/api/payment-webhooks/stripe', 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/payment-webhooks/stripe",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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/payment-webhooks/stripe"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.base44.com/api/payment-webhooks/stripe")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/payment-webhooks/stripe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"status": "processed",
"reason": "unknown_event_type",
"action": "payment_tracked"
}Receive Stripe sandbox event
Receives Stripe events for apps connected to a Stripe sandbox, and for the sandbox lifecycle itself.
Base44 verifies the Stripe-Signature header against its sandbox signing secret before reading the body, and rejects the request when the header is missing or the signature doesn’t match. Live-mode events go to Receive Stripe live event, which verifies against a separate secret.
Verified events update the app’s Stripe sandbox state and record revenue for payment analytics. Checkout sessions, payment intents, invoices and charges are tracked or acknowledged, and any other event type comes back as ignored. A verified event Base44 can’t process returns an error instead of an acknowledgement, and Stripe retries the delivery, so the acknowledgement is what tells you the event landed.
curl --request POST \
--url https://app.base44.com/api/payment-webhooks/stripeimport requests
url = "https://app.base44.com/api/payment-webhooks/stripe"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://app.base44.com/api/payment-webhooks/stripe', 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/payment-webhooks/stripe",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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/payment-webhooks/stripe"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.base44.com/api/payment-webhooks/stripe")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/payment-webhooks/stripe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"status": "processed",
"reason": "unknown_event_type",
"action": "payment_tracked"
}Headers
Required on every request. Stripe's signature over the raw request body. A request that omits it is rejected with a 400, as is one whose signature doesn't verify.
Response
How Base44 handled the event.
What Base44 did with an inbound payment webhook event.
How Base44 handled the event. processed means it updated app state or recorded revenue, acknowledged means the event was valid but needed no action, and ignored means it was skipped. The Stripe endpoints also return logged, for an event recorded for reporting only.
"processed"
Why the event needed no action. Present when status is ignored, and on the acknowledged responses that skip an event, such as a transaction that was already approved or one for a zero amount.
"unknown_event_type"
What Base44 recorded. Present on most processed responses.
"payment_tracked"
Was this page helpful?