# draftOrderCalculate - admin - MUTATION
Version: 2024-04

## Description
Calculates the properties of a draft order. Useful for determining information
such as total taxes or price without actually creating a draft order.

### Access Scopes
`write_draft_orders` access scope.


## Arguments
* [input](/docs/api/admin/2024-04/input-objects/DraftOrderInput): DraftOrderInput! - The fields for the draft order.


## Returns
* [calculatedDraftOrder](/docs/api/admin/2024-04/objects/CalculatedDraftOrder): CalculatedDraftOrder The calculated properties for a draft order.
* [userErrors](/docs/api/admin/2024-04/objects/UserError): UserError! The list of errors that occurred from executing the mutation.


## Examples
### Calculate properties of a draft order
Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-04/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation CalculateDraftOrder($input: DraftOrderInput!) { draftOrderCalculate(input: $input) { calculatedDraftOrder { customer { id email firstName numberOfOrders defaultAddress { id firstName lastName address1 address2 city provinceCode zip countryCodeV2 } taxExempt } billingAddressMatchesShippingAddress totalPriceSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } lineItems { appliedDiscount { amountSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } value valueType description } discountedTotalSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } product { id title } quantity requiresShipping sku taxable title variantTitle variant { id } weight { value unit } } totalTaxSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } totalDiscountsSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } shippingLine { id custom shippingRateHandle title originalPriceSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } } presentmentCurrencyCode } userErrors { field message } } }\",\n \"variables\": {\n    \"input\": {\n      \"appliedDiscount\": {\n        \"description\": \"Loyalty\",\n        \"value\": 5,\n        \"valueType\": \"FIXED_AMOUNT\"\n      },\n      \"billingAddress\": {\n        \"address1\": \"123 Amoebobacterieae St\",\n        \"address2\": \"\",\n        \"city\": \"Ottawa\",\n        \"company\": \"\",\n        \"countryCode\": \"CA\",\n        \"firstName\": \"Bob\",\n        \"lastName\": \"Bobsen\",\n        \"phone\": \"\",\n        \"provinceCode\": \"ON\",\n        \"zip\": \"K2P0V6\"\n      },\n      \"customerId\": \"gid://shopify/Customer/544365967\",\n      \"lineItems\": [\n        {\n          \"appliedDiscount\": {\n            \"description\": \"Promo\",\n            \"value\": 5,\n            \"valueType\": \"FIXED_AMOUNT\"\n          },\n          \"customAttributes\": [],\n          \"originalUnitPrice\": 10,\n          \"quantity\": 1,\n          \"requiresShipping\": true,\n          \"sku\": \"draft-151\",\n          \"taxable\": true,\n          \"title\": \"151cm\",\n          \"variantId\": \"gid://shopify/ProductVariant/43729076\",\n          \"weight\": {\n            \"unit\": \"KILOGRAMS\",\n            \"value\": 1\n          }\n        },\n        {\n          \"appliedDiscount\": null,\n          \"customAttributes\": [],\n          \"originalUnitPrice\": \"10.0\",\n          \"quantity\": 2,\n          \"requiresShipping\": true,\n          \"sku\": null,\n          \"taxable\": true,\n          \"title\": \"Spring Promo Item\",\n          \"variantId\": null,\n          \"weight\": {\n            \"unit\": \"KILOGRAMS\",\n            \"value\": 1.2\n          }\n        }\n      ],\n      \"presentmentCurrencyCode\": \"CAD\",\n      \"shippingAddress\": {\n        \"address1\": \"\",\n        \"address2\": \"\",\n        \"city\": \"\",\n        \"company\": \"\",\n        \"countryCode\": \"CA\",\n        \"firstName\": \"Bob\",\n        \"lastName\": \"Smith\",\n        \"phone\": \"\",\n        \"provinceCode\": \"AB\",\n        \"zip\": \"\"\n      },\n      \"shippingLine\": {\n        \"price\": \"0.0\",\n        \"title\": \"Free shipping\"\n      },\n      \"taxExempt\": false\n    }\n  }\n}'\n"
Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n  data: {\n    \"query\": `mutation CalculateDraftOrder($input: DraftOrderInput!) {\n      draftOrderCalculate(input: $input) {\n        calculatedDraftOrder {\n          customer {\n            id\n            email\n            firstName\n            numberOfOrders\n            defaultAddress {\n              id\n              firstName\n              lastName\n              address1\n              address2\n              city\n              provinceCode\n              zip\n              countryCodeV2\n            }\n            taxExempt\n          }\n          billingAddressMatchesShippingAddress\n          totalPriceSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          lineItems {\n            appliedDiscount {\n              amountSet {\n                presentmentMoney {\n                  amount\n                  currencyCode\n                }\n                shopMoney {\n                  amount\n                  currencyCode\n                }\n              }\n              value\n              valueType\n              description\n            }\n            discountedTotalSet {\n              presentmentMoney {\n                amount\n                currencyCode\n              }\n              shopMoney {\n                amount\n                currencyCode\n              }\n            }\n            product {\n              id\n              title\n            }\n            quantity\n            requiresShipping\n            sku\n            taxable\n            title\n            variantTitle\n            variant {\n              id\n            }\n            weight {\n              value\n              unit\n            }\n          }\n          totalTaxSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          totalDiscountsSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          shippingLine {\n            id\n            custom\n            shippingRateHandle\n            title\n            originalPriceSet {\n              presentmentMoney {\n                amount\n                currencyCode\n              }\n              shopMoney {\n                amount\n                currencyCode\n              }\n            }\n          }\n          presentmentCurrencyCode\n        }\n        userErrors {\n          field\n          message\n        }\n      }\n    }`,\n    \"variables\": {\n      \"input\": {\n        \"appliedDiscount\": {\n          \"description\": \"Loyalty\",\n          \"value\": 5,\n          \"valueType\": \"FIXED_AMOUNT\"\n        },\n        \"billingAddress\": {\n          \"address1\": \"123 Amoebobacterieae St\",\n          \"address2\": \"\",\n          \"city\": \"Ottawa\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Bobsen\",\n          \"phone\": \"\",\n          \"provinceCode\": \"ON\",\n          \"zip\": \"K2P0V6\"\n        },\n        \"customerId\": \"gid://shopify/Customer/544365967\",\n        \"lineItems\": [\n          {\n            \"appliedDiscount\": {\n              \"description\": \"Promo\",\n              \"value\": 5,\n              \"valueType\": \"FIXED_AMOUNT\"\n            },\n            \"customAttributes\": [],\n            \"originalUnitPrice\": 10,\n            \"quantity\": 1,\n            \"requiresShipping\": true,\n            \"sku\": \"draft-151\",\n            \"taxable\": true,\n            \"title\": \"151cm\",\n            \"variantId\": \"gid://shopify/ProductVariant/43729076\",\n            \"weight\": {\n              \"unit\": \"KILOGRAMS\",\n              \"value\": 1\n            }\n          },\n          {\n            \"appliedDiscount\": null,\n            \"customAttributes\": [],\n            \"originalUnitPrice\": \"10.0\",\n            \"quantity\": 2,\n            \"requiresShipping\": true,\n            \"sku\": null,\n            \"taxable\": true,\n            \"title\": \"Spring Promo Item\",\n            \"variantId\": null,\n            \"weight\": {\n              \"unit\": \"KILOGRAMS\",\n              \"value\": 1.2\n            }\n          }\n        ],\n        \"presentmentCurrencyCode\": \"CAD\",\n        \"shippingAddress\": {\n          \"address1\": \"\",\n          \"address2\": \"\",\n          \"city\": \"\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Smith\",\n          \"phone\": \"\",\n          \"provinceCode\": \"AB\",\n          \"zip\": \"\"\n        },\n        \"shippingLine\": {\n          \"price\": \"0.0\",\n          \"title\": \"Free shipping\"\n        },\n        \"taxExempt\": false\n      }\n    },\n  },\n});\n"
Ruby example: "session = ShopifyAPI::Auth::Session.new(\n  shop: \"your-development-store.myshopify.com\",\n  access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n  session: session\n)\n\nquery = <<~QUERY\n  mutation CalculateDraftOrder($input: DraftOrderInput!) {\n    draftOrderCalculate(input: $input) {\n      calculatedDraftOrder {\n        customer {\n          id\n          email\n          firstName\n          numberOfOrders\n          defaultAddress {\n            id\n            firstName\n            lastName\n            address1\n            address2\n            city\n            provinceCode\n            zip\n            countryCodeV2\n          }\n          taxExempt\n        }\n        billingAddressMatchesShippingAddress\n        totalPriceSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        lineItems {\n          appliedDiscount {\n            amountSet {\n              presentmentMoney {\n                amount\n                currencyCode\n              }\n              shopMoney {\n                amount\n                currencyCode\n              }\n            }\n            value\n            valueType\n            description\n          }\n          discountedTotalSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          product {\n            id\n            title\n          }\n          quantity\n          requiresShipping\n          sku\n          taxable\n          title\n          variantTitle\n          variant {\n            id\n          }\n          weight {\n            value\n            unit\n          }\n        }\n        totalTaxSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        totalDiscountsSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        shippingLine {\n          id\n          custom\n          shippingRateHandle\n          title\n          originalPriceSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n        }\n        presentmentCurrencyCode\n      }\n      userErrors {\n        field\n        message\n      }\n    }\n  }\nQUERY\n\nvariables = {\n  \"input\": {\n    \"appliedDiscount\": {\n      \"description\": \"Loyalty\",\n      \"value\": 5,\n      \"valueType\": \"FIXED_AMOUNT\"\n    },\n    \"billingAddress\": {\n      \"address1\": \"123 Amoebobacterieae St\",\n      \"address2\": \"\",\n      \"city\": \"Ottawa\",\n      \"company\": \"\",\n      \"countryCode\": \"CA\",\n      \"firstName\": \"Bob\",\n      \"lastName\": \"Bobsen\",\n      \"phone\": \"\",\n      \"provinceCode\": \"ON\",\n      \"zip\": \"K2P0V6\"\n    },\n    \"customerId\": \"gid://shopify/Customer/544365967\",\n    \"lineItems\": [{\"appliedDiscount\"=>{\"description\"=>\"Promo\", \"value\"=>5, \"valueType\"=>\"FIXED_AMOUNT\"}, \"customAttributes\"=>[], \"originalUnitPrice\"=>10, \"quantity\"=>1, \"requiresShipping\"=>true, \"sku\"=>\"draft-151\", \"taxable\"=>true, \"title\"=>\"151cm\", \"variantId\"=>\"gid://shopify/ProductVariant/43729076\", \"weight\"=>{\"unit\"=>\"KILOGRAMS\", \"value\"=>1}}, {\"appliedDiscount\"=>nil, \"customAttributes\"=>[], \"originalUnitPrice\"=>\"10.0\", \"quantity\"=>2, \"requiresShipping\"=>true, \"sku\"=>nil, \"taxable\"=>true, \"title\"=>\"Spring Promo Item\", \"variantId\"=>nil, \"weight\"=>{\"unit\"=>\"KILOGRAMS\", \"value\"=>1.2}}],\n    \"presentmentCurrencyCode\": \"CAD\",\n    \"shippingAddress\": {\n      \"address1\": \"\",\n      \"address2\": \"\",\n      \"city\": \"\",\n      \"company\": \"\",\n      \"countryCode\": \"CA\",\n      \"firstName\": \"Bob\",\n      \"lastName\": \"Smith\",\n      \"phone\": \"\",\n      \"provinceCode\": \"AB\",\n      \"zip\": \"\"\n    },\n    \"shippingLine\": {\n      \"price\": \"0.0\",\n      \"title\": \"Free shipping\"\n    },\n    \"taxExempt\": false\n  }\n}\n\nresponse = client.query(query: query, variables: variables)\n" 
Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n  `#graphql\n  mutation CalculateDraftOrder($input: DraftOrderInput!) {\n    draftOrderCalculate(input: $input) {\n      calculatedDraftOrder {\n        customer {\n          id\n          email\n          firstName\n          numberOfOrders\n          defaultAddress {\n            id\n            firstName\n            lastName\n            address1\n            address2\n            city\n            provinceCode\n            zip\n            countryCodeV2\n          }\n          taxExempt\n        }\n        billingAddressMatchesShippingAddress\n        totalPriceSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        lineItems {\n          appliedDiscount {\n            amountSet {\n              presentmentMoney {\n                amount\n                currencyCode\n              }\n              shopMoney {\n                amount\n                currencyCode\n              }\n            }\n            value\n            valueType\n            description\n          }\n          discountedTotalSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          product {\n            id\n            title\n          }\n          quantity\n          requiresShipping\n          sku\n          taxable\n          title\n          variantTitle\n          variant {\n            id\n          }\n          weight {\n            value\n            unit\n          }\n        }\n        totalTaxSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        totalDiscountsSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        shippingLine {\n          id\n          custom\n          shippingRateHandle\n          title\n          originalPriceSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n        }\n        presentmentCurrencyCode\n      }\n      userErrors {\n        field\n        message\n      }\n    }\n  }`,\n  {\n    variables: {\n      \"input\": {\n        \"appliedDiscount\": {\n          \"description\": \"Loyalty\",\n          \"value\": 5,\n          \"valueType\": \"FIXED_AMOUNT\"\n        },\n        \"billingAddress\": {\n          \"address1\": \"123 Amoebobacterieae St\",\n          \"address2\": \"\",\n          \"city\": \"Ottawa\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Bobsen\",\n          \"phone\": \"\",\n          \"provinceCode\": \"ON\",\n          \"zip\": \"K2P0V6\"\n        },\n        \"customerId\": \"gid://shopify/Customer/544365967\",\n        \"lineItems\": [\n          {\n            \"appliedDiscount\": {\n              \"description\": \"Promo\",\n              \"value\": 5,\n              \"valueType\": \"FIXED_AMOUNT\"\n            },\n            \"customAttributes\": [],\n            \"originalUnitPrice\": 10,\n            \"quantity\": 1,\n            \"requiresShipping\": true,\n            \"sku\": \"draft-151\",\n            \"taxable\": true,\n            \"title\": \"151cm\",\n            \"variantId\": \"gid://shopify/ProductVariant/43729076\",\n            \"weight\": {\n              \"unit\": \"KILOGRAMS\",\n              \"value\": 1\n            }\n          },\n          {\n            \"appliedDiscount\": null,\n            \"customAttributes\": [],\n            \"originalUnitPrice\": \"10.0\",\n            \"quantity\": 2,\n            \"requiresShipping\": true,\n            \"sku\": null,\n            \"taxable\": true,\n            \"title\": \"Spring Promo Item\",\n            \"variantId\": null,\n            \"weight\": {\n              \"unit\": \"KILOGRAMS\",\n              \"value\": 1.2\n            }\n          }\n        ],\n        \"presentmentCurrencyCode\": \"CAD\",\n        \"shippingAddress\": {\n          \"address1\": \"\",\n          \"address2\": \"\",\n          \"city\": \"\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Smith\",\n          \"phone\": \"\",\n          \"provinceCode\": \"AB\",\n          \"zip\": \"\"\n        },\n        \"shippingLine\": {\n          \"price\": \"0.0\",\n          \"title\": \"Free shipping\"\n        },\n        \"taxExempt\": false\n      }\n    },\n  },\n);\n\nconst data = await response.json();\n"
Graphql query: "mutation CalculateDraftOrder($input: DraftOrderInput!) {\n  draftOrderCalculate(input: $input) {\n    calculatedDraftOrder {\n      customer {\n        id\n        email\n        firstName\n        numberOfOrders\n        defaultAddress {\n          id\n          firstName\n          lastName\n          address1\n          address2\n          city\n          provinceCode\n          zip\n          countryCodeV2\n        }\n        taxExempt\n      }\n      billingAddressMatchesShippingAddress\n      totalPriceSet {\n        presentmentMoney {\n          amount\n          currencyCode\n        }\n        shopMoney {\n          amount\n          currencyCode\n        }\n      }\n      lineItems {\n        appliedDiscount {\n          amountSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          value\n          valueType\n          description\n        }\n        discountedTotalSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        product {\n          id\n          title\n        }\n        quantity\n        requiresShipping\n        sku\n        taxable\n        title\n        variantTitle\n        variant {\n          id\n        }\n        weight {\n          value\n          unit\n        }\n      }\n      totalTaxSet {\n        presentmentMoney {\n          amount\n          currencyCode\n        }\n        shopMoney {\n          amount\n          currencyCode\n        }\n      }\n      totalDiscountsSet {\n        presentmentMoney {\n          amount\n          currencyCode\n        }\n        shopMoney {\n          amount\n          currencyCode\n        }\n      }\n      shippingLine {\n        id\n        custom\n        shippingRateHandle\n        title\n        originalPriceSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n      }\n      presentmentCurrencyCode\n    }\n    userErrors {\n      field\n      message\n    }\n  }\n}"
#### Graphql Input
{
  "input": {
    "appliedDiscount": {
      "description": "Loyalty",
      "value": 5,
      "valueType": "FIXED_AMOUNT"
    },
    "billingAddress": {
      "address1": "123 Amoebobacterieae St",
      "address2": "",
      "city": "Ottawa",
      "company": "",
      "countryCode": "CA",
      "firstName": "Bob",
      "lastName": "Bobsen",
      "phone": "",
      "provinceCode": "ON",
      "zip": "K2P0V6"
    },
    "customerId": "gid://shopify/Customer/544365967",
    "lineItems": [
      {
        "appliedDiscount": {
          "description": "Promo",
          "value": 5,
          "valueType": "FIXED_AMOUNT"
        },
        "customAttributes": [],
        "originalUnitPrice": 10,
        "quantity": 1,
        "requiresShipping": true,
        "sku": "draft-151",
        "taxable": true,
        "title": "151cm",
        "variantId": "gid://shopify/ProductVariant/43729076",
        "weight": {
          "unit": "KILOGRAMS",
          "value": 1
        }
      },
      {
        "appliedDiscount": null,
        "customAttributes": [],
        "originalUnitPrice": "10.0",
        "quantity": 2,
        "requiresShipping": true,
        "sku": null,
        "taxable": true,
        "title": "Spring Promo Item",
        "variantId": null,
        "weight": {
          "unit": "KILOGRAMS",
          "value": 1.2
        }
      }
    ],
    "presentmentCurrencyCode": "CAD",
    "shippingAddress": {
      "address1": "",
      "address2": "",
      "city": "",
      "company": "",
      "countryCode": "CA",
      "firstName": "Bob",
      "lastName": "Smith",
      "phone": "",
      "provinceCode": "AB",
      "zip": ""
    },
    "shippingLine": {
      "price": "0.0",
      "title": "Free shipping"
    },
    "taxExempt": false
  }
}
#### Graphql Response
{
  "data": {
    "draftOrderCalculate": {
      "calculatedDraftOrder": {
        "customer": {
          "id": "gid://shopify/Customer/544365967",
          "email": "bob@example.com",
          "firstName": "Bob",
          "numberOfOrders": "25",
          "defaultAddress": {
            "id": "gid://shopify/MailingAddress/544365967?model_name=CustomerAddress",
            "firstName": "Bob",
            "lastName": "Bobsen",
            "address1": "123 Amoebobacterieae St",
            "address2": "",
            "city": "Ottawa",
            "provinceCode": "ON",
            "zip": "K2P0V6",
            "countryCodeV2": "CA"
          },
          "taxExempt": false
        },
        "billingAddressMatchesShippingAddress": false,
        "totalPriceSet": {
          "presentmentMoney": {
            "amount": "28.05",
            "currencyCode": "CAD"
          },
          "shopMoney": {
            "amount": "22.44",
            "currencyCode": "USD"
          }
        },
        "lineItems": [
          {
            "appliedDiscount": {
              "amountSet": {
                "presentmentMoney": {
                  "amount": "6.38",
                  "currencyCode": "CAD"
                },
                "shopMoney": {
                  "amount": "5.1",
                  "currencyCode": "USD"
                }
              },
              "value": 5.0,
              "valueType": "FIXED_AMOUNT",
              "description": "Promo"
            },
            "discountedTotalSet": {
              "presentmentMoney": {
                "amount": "6.61",
                "currencyCode": "CAD"
              },
              "shopMoney": {
                "amount": "5.29",
                "currencyCode": "USD"
              }
            },
            "product": {
              "id": "gid://shopify/Product/108828309",
              "title": "Draft"
            },
            "quantity": 1,
            "requiresShipping": true,
            "sku": "draft-151",
            "taxable": true,
            "title": "Draft",
            "variantTitle": "151cm",
            "variant": {
              "id": "gid://shopify/ProductVariant/43729076"
            },
            "weight": {
              "value": 1.0,
              "unit": "KILOGRAMS"
            }
          },
          {
            "appliedDiscount": null,
            "discountedTotalSet": {
              "presentmentMoney": {
                "amount": "25.98",
                "currencyCode": "CAD"
              },
              "shopMoney": {
                "amount": "20.78",
                "currencyCode": "USD"
              }
            },
            "product": null,
            "quantity": 2,
            "requiresShipping": true,
            "sku": null,
            "taxable": true,
            "title": "Spring Promo Item",
            "variantTitle": null,
            "variant": null,
            "weight": {
              "value": 1.2,
              "unit": "KILOGRAMS"
            }
          }
        ],
        "totalTaxSet": {
          "presentmentMoney": {
            "amount": "1.84",
            "currencyCode": "CAD"
          },
          "shopMoney": {
            "amount": "1.47",
            "currencyCode": "USD"
          }
        },
        "totalDiscountsSet": {
          "presentmentMoney": {
            "amount": "12.76",
            "currencyCode": "CAD"
          },
          "shopMoney": {
            "amount": "10.21",
            "currencyCode": "USD"
          }
        },
        "shippingLine": {
          "id": null,
          "custom": true,
          "shippingRateHandle": null,
          "title": "Free shipping",
          "originalPriceSet": {
            "presentmentMoney": {
              "amount": "0.0",
              "currencyCode": "CAD"
            },
            "shopMoney": {
              "amount": "0.0",
              "currencyCode": "USD"
            }
          }
        },
        "presentmentCurrencyCode": "CAD"
      },
      "userErrors": []
    }
  }
}

### Calculate properties of a draft order with markets context
Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-04/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation CalculateDraftOrder($input: DraftOrderInput!) { draftOrderCalculate(input: $input) { calculatedDraftOrder { purchasingEntity { ... on Customer { firstName } } totalPriceSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } lineItems { appliedDiscount { amountSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } value valueType description } discountedTotalSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } product { id title } quantity requiresShipping sku taxable title variantTitle variant { id } weight { value unit } } totalTaxSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } totalDiscountsSet { presentmentMoney { amount currencyCode } shopMoney { amount currencyCode } } presentmentCurrencyCode } userErrors { field message } } }\",\n \"variables\": {\n    \"input\": {\n      \"presentmentCurrencyCode\": \"CAD\",\n      \"appliedDiscount\": {\n        \"description\": \"Loyalty\",\n        \"value\": 5,\n        \"valueType\": \"FIXED_AMOUNT\"\n      },\n      \"billingAddress\": {\n        \"address1\": \"123 Amoebobacterieae St\",\n        \"address2\": \"\",\n        \"city\": \"Ottawa\",\n        \"company\": \"\",\n        \"countryCode\": \"CA\",\n        \"firstName\": \"Bob\",\n        \"lastName\": \"Bobsen\",\n        \"phone\": \"\",\n        \"provinceCode\": \"ON\",\n        \"zip\": \"K2P0V6\"\n      },\n      \"customerId\": \"gid://shopify/Customer/544365967\",\n      \"lineItems\": [\n        {\n          \"appliedDiscount\": {\n            \"description\": \"Promo\",\n            \"value\": 5,\n            \"valueType\": \"FIXED_AMOUNT\"\n          },\n          \"customAttributes\": [],\n          \"quantity\": 1,\n          \"requiresShipping\": true,\n          \"sku\": \"draft-151\",\n          \"taxable\": true,\n          \"title\": \"151cm\",\n          \"variantId\": \"gid://shopify/ProductVariant/43729076\",\n          \"weight\": {\n            \"unit\": \"KILOGRAMS\",\n            \"value\": 1\n          }\n        },\n        {\n          \"appliedDiscount\": null,\n          \"customAttributes\": [],\n          \"originalUnitPrice\": \"10.0\",\n          \"quantity\": 2,\n          \"requiresShipping\": true,\n          \"sku\": null,\n          \"taxable\": true,\n          \"title\": \"Spring Promo Item\",\n          \"variantId\": null,\n          \"weight\": {\n            \"unit\": \"KILOGRAMS\",\n            \"value\": 1.2\n          }\n        }\n      ],\n      \"shippingAddress\": {\n        \"address1\": \"\",\n        \"address2\": \"\",\n        \"city\": \"\",\n        \"company\": \"\",\n        \"countryCode\": \"CA\",\n        \"firstName\": \"Bob\",\n        \"lastName\": \"Smith\",\n        \"phone\": \"\",\n        \"provinceCode\": \"AB\",\n        \"zip\": \"\"\n      },\n      \"shippingLine\": {\n        \"price\": \"0.0\",\n        \"title\": \"Free shipping\"\n      },\n      \"taxExempt\": false\n    }\n  }\n}'\n"
Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n  data: {\n    \"query\": `mutation CalculateDraftOrder($input: DraftOrderInput!) {\n      draftOrderCalculate(input: $input) {\n        calculatedDraftOrder {\n          purchasingEntity {\n            ... on Customer {\n              firstName\n            }\n          }\n          totalPriceSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          lineItems {\n            appliedDiscount {\n              amountSet {\n                presentmentMoney {\n                  amount\n                  currencyCode\n                }\n                shopMoney {\n                  amount\n                  currencyCode\n                }\n              }\n              value\n              valueType\n              description\n            }\n            discountedTotalSet {\n              presentmentMoney {\n                amount\n                currencyCode\n              }\n              shopMoney {\n                amount\n                currencyCode\n              }\n            }\n            product {\n              id\n              title\n            }\n            quantity\n            requiresShipping\n            sku\n            taxable\n            title\n            variantTitle\n            variant {\n              id\n            }\n            weight {\n              value\n              unit\n            }\n          }\n          totalTaxSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          totalDiscountsSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          presentmentCurrencyCode\n        }\n        userErrors {\n          field\n          message\n        }\n      }\n    }`,\n    \"variables\": {\n      \"input\": {\n        \"presentmentCurrencyCode\": \"CAD\",\n        \"appliedDiscount\": {\n          \"description\": \"Loyalty\",\n          \"value\": 5,\n          \"valueType\": \"FIXED_AMOUNT\"\n        },\n        \"billingAddress\": {\n          \"address1\": \"123 Amoebobacterieae St\",\n          \"address2\": \"\",\n          \"city\": \"Ottawa\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Bobsen\",\n          \"phone\": \"\",\n          \"provinceCode\": \"ON\",\n          \"zip\": \"K2P0V6\"\n        },\n        \"customerId\": \"gid://shopify/Customer/544365967\",\n        \"lineItems\": [\n          {\n            \"appliedDiscount\": {\n              \"description\": \"Promo\",\n              \"value\": 5,\n              \"valueType\": \"FIXED_AMOUNT\"\n            },\n            \"customAttributes\": [],\n            \"quantity\": 1,\n            \"requiresShipping\": true,\n            \"sku\": \"draft-151\",\n            \"taxable\": true,\n            \"title\": \"151cm\",\n            \"variantId\": \"gid://shopify/ProductVariant/43729076\",\n            \"weight\": {\n              \"unit\": \"KILOGRAMS\",\n              \"value\": 1\n            }\n          },\n          {\n            \"appliedDiscount\": null,\n            \"customAttributes\": [],\n            \"originalUnitPrice\": \"10.0\",\n            \"quantity\": 2,\n            \"requiresShipping\": true,\n            \"sku\": null,\n            \"taxable\": true,\n            \"title\": \"Spring Promo Item\",\n            \"variantId\": null,\n            \"weight\": {\n              \"unit\": \"KILOGRAMS\",\n              \"value\": 1.2\n            }\n          }\n        ],\n        \"shippingAddress\": {\n          \"address1\": \"\",\n          \"address2\": \"\",\n          \"city\": \"\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Smith\",\n          \"phone\": \"\",\n          \"provinceCode\": \"AB\",\n          \"zip\": \"\"\n        },\n        \"shippingLine\": {\n          \"price\": \"0.0\",\n          \"title\": \"Free shipping\"\n        },\n        \"taxExempt\": false\n      }\n    },\n  },\n});\n"
Ruby example: "session = ShopifyAPI::Auth::Session.new(\n  shop: \"your-development-store.myshopify.com\",\n  access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n  session: session\n)\n\nquery = <<~QUERY\n  mutation CalculateDraftOrder($input: DraftOrderInput!) {\n    draftOrderCalculate(input: $input) {\n      calculatedDraftOrder {\n        purchasingEntity {\n          ... on Customer {\n            firstName\n          }\n        }\n        totalPriceSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        lineItems {\n          appliedDiscount {\n            amountSet {\n              presentmentMoney {\n                amount\n                currencyCode\n              }\n              shopMoney {\n                amount\n                currencyCode\n              }\n            }\n            value\n            valueType\n            description\n          }\n          discountedTotalSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          product {\n            id\n            title\n          }\n          quantity\n          requiresShipping\n          sku\n          taxable\n          title\n          variantTitle\n          variant {\n            id\n          }\n          weight {\n            value\n            unit\n          }\n        }\n        totalTaxSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        totalDiscountsSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        presentmentCurrencyCode\n      }\n      userErrors {\n        field\n        message\n      }\n    }\n  }\nQUERY\n\nvariables = {\n  \"input\": {\n    \"presentmentCurrencyCode\": \"CAD\",\n    \"appliedDiscount\": {\n      \"description\": \"Loyalty\",\n      \"value\": 5,\n      \"valueType\": \"FIXED_AMOUNT\"\n    },\n    \"billingAddress\": {\n      \"address1\": \"123 Amoebobacterieae St\",\n      \"address2\": \"\",\n      \"city\": \"Ottawa\",\n      \"company\": \"\",\n      \"countryCode\": \"CA\",\n      \"firstName\": \"Bob\",\n      \"lastName\": \"Bobsen\",\n      \"phone\": \"\",\n      \"provinceCode\": \"ON\",\n      \"zip\": \"K2P0V6\"\n    },\n    \"customerId\": \"gid://shopify/Customer/544365967\",\n    \"lineItems\": [{\"appliedDiscount\"=>{\"description\"=>\"Promo\", \"value\"=>5, \"valueType\"=>\"FIXED_AMOUNT\"}, \"customAttributes\"=>[], \"quantity\"=>1, \"requiresShipping\"=>true, \"sku\"=>\"draft-151\", \"taxable\"=>true, \"title\"=>\"151cm\", \"variantId\"=>\"gid://shopify/ProductVariant/43729076\", \"weight\"=>{\"unit\"=>\"KILOGRAMS\", \"value\"=>1}}, {\"appliedDiscount\"=>nil, \"customAttributes\"=>[], \"originalUnitPrice\"=>\"10.0\", \"quantity\"=>2, \"requiresShipping\"=>true, \"sku\"=>nil, \"taxable\"=>true, \"title\"=>\"Spring Promo Item\", \"variantId\"=>nil, \"weight\"=>{\"unit\"=>\"KILOGRAMS\", \"value\"=>1.2}}],\n    \"shippingAddress\": {\n      \"address1\": \"\",\n      \"address2\": \"\",\n      \"city\": \"\",\n      \"company\": \"\",\n      \"countryCode\": \"CA\",\n      \"firstName\": \"Bob\",\n      \"lastName\": \"Smith\",\n      \"phone\": \"\",\n      \"provinceCode\": \"AB\",\n      \"zip\": \"\"\n    },\n    \"shippingLine\": {\n      \"price\": \"0.0\",\n      \"title\": \"Free shipping\"\n    },\n    \"taxExempt\": false\n  }\n}\n\nresponse = client.query(query: query, variables: variables)\n" 
Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n  `#graphql\n  mutation CalculateDraftOrder($input: DraftOrderInput!) {\n    draftOrderCalculate(input: $input) {\n      calculatedDraftOrder {\n        purchasingEntity {\n          ... on Customer {\n            firstName\n          }\n        }\n        totalPriceSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        lineItems {\n          appliedDiscount {\n            amountSet {\n              presentmentMoney {\n                amount\n                currencyCode\n              }\n              shopMoney {\n                amount\n                currencyCode\n              }\n            }\n            value\n            valueType\n            description\n          }\n          discountedTotalSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          product {\n            id\n            title\n          }\n          quantity\n          requiresShipping\n          sku\n          taxable\n          title\n          variantTitle\n          variant {\n            id\n          }\n          weight {\n            value\n            unit\n          }\n        }\n        totalTaxSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        totalDiscountsSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        presentmentCurrencyCode\n      }\n      userErrors {\n        field\n        message\n      }\n    }\n  }`,\n  {\n    variables: {\n      \"input\": {\n        \"presentmentCurrencyCode\": \"CAD\",\n        \"appliedDiscount\": {\n          \"description\": \"Loyalty\",\n          \"value\": 5,\n          \"valueType\": \"FIXED_AMOUNT\"\n        },\n        \"billingAddress\": {\n          \"address1\": \"123 Amoebobacterieae St\",\n          \"address2\": \"\",\n          \"city\": \"Ottawa\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Bobsen\",\n          \"phone\": \"\",\n          \"provinceCode\": \"ON\",\n          \"zip\": \"K2P0V6\"\n        },\n        \"customerId\": \"gid://shopify/Customer/544365967\",\n        \"lineItems\": [\n          {\n            \"appliedDiscount\": {\n              \"description\": \"Promo\",\n              \"value\": 5,\n              \"valueType\": \"FIXED_AMOUNT\"\n            },\n            \"customAttributes\": [],\n            \"quantity\": 1,\n            \"requiresShipping\": true,\n            \"sku\": \"draft-151\",\n            \"taxable\": true,\n            \"title\": \"151cm\",\n            \"variantId\": \"gid://shopify/ProductVariant/43729076\",\n            \"weight\": {\n              \"unit\": \"KILOGRAMS\",\n              \"value\": 1\n            }\n          },\n          {\n            \"appliedDiscount\": null,\n            \"customAttributes\": [],\n            \"originalUnitPrice\": \"10.0\",\n            \"quantity\": 2,\n            \"requiresShipping\": true,\n            \"sku\": null,\n            \"taxable\": true,\n            \"title\": \"Spring Promo Item\",\n            \"variantId\": null,\n            \"weight\": {\n              \"unit\": \"KILOGRAMS\",\n              \"value\": 1.2\n            }\n          }\n        ],\n        \"shippingAddress\": {\n          \"address1\": \"\",\n          \"address2\": \"\",\n          \"city\": \"\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Smith\",\n          \"phone\": \"\",\n          \"provinceCode\": \"AB\",\n          \"zip\": \"\"\n        },\n        \"shippingLine\": {\n          \"price\": \"0.0\",\n          \"title\": \"Free shipping\"\n        },\n        \"taxExempt\": false\n      }\n    },\n  },\n);\n\nconst data = await response.json();\n"
Graphql query: "mutation CalculateDraftOrder($input: DraftOrderInput!) {\n  draftOrderCalculate(input: $input) {\n    calculatedDraftOrder {\n      purchasingEntity {\n        ... on Customer {\n          firstName\n        }\n      }\n      totalPriceSet {\n        presentmentMoney {\n          amount\n          currencyCode\n        }\n        shopMoney {\n          amount\n          currencyCode\n        }\n      }\n      lineItems {\n        appliedDiscount {\n          amountSet {\n            presentmentMoney {\n              amount\n              currencyCode\n            }\n            shopMoney {\n              amount\n              currencyCode\n            }\n          }\n          value\n          valueType\n          description\n        }\n        discountedTotalSet {\n          presentmentMoney {\n            amount\n            currencyCode\n          }\n          shopMoney {\n            amount\n            currencyCode\n          }\n        }\n        product {\n          id\n          title\n        }\n        quantity\n        requiresShipping\n        sku\n        taxable\n        title\n        variantTitle\n        variant {\n          id\n        }\n        weight {\n          value\n          unit\n        }\n      }\n      totalTaxSet {\n        presentmentMoney {\n          amount\n          currencyCode\n        }\n        shopMoney {\n          amount\n          currencyCode\n        }\n      }\n      totalDiscountsSet {\n        presentmentMoney {\n          amount\n          currencyCode\n        }\n        shopMoney {\n          amount\n          currencyCode\n        }\n      }\n      presentmentCurrencyCode\n    }\n    userErrors {\n      field\n      message\n    }\n  }\n}"
#### Graphql Input
{
  "input": {
    "presentmentCurrencyCode": "CAD",
    "appliedDiscount": {
      "description": "Loyalty",
      "value": 5,
      "valueType": "FIXED_AMOUNT"
    },
    "billingAddress": {
      "address1": "123 Amoebobacterieae St",
      "address2": "",
      "city": "Ottawa",
      "company": "",
      "countryCode": "CA",
      "firstName": "Bob",
      "lastName": "Bobsen",
      "phone": "",
      "provinceCode": "ON",
      "zip": "K2P0V6"
    },
    "customerId": "gid://shopify/Customer/544365967",
    "lineItems": [
      {
        "appliedDiscount": {
          "description": "Promo",
          "value": 5,
          "valueType": "FIXED_AMOUNT"
        },
        "customAttributes": [],
        "quantity": 1,
        "requiresShipping": true,
        "sku": "draft-151",
        "taxable": true,
        "title": "151cm",
        "variantId": "gid://shopify/ProductVariant/43729076",
        "weight": {
          "unit": "KILOGRAMS",
          "value": 1
        }
      },
      {
        "appliedDiscount": null,
        "customAttributes": [],
        "originalUnitPrice": "10.0",
        "quantity": 2,
        "requiresShipping": true,
        "sku": null,
        "taxable": true,
        "title": "Spring Promo Item",
        "variantId": null,
        "weight": {
          "unit": "KILOGRAMS",
          "value": 1.2
        }
      }
    ],
    "shippingAddress": {
      "address1": "",
      "address2": "",
      "city": "",
      "company": "",
      "countryCode": "CA",
      "firstName": "Bob",
      "lastName": "Smith",
      "phone": "",
      "provinceCode": "AB",
      "zip": ""
    },
    "shippingLine": {
      "price": "0.0",
      "title": "Free shipping"
    },
    "taxExempt": false
  }
}
#### Graphql Response
{
  "data": {
    "draftOrderCalculate": {
      "calculatedDraftOrder": {
        "purchasingEntity": {
          "firstName": "Bob"
        },
        "totalPriceSet": {
          "presentmentMoney": {
            "amount": "28.05",
            "currencyCode": "CAD"
          },
          "shopMoney": {
            "amount": "22.44",
            "currencyCode": "USD"
          }
        },
        "lineItems": [
          {
            "appliedDiscount": {
              "amountSet": {
                "presentmentMoney": {
                  "amount": "6.38",
                  "currencyCode": "CAD"
                },
                "shopMoney": {
                  "amount": "5.1",
                  "currencyCode": "USD"
                }
              },
              "value": 5.0,
              "valueType": "FIXED_AMOUNT",
              "description": "Promo"
            },
            "discountedTotalSet": {
              "presentmentMoney": {
                "amount": "6.61",
                "currencyCode": "CAD"
              },
              "shopMoney": {
                "amount": "5.29",
                "currencyCode": "USD"
              }
            },
            "product": {
              "id": "gid://shopify/Product/108828309",
              "title": "Draft"
            },
            "quantity": 1,
            "requiresShipping": true,
            "sku": "draft-151",
            "taxable": true,
            "title": "Draft",
            "variantTitle": "151cm",
            "variant": {
              "id": "gid://shopify/ProductVariant/43729076"
            },
            "weight": {
              "value": 1.0,
              "unit": "KILOGRAMS"
            }
          },
          {
            "appliedDiscount": null,
            "discountedTotalSet": {
              "presentmentMoney": {
                "amount": "25.98",
                "currencyCode": "CAD"
              },
              "shopMoney": {
                "amount": "20.78",
                "currencyCode": "USD"
              }
            },
            "product": null,
            "quantity": 2,
            "requiresShipping": true,
            "sku": null,
            "taxable": true,
            "title": "Spring Promo Item",
            "variantTitle": null,
            "variant": null,
            "weight": {
              "value": 1.2,
              "unit": "KILOGRAMS"
            }
          }
        ],
        "totalTaxSet": {
          "presentmentMoney": {
            "amount": "1.84",
            "currencyCode": "CAD"
          },
          "shopMoney": {
            "amount": "1.47",
            "currencyCode": "USD"
          }
        },
        "totalDiscountsSet": {
          "presentmentMoney": {
            "amount": "12.76",
            "currencyCode": "CAD"
          },
          "shopMoney": {
            "amount": "10.21",
            "currencyCode": "USD"
          }
        },
        "presentmentCurrencyCode": "CAD"
      },
      "userErrors": []
    }
  }
}

### Calculating a draft order with no line items
Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-04/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation CalculateDraftOrder($input: DraftOrderInput!) { draftOrderCalculate(input: $input) { userErrors { field message } } }\",\n \"variables\": {\n    \"input\": {\n      \"appliedDiscount\": {\n        \"description\": \"Loyalty\",\n        \"value\": 5,\n        \"valueType\": \"FIXED_AMOUNT\"\n      },\n      \"billingAddress\": {\n        \"address1\": \"\",\n        \"address2\": \"\",\n        \"city\": \"\",\n        \"company\": \"\",\n        \"countryCode\": \"CA\",\n        \"firstName\": \"Bob\",\n        \"lastName\": \"Smith\",\n        \"phone\": \"\",\n        \"provinceCode\": \"AB\",\n        \"zip\": \"\"\n      },\n      \"lineItems\": [],\n      \"presentmentCurrencyCode\": \"CAD\",\n      \"shippingAddress\": {\n        \"address1\": \"\",\n        \"address2\": \"\",\n        \"city\": \"\",\n        \"company\": \"\",\n        \"countryCode\": \"CA\",\n        \"firstName\": \"Bob\",\n        \"lastName\": \"Smith\",\n        \"phone\": \"\",\n        \"provinceCode\": \"AB\",\n        \"zip\": \"\"\n      },\n      \"shippingLine\": {\n        \"price\": \"0.0\",\n        \"title\": \"Free shipping\"\n      },\n      \"taxExempt\": false\n    }\n  }\n}'\n"
Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n  data: {\n    \"query\": `mutation CalculateDraftOrder($input: DraftOrderInput!) {\n      draftOrderCalculate(input: $input) {\n        userErrors {\n          field\n          message\n        }\n      }\n    }`,\n    \"variables\": {\n      \"input\": {\n        \"appliedDiscount\": {\n          \"description\": \"Loyalty\",\n          \"value\": 5,\n          \"valueType\": \"FIXED_AMOUNT\"\n        },\n        \"billingAddress\": {\n          \"address1\": \"\",\n          \"address2\": \"\",\n          \"city\": \"\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Smith\",\n          \"phone\": \"\",\n          \"provinceCode\": \"AB\",\n          \"zip\": \"\"\n        },\n        \"lineItems\": [],\n        \"presentmentCurrencyCode\": \"CAD\",\n        \"shippingAddress\": {\n          \"address1\": \"\",\n          \"address2\": \"\",\n          \"city\": \"\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Smith\",\n          \"phone\": \"\",\n          \"provinceCode\": \"AB\",\n          \"zip\": \"\"\n        },\n        \"shippingLine\": {\n          \"price\": \"0.0\",\n          \"title\": \"Free shipping\"\n        },\n        \"taxExempt\": false\n      }\n    },\n  },\n});\n"
Ruby example: "session = ShopifyAPI::Auth::Session.new(\n  shop: \"your-development-store.myshopify.com\",\n  access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n  session: session\n)\n\nquery = <<~QUERY\n  mutation CalculateDraftOrder($input: DraftOrderInput!) {\n    draftOrderCalculate(input: $input) {\n      userErrors {\n        field\n        message\n      }\n    }\n  }\nQUERY\n\nvariables = {\n  \"input\": {\n    \"appliedDiscount\": {\n      \"description\": \"Loyalty\",\n      \"value\": 5,\n      \"valueType\": \"FIXED_AMOUNT\"\n    },\n    \"billingAddress\": {\n      \"address1\": \"\",\n      \"address2\": \"\",\n      \"city\": \"\",\n      \"company\": \"\",\n      \"countryCode\": \"CA\",\n      \"firstName\": \"Bob\",\n      \"lastName\": \"Smith\",\n      \"phone\": \"\",\n      \"provinceCode\": \"AB\",\n      \"zip\": \"\"\n    },\n    \"lineItems\": [],\n    \"presentmentCurrencyCode\": \"CAD\",\n    \"shippingAddress\": {\n      \"address1\": \"\",\n      \"address2\": \"\",\n      \"city\": \"\",\n      \"company\": \"\",\n      \"countryCode\": \"CA\",\n      \"firstName\": \"Bob\",\n      \"lastName\": \"Smith\",\n      \"phone\": \"\",\n      \"provinceCode\": \"AB\",\n      \"zip\": \"\"\n    },\n    \"shippingLine\": {\n      \"price\": \"0.0\",\n      \"title\": \"Free shipping\"\n    },\n    \"taxExempt\": false\n  }\n}\n\nresponse = client.query(query: query, variables: variables)\n" 
Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n  `#graphql\n  mutation CalculateDraftOrder($input: DraftOrderInput!) {\n    draftOrderCalculate(input: $input) {\n      userErrors {\n        field\n        message\n      }\n    }\n  }`,\n  {\n    variables: {\n      \"input\": {\n        \"appliedDiscount\": {\n          \"description\": \"Loyalty\",\n          \"value\": 5,\n          \"valueType\": \"FIXED_AMOUNT\"\n        },\n        \"billingAddress\": {\n          \"address1\": \"\",\n          \"address2\": \"\",\n          \"city\": \"\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Smith\",\n          \"phone\": \"\",\n          \"provinceCode\": \"AB\",\n          \"zip\": \"\"\n        },\n        \"lineItems\": [],\n        \"presentmentCurrencyCode\": \"CAD\",\n        \"shippingAddress\": {\n          \"address1\": \"\",\n          \"address2\": \"\",\n          \"city\": \"\",\n          \"company\": \"\",\n          \"countryCode\": \"CA\",\n          \"firstName\": \"Bob\",\n          \"lastName\": \"Smith\",\n          \"phone\": \"\",\n          \"provinceCode\": \"AB\",\n          \"zip\": \"\"\n        },\n        \"shippingLine\": {\n          \"price\": \"0.0\",\n          \"title\": \"Free shipping\"\n        },\n        \"taxExempt\": false\n      }\n    },\n  },\n);\n\nconst data = await response.json();\n"
Graphql query: "mutation CalculateDraftOrder($input: DraftOrderInput!) {\n  draftOrderCalculate(input: $input) {\n    userErrors {\n      field\n      message\n    }\n  }\n}"
#### Graphql Input
{
  "input": {
    "appliedDiscount": {
      "description": "Loyalty",
      "value": 5,
      "valueType": "FIXED_AMOUNT"
    },
    "billingAddress": {
      "address1": "",
      "address2": "",
      "city": "",
      "company": "",
      "countryCode": "CA",
      "firstName": "Bob",
      "lastName": "Smith",
      "phone": "",
      "provinceCode": "AB",
      "zip": ""
    },
    "lineItems": [],
    "presentmentCurrencyCode": "CAD",
    "shippingAddress": {
      "address1": "",
      "address2": "",
      "city": "",
      "company": "",
      "countryCode": "CA",
      "firstName": "Bob",
      "lastName": "Smith",
      "phone": "",
      "provinceCode": "AB",
      "zip": ""
    },
    "shippingLine": {
      "price": "0.0",
      "title": "Free shipping"
    },
    "taxExempt": false
  }
}
#### Graphql Response
{
  "data": {
    "draftOrderCalculate": {
      "userErrors": [
        {
          "field": null,
          "message": "Add at least 1 product"
        }
      ]
    }
  }
}