{"id":7298,"date":"2026-05-20T14:56:05","date_gmt":"2026-05-20T07:56:05","guid":{"rendered":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/?p=7298"},"modified":"2026-05-21T08:24:06","modified_gmt":"2026-05-21T01:24:06","slug":"api_salesorder","status":"publish","type":"post","link":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/","title":{"rendered":"Sales Order Module"},"content":{"rendered":"<h5><strong>SKYBIZ API \u2014 Sales Order Module<\/strong><\/h5>\n<h3><strong>Sales Order<\/strong><\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">The Sales Order module allows you to retrieve and create sales order records in your SKYBIZ account. Supports both <strong>read<\/strong> and <strong>create<\/strong> operations.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"><strong>Endpoint:<\/strong> <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">\/apiv2\/modules\/sales_order.php<\/code><\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"><strong>Required Permissions:<\/strong> Sales Order \u2014 Read, Sales Order \u2014 Create<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"><strong>Allowed DocType:<\/strong> <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">SO<\/code> (Sales Order only)<\/p>\n<hr \/>\n<h3><strong>Read Sales Orders<\/strong><\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Retrieves sales orders created within the given date range. Returns all fields \u2014 no field filtering or custom filters are supported for this module.<\/p>\n<h4>Base Request Structure<\/h4>\n<pre>{\r\n  \"api_key\": \"your-api-key\",\r\n  \"api_secret\": \"your-api-secret\",\r\n  \"action\": \"read\",\r\n  \"date_from\": \"YYYY-MM-DD\",\r\n  \"date_to\": \"YYYY-MM-DD\"\r\n}<\/pre>\n<h4>Request Parameters<\/h4>\n<div class=\"overflow-x-auto w-full px-2 mb-6\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-border-300\/60 py-2 pr-4 align-top font-bold\" scope=\"col\">Parameter<\/th>\n<th class=\"text-text-100 border-b-0.5 border-border-300\/60 py-2 pr-4 align-top font-bold\" scope=\"col\">Description<\/th>\n<th class=\"text-text-100 border-b-0.5 border-border-300\/60 py-2 pr-4 align-top font-bold\" scope=\"col\">Required<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>api_key<\/code><\/td>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\">Your API key<\/td>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\">Yes<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>api_secret<\/code><\/td>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\">Your API secret<\/td>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\">Yes<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>action<\/code><\/td>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\">Must be <code>\"read\"<\/code><\/td>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\">Yes<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>date_from<\/code><\/td>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\">Start date (YYYY-MM-DD)<\/td>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\">Yes<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>date_to<\/code><\/td>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\">End date (YYYY-MM-DD). Max 31 days range.<\/td>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\">Yes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h4>Date Rules<\/h4>\n<ul>\n<li>Format must be <code>YYYY-MM-DD<\/code> \u2014 e.g. <code>\"2026-04-01\"<\/code><\/li>\n<li>Maximum range is <strong>31 days<\/strong><\/li>\n<li><code>date_from<\/code> cannot be after <code>date_to<\/code><\/li>\n<\/ul>\n<hr \/>\n<h3><strong>Available Fields (Read Only)<\/strong><\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">The Sales Order module returns all fields. Field filtering is not supported for this module.<\/p>\n<div class=\"overflow-x-auto w-full px-2 mb-6\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th>Field<\/th>\n<th>Type<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Doc1No<\/code><\/td>\n<td>string<\/td>\n<td>Document number (identifier)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Doc2No<\/code> \/ <code>Doc3No<\/code><\/td>\n<td>string<\/td>\n<td>Reference document numbers<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>D_ate<\/code><\/td>\n<td>string<\/td>\n<td>Document date<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>CusCode<\/code><\/td>\n<td>string<\/td>\n<td>Customer code<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>CusName<\/code><\/td>\n<td>string<\/td>\n<td>Customer name<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>CurCode<\/code><\/td>\n<td>string<\/td>\n<td>Currency code (e.g., RM, SGD, USD)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>CurRate1<\/code><\/td>\n<td>float<\/td>\n<td>Exchange rate<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>TermCode<\/code><\/td>\n<td>integer<\/td>\n<td>Payment term in days<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCNetAmt<\/code><\/td>\n<td>float<\/td>\n<td>Net amount before tax<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCDtTax<\/code><\/td>\n<td>float<\/td>\n<td>Total tax amount<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>DocType<\/code><\/td>\n<td>string<\/td>\n<td>Document type \u2014 always <code>\"SO\"<\/code><\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Status<\/code><\/td>\n<td>string<\/td>\n<td>Order status \u2014 <code>\"Waiting\"<\/code>, <code>\"Completed\"<\/code>, etc.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Address<\/code> \/ <code>City<\/code> \/ <code>State<\/code> \/ <code>Zip<\/code><\/td>\n<td>string<\/td>\n<td>Delivery address components<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>ContactTel<\/code> \/ <code>Email<\/code><\/td>\n<td>string<\/td>\n<td>Contact telephone and email<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Attention<\/code><\/td>\n<td>string<\/td>\n<td>Attention note \/ special remarks<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>ItemCode<\/code><\/td>\n<td>string<\/td>\n<td>Item code<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Description<\/code> \/ <code>Description2<\/code><\/td>\n<td>string<\/td>\n<td>Item description lines<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Qty<\/code><\/td>\n<td>float<\/td>\n<td>Quantity ordered<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>FactorQty<\/code><\/td>\n<td>float<\/td>\n<td>UOM conversion factor (usually 1)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>UOM<\/code><\/td>\n<td>string<\/td>\n<td>Unit of measure<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>UOMSingular<\/code><\/td>\n<td>string<\/td>\n<td>Singular form of UOM<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCUnitCost<\/code><\/td>\n<td>float<\/td>\n<td>Unit cost<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCLineAmt<\/code><\/td>\n<td>float<\/td>\n<td>Line total amount<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCTax<\/code><\/td>\n<td>float<\/td>\n<td>Tax amount for the line<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>TaxRate1<\/code><\/td>\n<td>float<\/td>\n<td>Tax rate in percent<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>DetailTaxCode<\/code><\/td>\n<td>string<\/td>\n<td>Tax code<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>BlankLine<\/code><\/td>\n<td>string<\/td>\n<td>Line type \u2014 <code>\"0\"<\/code> Stock Item, <code>\"4\"<\/code> Other Charge, <code>\"6\"<\/code> GL Account<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>DeliveryDate<\/code><\/td>\n<td>string<\/td>\n<td>Expected delivery date<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<hr \/>\n<h3><strong>Example 1 \u2014 Get All Sales Orders (All Fields)<\/strong><\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">This request returns all sales order fields for orders created between April 1, 2026 and April 30, 2026.<\/p>\n<h4>Request<\/h4>\n<pre>{\r\n  \"api_key\": \"your-api-key\",\r\n  \"api_secret\": \"your-api-secret\",\r\n  \"action\": \"read\",\r\n  \"date_from\": \"2026-04-01\",\r\n  \"date_to\": \"2026-04-30\"\r\n}<\/pre>\n<h4>Sample Code for making an API READ request using php<\/h4>\n<pre>&lt;?php\r\nheader('Content-Type: application\/json');\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 1: CONFIGURATION\r\n\/\/ ============================================================\r\n\r\n$API_KEY = \"your-api-key\";\r\n$API_SECRET = \"your-api-secret\";\r\n$ACTION = \"read\";\r\n\r\n\/\/ Date range (required for all endpoints, max 31 days)\r\n$DATE_FROM = \"2026-04-01\";\r\n$DATE_TO = \"2026-04-30\";\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 2: ENDPOINT\r\n\/\/ ============================================================\r\n\r\n$BASE_URL = \"https:\/\/domain-name\/01\/clientportal\/apiv2\/modules\"; \/\/(replace it with your skybiz domain name url)\r\n$ENDPOINT = \"sales_order.php\";\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 3: REQUEST PARAMETERS\r\n\/\/ ============================================================\r\n\r\n$requestParams = [\r\n    \"date_from\" =&gt; $DATE_FROM,\r\n    \"date_to\" =&gt; $DATE_TO\r\n];\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 4: BUILD PAYLOAD\r\n\/\/ ============================================================\r\n\r\n$payload = array_merge(\r\n    [\r\n        \"api_key\" =&gt; $API_KEY,\r\n        \"api_secret\" =&gt; $API_SECRET,\r\n        \"action\" =&gt; $ACTION\r\n    ],\r\n    $requestParams\r\n);\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 5: SEND REQUEST\r\n\/\/ ============================================================\r\n\r\n$url = rtrim($BASE_URL, '\/') . '\/' . ltrim($ENDPOINT, '\/');\r\n\r\n$ch = curl_init($url);\r\n\r\ncurl_setopt_array($ch, [\r\n    CURLOPT_RETURNTRANSFER =&gt; true,\r\n    CURLOPT_POST =&gt; true,\r\n    CURLOPT_POSTFIELDS =&gt; http_build_query($payload),\r\n    CURLOPT_TIMEOUT =&gt; 30,\r\n]);\r\n\r\n$response = curl_exec($ch);\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 6: HANDLE CURL ERROR\r\n\/\/ ============================================================\r\n\r\nif ($response === false) {\r\n    echo json_encode([\r\n        \"status\" =&gt; \"error\",\r\n        \"timestamp\" =&gt; date(\"c\"),\r\n        \"request_id\" =&gt; uniqid(\"req_\"),\r\n        \"message\" =&gt; curl_error($ch)\r\n    ], JSON_PRETTY_PRINT);\r\n    curl_close($ch);\r\n    exit;\r\n}\r\n\r\n$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);\r\ncurl_close($ch);\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 7: DECODE RESPONSE\r\n\/\/ ============================================================\r\n\r\n$result = json_decode($response, true);\r\n\r\nif (!$result) {\r\n    echo json_encode([\r\n        \"status\" =&gt; \"error\",\r\n        \"timestamp\" =&gt; date(\"c\"),\r\n        \"request_id\" =&gt; uniqid(\"req_\"),\r\n        \"message\" =&gt; \"Invalid JSON from API\",\r\n        \"raw_response\" =&gt; $response\r\n    ], JSON_PRETTY_PRINT);\r\n    exit;\r\n}\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 8: RETURN CLEAN JSON FORMAT\r\n\/\/ ============================================================\r\n\r\necho json_encode([\r\n    \"status\" =&gt; $result['status'] ?? \"error\",\r\n    \"timestamp\" =&gt; date(\"c\"),\r\n    \"request_id\" =&gt; $result['request_id'] ?? uniqid(\"req_\"),\r\n    \"data\" =&gt; $result['data'] ?? null,\r\n    \"message\" =&gt; $result['message'] ?? null\r\n], JSON_PRETTY_PRINT);<\/pre>\n<h4>Response (Success)<\/h4>\n<pre>{\r\n  \"status\": \"response\",\r\n  \"timestamp\": \"2026-04-30T04:07:04+00:00\",\r\n  \"request_id\": \"req_69f2d56891e57\",\r\n  \"data\": {\r\n    \"requested_by\": \"your-api-key\",\r\n    \"mode\": \"2\",\r\n    \"date_range\": {\r\n      \"from\": \"2026-04-01\",\r\n      \"to\": \"2026-04-30\",\r\n      \"days\": 30\r\n    },\r\n    \"total_returned\": 2,\r\n    \"data\": [\r\n      {\r\n        \"Doc1No\": \"SO-001\",\r\n        \"CusCode\": \"CUST001\",\r\n        \"CusName\": \"Acme Sdn Bhd\",\r\n        \"CurCode\": \"RM\",\r\n        \"HCNetAmt\": 1500.00,\r\n        \"Status\": \"Waiting\",\r\n        \"D_ate\": \"2026-04-15\",\r\n        \"DateTimeModified\": \"2026-04-15 10:30:00\"\r\n      },\r\n      {\r\n        \"Doc1No\": \"SO-002\",\r\n        \"CusCode\": \"CUST002\",\r\n        \"CusName\": \"Tech Solutions\",\r\n        \"CurCode\": \"RM\",\r\n        \"HCNetAmt\": 2500.00,\r\n        \"Status\": \"Completed\",\r\n        \"D_ate\": \"2026-04-20\",\r\n        \"DateTimeModified\": \"2026-04-20 14:45:00\"\r\n      }\r\n    ]\r\n  }\r\n}<\/pre>\n<hr \/>\n<h3><strong>Postman Steps \u2014 READ Request<\/strong><\/h3>\n<ol>\n<li>Set method to <strong>POST<\/strong><\/li>\n<\/ol>\n<p><a href=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7301\" src=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1.png\" alt=\"\" width=\"1226\" height=\"408\" srcset=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1.png 1226w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1-300x100.png 300w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1-1024x341.png 1024w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1-768x256.png 768w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1-150x50.png 150w\" sizes=\"auto, (max-width: 1226px) 100vw, 1226px\" \/><\/a><\/p>\n<p>2. Enter URL: <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">https:\/\/your-domain\/01\/clientportal\/apiv2\/modules\/sales_order.php<\/code><\/p>\n<p><a href=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7302\" src=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder2.png\" alt=\"\" width=\"1223\" height=\"318\" srcset=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder2.png 1223w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder2-300x78.png 300w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder2-1024x266.png 1024w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder2-768x200.png 768w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder2-150x39.png 150w\" sizes=\"auto, (max-width: 1223px) 100vw, 1223px\" \/><\/a><\/p>\n<p>3. Set header: <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">Content-Type: application\/json<\/code><\/p>\n<p><a href=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7303\" src=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder3.png\" alt=\"\" width=\"1227\" height=\"344\" srcset=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder3.png 1227w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder3-300x84.png 300w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder3-1024x287.png 1024w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder3-768x215.png 768w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder3-150x42.png 150w\" sizes=\"auto, (max-width: 1227px) 100vw, 1227px\" \/><\/a><\/p>\n<p>4. Under <strong>Body<\/strong>, select <strong>raw<\/strong> and format <strong>JSON<\/strong><\/p>\n<p><a href=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7304\" src=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder4.png\" alt=\"\" width=\"1224\" height=\"323\" srcset=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder4.png 1224w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder4-300x79.png 300w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder4-1024x270.png 1024w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder4-768x203.png 768w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder4-150x40.png 150w\" sizes=\"auto, (max-width: 1224px) 100vw, 1224px\" \/><\/a><\/p>\n<p>5. Paste your request payload and click <strong>Send<\/strong><\/p>\n<p><a href=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7305\" src=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder5.png\" alt=\"\" width=\"1230\" height=\"934\" srcset=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder5.png 1230w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder5-300x228.png 300w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder5-1024x778.png 1024w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder5-768x583.png 768w, https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder5-150x114.png 150w\" sizes=\"auto, (max-width: 1230px) 100vw, 1230px\" \/><\/a><\/p>\n<hr \/>\n<h3><strong>Create Sales Order<\/strong><\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Creates one or more sales order records. All documents are validated before any are saved. If any document fails, the entire batch is rejected.<\/p>\n<h4>Compulsory Fields \u2014 Header<\/h4>\n<div class=\"overflow-x-auto w-full px-2 mb-6\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th>Field<\/th>\n<th>Type<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Doc1No<\/code><\/td>\n<td>string<\/td>\n<td>Unique document number. Must not already exist.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>CusCode<\/code><\/td>\n<td>string<\/td>\n<td>Customer code. Must exist in SKYBIZ.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>DocType<\/code><\/td>\n<td>string<\/td>\n<td>Must be <code>\"SO\"<\/code><\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCNetAmt<\/code><\/td>\n<td>float<\/td>\n<td>Net amount before tax. Must equal sum of all item <code>HCLineAmt<\/code>.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCDtTax<\/code><\/td>\n<td>float<\/td>\n<td>Total tax amount. Must equal sum of all item <code>HCTax<\/code>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h4>Compulsory Fields \u2014 Items<\/h4>\n<div class=\"overflow-x-auto w-full px-2 mb-6\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th>Field<\/th>\n<th>Type<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>ItemCode<\/code><\/td>\n<td>string<\/td>\n<td>Item code. Must exist in SKYBIZ.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Description<\/code><\/td>\n<td>string<\/td>\n<td>Item description<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Qty<\/code><\/td>\n<td>float<\/td>\n<td>Quantity. Must be greater than 0.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>FactorQty<\/code><\/td>\n<td>float<\/td>\n<td>UOM conversion factor. Usually same as <code>Qty<\/code>. Must be greater than 0.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>UOM<\/code><\/td>\n<td>string<\/td>\n<td>Unit of measure. Must exist in SKYBIZ UOM table.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCUnitCost<\/code><\/td>\n<td>float<\/td>\n<td>Unit price. Must be greater than 0 for stock items.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCLineAmt<\/code><\/td>\n<td>float<\/td>\n<td>Line total. Must equal <code>Qty \u00d7 HCUnitCost<\/code>.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>BlankLine<\/code><\/td>\n<td>string<\/td>\n<td>Line type \u2014 <code>\"0\"<\/code> Stock Item, <code>\"4\"<\/code> Other Charge, <code>\"6\"<\/code> GL Account<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h4>Optional Fields \u2014 Header<\/h4>\n<div class=\"overflow-x-auto w-full px-2 mb-6\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th>Field<\/th>\n<th>Type<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Doc2No<\/code> \/ <code>Doc3No<\/code><\/td>\n<td>string<\/td>\n<td>Reference document numbers<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>D_ate<\/code><\/td>\n<td>string<\/td>\n<td>Document date in <code>YYYY-MM-DD<\/code> format. Defaults to today.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>CusName<\/code><\/td>\n<td>string<\/td>\n<td>Customer name (for display on the order)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>CurCode<\/code><\/td>\n<td>string<\/td>\n<td>Currency code. Default: <code>MYR<\/code><\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>CurRate1<\/code><\/td>\n<td>float<\/td>\n<td>Exchange rate. Default: <code>1<\/code><\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Address<\/code><\/td>\n<td>string<\/td>\n<td>Delivery address (Max length is 255 characters)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>City<\/code> \/ <code>State<\/code> \/ <code>Zip<\/code><\/td>\n<td>string<\/td>\n<td>Delivery city, state, postcode<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>ContactTel<\/code> \/ <code>Email<\/code><\/td>\n<td>string<\/td>\n<td>Delivery contact telephone and email<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Attention<\/code><\/td>\n<td>string<\/td>\n<td>Attention note or special remarks<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h4>Optional Fields \u2014 Items<\/h4>\n<div class=\"overflow-x-auto w-full px-2 mb-6\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th>Field<\/th>\n<th>Type<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>Description2<\/code><\/td>\n<td>string<\/td>\n<td>Second description line (Max length is 255 characters)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>UOMSingular<\/code><\/td>\n<td>string<\/td>\n<td>Singular form of UOM (auto-populated if empty)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCDiscount<\/code> \/ <code>DisRate1<\/code><\/td>\n<td>float<\/td>\n<td>Discount amount and discount rate (%)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>HCTax<\/code><\/td>\n<td>float<\/td>\n<td>Tax amount for this line. Must equal <code>HCLineAmt \u00d7 (TaxRate1 \/ 100)<\/code>.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>TaxRate1<\/code><\/td>\n<td>float<\/td>\n<td>Tax rate in percent \u2014 e.g. <code>6<\/code><\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>DetailTaxCode<\/code><\/td>\n<td>string<\/td>\n<td>Tax code. If provided, must exist in SKYBIZ.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>SalesPersonCode<\/code><\/td>\n<td>string<\/td>\n<td>Sales Person Code. If provided, must exist in SKYBIZ.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>BranchCode<\/code> \/ <code>DepartmentCode<\/code> \/ <code>ProjectCode<\/code><\/td>\n<td>string<\/td>\n<td>Branch, department, and project codes. If provided, must exist in SKYBIZ.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>LocationCode<\/code><\/td>\n<td>string<\/td>\n<td>Stock location code. If provided, must exist in SKYBIZ.<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>DeliveryDate<\/code><\/td>\n<td>string<\/td>\n<td>Expected delivery date in <code>YYYY-MM-DD<\/code> format<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>DUD1<\/code> to <code>DUD6<\/code><\/td>\n<td>string<\/td>\n<td>User-defined detail fields 1 through 6 (Max length is 40 characters)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>LineNo<\/code><\/td>\n<td>integer<\/td>\n<td>Line sequence number. Auto-assigned if omitted.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h4>BlankLine Values<\/h4>\n<div class=\"overflow-x-auto w-full px-2 mb-6\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th>Value<\/th>\n<th>Type<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"0\"<\/code><\/td>\n<td>Stock Item<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"4\"<\/code><\/td>\n<td>Other Charge<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"6\"<\/code><\/td>\n<td>GL Account<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h4>Base Create Request Structure<\/h4>\n<pre>{\r\n  \"api_key\": \"your-api-key\",\r\n  \"api_secret\": \"your-api-secret\",\r\n  \"action\": \"create\",\r\n  \"order_data\": {\r\n    \"documents\": [\r\n      {\r\n        \"Doc1No\": \"SO-001\",\r\n        \"CusCode\": \"CUST001\",\r\n        \"DocType\": \"SO\",\r\n        \"D_ate\": \"2026-05-20\",\r\n        \"HCNetAmt\": 550.00,\r\n        \"HCDtTax\": 44.00,\r\n        \"CurCode\": \"RM\",\r\n        \"CurRate1\": 1,\r\n        \"CusName\": \"Acme Sdn Bhd\",\r\n        \"Address\": \"123 Jalan SS2\",\r\n        \"City\": \"Petaling Jaya\",\r\n        \"State\": \"Selangor\",\r\n        \"Zip\": \"47300\",\r\n        \"ContactTel\": \"0123456789\",\r\n        \"Email\": \"customer@test.com\",\r\n        \"Attention\": \"Urgent order\",\r\n        \"items\": [\r\n          {\r\n            \"ItemCode\": \"ITEM001\",\r\n            \"Description\": \"Product A\",\r\n            \"Qty\": 10,\r\n            \"FactorQty\": 1,\r\n            \"UOM\": \"Piece\",\r\n            \"HCUnitCost\": 50.00,\r\n            \"HCLineAmt\": 500.00,\r\n            \"BlankLine\": \"0\",\r\n            \"HCTax\": 40.00,\r\n            \"TaxRate1\": 8,\r\n            \"DeliveryDate\": \"2026-05-25\",\r\n            \"LineNo\": 1\r\n          }\r\n        ]\r\n      }\r\n    ]\r\n  }\r\n}<\/pre>\n<h4>Sample Code for making an API CREATE request using php<\/h4>\n<pre>&lt;?php\r\nheader('Content-Type: application\/json');\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 1: CONFIGURATION\r\n\/\/ ============================================================\r\n\r\n$API_KEY = \"your-api-key\";\r\n$API_SECRET = \"your-api-secret\";\r\n$ACTION = \"create\";\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 2: ENDPOINT\r\n\/\/ ============================================================\r\n\r\n$BASE_URL = \"https:\/\/domain-name\/01\/clientportal\/apiv2\/modules\"; \/\/(replace it with your skybiz domain name url)\r\n$ENDPOINT = \"sales_order.php\";\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 3: DATA KEY\r\n\/\/ ============================================================\r\n\r\n$DATA_KEY = \"order_data\";\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 4: BUILD YOUR DOCUMENTS ARRAY\r\n\/\/ ============================================================\r\n\r\n$DOCUMENTS = [];\r\n\r\n\/\/ --- Sales Order example ---\r\n$DOCUMENTS[] = [\r\n    \"Doc1No\" =&gt; \"SO-001\",\r\n    \"CusCode\" =&gt; \"CUST001\",\r\n    \"DocType\" =&gt; \"SO\",\r\n    \"D_ate\" =&gt; \"2026-05-20\",\r\n    \"HCNetAmt\" =&gt; 550.00,\r\n    \"HCDtTax\" =&gt; 44.00,\r\n    \"CurCode\" =&gt; \"RM\",\r\n    \"CurRate1\" =&gt; 1,\r\n    \"CusName\" =&gt; \"Acme Sdn Bhd\",\r\n    \"Address\" =&gt; \"123 Jalan SS2\",\r\n    \"City\" =&gt; \"Petaling Jaya\",\r\n    \"State\" =&gt; \"Selangor\",\r\n    \"Zip\" =&gt; \"47300\",\r\n    \"ContactTel\" =&gt; \"0123456789\",\r\n    \"Email\" =&gt; \"customer@test.com\",\r\n    \"Attention\" =&gt; \"Urgent order\",\r\n    \"items\" =&gt; [\r\n        [\r\n            \"ItemCode\" =&gt; \"ITEM001\",\r\n            \"Description\" =&gt; \"Product A\",\r\n            \"Qty\" =&gt; 10,\r\n            \"FactorQty\" =&gt; 1,\r\n            \"UOM\" =&gt; \"Piece\",\r\n            \"HCUnitCost\" =&gt; 50.00,\r\n            \"HCLineAmt\" =&gt; 500.00,\r\n            \"BlankLine\" =&gt; \"0\",\r\n            \"HCTax\" =&gt; 40.00,\r\n            \"TaxRate1\" =&gt; 8,\r\n            \"DeliveryDate\" =&gt; \"2026-05-25\",\r\n            \"LineNo\" =&gt; 1\r\n        ]\r\n    ]\r\n];\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 5: CLIENT-SIDE COUNT CHECK (Please do not modify this)\r\n\/\/ ============================================================\r\n\r\n$totalDocuments = 0;\r\n\r\nforeach ($DOCUMENTS as $document) {\r\n    $totalDocuments++;\r\n\r\n    if (empty($document['Doc1No'])) {\r\n        echo json_encode([\r\n            \"status\" =&gt; \"REJECTED_BY_CLIENT\",\r\n            \"timestamp\" =&gt; date(\"c\"),\r\n            \"request_id\" =&gt; uniqid(\"req_\"),\r\n            \"message\" =&gt; \"CLIENT-SIDE REJECTION: Document at position {$totalDocuments} has empty Doc1No\",\r\n            \"action_required\" =&gt; \"Fix the document before sending to server\"\r\n        ], JSON_PRETTY_PRINT);\r\n        exit;\r\n    }\r\n}\r\n\r\nif ($totalDocuments &gt; 500) {\r\n    echo json_encode([\r\n        \"status\" =&gt; \"REJECTED_BY_CLIENT\",\r\n        \"timestamp\" =&gt; date(\"c\"),\r\n        \"request_id\" =&gt; uniqid(\"req_\"),\r\n        \"message\" =&gt; \"CLIENT-SIDE REJECTION: You have {$totalDocuments} documents. Maximum is 500.\",\r\n        \"your_document_count\" =&gt; $totalDocuments,\r\n        \"max_allowed\" =&gt; 500,\r\n        \"action_required\" =&gt; \"Reduce your documents to 500 or less BEFORE sending to server\"\r\n    ], JSON_PRETTY_PRINT);\r\n    exit;\r\n}\r\n\r\necho \"=== CLIENT-SIDE VALIDATION ===\\n\";\r\necho \"Looped through all {$totalDocuments} documents one by one\\n\";\r\necho \"All documents passed client validation\\n\";\r\necho \"Document count: {$totalDocuments} (max 500)\\n\";\r\necho \"Sending to server...\\n\\n\";\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 6: SEND REQUEST\r\n\/\/ ============================================================\r\n\r\n$url = rtrim($BASE_URL, '\/') . '\/' . ltrim($ENDPOINT, '\/');\r\n\r\n$payload = [\r\n    \"api_key\" =&gt; $API_KEY,\r\n    \"api_secret\" =&gt; $API_SECRET,\r\n    \"action\" =&gt; $ACTION,\r\n    $DATA_KEY =&gt; [\"documents\" =&gt; $DOCUMENTS]\r\n];\r\n\r\n$ch = curl_init($url);\r\n\r\ncurl_setopt_array($ch, [\r\n    CURLOPT_RETURNTRANSFER =&gt; true,\r\n    CURLOPT_POST =&gt; true,\r\n    CURLOPT_POSTFIELDS =&gt; json_encode($payload),\r\n    CURLOPT_HTTPHEADER =&gt; ['Content-Type: application\/json'],\r\n    CURLOPT_TIMEOUT =&gt; 120,\r\n]);\r\n\r\n$response = curl_exec($ch);\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 7: HANDLE CURL ERROR\r\n\/\/ ============================================================\r\n\r\nif ($response === false) {\r\n    echo json_encode([\r\n        \"status\" =&gt; \"error\",\r\n        \"timestamp\" =&gt; date(\"c\"),\r\n        \"request_id\" =&gt; uniqid(\"req_\"),\r\n        \"message\" =&gt; curl_error($ch)\r\n    ], JSON_PRETTY_PRINT);\r\n    curl_close($ch);\r\n    exit;\r\n}\r\n\r\n$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);\r\ncurl_close($ch);\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 8: DECODE RESPONSE\r\n\/\/ ============================================================\r\n\r\n$result = json_decode($response, true);\r\n\r\nif (!$result) {\r\n    echo json_encode([\r\n        \"status\" =&gt; \"error\",\r\n        \"timestamp\" =&gt; date(\"c\"),\r\n        \"request_id\" =&gt; uniqid(\"req_\"),\r\n        \"message\" =&gt; \"Invalid JSON from API\",\r\n        \"raw_response\" =&gt; $response\r\n    ], JSON_PRETTY_PRINT);\r\n    exit;\r\n}\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP 9: RETURN CLEAN JSON FORMAT\r\n\/\/ ============================================================\r\n\r\necho \"=== SERVER RESPONSE ===\\n\";\r\necho json_encode([\r\n    \"status\" =&gt; $result['status'] ?? \"error\",\r\n    \"timestamp\" =&gt; date(\"c\"),\r\n    \"request_id\" =&gt; $result['request_id'] ?? uniqid(\"req_\"),\r\n    \"data\" =&gt; $result['data'] ?? null,\r\n    \"message\" =&gt; $result['message'] ?? null\r\n], JSON_PRETTY_PRINT);<\/pre>\n<h4>Response (Success)<\/h4>\n<pre>{\r\n  \"status\": \"response\",\r\n  \"timestamp\": \"2026-05-20T10:30:00+08:00\",\r\n  \"request_id\": \"req_69fc0070d83cf\",\r\n  \"data\": {\r\n    \"requested_by\": \"your-api-key\",\r\n    \"mode\": \"2\",\r\n    \"summary\": {\r\n      \"total_documents\": 1,\r\n      \"inserted\": 1,\r\n      \"failed\": 0\r\n    },\r\n    \"successful_documents\": [\"SO-001\"],\r\n    \"failed_documents\": [],\r\n    \"fail_details\": {\r\n      \"compulsory_fields_missing\": [],\r\n      \"duplicate_documents\": [],\r\n      \"invalid_customers\": [],\r\n      \"invalid_items\": [],\r\n      \"invalid_tax_codes\": [],\r\n      \"invalid_sales_persons\": [],\r\n      \"invalid_locations\": [],\r\n      \"invalid_departments\": [],\r\n      \"invalid_projects\": [],\r\n      \"invalid_branches\": [],\r\n      \"invalid_currencies\": [],\r\n      \"invalid_uoms\": [],\r\n      \"amount_mismatch\": [],\r\n      \"validation_errors\": []\r\n    }\r\n  }\r\n}<\/pre>\n<h4>Response (Error \u2014 Duplicate Document)<\/h4>\n<pre>{\r\n  \"status\": \"response\",\r\n  \"timestamp\": \"2026-05-20T10:30:00+08:00\",\r\n  \"request_id\": \"req_69fc03e446a20\",\r\n  \"data\": {\r\n    \"requested_by\": \"your-api-key\",\r\n    \"mode\": \"2\",\r\n    \"summary\": {\r\n      \"total_documents\": 1,\r\n      \"inserted\": 0,\r\n      \"failed\": 1\r\n    },\r\n    \"successful_documents\": [],\r\n    \"failed_documents\": [\"SO-001\"],\r\n    \"fail_details\": {\r\n      \"duplicate_documents\": [\"SO-001\"],\r\n      \"invalid_currencies\": [],\r\n      \"invalid_uoms\": [],\r\n      \"amount_mismatch\": [],\r\n      \"validation_errors\": []\r\n    }\r\n  }\r\n}<\/pre>\n<hr \/>\n<h3><strong>Error Responses<\/strong><\/h3>\n<h4>Missing Date Range (READ)<\/h4>\n<pre>{\r\n  \"status\": \"error\",\r\n  \"timestamp\": \"2026-04-07T10:46:15+08:00\",\r\n  \"request_id\": \"req_6612f3b9c21a7\",\r\n  \"message\": \"date_from and date_to are required\"\r\n}<\/pre>\n<h4>Invalid DocType (CREATE)<\/h4>\n<pre>{\r\n  \"status\": \"error\",\r\n  \"timestamp\": \"2026-04-07T10:46:15+08:00\",\r\n  \"request_id\": \"req_6612f3b9c21a7\",\r\n  \"message\": \"Invalid DocType 'XXX'. Allowed: SO\"\r\n}<\/pre>\n<h4>Missing Compulsory Fields (CREATE)<\/h4>\n<pre>{\r\n  \"status\": \"response\",\r\n  \"timestamp\": \"2026-05-20T10:30:00+08:00\",\r\n  \"request_id\": \"req_123456\",\r\n  \"data\": {\r\n    \"summary\": {\r\n      \"total_documents\": 1,\r\n      \"inserted\": 0,\r\n      \"failed\": 1\r\n    },\r\n    \"failed_documents\": [\"SO-001\"],\r\n    \"fail_details\": {\r\n      \"compulsory_fields_missing\": [\r\n        \"Document 1 (Doc1No: SO-001): Missing header fields - CusCode, HCNetAmt, HCDtTax, DocType\"\r\n      ]\r\n    }\r\n  }\r\n}<\/pre>\n<h4>Invalid UOM Code (CREATE)<\/h4>\n<pre>{\r\n  \"status\": \"response\",\r\n  \"timestamp\": \"2026-05-20T10:30:00+08:00\",\r\n  \"request_id\": \"req_123456\",\r\n  \"data\": {\r\n    \"summary\": {\r\n      \"total_documents\": 1,\r\n      \"inserted\": 0,\r\n      \"failed\": 1\r\n    },\r\n    \"failed_documents\": [\"SO-001\"],\r\n    \"fail_details\": {\r\n      \"invalid_uoms\": [\r\n        \"Document 1 (Doc1No: SO-001), Item 1: UOM code 'INVALID' does not exist\"\r\n      ]\r\n    }\r\n  }\r\n}<\/pre>\n<h4>Invalid Currency Code (CREATE)<\/h4>\n<pre>{\r\n  \"status\": \"response\",\r\n  \"timestamp\": \"2026-05-20T10:30:00+08:00\",\r\n  \"request_id\": \"req_123456\",\r\n  \"data\": {\r\n    \"summary\": {\r\n      \"total_documents\": 1,\r\n      \"inserted\": 0,\r\n      \"failed\": 1\r\n    },\r\n    \"failed_documents\": [\"SO-001\"],\r\n    \"fail_details\": {\r\n      \"invalid_currencies\": [\r\n        \"Document 1 (Doc1No: SO-001): Currency code 'INVALID' does not exist\"\r\n      ]\r\n    }\r\n  }\r\n}<\/pre>\n<h4>No Read Permission<\/h4>\n<pre>{\r\n  \"status\": \"error\",\r\n  \"timestamp\": \"2026-04-07T10:46:15+08:00\",\r\n  \"request_id\": \"req_6612f3b9c21a7\",\r\n  \"message\": \"Sales Order read permission denied\"\r\n}<\/pre>\n<h4>No Create Permission<\/h4>\n<pre>{\r\n  \"status\": \"error\",\r\n  \"timestamp\": \"2026-05-20T10:30:00+08:00\",\r\n  \"request_id\": \"req_123456\",\r\n  \"message\": \"Sales Order create permission denied\"\r\n}<\/pre>\n<hr \/>\n<h3><strong>Common Errors \u2014 Sales Order Module<\/strong><\/h3>\n<div class=\"overflow-x-auto w-full px-2 mb-6\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th>Error Message<\/th>\n<th>Cause<\/th>\n<th>Fix<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"date_from and date_to are required\"<\/code><\/td>\n<td>Missing date range (READ only)<\/td>\n<td>Add both fields to your request<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"Invalid date format. Use YYYY-MM-DD format.\"<\/code><\/td>\n<td>Wrong date format<\/td>\n<td>Use YYYY-MM-DD \u2014 e.g. <code>\"2026-04-01\"<\/code><\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"Date range cannot exceed 31 days.\"<\/code><\/td>\n<td>Date range too wide<\/td>\n<td>Narrow range to 31 days or fewer<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"Invalid DocType 'XXX'. Allowed: SO\"<\/code><\/td>\n<td>Wrong DocType in CREATE request<\/td>\n<td>Use <code>\"SO\"<\/code> as the DocType<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"Missing fields - ItemCode, Description, Qty, FactorQty, UOM, HCUnitCost, HCLineAmt, BlankLine\"<\/code><\/td>\n<td>Compulsory item fields not provided (CREATE)<\/td>\n<td>Include all required fields for each item<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"UOM code 'X' does not exist\"<\/code><\/td>\n<td>Invalid Unit of Measure (CREATE)<\/td>\n<td>Check the UOM exists in SKYBIZ (singular or plural form)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"Currency code 'X' does not exist\"<\/code><\/td>\n<td>Invalid currency code (CREATE)<\/td>\n<td>Use a valid currency code (e.g., RM, SGD, USD)<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"Customer Code 'X' does not exist\"<\/code><\/td>\n<td>Invalid customer code<\/td>\n<td>Check the customer code exists in SKYBIZ<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"HCLineAmt does not match Qty \u00d7 HCUnitCost\"<\/code><\/td>\n<td>Amount calculation mismatch<\/td>\n<td>Ensure <code>HCLineAmt = Qty \u00d7 HCUnitCost<\/code><\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"Header HCNetAmt does not match sum of HCLineAmt\"<\/code><\/td>\n<td>Header total doesn&#8217;t match item totals<\/td>\n<td>Set <code>HCNetAmt<\/code> to the sum of all item <code>HCLineAmt<\/code><\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"Document already exists\"<\/code><\/td>\n<td>Duplicate <code>Doc1No<\/code><\/td>\n<td>Use a unique <code>Doc1No<\/code><\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300\/30 py-2 pr-4 align-top\"><code>\"Sales Order read permission denied\"<\/code><\/td>\n<td>No read permission for Sales Order module<\/td>\n<td>Enable read permission in portal by contacting your SkyBiz Admin<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<hr \/>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">For complete field references and advanced usage, see the <a href=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/apisetup_advanced\/\"><strong>SKYBIZ API Advanced Documentation<\/strong><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SKYBIZ API \u2014 Sales Order Module Sales Order The Sales Order module allows you to retrieve and create sales order records in your SKYBIZ account. Supports both read and create operations. Endpoint: \/apiv2\/modules\/sales_order.php Required Permissions: Sales Order \u2014 Read, Sales Order \u2014 Create Allowed DocType: SO (Sales Order only) Read Sales Orders Retrieves sales orders ..<\/p>\n<div class=\"clear-fix\"><\/div>\n<p><a href=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/\" title=\"read more...\">Read more<\/a><\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[213,220],"tags":[],"class_list":["post-7298","post","type-post","status-publish","format-standard","hentry","category-10-api-documentation","category-1006-sales-order"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Sales Order Module - SKYBIZ Cloud ERP Support<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sales Order Module - SKYBIZ Cloud ERP Support\" \/>\n<meta property=\"og:description\" content=\"SKYBIZ API \u2014 Sales Order Module Sales Order The Sales Order module allows you to retrieve and create sales order records in your SKYBIZ account. Supports both read and create operations. Endpoint: \/apiv2\/modules\/sales_order.php Required Permissions: Sales Order \u2014 Read, Sales Order \u2014 Create Allowed DocType: SO (Sales Order only) Read Sales Orders Retrieves sales orders ..Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/\" \/>\n<meta property=\"og:site_name\" content=\"SKYBIZ Cloud ERP Support\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-20T07:56:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-21T01:24:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1226\" \/>\n\t<meta property=\"og:image:height\" content=\"408\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"team 03\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"team 03\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/\"},\"author\":{\"name\":\"team 03\",\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/#\\\/schema\\\/person\\\/f3a2bcb10e55b23238c1b160bb06d9a9\"},\"headline\":\"Sales Order Module\",\"datePublished\":\"2026-05-20T07:56:05+00:00\",\"dateModified\":\"2026-05-21T01:24:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/\"},\"wordCount\":832,\"image\":{\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/api_salesorder1.png\",\"articleSection\":[\"10. API Documentation\",\"1006. Sales Order\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/\",\"url\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/\",\"name\":\"Sales Order Module - SKYBIZ Cloud ERP Support\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/api_salesorder1.png\",\"datePublished\":\"2026-05-20T07:56:05+00:00\",\"dateModified\":\"2026-05-21T01:24:06+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/#\\\/schema\\\/person\\\/f3a2bcb10e55b23238c1b160bb06d9a9\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/#primaryimage\",\"url\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/api_salesorder1.png\",\"contentUrl\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/api_salesorder1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/api_salesorder\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sales Order Module\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/#website\",\"url\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/\",\"name\":\"SKYBIZ Cloud ERP Support\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/#\\\/schema\\\/person\\\/f3a2bcb10e55b23238c1b160bb06d9a9\",\"name\":\"team 03\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed4575e459e48798469dd7ea3f93c83386ac432dd3bfebbf7d56837d067cbb88?s=96&d=blank&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed4575e459e48798469dd7ea3f93c83386ac432dd3bfebbf7d56837d067cbb88?s=96&d=blank&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed4575e459e48798469dd7ea3f93c83386ac432dd3bfebbf7d56837d067cbb88?s=96&d=blank&r=g\",\"caption\":\"team 03\"},\"sameAs\":[\"http:\\\/\\\/skybiz.com.my\"],\"url\":\"https:\\\/\\\/aisupport.skybizglobal.com\\\/skybizclouderp\\\/author\\\/team03skybiz-com-my\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Sales Order Module - SKYBIZ Cloud ERP Support","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Sales Order Module - SKYBIZ Cloud ERP Support","og_description":"SKYBIZ API \u2014 Sales Order Module Sales Order The Sales Order module allows you to retrieve and create sales order records in your SKYBIZ account. Supports both read and create operations. Endpoint: \/apiv2\/modules\/sales_order.php Required Permissions: Sales Order \u2014 Read, Sales Order \u2014 Create Allowed DocType: SO (Sales Order only) Read Sales Orders Retrieves sales orders ..Read more","og_url":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/","og_site_name":"SKYBIZ Cloud ERP Support","article_published_time":"2026-05-20T07:56:05+00:00","article_modified_time":"2026-05-21T01:24:06+00:00","og_image":[{"width":1226,"height":408,"url":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1.png","type":"image\/png"}],"author":"team 03","twitter_card":"summary_large_image","twitter_misc":{"Written by":"team 03","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/#article","isPartOf":{"@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/"},"author":{"name":"team 03","@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/#\/schema\/person\/f3a2bcb10e55b23238c1b160bb06d9a9"},"headline":"Sales Order Module","datePublished":"2026-05-20T07:56:05+00:00","dateModified":"2026-05-21T01:24:06+00:00","mainEntityOfPage":{"@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/"},"wordCount":832,"image":{"@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/#primaryimage"},"thumbnailUrl":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1.png","articleSection":["10. API Documentation","1006. Sales Order"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/","url":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/","name":"Sales Order Module - SKYBIZ Cloud ERP Support","isPartOf":{"@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/#website"},"primaryImageOfPage":{"@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/#primaryimage"},"image":{"@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/#primaryimage"},"thumbnailUrl":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1.png","datePublished":"2026-05-20T07:56:05+00:00","dateModified":"2026-05-21T01:24:06+00:00","author":{"@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/#\/schema\/person\/f3a2bcb10e55b23238c1b160bb06d9a9"},"breadcrumb":{"@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/#primaryimage","url":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1.png","contentUrl":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-content\/uploads\/2026\/05\/api_salesorder1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/api_salesorder\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/"},{"@type":"ListItem","position":2,"name":"Sales Order Module"}]},{"@type":"WebSite","@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/#website","url":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/","name":"SKYBIZ Cloud ERP Support","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/#\/schema\/person\/f3a2bcb10e55b23238c1b160bb06d9a9","name":"team 03","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ed4575e459e48798469dd7ea3f93c83386ac432dd3bfebbf7d56837d067cbb88?s=96&d=blank&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ed4575e459e48798469dd7ea3f93c83386ac432dd3bfebbf7d56837d067cbb88?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed4575e459e48798469dd7ea3f93c83386ac432dd3bfebbf7d56837d067cbb88?s=96&d=blank&r=g","caption":"team 03"},"sameAs":["http:\/\/skybiz.com.my"],"url":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/author\/team03skybiz-com-my\/"}]}},"_links":{"self":[{"href":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-json\/wp\/v2\/posts\/7298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-json\/wp\/v2\/comments?post=7298"}],"version-history":[{"count":4,"href":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-json\/wp\/v2\/posts\/7298\/revisions"}],"predecessor-version":[{"id":7332,"href":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-json\/wp\/v2\/posts\/7298\/revisions\/7332"}],"wp:attachment":[{"href":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-json\/wp\/v2\/media?parent=7298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-json\/wp\/v2\/categories?post=7298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aisupport.skybizglobal.com\/skybizclouderp\/wp-json\/wp\/v2\/tags?post=7298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}