POST /x402/settle - Execute and confirm payment
curl --request POST \
--url https://api.example.com/x402/settle \
--header 'Content-Type: application/json' \
--data '
{
"paymentHeader": "<string>",
"paymentRequirements": "<unknown>",
"x402Version": 1
}
'import requests
url = "https://api.example.com/x402/settle"
payload = {
"paymentHeader": "<string>",
"paymentRequirements": "<unknown>",
"x402Version": 1
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({paymentHeader: '<string>', paymentRequirements: '<unknown>', x402Version: 1})
};
fetch('https://api.example.com/x402/settle', 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://api.example.com/x402/settle",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'paymentHeader' => '<string>',
'paymentRequirements' => '<unknown>',
'x402Version' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/x402/settle"
payload := strings.NewReader("{\n \"paymentHeader\": \"<string>\",\n \"paymentRequirements\": \"<unknown>\",\n \"x402Version\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/x402/settle")
.header("Content-Type", "application/json")
.body("{\n \"paymentHeader\": \"<string>\",\n \"paymentRequirements\": \"<unknown>\",\n \"x402Version\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/x402/settle")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"paymentHeader\": \"<string>\",\n \"paymentRequirements\": \"<unknown>\",\n \"x402Version\": 1\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"error": "<string>",
"networkId": "<string>",
"txHash": "<string>"
}X402 Payment Protocol
POST /x402/settle - Execute and confirm payment
This endpoint verifies payment and waits for blockchain confirmation. For Celestia, the transaction is already broadcast by the user (via Keplr), so “settle” means verifying it exists and waiting for confirmation.
POST
/
x402
/
settle
POST /x402/settle - Execute and confirm payment
curl --request POST \
--url https://api.example.com/x402/settle \
--header 'Content-Type: application/json' \
--data '
{
"paymentHeader": "<string>",
"paymentRequirements": "<unknown>",
"x402Version": 1
}
'import requests
url = "https://api.example.com/x402/settle"
payload = {
"paymentHeader": "<string>",
"paymentRequirements": "<unknown>",
"x402Version": 1
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({paymentHeader: '<string>', paymentRequirements: '<unknown>', x402Version: 1})
};
fetch('https://api.example.com/x402/settle', 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://api.example.com/x402/settle",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'paymentHeader' => '<string>',
'paymentRequirements' => '<unknown>',
'x402Version' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/x402/settle"
payload := strings.NewReader("{\n \"paymentHeader\": \"<string>\",\n \"paymentRequirements\": \"<unknown>\",\n \"x402Version\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/x402/settle")
.header("Content-Type", "application/json")
.body("{\n \"paymentHeader\": \"<string>\",\n \"paymentRequirements\": \"<unknown>\",\n \"x402Version\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/x402/settle")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"paymentHeader\": \"<string>\",\n \"paymentRequirements\": \"<unknown>\",\n \"x402Version\": 1\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"error": "<string>",
"networkId": "<string>",
"txHash": "<string>"
}⌘I