curl --request GET \
--url https://api.arcuserp.com/v1/purchase-orders/{id}/landed-costs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.arcuserp.com/v1/purchase-orders/{id}/landed-costs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.arcuserp.com/v1/purchase-orders/{id}/landed-costs', 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/purchase-orders/{id}/landed-costs",
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.arcuserp.com/v1/purchase-orders/{id}/landed-costs"
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.arcuserp.com/v1/purchase-orders/{id}/landed-costs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/purchase-orders/{id}/landed-costs")
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{
"data": {
"po_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"po_number": "<string>",
"allocations": [
{
"allocation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bill_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bill_number": "<string>",
"bill_status": "<string>",
"vendor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendor_name": "<string>",
"category": "<string>",
"basis": "<string>",
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_title": "<string>",
"sku": "<string>",
"location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"location_name": "<string>",
"order_item_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"receiving_transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"purchase_receipt_item_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"receipt_reference": "<string>",
"target": "layer",
"fifo_layer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"date": "2023-12-25",
"amount": 123,
"inventory_share": 123,
"cogs_share": 123,
"reversal_refusal": "<string>"
}
],
"lines": [
{
"order_item_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_title": "<string>",
"sku": "<string>",
"quantity_ordered": 123,
"quantity_received": 123,
"po_unit_cost": 123,
"goods_cost": 123,
"landed_cost": 123,
"goods_unit_cost": 123,
"landed_cost_per_unit": 123,
"landed_unit_cost": 123
}
],
"landed_bills": [
{
"bill_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bill_number": "<string>",
"vendor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendor_name": "<string>",
"bill_date": "2023-12-25",
"status": "<string>",
"mode": "case_a",
"categories": [
"<string>"
],
"allocated_on_this_po": 123
}
],
"totals": {
"goods_cost": 123,
"landed_cost": 123,
"inventory_share": 123,
"cogs_share": 123,
"unattributed_landed_cost": 123,
"by_category": [
{
"category": "<string>",
"amount": 123
}
]
}
}
}{
"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"
}A purchase order's landed costs
Every landed allocation that reached this purchase order’s receipts, with its inventory and COGS share, and per line the goods cost, landed cost and landed unit cost. It reveals inventory cost and cost of goods sold, so it requires the margin permission; no API scope grants it today, so an API key is refused 403 margin_permission_required (the same answer as a user without the permission).
curl --request GET \
--url https://api.arcuserp.com/v1/purchase-orders/{id}/landed-costs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.arcuserp.com/v1/purchase-orders/{id}/landed-costs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.arcuserp.com/v1/purchase-orders/{id}/landed-costs', 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/purchase-orders/{id}/landed-costs",
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.arcuserp.com/v1/purchase-orders/{id}/landed-costs"
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.arcuserp.com/v1/purchase-orders/{id}/landed-costs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/purchase-orders/{id}/landed-costs")
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{
"data": {
"po_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"po_number": "<string>",
"allocations": [
{
"allocation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bill_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bill_number": "<string>",
"bill_status": "<string>",
"vendor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendor_name": "<string>",
"category": "<string>",
"basis": "<string>",
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_title": "<string>",
"sku": "<string>",
"location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"location_name": "<string>",
"order_item_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"receiving_transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"purchase_receipt_item_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"receipt_reference": "<string>",
"target": "layer",
"fifo_layer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"date": "2023-12-25",
"amount": 123,
"inventory_share": 123,
"cogs_share": 123,
"reversal_refusal": "<string>"
}
],
"lines": [
{
"order_item_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_title": "<string>",
"sku": "<string>",
"quantity_ordered": 123,
"quantity_received": 123,
"po_unit_cost": 123,
"goods_cost": 123,
"landed_cost": 123,
"goods_unit_cost": 123,
"landed_cost_per_unit": 123,
"landed_unit_cost": 123
}
],
"landed_bills": [
{
"bill_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bill_number": "<string>",
"vendor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendor_name": "<string>",
"bill_date": "2023-12-25",
"status": "<string>",
"mode": "case_a",
"categories": [
"<string>"
],
"allocated_on_this_po": 123
}
],
"totals": {
"goods_cost": 123,
"landed_cost": 123,
"inventory_share": 123,
"cogs_share": 123,
"unattributed_landed_cost": 123,
"by_category": [
{
"category": "<string>",
"amount": 123
}
]
}
}
}{
"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.
Path Parameters
Response
The purchase order's landed costs.
A purchase order's landed costs (DESIGN D13): every landed allocation that reached its receipts (Case A, a landed-only bill naming the PO, a receipt-set bill on its receipts), each with its inventory share (what the layer and the layers its bump was followed into still hold now) and its COGS share (the rest), from the same plan a void runs; per PO line the units, goods cost at receipt, landed cost and landed unit cost; the landed bills; and the totals by category. Margin-grade throughout.
Show child attributes
Show child attributes
Was this page helpful?

