curl --request GET \
--url https://api.tagada.io/api/public/v1/checkout/init \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tagada.io/api/public/v1/checkout/init"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tagada.io/api/public/v1/checkout/init', 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.tagada.io/api/public/v1/checkout/init",
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://api.tagada.io/api/public/v1/checkout/init"
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://api.tagada.io/api/public/v1/checkout/init")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tagada.io/api/public/v1/checkout/init")
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"HTTP 302 Redirect to: https://checkout.example.com/checkout/ch_abc123/op?token=cms_token_xyz"{
"message": "<string>",
"code": "<string>",
"issues": [
{
"message": "<string>"
}
]
}Initialize checkout session
Initialize a checkout session and automatically redirect to the checkout URL. This endpoint works exactly like the current CMS checkout-init page - you can navigate to it with query parameters and it will automatically redirect the browser to the checkout page.
Perfect for direct links, email links, or anywhere you want automatic redirection.
This endpoint is completely public and requires no authentication.
Additional Query Parameters: Any extra query parameters you add will be automatically forwarded to the checkout URL. This is useful for tracking parameters (utm_source, utm_campaign, etc.) or custom parameters.
Customer Prefill: You can prefill customer information to streamline checkout:
customerId: Link to existing customer accountcustomerEmail: Prefill customer emailcustomerFirstName: Prefill customer first namecustomerLastName: Prefill customer last namecustomerPhone: Prefill customer phone numbercustomerTags: Apply tags to customer (comma-separated or JSON array: “segment:vip,source:facebook”)
Checkout Token Forwarding: Include the checkout token in the final checkout URL:
includeCheckoutToken: Set to the desired query parameter name (default: “checkoutToken”)- Example:
includeCheckoutToken=checkoutTokenwill append?checkoutToken=ch_abc123to the checkout URL - Example:
includeCheckoutToken=tokenwill append?token=ch_abc123to the checkout URL
WooCommerce: if WooCommerce already owns the order, pass its order id as the reserved
metadata.wooOrderId key, spelled exactly like that. Tagada then updates that order after
payment instead of creating a second one, shows the merchant’s order number on the thank-you
page, and pushes failed back to it when the payment is declined. Without it, every payment
creates a duplicate WooCommerce order. No other spelling is recognized — woocommerceOrderId,
woo_order_id, wc_order_id and the like are ignored, and each one has cost a merchant a
duplicate order per payment.
Example usage:
GET /api/public/v1/checkout/init?storeId=store_123&items=[{"variantId":"var_123","quantity":1}]¤cy=USD
→ Redirects to: https://checkout.example.com/checkout/ch_abc123/op?token=cms_token_xyz
GET /api/public/v1/checkout/init?storeId=store_123&items=[...]¤cy=USD&utm_source=email&custom_param=value
→ Redirects to: https://checkout.example.com/checkout/ch_abc123/op?token=cms_token_xyz&utm_source=email&custom_param=value
GET /api/public/v1/checkout/init?storeId=store_123&items=[...]¤cy=USD&customerEmail=john@example.com&customerFirstName=John&customerLastName=Doe
→ Redirects to checkout with customer information prefilled
curl --request GET \
--url https://api.tagada.io/api/public/v1/checkout/init \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tagada.io/api/public/v1/checkout/init"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tagada.io/api/public/v1/checkout/init', 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.tagada.io/api/public/v1/checkout/init",
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://api.tagada.io/api/public/v1/checkout/init"
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://api.tagada.io/api/public/v1/checkout/init")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tagada.io/api/public/v1/checkout/init")
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"HTTP 302 Redirect to: https://checkout.example.com/checkout/ch_abc123/op?token=cms_token_xyz"{
"message": "<string>",
"code": "<string>",
"issues": [
{
"message": "<string>"
}
]
}Authorizations
Enter your API key as: Bearer your-api-key
Query Parameters
Response
Successful response
