Validate an Order
curl --request GET \
--url https://public-api.stora.co/2025-09/orders/{order_id}/validate \
--header 'Authorization: Bearer <token>'import requests
url = "https://public-api.stora.co/2025-09/orders/{order_id}/validate"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://public-api.stora.co/2025-09/orders/{order_id}/validate', 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://public-api.stora.co/2025-09/orders/{order_id}/validate",
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://public-api.stora.co/2025-09/orders/{order_id}/validate"
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://public-api.stora.co/2025-09/orders/{order_id}/validate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.stora.co/2025-09/orders/{order_id}/validate")
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{
"order": {
"id": "order_942ae99a1fdc940e",
"billing_period": "monthly",
"contact": {
"id": "con_0ac0514ed0711462"
},
"contract_template": null,
"coupon": null,
"created_at": "2025-02-22T14:41:00Z",
"email_notifications": {
"booking_confirmation": true,
"move_in_day": true,
"payment_details": false
},
"line_items": [
{
"id": "olitm_1001cbd3d5fec937"
},
{
"id": "olitm_260799c6b6b1a274"
},
{
"id": "olitm_47eba7938308c71d"
},
{
"id": "olitm_b202613e81c9101e"
}
],
"metadata": {},
"one_time_total": {
"amount": 201998,
"currency": "GBP",
"formatted": "£2,019.98"
},
"one_time_total_excluding_tax": {
"amount": 201998,
"currency": "GBP",
"formatted": "£2,019.98"
},
"payment_method": "card",
"payment_url": null,
"purchase_order_number": null,
"site": {
"id": "site_14b419f1096013f1"
},
"source": "public_api",
"starts_at": "2025-02-23T14:41:00Z",
"status": "draft",
"subscription": null,
"subtotal": {
"amount": 11998,
"currency": "GBP",
"formatted": "£119.98"
},
"tax": {
"amount": 0,
"currency": "GBP",
"formatted": "£0.00"
},
"tenancy": null,
"total": {
"amount": 11998,
"currency": "GBP",
"formatted": "£119.98"
},
"total_discount": {
"amount": 0,
"currency": "GBP",
"formatted": "£0.00"
},
"total_excluding_tax": {
"amount": 11998,
"currency": "GBP",
"formatted": "£119.98"
},
"updated_at": "2025-02-22T14:41:00Z"
},
"meta": {
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"curies": [
{
"name": "bo",
"href": "https://app.stora.test{rel}",
"templated": true,
"title": "Backoffice"
},
{
"name": "sf",
"href": "https://acme.stora.test{rel}",
"templated": true,
"title": "Storefront"
}
]
}
}{
"error": {
"code": "invalid_content",
"details": [
{
"message": "Starts at can't be blank",
"pointer": "starts_at"
},
{
"message": "Billing period must exist",
"pointer": "billing_period"
},
{
"message": "Contact must exist",
"pointer": "contact"
},
{
"message": "Line items must include at least one unit type line item",
"pointer": "line_items"
}
],
"links": [
{
"kind": "open_api",
"name": "OpenAPI specification",
"url": "https://docs.stora.test/2025-09/openapi.json"
},
{
"kind": "documentation",
"name": "Errors",
"url": "https://docs.stora.test/2025-09/guides/errors"
}
],
"message": "The request body content is not valid.",
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"type": "invalid_request_error"
}
}Orders
Validate an Order
Validate an order to ensure it is ready to be finalized.
Required authorization scope: public.order:read
GET
/
2025-09
/
orders
/
{order_id}
/
validate
Validate an Order
curl --request GET \
--url https://public-api.stora.co/2025-09/orders/{order_id}/validate \
--header 'Authorization: Bearer <token>'import requests
url = "https://public-api.stora.co/2025-09/orders/{order_id}/validate"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://public-api.stora.co/2025-09/orders/{order_id}/validate', 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://public-api.stora.co/2025-09/orders/{order_id}/validate",
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://public-api.stora.co/2025-09/orders/{order_id}/validate"
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://public-api.stora.co/2025-09/orders/{order_id}/validate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.stora.co/2025-09/orders/{order_id}/validate")
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{
"order": {
"id": "order_942ae99a1fdc940e",
"billing_period": "monthly",
"contact": {
"id": "con_0ac0514ed0711462"
},
"contract_template": null,
"coupon": null,
"created_at": "2025-02-22T14:41:00Z",
"email_notifications": {
"booking_confirmation": true,
"move_in_day": true,
"payment_details": false
},
"line_items": [
{
"id": "olitm_1001cbd3d5fec937"
},
{
"id": "olitm_260799c6b6b1a274"
},
{
"id": "olitm_47eba7938308c71d"
},
{
"id": "olitm_b202613e81c9101e"
}
],
"metadata": {},
"one_time_total": {
"amount": 201998,
"currency": "GBP",
"formatted": "£2,019.98"
},
"one_time_total_excluding_tax": {
"amount": 201998,
"currency": "GBP",
"formatted": "£2,019.98"
},
"payment_method": "card",
"payment_url": null,
"purchase_order_number": null,
"site": {
"id": "site_14b419f1096013f1"
},
"source": "public_api",
"starts_at": "2025-02-23T14:41:00Z",
"status": "draft",
"subscription": null,
"subtotal": {
"amount": 11998,
"currency": "GBP",
"formatted": "£119.98"
},
"tax": {
"amount": 0,
"currency": "GBP",
"formatted": "£0.00"
},
"tenancy": null,
"total": {
"amount": 11998,
"currency": "GBP",
"formatted": "£119.98"
},
"total_discount": {
"amount": 0,
"currency": "GBP",
"formatted": "£0.00"
},
"total_excluding_tax": {
"amount": 11998,
"currency": "GBP",
"formatted": "£119.98"
},
"updated_at": "2025-02-22T14:41:00Z"
},
"meta": {
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"curies": [
{
"name": "bo",
"href": "https://app.stora.test{rel}",
"templated": true,
"title": "Backoffice"
},
{
"name": "sf",
"href": "https://acme.stora.test{rel}",
"templated": true,
"title": "Storefront"
}
]
}
}{
"error": {
"code": "invalid_content",
"details": [
{
"message": "Starts at can't be blank",
"pointer": "starts_at"
},
{
"message": "Billing period must exist",
"pointer": "billing_period"
},
{
"message": "Contact must exist",
"pointer": "contact"
},
{
"message": "Line items must include at least one unit type line item",
"pointer": "line_items"
}
],
"links": [
{
"kind": "open_api",
"name": "OpenAPI specification",
"url": "https://docs.stora.test/2025-09/openapi.json"
},
{
"kind": "documentation",
"name": "Errors",
"url": "https://docs.stora.test/2025-09/guides/errors"
}
],
"message": "The request body content is not valid.",
"request_id": "01563646-58c1-4607-8fe0-cae3e92c4477",
"type": "invalid_request_error"
}
}Authorizations
BearerOAuth2
Bearer Token necessary to use API
Path Parameters
The ID of the order to validate
Query Parameters
This endpoint supports expandable responses. For more, see the documentation page.
Was this page helpful?
⌘I