curl --request POST \
--url https://app.base44.com/api/payment-webhooks/wix-merchant/{merchant_id}import requests
url = "https://app.base44.com/api/payment-webhooks/wix-merchant/{merchant_id}"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://app.base44.com/api/payment-webhooks/wix-merchant/{merchant_id}', 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/wix-merchant/{merchant_id}",
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/wix-merchant/{merchant_id}"
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/wix-merchant/{merchant_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/payment-webhooks/wix-merchant/{merchant_id}")
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 Wix merchant event
Receives order and subscription events for a partner merchant selling through Wix Payments.
Base44 registers one of these endpoints per merchant at provisioning time, so the merchant_id in the path identifies which merchant the event belongs to. Base44 verifies the body as an RS256-signed JWT against the public key stored for that merchant when the companion webhook registered, and rejects anything that doesn’t verify.
Verified events record order revenue and refunds for payment analytics, and apply subscription status changes. Base44 skips an order that was already approved or is for a zero amount, and skips a duplicate delivery of an event it has already recorded, acknowledging each without tracking it twice. An event type Base44 doesn’t handle comes back as ignored.
curl --request POST \
--url https://app.base44.com/api/payment-webhooks/wix-merchant/{merchant_id}import requests
url = "https://app.base44.com/api/payment-webhooks/wix-merchant/{merchant_id}"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://app.base44.com/api/payment-webhooks/wix-merchant/{merchant_id}', 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/wix-merchant/{merchant_id}",
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/wix-merchant/{merchant_id}"
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/wix-merchant/{merchant_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/payment-webhooks/wix-merchant/{merchant_id}")
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"
}Path Parameters
ID of the merchant the event belongs to. Base44 sets this when it registers the webhook with the provider.
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?