--- displayed_sidebar: jsClientSidebar slug: /references/js-client/AdminDraftOrdersResource --- import ParameterTypes from "@site/src/components/ParameterTypes" # AdminDraftOrdersResource This class is used to send requests to [Admin Draft Order API Routes](https://docs.medusajs.com/api/admin#draft-orders). All its method are available in the JS Client under the `medusa.admin.draftOrders` property. All methods in this class require [user authentication](AdminAuthResource.mdx#createsession). A draft order is an order created manually by the admin. It allows admins to create orders without direct involvement from the customer. Related Guide: [How to manage draft orders](https://docs.medusajs.com/modules/orders/admin/manage-draft-orders). ## Methods ### addLineItem Create a Line Item in the Draft Order. #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders .addLineItem(draftOrderId, { quantity: 1, }) .then(({ draft_order }) => { console.log(draft_order.id) }) ``` #### Parameters `", "description": "The optional key-value map with additional details about the Line Item.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "quantity", "type": "`number`", "description": "The quantity of the line item.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "title", "type": "`string`", "description": "The title of the line item if `variant\\_id` is not provided.", "optional": true, "defaultValue": "Custom item", "expandable": false, "children": [] }, { "name": "unit_price", "type": "`number`", "description": "The custom price of the line item. If a `variant\\_id` is supplied, the price provided here will override the variant's price.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "variant_id", "type": "`string`", "description": "The ID of the Product Variant associated with the line item. If the line item is custom, the `variant\\_id` should be omitted.", "optional": true, "defaultValue": "", "expandable": false, "children": [] } ] }, { "name": "customHeaders", "type": "`Record`", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns `", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification_order", "type": "`boolean`", "description": "Whether to send the customer notifications regarding order updates.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "order", "type": "[Order](../internal/classes/internal.Order.mdx)", "description": "The details of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "order_id", "type": "`string`", "description": "The ID of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "status", "type": "[DraftOrderStatus](../internal/enums/internal.internal.DraftOrderStatus.mdx)", "description": "The status of the draft order. It's changed to `completed` when it's transformed to an order.", "optional": false, "defaultValue": "open", "expandable": false, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} /> ___ ### create Create a Draft Order. A draft order is not transformed into an order until payment is captured. #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders .create({ email: "user@example.com", region_id, items: [ { quantity: 1, }, ], shipping_methods: [ { option_id, }, ], }) .then(({ draft_order }) => { console.log(draft_order.id) }) ``` #### Parameters `", "description": "The optional key-value map with additional details about the line item.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "quantity", "type": "`number`", "description": "The quantity of the line item.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "title", "type": "`string`", "description": "The title of the line item if `variant\\_id` is not provided.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "unit_price", "type": "`number`", "description": "The custom price of the line item. If a `variant\\_id` is supplied, the price provided here will override the variant's price.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "variant_id", "type": "`string`", "description": "The ID of the Product Variant associated with the line item. If the line item is custom, the `variant\\_id` should be omitted.", "optional": true, "defaultValue": "", "expandable": false, "children": [] } ] }, { "name": "metadata", "type": "`Record`", "description": "The optional key-value map with additional details about the Draft Order.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification_order", "type": "`boolean`", "description": "An optional flag passed to the resulting order that indicates whether the customer should receive notifications about order updates.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "region_id", "type": "`string`", "description": "The ID of the region for the draft order", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "shipping_address", "type": "`string` \\| [AddressPayload](../internal/classes/internal.AddressPayload.mdx)", "description": "The Address to be used for shipping purposes.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "shipping_methods", "type": "[ShippingMethod](../internal/classes/internal.ShippingMethod.mdx)[]", "description": "The shipping methods for the draft order", "optional": false, "defaultValue": "", "expandable": false, "children": [ { "name": "data", "type": "`Record`", "description": "The optional additional data needed for the shipping method", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "option_id", "type": "`string`", "description": "The ID of the shipping option in use", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "price", "type": "`number`", "description": "The price of the shipping method.", "optional": true, "defaultValue": "", "expandable": false, "children": [] } ] }, { "name": "status", "type": "`string`", "description": "The status of the draft order. The draft order's default status is `open`. It's changed to `completed` when its payment is marked as paid.", "optional": true, "defaultValue": "", "expandable": false, "children": [] } ] }, { "name": "customHeaders", "type": "`Record`", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns `", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification_order", "type": "`boolean`", "description": "Whether to send the customer notifications regarding order updates.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "order", "type": "[Order](../internal/classes/internal.Order.mdx)", "description": "The details of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "order_id", "type": "`string`", "description": "The ID of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "status", "type": "[DraftOrderStatus](../internal/enums/internal.internal.DraftOrderStatus.mdx)", "description": "The status of the draft order. It's changed to `completed` when it's transformed to an order.", "optional": false, "defaultValue": "open", "expandable": false, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} /> ___ ### delete Delete a Draft Order #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders .delete(draftOrderId) .then(({ id, object, deleted }) => { console.log(id) }) ``` #### Parameters `", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns ___ ### list Retrieve an list of Draft Orders. The draft orders can be filtered by parameters such as `query`. The draft orders can also paginated. #### Example To list draft orders: ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders .list() .then(({ draft_orders, limit, offset, count }) => { console.log(draft_orders.length) }) ``` By default, only the first `50` records are retrieved. You can control pagination by specifying the `limit` and `offset` properties: ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders .list({ limit, offset, }) .then(({ draft_orders, limit, offset, count }) => { console.log(draft_orders.length) }) ``` #### Parameters `", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns `", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification_order", "type": "`boolean`", "description": "Whether to send the customer notifications regarding order updates.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "order", "type": "[Order](../internal/classes/internal.Order.mdx)", "description": "The details of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "order_id", "type": "`string`", "description": "The ID of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "status", "type": "[DraftOrderStatus](../internal/enums/internal.internal.DraftOrderStatus.mdx)", "description": "The status of the draft order. It's changed to `completed` when it's transformed to an order.", "optional": false, "defaultValue": "open", "expandable": false, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} /> ___ ### markPaid Capture the draft order's payment. This will also set the draft order's status to `completed` and create an order from the draft order. The payment is captured through Medusa's system payment, which is manual payment that isn't integrated with any third-party payment provider. It is assumed that the payment capturing is handled manually by the admin. #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.markPaid(draftOrderId).then(({ order }) => { console.log(order.id) }) ``` #### Parameters `", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns `", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification", "type": "`boolean`", "description": "Flag for describing whether or not notifications related to this should be send.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "paid_total", "type": "`number`", "description": "The total amount paid", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "payment_status", "type": "[PaymentStatus](../internal/enums/internal.PaymentStatus.mdx)", "description": "The order's payment status", "optional": false, "defaultValue": "not_paid", "expandable": false, "children": [] }, { "name": "payments", "type": "[Payment](../internal/classes/internal.Payment.mdx)[]", "description": "The details of the payments used in the order.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "raw_discount_total", "type": "`number`", "description": "The total of discount", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "refundable_amount", "type": "`number`", "description": "The amount that can be refunded", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "refunded_total", "type": "`number`", "description": "The total amount refunded if the order is returned.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "refunds", "type": "[Refund](../internal/classes/internal.Refund.mdx)[]", "description": "The details of the refunds created for the order.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "region", "type": "[Region](../internal/classes/internal.Region.mdx)", "description": "The details of the region this order was created in.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "region_id", "type": "`string`", "description": "The ID of the region this order was created in.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "returnable_items", "type": "[LineItem](../internal/classes/internal.LineItem.mdx)[]", "description": "The details of the line items that are returnable as part of the order, swaps, or claims", "optional": true, "defaultValue": "", "expandable": true, "children": [] }, { "name": "returns", "type": "[Return](../internal/classes/internal.Return.mdx)[]", "description": "The details of the returns created for the order.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "sales_channel", "type": "[SalesChannel](../internal/classes/internal.SalesChannel.mdx)", "description": "The details of the sales channel this order belongs to.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "sales_channel_id", "type": "`null` \\| `string`", "description": "The ID of the sales channel this order belongs to.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "shipping_address", "type": "[Address](../internal/classes/internal.Address.mdx)", "description": "The details of the shipping address associated with the order.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "shipping_address_id", "type": "`string`", "description": "The ID of the shipping address associated with the order", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "shipping_methods", "type": "[ShippingMethod](../internal/classes/internal.ShippingMethod-4.mdx)[]", "description": "The details of the shipping methods used in the order.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "shipping_tax_total", "type": "`null` \\| `number`", "description": "The tax total applied on shipping", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "shipping_total", "type": "`number`", "description": "The total of shipping", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "status", "type": "[OrderStatus](../internal/enums/internal.OrderStatus.mdx)", "description": "The order's status", "optional": false, "defaultValue": "pending", "expandable": false, "children": [] }, { "name": "subtotal", "type": "`number`", "description": "The subtotal of the order", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "swaps", "type": "[Swap](../internal/classes/internal.Swap.mdx)[]", "description": "The details of the swaps created for the order.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "tax_rate", "type": "`null` \\| `number`", "description": "The order's tax rate", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "tax_total", "type": "`null` \\| `number`", "description": "The total of tax", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "total", "type": "`number`", "description": "The total amount of the order", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} /> ___ ### removeLineItem Delete a Line Item from a Draft Order. #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders .removeLineItem(draftOrderId, itemId) .then(({ draft_order }) => { console.log(draft_order.id) }) ``` #### Parameters `", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns `", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification_order", "type": "`boolean`", "description": "Whether to send the customer notifications regarding order updates.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "order", "type": "[Order](../internal/classes/internal.Order.mdx)", "description": "The details of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "order_id", "type": "`string`", "description": "The ID of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "status", "type": "[DraftOrderStatus](../internal/enums/internal.internal.DraftOrderStatus.mdx)", "description": "The status of the draft order. It's changed to `completed` when it's transformed to an order.", "optional": false, "defaultValue": "open", "expandable": false, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} /> ___ ### retrieve Retrieve a Draft Order's details. #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders.retrieve(draftOrderId).then(({ draft_order }) => { console.log(draft_order.id) }) ``` #### Parameters `", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns `", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification_order", "type": "`boolean`", "description": "Whether to send the customer notifications regarding order updates.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "order", "type": "[Order](../internal/classes/internal.Order.mdx)", "description": "The details of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "order_id", "type": "`string`", "description": "The ID of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "status", "type": "[DraftOrderStatus](../internal/enums/internal.internal.DraftOrderStatus.mdx)", "description": "The status of the draft order. It's changed to `completed` when it's transformed to an order.", "optional": false, "defaultValue": "open", "expandable": false, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} /> ___ ### update Update a Draft Order's details. #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders .update(draftOrderId, { email: "user@example.com", }) .then(({ draft_order }) => { console.log(draft_order.id) }) ``` #### Parameters `", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns `", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification_order", "type": "`boolean`", "description": "Whether to send the customer notifications regarding order updates.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "order", "type": "[Order](../internal/classes/internal.Order.mdx)", "description": "The details of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "order_id", "type": "`string`", "description": "The ID of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "status", "type": "[DraftOrderStatus](../internal/enums/internal.internal.DraftOrderStatus.mdx)", "description": "The status of the draft order. It's changed to `completed` when it's transformed to an order.", "optional": false, "defaultValue": "open", "expandable": false, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} /> ___ ### updateLineItem Update a Line Item in a Draft Order. #### Example ```ts import Medusa from "@medusajs/medusa-js" const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 }) // must be previously logged in or use api token medusa.admin.draftOrders .updateLineItem(draftOrderId, lineId, { quantity: 1, }) .then(({ draft_order }) => { console.log(draft_order.id) }) ``` #### Parameters `", "description": "The optional key-value map with additional details about the Line Item.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "quantity", "type": "`number`", "description": "The quantity of the line item.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "title", "type": "`string`", "description": "The title of the line item if `variant\\_id` is not provided.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "unit_price", "type": "`number`", "description": "The custom price of the line item. If a `variant\\_id` is supplied, the price provided here will override the variant's price.", "optional": true, "defaultValue": "", "expandable": false, "children": [] } ] }, { "name": "customHeaders", "type": "`Record`", "description": "Custom headers to attach to the request.", "optional": false, "defaultValue": "{}", "expandable": false, "children": [] } ]} /> #### Returns `", "description": "An optional key-value map with additional details", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "no_notification_order", "type": "`boolean`", "description": "Whether to send the customer notifications regarding order updates.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "order", "type": "[Order](../internal/classes/internal.Order.mdx)", "description": "The details of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": true, "children": [] }, { "name": "order_id", "type": "`string`", "description": "The ID of the order created from the draft order when its payment is captured.", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "status", "type": "[DraftOrderStatus](../internal/enums/internal.internal.DraftOrderStatus.mdx)", "description": "The status of the draft order. It's changed to `completed` when it's transformed to an order.", "optional": false, "defaultValue": "open", "expandable": false, "children": [] }, { "name": "updated_at", "type": "`Date`", "description": "The date with timezone at which the resource was updated.", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ] } ] } ] } ]} />