Skip to main content
object

Requires read_draft_orders access scope.

An order that a merchant creates on behalf of a customer. Draft orders are useful for merchants that need to do the following tasks:

  • Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created.
  • Send invoices to customers to pay with a secure checkout link.
  • Use custom items to represent additional costs or products that aren't displayed in a shop's inventory.
  • Re-create orders manually from active sales channels.
  • Sell products at discount or wholesale rates.
  • Take pre-orders.

For draft orders in multiple currencies presentment_money is the source of truth for what a customer is going to be charged and shop_money is an estimate of what the merchant might receive in their shop currency.

Caution: Only use this data if it's required for your app's functionality. Shopify will restrict access to scopes for apps that don't have a legitimate use for the associated data.

Draft orders created on or after April 1, 2025 will be automatically purged after one year of inactivity.

Anchor to Fields and connectionsFields and connections

Anchor to acceptAutomaticDiscountsacceptAutomaticDiscounts
•Boolean

Whether or not to accept automatic discounts on the draft order during calculation. If false, only discount codes and custom draft order discounts (see appliedDiscount) will be applied. If true, eligible automatic discounts will be applied in addition to discount codes and custom draft order discounts.

Anchor to allowDiscountCodesInCheckoutallowDiscountCodesInCheckout
•Boolean!non-null

Whether discount codes are allowed during checkout of this draft order.

Anchor to allVariantPricesOverriddenallVariantPricesOverridden
•Boolean!non-null

Whether all variant prices have been overridden.

Anchor to anyVariantPricesOverriddenanyVariantPricesOverridden
•Boolean!non-null

Whether any variant prices have been overridden.

•DraftOrderAppliedDiscount

The custom order-level discount applied.

•MailingAddress

The billing address of the customer.

Anchor to billingAddressMatchesShippingAddressbillingAddressMatchesShippingAddress
•Boolean!non-null

Whether the billing address matches the shipping address.

•DateTime

The date and time when the draft order was converted to a new order, and had it's status changed to Completed.

•DateTime!non-null

The date and time when the draft order was created in Shopify.

•CurrencyCode!non-null

The shop currency used for calculation.

•[Attribute!]!non-null

The custom information added to the draft order on behalf of the customer.

•Customer

The customer who will be sent an invoice.

•String!non-null

A default cursor that returns the single next record, sorted ascending by ID.

•[String!]!non-null

All discount codes applied.

•String

The email address of the customer, which is used to send notifications.

•EventConnection!non-null

The list of events associated with the draft order.

•Boolean!non-null

Whether the merchant has added timeline comments to the draft order.

•ID!non-null

A globally-unique ID.

Anchor to invoiceEmailTemplateSubjectinvoiceEmailTemplateSubject
•String!non-null

The subject defined for the draft invoice email template.

•DateTime

The date and time when the invoice was last emailed to the customer.

•URL

The link to the checkout, which is sent to the customer in the invoice email.

•UnsignedInt64!non-null

The ID of the corresponding resource in the REST Admin API.

•DraftOrderLineItemConnection!non-null

The list of the line items in the draft order.

Anchor to lineItemsSubtotalPricelineItemsSubtotalPrice
•MoneyBag!non-null

A subtotal of the line items and corresponding discounts, excluding include shipping charges, shipping discounts, taxes, or order discounts.

•LocalizedFieldConnection!non-null

List of localized fields for the resource.

•Metafield

A custom field, including its namespace and key, that's associated with a Shopify resource for the purposes of adding and storing additional information.

•MetafieldConnection!non-null

A list of custom fields that a merchant associates with a Shopify resource.

•String!non-null

The identifier for the draft order, which is unique within the store. For example, #D1223.

•String

The text from an optional note attached to the draft order.

•Order

The order that was created from the draft order.

•PaymentTerms

The associated payment terms for this draft order.

•String

The assigned phone number.

•[DraftOrderPlatformDiscount!]!non-null

The list of platform discounts applied.

•String

The purchase order number.

Anchor to presentmentCurrencyCodepresentmentCurrencyCode
•CurrencyCode!non-null

The payment currency used for calculation.

•PurchasingEntity

The purchasing entity.

•Boolean!non-null

Whether the draft order is ready and can be completed. Draft orders might have asynchronous operations that can take time to finish.

Anchor to reserveInventoryUntilreserveInventoryUntil
•DateTime

The time after which inventory will automatically be restocked.

•MailingAddress

The shipping address of the customer.

•ShippingLine

The line item containing the shipping information and costs.

•DraftOrderStatus!non-null

The status of the draft order.

•MoneyBag!non-null

The subtotal, of the line items and their discounts, excluding shipping charges, shipping discounts, and taxes.

•[String!]!non-null

The comma separated list of tags associated with the draft order. Updating tags overwrites any existing tags that were previously added to the draft order. To add new tags without overwriting existing tags, use the tagsAdd mutation.

•Boolean!non-null

Whether the line item prices include taxes.

•Boolean!non-null

Whether the draft order is tax exempt.

•[TaxLine!]!non-null

The list of of taxes lines charged for each line item and shipping line.

•MoneyBag!non-null

Total discounts.

Anchor to totalLineItemsPriceSettotalLineItemsPriceSet
•MoneyBag!non-null

Total price of line items.

•MoneyBag!non-null

The total price, includes taxes, shipping charges, and discounts.

Anchor to totalQuantityOfLineItemstotalQuantityOfLineItems
•Int!non-null

The sum of individual line item quantities. If the draft order has bundle items, this is the sum containing the quantities of individual items in the bundle.

Anchor to totalShippingPriceSettotalShippingPriceSet
•MoneyBag!non-null

The total shipping price.

•MoneyBag!non-null

The total tax.

•UnsignedInt64!non-null

The total weight in grams of the draft order.

Anchor to transformerFingerprinttransformerFingerprint
•String

Fingerprint of the current cart. In order to have bundles work, the fingerprint must be passed to each request as it was previously returned, unmodified.

•DateTime!non-null

The date and time when the draft order was last changed. The format is YYYY-MM-DD HH:mm:ss. For example, 2016-02-05 17:04:01.

•Boolean!non-null

Whether the draft order will be visible to the customer on the self-serve portal.

•[DraftOrderWarning!]!non-null

The list of warnings raised while calculating.

Deprecated fields and connections

Anchor to localizationExtensionslocalizationExtensions
•LocalizationExtensionConnection!non-nullDeprecated
•String!non-nullDeprecated
Anchor to marketRegionCountryCodemarketRegionCountryCode
•CountryCode!non-nullDeprecated
•Money!non-nullDeprecated
•Money!non-nullDeprecated
•Money!non-nullDeprecated
•Money!non-nullDeprecated

Was this section helpful?

•query

Returns a DraftOrder resource by ID.

•query

List of saved draft orders.


Was this section helpful?

•mutation

Completes a draft order and converts it into a regular order. The order appears in the merchant's orders list, and the customer can be notified about their order.

Use the draftOrderComplete mutation when a merchant is ready to finalize a draft order and create a real order in their store. The draftOrderComplete mutation also supports sales channel attribution for tracking order sources using the sourceName argument, cart validation controls for app integrations, and detailed error reporting for failed completions.

You can complete a draft order with different payment scenarios:

  • Mark the order as paid immediately.
  • Set the order as payment pending using payment terms.
  • Specify a custom payment amount.
  • Select a specific payment gateway.

Note

When completing a draft order, inventory is reserved for the items in the order. This means the items will no longer be available for other customers to purchase. Make sure to verify inventory availability before completing the draft order.


Arguments

•ID!required

The draft order to complete.

•ID

The gateway for the completed draft order.

•BooleanDeprecatedDefault:false
•String

A channel definition handle used for sales channel attribution.


Fields

•DraftOrder

The completed draft order.

•[UserError!]!non-null

The list of errors that occurred from executing the mutation.

•mutation

Creates a draft order with attributes such as customer information, line items, shipping and billing addresses, and payment terms. Draft orders are useful for merchants that need to:

  • Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created.
  • Send invoices to customers with a secure checkout link.
  • Use custom items to represent additional costs or products not in inventory.
  • Re-create orders manually from active sales channels.
  • Sell products at discount or wholesale rates.
  • Take pre-orders.

After creating a draft order, you can:


Note

When you create a draft order, you can't reserve or hold inventory for the items in the order by default. However, you can reserve inventory using the reserveInventoryUntil input.


Arguments

•DraftOrderInput!required

The fields used to create the draft order.


Fields

•DraftOrder

The created draft order.

•[UserError!]!non-null

The list of errors that occurred from executing the mutation.

•mutation

Creates a draft order from order.

Arguments

•ID!required

Specifies the order's id that we create the draft order from.


Fields

•DraftOrder

The created draft order.

•[UserError!]!non-null

The list of errors that occurred from executing the mutation.

•mutation

Duplicates a draft order.

Arguments

•IDDeprecated
•ID

The ID of the draft order to duplicate.


Fields

•DraftOrder

The newly duplicated draft order.

•[UserError!]!non-null

The list of errors that occurred from executing the mutation.

•mutation

Sends an email invoice for a draft order.

Arguments

•EmailInput

Specifies the draft order invoice email fields.

•ID!required

Specifies the draft order to send the invoice for.


Fields

•DraftOrder

The draft order an invoice email is sent for.

•[UserError!]!non-null

The list of errors that occurred from executing the mutation.

•mutation

Updates a draft order.

If a checkout has been started for a draft order, any update to the draft will unlink the checkout. Checkouts are created but not immediately completed when opening the merchant credit card modal in the admin, and when a buyer opens the invoice URL. This is usually fine, but there is an edge case where a checkout is in progress and the draft is updated before the checkout completes. This will not interfere with the checkout and order creation, but if the link from draft to checkout is broken the draft will remain open even after the order is created.

Arguments

•ID!required

Specifies the draft order to update.

•DraftOrderInput!required

The draft order properties to update.


Fields

•DraftOrder

The updated draft order.

•[UserError!]!non-null

The list of errors that occurred from executing the mutation.


Was this section helpful?

OSZAR »