{"info":{"_postman_id":"24a413ca-60be-418f-b43c-6900692f9ee6","name":"Luxana Custom API","description":"<html><head></head><body><h1 id=\"luxana-custom-api-documentation\">Luxana Custom API Documentation</h1>\n<h2 id=\"authentication\">Authentication</h2>\n<p>All requests require a Bearer token in the Authorization header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer lux-YOUR_API_TOKEN\n</code></pre><h2 id=\"base-url\">Base URL</h2>\n<p><strong>Production:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>https://api.luxana.my\n</code></pre><p><strong>Note:</strong> All endpoints automatically include <code>/custom-api</code> prefix.</p>\n<h2 id=\"rate-limits\">Rate Limits</h2>\n<ul>\n<li>Default: 60 requests/minute</li>\n<li>1000 requests/day</li>\n</ul>\n<h2 id=\"endpoints\">Endpoints</h2>\n<h3 id=\"1-create-order\">1. Create Order</h3>\n<p><strong>POST</strong> <code>/v1/orders</code></p>\n<p>Create a new order in the Luxana system.</p>\n<hr>\n<h2 id=\"field-reference\">Field Reference</h2>\n<h3 id=\"required-fields\">Required Fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>string</td>\n<td>Customer full name</td>\n<td>\"John Doe\"</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>Customer phone (auto-formatted for MY)</td>\n<td>\"60123456789\" or \"0123456789\"</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>string</td>\n<td>Street address</td>\n<td>\"123 Main St\"</td>\n</tr>\n<tr>\n<td><code>postcode</code></td>\n<td>string</td>\n<td>Postal code</td>\n<td>\"50000\"</td>\n</tr>\n<tr>\n<td><code>city</code></td>\n<td>string</td>\n<td>City name</td>\n<td>\"Kuala Lumpur\"</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>string</td>\n<td>State (full name or code)</td>\n<td>\"Selangor\" or \"SGR\"</td>\n</tr>\n<tr>\n<td><code>country</code></td>\n<td>string</td>\n<td>Country code (ISO 2-letter)</td>\n<td>\"MY\", \"SG\", \"BN\"</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td>array</td>\n<td>Order items (at least 1)</td>\n<td>See Items section</td>\n</tr>\n<tr>\n<td><code>selling_price</code></td>\n<td>number</td>\n<td>Total order price</td>\n<td>150.00</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"optional-fields\">Optional Fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n<th>Default</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>address_2</code></td>\n<td>string</td>\n<td>Additional address info</td>\n<td>null</td>\n<td>\"Unit 5A\"</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>Customer email</td>\n<td>null</td>\n<td>\"<a href=\"mailto:john@example.com\">john@example.com</a>\"</td>\n</tr>\n<tr>\n<td><code>payment_method</code></td>\n<td>string</td>\n<td>Payment method (see enum)</td>\n<td>Auto-detected by country</td>\n<td>\"cod\"</td>\n</tr>\n<tr>\n<td><code>shipping_method</code></td>\n<td>string</td>\n<td>Shipping method (see enum)</td>\n<td>Auto-detected by country</td>\n<td>\"ninjavan\"</td>\n</tr>\n<tr>\n<td><code>shipping_cost</code></td>\n<td>number</td>\n<td>Shipping fee</td>\n<td>0</td>\n<td>10.00</td>\n</tr>\n<tr>\n<td><code>cod_cost</code></td>\n<td>number</td>\n<td>COD fee</td>\n<td>0</td>\n<td>5.00</td>\n</tr>\n<tr>\n<td><code>awb_note</code></td>\n<td>string</td>\n<td>Note for courier/AWB</td>\n<td>null</td>\n<td>\"Fragile - Handle with care\"</td>\n</tr>\n<tr>\n<td><code>private_note</code></td>\n<td>string</td>\n<td>Internal note</td>\n<td>null</td>\n<td>\"Customer prefers morning delivery\"</td>\n</tr>\n<tr>\n<td><code>source_order_id</code></td>\n<td>string</td>\n<td>Your external order reference</td>\n<td>null</td>\n<td>\"YOUR-ORDER-123\"</td>\n</tr>\n<tr>\n<td><code>transaction_id</code></td>\n<td>string</td>\n<td>Payment transaction ID</td>\n<td>null</td>\n<td>\"TXN-456789\"</td>\n</tr>\n</tbody>\n</table>\n</div><hr>\n<h2 id=\"enums-reference\">Enums Reference</h2>\n<h3 id=\"payment-methods\">Payment Methods</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  \"cod\",           // Cash on Delivery\n  \"cash\",          // Cash payment\n  \"bank_transfer\", // Bank transfer\n  \"billplz\",       // Billplz gateway\n  \"bizappay\",      // BizAppay gateway\n  \"chip\",          // Chip payment\n  \"chip_qr\",       // Chip QR code\n  \"chip_atome\",    // Chip Atome\n  \"chip_wallet\",   // Chip Wallet\n  \"chip_cc\",       // Chip Credit Card\n  \"toyyibpay\",     // ToyyibPay gateway\n  \"stripe\",        // Stripe\n  \"foc\"            // Free of Charge\n]\n</code></pre>\n<h3 id=\"shipping-methods\">Shipping Methods</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  \"ninjavan\",      // Ninja Van\n  \"posmalaysia\",   // Pos Malaysia\n  \"jnt\",           // J&amp;T Express\n  \"dhl\",           // DHL\n  \"aramex\",        // Aramex\n  \"redlyexpress\",  // Redly Express\n  \"self_pickup\"    // Self Pickup\n]\n</code></pre>\n<h3 id=\"states-malaysia\">States (Malaysia)</h3>\n<p>Accepts <strong>full name</strong> or <strong>code</strong>:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Full Name</th>\n<th>Code</th>\n<th>Full Name</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>JHR</td>\n<td>Johor</td>\n<td>PHG</td>\n<td>Pahang</td>\n</tr>\n<tr>\n<td>KDH</td>\n<td>Kedah</td>\n<td>PNG</td>\n<td>Penang</td>\n</tr>\n<tr>\n<td>KTN</td>\n<td>Kelantan</td>\n<td>PRK</td>\n<td>Perak</td>\n</tr>\n<tr>\n<td>MLK</td>\n<td>Melaka</td>\n<td>PLS</td>\n<td>Perlis</td>\n</tr>\n<tr>\n<td>NSN</td>\n<td>Negeri Sembilan</td>\n<td>SBH</td>\n<td>Sabah</td>\n</tr>\n<tr>\n<td>SGR</td>\n<td>Selangor</td>\n<td>SWK</td>\n<td>Sarawak</td>\n</tr>\n<tr>\n<td>TRG</td>\n<td>Terengganu</td>\n<td>KUL</td>\n<td>Kuala Lumpur</td>\n</tr>\n<tr>\n<td>PJY</td>\n<td>Putrajaya</td>\n<td>LBN</td>\n<td>Labuan</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"countries\">Countries</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  \"MY\",  // Malaysia (default)\n  \"SG\",  // Singapore\n  \"BN\"   // Brunei\n]\n</code></pre>\n<hr>\n<h2 id=\"currency-handling\">Currency Handling</h2>\n<p>Currency is automatically determined by the <code>country</code> field and converted based on your company's currency rate settings.</p>\n<hr>\n<h2 id=\"items-array\">Items Array</h2>\n<p>Each item must have:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>sku</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>Product SKU (must exist in your catalog)</td>\n<td>\"VA1\"</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>number</td>\n<td>✅ Yes</td>\n<td>Quantity (must be &gt; 0)</td>\n<td>2</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Example:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"items\": [\n  { \"sku\": \"VA1\", \"quantity\": 2 },\n  { \"sku\": \"IM1\", \"quantity\": 1 }\n]\n</code></pre>\n<p><strong>Notes:</strong></p>\n<ul>\n<li>SKU must exist in your product catalog (products or bundles)</li>\n<li>Bundles are supported and automatically expanded</li>\n<li>Stock is NOT validated at order creation</li>\n</ul>\n<hr>\n<h2 id=\"response-format\">Response Format</h2>\n<h3 id=\"success-response-201-created\">Success Response (201 Created)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Order created successfully\",\n  \"provider\": \"Luxana API v1\",\n  \"data\": {\n    \"order_id\": 141600,\n    \"status\": \"new\",\n    \"selling_price\": 150,\n    \"foreign_selling_price\": null,\n    \"currency\": \"MYR\",\n    \"exchange_rate_used\": 1,\n    \"created_at\": \"2025-10-31T08:12:05.803Z\",\n    \"source_order_id\": \"YOUR-ORDER-123\"\n  }\n}\n</code></pre>\n<h3 id=\"error-responses\">Error Responses</h3>\n<p><strong>400 Bad Request</strong> - Missing/invalid fields:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"error\": \"Missing required fields: name, phone, address, postcode, city, state, country\"\n}\n</code></pre>\n<p><strong>400 Bad Request</strong> - Invalid SKU:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"error\": \"Item validation failed\",\n  \"message\": \"SKU \\\"INVALID\\\" not found in products or bundles\"\n}\n</code></pre>\n<p><strong>401 Unauthorized</strong> - Invalid/missing token:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"error\": \"Invalid or expired token\"\n}\n</code></pre>\n<p><strong>403 Forbidden</strong> - Insufficient permissions:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"error\": \"Insufficient permissions\",\n  \"message\": \"This API key does not have \\\"orders:write\\\" permission\"\n}\n</code></pre>\n<p><strong>429 Too Many Requests</strong> - Rate limit exceeded:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"error\": \"Rate limit exceeded (per minute)\",\n  \"retry_after\": 45\n}\n</code></pre>\n<p><strong>500 Internal Server Error</strong> - Server error:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"error\": \"Failed to create order\",\n  \"message\": \"Error details...\"\n}\n</code></pre>\n<hr>\n<h2 id=\"country-specific-defaults\">Country-Specific Defaults</h2>\n<h3 id=\"malaysia-my\">Malaysia (MY)</h3>\n<ul>\n<li>Payment &amp; shipping methods: Based on your Luxana settings</li>\n<li>Currency: <code>MYR</code></li>\n<li>Phone format: Auto-adds <code>60</code> prefix</li>\n</ul>\n<h3 id=\"singapore-sg\">Singapore (SG)</h3>\n<ul>\n<li>Payment &amp; shipping methods: Based on your Luxana settings</li>\n<li>Currency: <code>SGD</code> → converted to <code>MYR</code></li>\n</ul>\n<h3 id=\"brunei-bn\">Brunei (BN)</h3>\n<ul>\n<li>Payment &amp; shipping methods: Based on your Luxana settings</li>\n<li>Currency: <code>BND</code> → converted to <code>MYR</code></li>\n</ul>\n<hr>\n<h2 id=\"important-notes\">Important Notes</h2>\n<ol>\n<li><strong>Phone Formatting</strong>: Malaysian phones are auto-formatted (0123456789 → 60123456789)</li>\n<li><strong>Currency Auto-Detection</strong>: Currency is determined by <code>country</code> field (MY→MYR, SG→SGD, BN→BND)</li>\n<li><strong>Shipping Costs</strong>: If not provided, calculated automatically based on your company's shipping settings</li>\n<li><strong>COD Costs</strong>: If not provided, calculated automatically based on your company's COD settings</li>\n<li><strong>Product Total</strong>: Automatically calculated as: <code>selling_price - shipping_cost - cod_cost</code></li>\n<li><strong>Order Status</strong>: All orders start with <code>new</code> status</li>\n<li><strong>Bundles</strong>: Automatically expanded into individual items</li>\n<li><strong>Stock</strong>: NOT validated at order creation (validated during fulfillment)</li>\n</ol>\n<hr>\n<h2 id=\"getting-your-api-token\">Getting Your API Token</h2>\n<ol>\n<li>Log in to Luxana dashboard</li>\n<li>Go to <strong>Settings</strong> → <strong>Integrations</strong> → <strong>Custom API</strong></li>\n<li>Click <strong>Create Integration</strong></li>\n<li>Copy your API token (starts with <code>lux-</code>)</li>\n<li>Store securely - cannot be retrieved later</li>\n</ol>\n<hr>\n<h2 id=\"testing\">Testing</h2>\n<p>Use the health check endpoint to verify API availability:</p>\n<p><strong>GET</strong> <code>/v1/health</code></p>\n<p>No authentication required.</p>\n<p><strong>Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Custom API is running\",\n  \"version\": \"1.0.0\",\n  \"timestamp\": \"2025-10-31T08:12:05.803Z\"\n}\n</code></pre>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Luxana Custom API Documentation","slug":"luxana-custom-api-documentation"}],"owner":"41483551","collectionId":"24a413ca-60be-418f-b43c-6900692f9ee6","publishedId":"2sB3Wny3SG","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-10-31T12:38:15.000Z"},"item":[{"name":"Health Check","id":"5023ba25-6bc0-447c-acdf-ef42b11c5b96","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.luxana.my/custom-api/v1/health","description":"<p>Check if the API is running. No authentication required.</p>\n<p><strong>No authentication required</strong></p>\n<p><strong>Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"message\": \"Custom API is running\",\n  \"version\": \"1.0.0\",\n  \"timestamp\": \"2025-10-31T08:12:05.803Z\"\n}\n</code></pre>\n","urlObject":{"path":["custom-api","v1","health"],"host":["https://api.luxana.my"],"query":[],"variable":[]}},"response":[],"_postman_id":"5023ba25-6bc0-447c-acdf-ef42b11c5b96"},{"name":"Create Order - Minimal (Required Fields Only)","id":"dc8f60c3-eee3-45ab-bec7-7aa982040f32","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer lux-YOUR_API_TOKEN_HERE","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"John Doe\",\n  \"phone\": \"0123456789\",\n  \"address\": \"123 Main St\",\n  \"postcode\": \"50000\",\n  \"city\": \"Kuala Lumpur\",\n  \"state\": \"Selangor\",\n  \"country\": \"MY\",\n  \"items\": [\n    {\n      \"sku\": \"VA1\",\n      \"quantity\": 1\n    }\n  ],\n  \"selling_price\": 100.00\n}"},"url":"https://api.luxana.my/custom-api/v1/orders","description":"<h2 id=\"minimal-order-example\">Minimal Order Example</h2>\n<p>This example shows the <strong>minimum required fields</strong> to create an order.</p>\n<h3 id=\"required-fields-✅\">Required Fields ✅</h3>\n<ul>\n<li><code>name</code> - Customer name</li>\n<li><code>phone</code> - Customer phone (will be auto-formatted for MY)</li>\n<li><code>address</code> - Street address</li>\n<li><code>postcode</code> - Postal code</li>\n<li><code>city</code> - City name</li>\n<li><code>state</code> - State (full name or code like \"SGR\")</li>\n<li><code>country</code> - Country code (\"MY\", \"SG\", \"BN\")</li>\n<li><code>items</code> - Array with at least 1 item (sku + quantity)</li>\n<li><code>selling_price</code> - Total order price</li>\n</ul>\n<h3 id=\"auto-defaults-my\">Auto-Defaults (MY)</h3>\n<ul>\n<li>Payment method: <code>cod</code></li>\n<li>Shipping method: <code>ninjavan</code></li>\n<li>Currency: <code>MYR</code> (determined by country)</li>\n<li>Shipping/COD costs: Calculated by system</li>\n</ul>\n","urlObject":{"path":["custom-api","v1","orders"],"host":["https://api.luxana.my"],"query":[],"variable":[]}},"response":[],"_postman_id":"dc8f60c3-eee3-45ab-bec7-7aa982040f32"},{"name":"Create Order - Complete (All Fields)","id":"e8beca15-4f91-4a8a-91c8-cb900709568b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer lux-YOUR_API_TOKEN_HERE","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"John Doe\",\n  \"phone\": \"60123456789\",\n  \"email\": \"john@example.com\",\n  \"address\": \"123 Main St\",\n  \"address_2\": \"Unit 5A\",\n  \"postcode\": \"50000\",\n  \"city\": \"Kuala Lumpur\",\n  \"state\": \"SGR\",\n  \"country\": \"MY\",\n  \"payment_method\": \"cod\",\n  \"shipping_method\": \"ninjavan\",\n  \"shipping_cost\": 10.00,\n  \"cod_cost\": 5.00,\n  \"awb_note\": \"Fragile - Handle with care\",\n  \"private_note\": \"Customer prefers morning delivery\",\n  \"source_order_id\": \"YOUR-ORDER-2024-001\",\n  \"transaction_id\": \"TXN-456789\",\n  \"items\": [\n    {\n      \"sku\": \"VA1\",\n      \"quantity\": 2\n    },\n    {\n      \"sku\": \"IM1\",\n      \"quantity\": 1\n    }\n  ],\n  \"selling_price\": 150.00\n}"},"url":"https://api.luxana.my/custom-api/v1/orders","description":"<h2 id=\"complete-order-example\">Complete Order Example</h2>\n<p>This example includes <strong>all available fields</strong> (required + optional).</p>\n<h3 id=\"required-fields-✅\">Required Fields ✅</h3>\n<ul>\n<li>Customer info: <code>name</code>, <code>phone</code>, <code>address</code>, <code>postcode</code>, <code>city</code>, <code>state</code>, <code>country</code></li>\n<li>Order: <code>items</code> (array), <code>selling_price</code></li>\n</ul>\n<h3 id=\"optional-fields-shown-in-this-example\">Optional Fields (shown in this example)</h3>\n<ul>\n<li><code>email</code> - Customer email</li>\n<li><code>address_2</code> - Additional address line</li>\n<li><code>payment_method</code> - See enum list in collection docs</li>\n<li><code>shipping_method</code> - See enum list in collection docs</li>\n<li><code>shipping_cost</code> - Override auto-calculation</li>\n<li><code>cod_cost</code> - Override auto-calculation</li>\n<li><code>awb_note</code> - Note for courier/airway bill</li>\n<li><code>private_note</code> - Internal note (not shown to customer)</li>\n<li><code>source_order_id</code> - Your external system's order reference</li>\n<li><code>transaction_id</code> - Payment gateway transaction ID</li>\n</ul>\n<h3 id=\"currency\">Currency</h3>\n<p><strong>NOT included</strong> - Currency is auto-determined by <code>country</code> field:</p>\n<ul>\n<li>MY → MYR</li>\n<li>SG → SGD (auto-converted to MYR)</li>\n<li>BN → BND (auto-converted to MYR)</li>\n</ul>\n<h3 id=\"items\">Items</h3>\n<p>Each item requires:</p>\n<ul>\n<li><code>sku</code> - Must exist in your product catalog</li>\n<li><code>quantity</code> - Must be &gt; 0</li>\n</ul>\n<p>Supports both regular products and bundles.</p>\n","urlObject":{"path":["custom-api","v1","orders"],"host":["https://api.luxana.my"],"query":[],"variable":[]}},"response":[],"_postman_id":"e8beca15-4f91-4a8a-91c8-cb900709568b"},{"name":"Create Order - Singapore","id":"e565fb7d-4f93-4ef0-abcc-4a4a443718b8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer lux-YOUR_API_TOKEN_HERE","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Jane Tan\",\n  \"phone\": \"91234567\",\n  \"address\": \"10 Orchard Road\",\n  \"postcode\": \"238841\",\n  \"city\": \"Singapore\",\n  \"state\": \"Singapore\",\n  \"country\": \"SG\",\n  \"items\": [\n    {\n      \"sku\": \"VA1\",\n      \"quantity\": 1\n    }\n  ],\n  \"selling_price\": 50.00\n}"},"url":"https://api.luxana.my/custom-api/v1/orders","description":"<h2 id=\"singapore-order-example\">Singapore Order Example</h2>\n<h3 id=\"country-specific-behavior\">Country-Specific Behavior</h3>\n<p><strong>Country:</strong> <code>SG</code></p>\n<p><strong>Auto-Defaults:</strong></p>\n<ul>\n<li>Payment method: Company-configured Singapore default (or <code>cod</code>)</li>\n<li>Shipping method: Company-configured Singapore default (or <code>ninjavan</code>)</li>\n<li>Currency: <code>SGD</code> (auto-detected from country)</li>\n<li>Exchange rate: Company-configured (default: 3.5)</li>\n</ul>\n<p><strong>Currency Conversion:</strong></p>\n<ul>\n<li>You send: <code>selling_price: 50.00</code> with <code>country: SG</code></li>\n<li>System automatically:<ul>\n<li>Detects currency as SGD</li>\n<li>Converts to MYR: 50 × 3.5 = 175.00</li>\n<li>Stores both amounts</li>\n</ul>\n</li>\n</ul>\n<p><strong>Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"provider\": \"Luxana API v1\",\n  \"data\": {\n    \"order_id\": 141601,\n    \"selling_price\": 175,\n    \"foreign_selling_price\": 50,\n    \"currency\": \"SGD\",\n    \"exchange_rate_used\": 3.5\n  }\n}\n</code></pre>\n<p><strong>⚠️ Important:</strong> </p>\n<ul>\n<li>Do NOT send <code>currency</code> field - it's auto-determined from <code>country</code></li>\n<li><code>selling_price</code> should be in the local currency (SGD for Singapore)</li>\n<li>System handles all conversions automatically</li>\n</ul>\n","urlObject":{"path":["custom-api","v1","orders"],"host":["https://api.luxana.my"],"query":[],"variable":[]}},"response":[],"_postman_id":"e565fb7d-4f93-4ef0-abcc-4a4a443718b8"},{"name":"Create Order - Multiple Items","id":"9412c215-5d2b-4a60-b49e-4523909aec9e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer lux-YOUR_API_TOKEN_HERE","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Ahmad Abdullah\",\n  \"phone\": \"0198765432\",\n  \"address\": \"456 Jalan Ampang\",\n  \"postcode\": \"50450\",\n  \"city\": \"Kuala Lumpur\",\n  \"state\": \"KUL\",\n  \"country\": \"MY\",\n  \"items\": [\n    {\n      \"sku\": \"VA1\",\n      \"quantity\": 3\n    },\n    {\n      \"sku\": \"IM1\",\n      \"quantity\": 2\n    },\n    {\n      \"sku\": \"BUNDLE-01\",\n      \"quantity\": 1\n    }\n  ],\n  \"selling_price\": 450.00,\n  \"source_order_id\": \"SHOP-2024-5678\"\n}"},"url":"https://api.luxana.my/custom-api/v1/orders","description":"<h2 id=\"multiple-items-example\">Multiple Items Example</h2>\n<h3 id=\"items-array\">Items Array</h3>\n<p>You can include:</p>\n<ul>\n<li><strong>Multiple product variations</strong> (by SKU)</li>\n<li><strong>Bundles</strong> (automatically expanded to individual items)</li>\n<li><strong>Different quantities</strong> per item</li>\n</ul>\n<h3 id=\"example\">Example:</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"items\": [\n  { \"sku\": \"VA1\", \"quantity\": 3 },      // 3x Product VA1\n  { \"sku\": \"IM1\", \"quantity\": 2 },      // 2x Product IM1  \n  { \"sku\": \"BUNDLE-01\", \"quantity\": 1 } // 1x Bundle\n]\n</code></pre>\n<h3 id=\"important-notes\">Important Notes:</h3>\n<ol>\n<li><p><strong>SKU Validation</strong></p>\n<ul>\n<li>Each SKU must exist in your product catalog</li>\n<li>Supports both variations and bundles</li>\n<li>Invalid SKU = 400 error</li>\n</ul>\n</li>\n<li><p><strong>Bundles</strong></p>\n<ul>\n<li>Automatically expanded to individual items</li>\n<li>Bundle price is used for the order</li>\n</ul>\n</li>\n<li><p><strong>Stock</strong></p>\n<ul>\n<li>NOT validated at order creation</li>\n<li>Validated during fulfillment/picking</li>\n</ul>\n</li>\n<li><p><strong>Pricing</strong></p>\n<ul>\n<li><code>selling_price</code> should be your total (including all items)</li>\n<li>System calculates per-item allocation automatically</li>\n</ul>\n</li>\n</ol>\n","urlObject":{"path":["custom-api","v1","orders"],"host":["https://api.luxana.my"],"query":[],"variable":[]}},"response":[],"_postman_id":"9412c215-5d2b-4a60-b49e-4523909aec9e"}],"variable":[{"key":"base_url","value":"https://api.luxana.my","type":"string"},{"key":"api_token","value":"lux-YOUR_API_TOKEN_HERE","type":"string"}]}