curl --request PATCH \
--url https://api.arcuserp.com/v1/orders/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"shipping_address_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"billing_address_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pricing_level_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payment_term_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sales_channel_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"notes": "<string>",
"customer_notes": "<string>",
"internal_notes": "<string>",
"requested_ship_date": "2023-12-25",
"expected_ship_date": "2023-12-25",
"ships_freight": true,
"freight_class_effective": "<string>",
"metadata": {},
"default_shipping_method": "<string>",
"is_historical_import": true,
"propagate_to_sent_pos": true
}
'import requests
url = "https://api.arcuserp.com/v1/orders/{id}"
payload = {
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"shipping_address_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"billing_address_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pricing_level_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payment_term_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sales_channel_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"notes": "<string>",
"customer_notes": "<string>",
"internal_notes": "<string>",
"requested_ship_date": "2023-12-25",
"expected_ship_date": "2023-12-25",
"ships_freight": True,
"freight_class_effective": "<string>",
"metadata": {},
"default_shipping_method": "<string>",
"is_historical_import": True,
"propagate_to_sent_pos": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
shipping_address_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
billing_address_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
pricing_level_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
payment_term_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
sales_channel_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
notes: '<string>',
customer_notes: '<string>',
internal_notes: '<string>',
requested_ship_date: '2023-12-25',
expected_ship_date: '2023-12-25',
ships_freight: true,
freight_class_effective: '<string>',
metadata: {},
default_shipping_method: '<string>',
is_historical_import: true,
propagate_to_sent_pos: true
})
};
fetch('https://api.arcuserp.com/v1/orders/{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://api.arcuserp.com/v1/orders/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'shipping_address_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'billing_address_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'pricing_level_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'payment_term_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'sales_channel_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'notes' => '<string>',
'customer_notes' => '<string>',
'internal_notes' => '<string>',
'requested_ship_date' => '2023-12-25',
'expected_ship_date' => '2023-12-25',
'ships_freight' => true,
'freight_class_effective' => '<string>',
'metadata' => [
],
'default_shipping_method' => '<string>',
'is_historical_import' => true,
'propagate_to_sent_pos' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.arcuserp.com/v1/orders/{id}"
payload := strings.NewReader("{\n \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"shipping_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"billing_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pricing_level_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payment_term_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sales_channel_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"notes\": \"<string>\",\n \"customer_notes\": \"<string>\",\n \"internal_notes\": \"<string>\",\n \"requested_ship_date\": \"2023-12-25\",\n \"expected_ship_date\": \"2023-12-25\",\n \"ships_freight\": true,\n \"freight_class_effective\": \"<string>\",\n \"metadata\": {},\n \"default_shipping_method\": \"<string>\",\n \"is_historical_import\": true,\n \"propagate_to_sent_pos\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://api.arcuserp.com/v1/orders/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"shipping_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"billing_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pricing_level_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payment_term_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sales_channel_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"notes\": \"<string>\",\n \"customer_notes\": \"<string>\",\n \"internal_notes\": \"<string>\",\n \"requested_ship_date\": \"2023-12-25\",\n \"expected_ship_date\": \"2023-12-25\",\n \"ships_freight\": true,\n \"freight_class_effective\": \"<string>\",\n \"metadata\": {},\n \"default_shipping_method\": \"<string>\",\n \"is_historical_import\": true,\n \"propagate_to_sent_pos\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/orders/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"shipping_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"billing_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pricing_level_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payment_term_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sales_channel_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"notes\": \"<string>\",\n \"customer_notes\": \"<string>\",\n \"internal_notes\": \"<string>\",\n \"requested_ship_date\": \"2023-12-25\",\n \"expected_ship_date\": \"2023-12-25\",\n \"ships_freight\": true,\n \"freight_class_effective\": \"<string>\",\n \"metadata\": {},\n \"default_shipping_method\": \"<string>\",\n \"is_historical_import\": true,\n \"propagate_to_sent_pos\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"object": "order",
"entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_number": "<string>",
"document_type": "quote",
"order_status": "draft",
"payment_status": "unpaid",
"fulfillment_status": "unfulfilled",
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"po_number": "<string>",
"order_date": "2023-11-07T05:31:56Z",
"due_date": "2023-11-07T05:31:56Z",
"subtotal": 123,
"discount_total": 123,
"shipping_total": 123,
"tax_total": 123,
"fee_total": 123,
"order_total": 123,
"list_price_total": 123,
"pricing_savings": 123,
"amount_paid": 123,
"balance_due": 123,
"amount_due": 123,
"tax_exempt": true,
"delivery_option": "ship",
"notes": "<string>",
"internal_notes": "<string>",
"invoice_number": "<string>",
"invoice_type": "order",
"is_on_hold": true,
"hold_type": "<string>",
"ship_complete": true,
"source_platform": "<string>",
"external_order_id": "<string>",
"external_order_number": "<string>",
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Update an order
Updates a fixed set of order fields such as addresses, notes, payment terms, and shipping method; totals, status, and entity_id are read-only and return 400 if included. Changing the shipping address on an order with drop-ship purchase orders already sent to the vendor requires an explicit override to propagate the change to those orders.
curl --request PATCH \
--url https://api.arcuserp.com/v1/orders/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"shipping_address_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"billing_address_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pricing_level_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payment_term_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sales_channel_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"notes": "<string>",
"customer_notes": "<string>",
"internal_notes": "<string>",
"requested_ship_date": "2023-12-25",
"expected_ship_date": "2023-12-25",
"ships_freight": true,
"freight_class_effective": "<string>",
"metadata": {},
"default_shipping_method": "<string>",
"is_historical_import": true,
"propagate_to_sent_pos": true
}
'import requests
url = "https://api.arcuserp.com/v1/orders/{id}"
payload = {
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"shipping_address_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"billing_address_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pricing_level_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payment_term_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sales_channel_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"notes": "<string>",
"customer_notes": "<string>",
"internal_notes": "<string>",
"requested_ship_date": "2023-12-25",
"expected_ship_date": "2023-12-25",
"ships_freight": True,
"freight_class_effective": "<string>",
"metadata": {},
"default_shipping_method": "<string>",
"is_historical_import": True,
"propagate_to_sent_pos": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
shipping_address_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
billing_address_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
pricing_level_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
payment_term_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
sales_channel_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
notes: '<string>',
customer_notes: '<string>',
internal_notes: '<string>',
requested_ship_date: '2023-12-25',
expected_ship_date: '2023-12-25',
ships_freight: true,
freight_class_effective: '<string>',
metadata: {},
default_shipping_method: '<string>',
is_historical_import: true,
propagate_to_sent_pos: true
})
};
fetch('https://api.arcuserp.com/v1/orders/{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://api.arcuserp.com/v1/orders/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'shipping_address_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'billing_address_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'pricing_level_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'payment_term_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'sales_channel_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'notes' => '<string>',
'customer_notes' => '<string>',
'internal_notes' => '<string>',
'requested_ship_date' => '2023-12-25',
'expected_ship_date' => '2023-12-25',
'ships_freight' => true,
'freight_class_effective' => '<string>',
'metadata' => [
],
'default_shipping_method' => '<string>',
'is_historical_import' => true,
'propagate_to_sent_pos' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.arcuserp.com/v1/orders/{id}"
payload := strings.NewReader("{\n \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"shipping_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"billing_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pricing_level_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payment_term_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sales_channel_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"notes\": \"<string>\",\n \"customer_notes\": \"<string>\",\n \"internal_notes\": \"<string>\",\n \"requested_ship_date\": \"2023-12-25\",\n \"expected_ship_date\": \"2023-12-25\",\n \"ships_freight\": true,\n \"freight_class_effective\": \"<string>\",\n \"metadata\": {},\n \"default_shipping_method\": \"<string>\",\n \"is_historical_import\": true,\n \"propagate_to_sent_pos\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://api.arcuserp.com/v1/orders/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"shipping_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"billing_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pricing_level_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payment_term_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sales_channel_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"notes\": \"<string>\",\n \"customer_notes\": \"<string>\",\n \"internal_notes\": \"<string>\",\n \"requested_ship_date\": \"2023-12-25\",\n \"expected_ship_date\": \"2023-12-25\",\n \"ships_freight\": true,\n \"freight_class_effective\": \"<string>\",\n \"metadata\": {},\n \"default_shipping_method\": \"<string>\",\n \"is_historical_import\": true,\n \"propagate_to_sent_pos\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/orders/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"shipping_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"billing_address_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"pricing_level_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payment_term_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"sales_channel_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"notes\": \"<string>\",\n \"customer_notes\": \"<string>\",\n \"internal_notes\": \"<string>\",\n \"requested_ship_date\": \"2023-12-25\",\n \"expected_ship_date\": \"2023-12-25\",\n \"ships_freight\": true,\n \"freight_class_effective\": \"<string>\",\n \"metadata\": {},\n \"default_shipping_method\": \"<string>\",\n \"is_historical_import\": true,\n \"propagate_to_sent_pos\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"object": "order",
"entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_number": "<string>",
"document_type": "quote",
"order_status": "draft",
"payment_status": "unpaid",
"fulfillment_status": "unfulfilled",
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"po_number": "<string>",
"order_date": "2023-11-07T05:31:56Z",
"due_date": "2023-11-07T05:31:56Z",
"subtotal": 123,
"discount_total": 123,
"shipping_total": 123,
"tax_total": 123,
"fee_total": 123,
"order_total": 123,
"list_price_total": 123,
"pricing_savings": 123,
"amount_paid": 123,
"balance_due": 123,
"amount_due": 123,
"tax_exempt": true,
"delivery_option": "ship",
"notes": "<string>",
"internal_notes": "<string>",
"invoice_number": "<string>",
"invoice_type": "order",
"is_on_hold": true,
"hold_type": "<string>",
"ship_complete": true,
"source_platform": "<string>",
"external_order_id": "<string>",
"external_order_number": "<string>",
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Headers
Client-generated unique key for idempotent POST/PATCH/DELETE operations. Alias for the Idempotency parameter. Max 255 chars. On retry with the same key, the original response is returned without re-executing the operation. Keys expire after 24 hours.
255Path Parameters
The order's UUID id or its human-readable order_number (e.g. SO-001234,
INV-0042, Q-2026-0099). UUID lookup uses a direct index and is slightly faster.
order_number lookup resolves within the authenticated entity scope
(Layer 1 enforced -- cross-entity collision impossible).
{
"uuid": {
"value": "550e8400-e29b-41d4-a716-446655440000",
"summary": "UUID lookup (direct index)"
},
"order_number": {
"value": "SO-001234",
"summary": "order_number lookup (polymorphic)"
}
}
Body
Shippo service token or carrier service name; stored canonicalized. Unrecognized values return 400. null clears the override.
Flags the order as a historical import (e.g. migrated from a prior ERP).
Affects period-close + AR aging behavior. Migration tooling only.
Honored ONLY when the API key carries the migration:write scope
(or *); silently dropped for ordinary orders:write keys.
Control flag (not a persisted field). When changing
shipping_address_id on an order whose child drop-ship PO(s)
were already SENT to the vendor, pass true to propagate the
new destination to those PO(s) and bump their revision
(otherwise the request returns 409
dropship_po_sent_blocks_shipto_change).
Response
Updated order
An Arcus ERP order document. One table holds quotes, sales_orders, invoices, returns, and purchase_orders -- always filter by document_type. entity_id is always from the API key (Layer 1 isolation).
order quote, sales_order, invoice, return, purchase_order draft, confirmed, partially_fulfilled, fulfilled, cancelled, voided, awaiting_ach_clearance, on_hold unpaid, partially_paid, paid, overpaid, refunded, partially_refunded, voided unfulfilled, partially_fulfilled, fulfilled Derived (display-only): SUM(list_price * qty) over non-kit lines. The gross baseline of the gross-to-net bridge (List price minus pricing_savings equals subtotal). Never part of order_total.
Derived (display-only): SUM(pricing_rule_adjustment * qty) over non-kit lines (positive magnitude). Per-unit pricing-rule savings already baked into subtotal via sell_rate (ASC 606 transaction price); shown as an informational List-to-Subtotal bridge, never subtracted from order_total.
SSOT: utils/ar-helpers.mjs::updateARBalance. Do not write directly.
AR receivable (the amount this document is owed AS A RECEIVABLE). Forced to 0 on DRAFT sales documents, on cancelled / archived / expired orders, and on voided or fully-refunded invoices, because none of those carries a receivable: a draft is not a receivable, and a terminal document owes nothing. This is the number that ties to AR aging, the AR outstanding total, and the GL AR control account. For the amount still COLLECTIBLE on any document at any status (including a draft), use amount_due. Purchase orders and quotes are never forced to 0. SSOT: utils/ar-helpers.mjs::updateARBalance. Do not write directly.
Collectible remainder: order_total minus amount_paid, rounded to 2 decimals. Status-blind BY DESIGN, so it answers "how much is still OUTSTANDING on this document as simple arithmetic" even where balance_due is 0 because the document is not (yet) a receivable. Negative when the customer has overpaid (money owed back to them). On a confirmed, non-refunded document with no sales allowance and no cancellation, amount_due and balance_due are equal. NOT A PAYABLE AMOUNT. Because it is status-blind it stays positive on documents that can accept no payment at all -- a cancelled / archived / expired order, a voided invoice, a fully-refunded order -- and it OVERSTATES what is owed on an allowance-settled order (a standalone concession refund reversed goods or tax: balance_due correctly settles to 0 while the remainder does not). Collecting amount_due on either shape creates an overpayment, and the payment endpoints will refuse it with order_not_payable (422). To decide how much to collect, take the amount from the payment surface you are about to call (POST /v1/orders/{id}/payments validates and caps server-side); to reconcile against AR aging or the GL AR control account, use balance_due.
ship, pick_up, local_delivery order, manual, proforma, correction Was this page helpful?

