Anchor to section titled 'undefined'

draftOrderCalculate
mutation

Requires write_draft_orders access scope.

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


The fields for the draft order.


Was this section helpful?

The calculated properties for a draft order.

The list of errors that occurred from executing the mutation.


Was this section helpful?

Examples

Hide code
DescriptionCopy
mutation CalculateDraftOrder($input: DraftOrderInput!) {
  draftOrderCalculate(input: $input) {
    calculatedDraftOrder {
      customer {
        id
        email
        fullName
        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
          totalVariants
        }
        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
      marketName
      marketRegionCountryCode
    }
    userErrors {
      field
      message
    }
  }
}
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2024-01/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "mutation CalculateDraftOrder($input: DraftOrderInput!) { draftOrderCalculate(input: $input) { calculatedDraftOrder { customer { id email fullName 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 totalVariants } 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 marketName marketRegionCountryCode } userErrors { field message } } }",
 "variables": {
    "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
          }
        }
      ],
      "marketRegionCountryCode": null,
      "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
    }
  }
}'
const { admin } = await authenticate.admin(request);

const response = await admin.graphql(
  `#graphql
  mutation CalculateDraftOrder($input: DraftOrderInput!) {
    draftOrderCalculate(input: $input) {
      calculatedDraftOrder {
        customer {
          id
          email
          fullName
          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
            totalVariants
          }
          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
        marketName
        marketRegionCountryCode
      }
      userErrors {
        field
        message
      }
    }
  }`,
  {
    variables: {
      "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
            }
          }
        ],
        "marketRegionCountryCode": null,
        "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
      }
    },
  },
);

const data = await response.json();
session = ShopifyAPI::Auth::Session.new(
  shop: "your-development-store.myshopify.com",
  access_token: access_token
)
client = ShopifyAPI::Clients::Graphql::Admin.new(
  session: session
)

query = <<~QUERY
  mutation CalculateDraftOrder($input: DraftOrderInput!) {
    draftOrderCalculate(input: $input) {
      calculatedDraftOrder {
        customer {
          id
          email
          fullName
          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
            totalVariants
          }
          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
        marketName
        marketRegionCountryCode
      }
      userErrors {
        field
        message
      }
    }
  }
QUERY

variables = {
  "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"=>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}}],
    "marketRegionCountryCode": null,
    "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
  }
}

response = client.query(query: query, variables: variables)
const client = new shopify.clients.Graphql({session});
const data = await client.query({
  data: {
    "query": `mutation CalculateDraftOrder($input: DraftOrderInput!) {
      draftOrderCalculate(input: $input) {
        calculatedDraftOrder {
          customer {
            id
            email
            fullName
            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
              totalVariants
            }
            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
          marketName
          marketRegionCountryCode
        }
        userErrors {
          field
          message
        }
      }
    }`,
    "variables": {
      "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
            }
          }
        ],
        "marketRegionCountryCode": null,
        "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
      }
    },
  },
});
use Shopify\Clients\Graphql;

$client = new Graphql("your-development-store.myshopify.com", $accessToken);
$query = <<<QUERY
  mutation CalculateDraftOrder($input: DraftOrderInput!) {
    draftOrderCalculate(input: $input) {
      calculatedDraftOrder {
        customer {
          id
          email
          fullName
          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
            totalVariants
          }
          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
        marketName
        marketRegionCountryCode
      }
      userErrors {
        field
        message
      }
    }
  }
QUERY;

$variables = [
  "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"=>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}}],
    "marketRegionCountryCode" => null,
    "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,
  ],
];

$response = $client->query(["query" => $query, "variables" => $variables]);
Hide code
Input variables
Copy
{
  "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
        }
      }
    ],
    "marketRegionCountryCode": null,
    "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
  }
}
Hide code
Response
JSON
{
  "draftOrderCalculate": {
    "calculatedDraftOrder": {
      "customer": {
        "id": "gid://shopify/Customer/544365967",
        "email": "bob@example.com",
        "fullName": "Bob Bobsen",
        "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": "21.4",
          "currencyCode": "USD"
        }
      },
      "lineItems": [
        {
          "appliedDiscount": {
            "amountSet": {
              "presentmentMoney": {
                "amount": "6.38",
                "currencyCode": "CAD"
              },
              "shopMoney": {
                "amount": "5.0",
                "currencyCode": "USD"
              }
            },
            "value": 5,
            "valueType": "FIXED_AMOUNT",
            "description": "Promo"
          },
          "discountedTotalSet": {
            "presentmentMoney": {
              "amount": "6.61",
              "currencyCode": "CAD"
            },
            "shopMoney": {
              "amount": "5.0",
              "currencyCode": "USD"
            }
          },
          "product": {
            "id": "gid://shopify/Product/108828309",
            "title": "Draft",
            "totalVariants": 1
          },
          "quantity": 1,
          "requiresShipping": true,
          "sku": "draft-151",
          "taxable": true,
          "title": "Draft",
          "variantTitle": "151cm",
          "variant": {
            "id": "gid://shopify/ProductVariant/43729076"
          },
          "weight": {
            "value": 1,
            "unit": "KILOGRAMS"
          }
        },
        {
          "appliedDiscount": null,
          "discountedTotalSet": {
            "presentmentMoney": {
              "amount": "25.98",
              "currencyCode": "CAD"
            },
            "shopMoney": {
              "amount": "20.0",
              "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.4",
          "currencyCode": "USD"
        }
      },
      "totalDiscountsSet": {
        "presentmentMoney": {
          "amount": "12.76",
          "currencyCode": "CAD"
        },
        "shopMoney": {
          "amount": "10.0",
          "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",
      "marketName": "Primary market",
      "marketRegionCountryCode": "CA"
    },
    "userErrors": []
  }
}