# Shipping Details How we handle shipping in KCO. ## How it is done There are several ways shipping can be added to an order. ### Using the same address for billing and shipping Creating an order without specifying the `options.allow_separate_shipping_address` property will not display the shipping section in the checkout. The shipping address will be the same as the billing address. ```json { "purchase_country": "GB", "purchase_currency": "GBP", "locale": "en-GB", "order_amount": 50000, "order_tax_amount": 4545, "order_lines": [ { "type": "physical", "reference": "19-402-USA", ``` ### Allowing a separate shipping address An order created with `allow_separate_shipping_address` set to `true` will allow the consumer to enter a separate shipping address. ```json "options": { "allow_separate_shipping_address": true } ``` ### Sending shipping options Merchants can provide KCO with shipping options to present to the consumer using the `shipping_options` property. ```json "shipping_options": [ { "id": "free", "name": "Free Shipping", "description": "Delivers in 5–7 days", "price": 0, "tax_amount": 0, "tax_rate": 0, "shipping_method": "Home", "preselected": true }, { "id": "pickup", "name": "Pick up at closest store", "description": "Available within 2–3 days", "price": 399, "tax_amount": 30, "tax_rate": 825, "shipping_method": "PickUpStore" } ] ``` ### Allowing separate shipping & sending shipping options Specifying both `options.allow_separate_shipping_address` and `shipping_options` allows consumers to choose a shipping option and a separate shipping address. ```json "options": { "allow_separate_shipping_address": true }, "shipping_options": [ { "id": "free", "name": "Free Shipping", "description": "Delivers in 5–7 days", "price": 0, "tax_amount": 0, "tax_rate": 0, "shipping_method": "Home", "preselected": true }, { "id": "pickup", "name": "Pick up at closest store", "description": "Available within 2–3 days", "price": 399, "tax_amount": 30, "tax_rate": 825, "shipping_method": "PickUpStore" } ] ``` ### Shipping option update callback Use a `shipping_option_update` URL for server-side callbacks when consumers change shipping options. In this case, the shipping option cost is not automatically added to `order_lines` or `order_total`. ### Kustom Shipping Assistant #### Using a TMS For use of a TMS and how to set up [KSA - Kustom Shipping Assistant](/contents/checkout/shipping-assistant/overview). More details and a Checkout integration section are available.