# quantityPricingByVariantUpdate - admin-graphql - MUTATION Version: 2024-07 ## Description Updates quantity pricing on a price list. You can use the `quantityPricingByVariantUpdate` mutation to set fixed prices, quantity rules, and quantity price breaks. This mutation does not allow partial successes. If any of the requested resources fail to update, none of the requested resources will be updated. Delete operations are executed before create operations. ### Access Scopes `write_products` access scope. Also: The shop has the volume pricing feature enabled. ## Arguments * [input](/docs/api/admin-graphql/2024-07/input-objects/QuantityPricingByVariantUpdateInput): QuantityPricingByVariantUpdateInput! - The input data used to update the quantity pricing in the price list. * [priceListId](/docs/api/admin-graphql/2024-07/scalars/ID): ID! - The ID of the price list for which quantity pricing will be updated. ## Returns * [productVariants](/docs/api/admin-graphql/2024-07/objects/ProductVariant): ProductVariant The variants for which quantity pricing was created successfully in the price list. * [userErrors](/docs/api/admin-graphql/2024-07/objects/QuantityPricingByVariantUserError): QuantityPricingByVariantUserError! The list of errors that occurred from executing the mutation. ## Examples ### Configure quantity pricing for a price list Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-07/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation quantityPricingByVariantUpdate($priceListId: ID!, $input: QuantityPricingByVariantUpdateInput!, $companyLocationId: ID!) { quantityPricingByVariantUpdate(priceListId: $priceListId, input: $input) { productVariants { id contextualPricing(context: {companyLocationId: $companyLocationId}) { quantityPriceBreaks(first: 1) { nodes { minimumQuantity price { amount currencyCode } } } quantityRule { minimum maximum increment } } } userErrors { message code field } } }\",\n \"variables\": {\n \"priceListId\": \"gid://shopify/PriceList/467640202\",\n \"companyLocationId\": \"gid://shopify/CompanyLocation/441870438\",\n \"input\": {\n \"quantityPriceBreaksToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"price\": {\n \"amount\": 35.0,\n \"currencyCode\": \"USD\"\n },\n \"minimumQuantity\": 10\n }\n ],\n \"quantityPriceBreaksToDelete\": [],\n \"quantityRulesToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"minimum\": 10,\n \"maximum\": 100,\n \"increment\": 5\n }\n ],\n \"quantityRulesToDeleteByVariantId\": [],\n \"pricesToAdd\": [\n {\n \"price\": {\n \"amount\": 40.0,\n \"currencyCode\": \"USD\"\n },\n \"variantId\": \"gid://shopify/ProductVariant/113711323\"\n }\n ],\n \"pricesToDeleteByVariantId\": []\n }\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation quantityPricingByVariantUpdate($priceListId: ID!, $input: QuantityPricingByVariantUpdateInput!, $companyLocationId: ID!) {\n quantityPricingByVariantUpdate(priceListId: $priceListId, input: $input) {\n productVariants {\n id\n contextualPricing(context: {companyLocationId: $companyLocationId}) {\n quantityPriceBreaks(first: 1) {\n nodes {\n minimumQuantity\n price {\n amount\n currencyCode\n }\n }\n }\n quantityRule {\n minimum\n maximum\n increment\n }\n }\n }\n userErrors {\n message\n code\n field\n }\n }\n }`,\n \"variables\": {\n \"priceListId\": \"gid://shopify/PriceList/467640202\",\n \"companyLocationId\": \"gid://shopify/CompanyLocation/441870438\",\n \"input\": {\n \"quantityPriceBreaksToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"price\": {\n \"amount\": 35.0,\n \"currencyCode\": \"USD\"\n },\n \"minimumQuantity\": 10\n }\n ],\n \"quantityPriceBreaksToDelete\": [],\n \"quantityRulesToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"minimum\": 10,\n \"maximum\": 100,\n \"increment\": 5\n }\n ],\n \"quantityRulesToDeleteByVariantId\": [],\n \"pricesToAdd\": [\n {\n \"price\": {\n \"amount\": 40.0,\n \"currencyCode\": \"USD\"\n },\n \"variantId\": \"gid://shopify/ProductVariant/113711323\"\n }\n ],\n \"pricesToDeleteByVariantId\": []\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 quantityPricingByVariantUpdate($priceListId: ID!, $input: QuantityPricingByVariantUpdateInput!, $companyLocationId: ID!) {\n quantityPricingByVariantUpdate(priceListId: $priceListId, input: $input) {\n productVariants {\n id\n contextualPricing(context: {companyLocationId: $companyLocationId}) {\n quantityPriceBreaks(first: 1) {\n nodes {\n minimumQuantity\n price {\n amount\n currencyCode\n }\n }\n }\n quantityRule {\n minimum\n maximum\n increment\n }\n }\n }\n userErrors {\n message\n code\n field\n }\n }\n }\nQUERY\n\nvariables = {\n \"priceListId\": \"gid://shopify/PriceList/467640202\",\n \"companyLocationId\": \"gid://shopify/CompanyLocation/441870438\",\n \"input\": {\n \"quantityPriceBreaksToAdd\": [{\"variantId\"=>\"gid://shopify/ProductVariant/113711323\", \"price\"=>{\"amount\"=>35.0, \"currencyCode\"=>\"USD\"}, \"minimumQuantity\"=>10}],\n \"quantityPriceBreaksToDelete\": [],\n \"quantityRulesToAdd\": [{\"variantId\"=>\"gid://shopify/ProductVariant/113711323\", \"minimum\"=>10, \"maximum\"=>100, \"increment\"=>5}],\n \"quantityRulesToDeleteByVariantId\": [],\n \"pricesToAdd\": [{\"price\"=>{\"amount\"=>40.0, \"currencyCode\"=>\"USD\"}, \"variantId\"=>\"gid://shopify/ProductVariant/113711323\"}],\n \"pricesToDeleteByVariantId\": []\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 quantityPricingByVariantUpdate($priceListId: ID!, $input: QuantityPricingByVariantUpdateInput!, $companyLocationId: ID!) {\n quantityPricingByVariantUpdate(priceListId: $priceListId, input: $input) {\n productVariants {\n id\n contextualPricing(context: {companyLocationId: $companyLocationId}) {\n quantityPriceBreaks(first: 1) {\n nodes {\n minimumQuantity\n price {\n amount\n currencyCode\n }\n }\n }\n quantityRule {\n minimum\n maximum\n increment\n }\n }\n }\n userErrors {\n message\n code\n field\n }\n }\n }`,\n {\n variables: {\n \"priceListId\": \"gid://shopify/PriceList/467640202\",\n \"companyLocationId\": \"gid://shopify/CompanyLocation/441870438\",\n \"input\": {\n \"quantityPriceBreaksToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"price\": {\n \"amount\": 35.0,\n \"currencyCode\": \"USD\"\n },\n \"minimumQuantity\": 10\n }\n ],\n \"quantityPriceBreaksToDelete\": [],\n \"quantityRulesToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"minimum\": 10,\n \"maximum\": 100,\n \"increment\": 5\n }\n ],\n \"quantityRulesToDeleteByVariantId\": [],\n \"pricesToAdd\": [\n {\n \"price\": {\n \"amount\": 40.0,\n \"currencyCode\": \"USD\"\n },\n \"variantId\": \"gid://shopify/ProductVariant/113711323\"\n }\n ],\n \"pricesToDeleteByVariantId\": []\n }\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation quantityPricingByVariantUpdate($priceListId: ID!, $input: QuantityPricingByVariantUpdateInput!, $companyLocationId: ID!) {\n quantityPricingByVariantUpdate(priceListId: $priceListId, input: $input) {\n productVariants {\n id\n contextualPricing(context: {companyLocationId: $companyLocationId}) {\n quantityPriceBreaks(first: 1) {\n nodes {\n minimumQuantity\n price {\n amount\n currencyCode\n }\n }\n }\n quantityRule {\n minimum\n maximum\n increment\n }\n }\n }\n userErrors {\n message\n code\n field\n }\n }\n}" #### Graphql Input { "priceListId": "gid://shopify/PriceList/467640202", "companyLocationId": "gid://shopify/CompanyLocation/441870438", "input": { "quantityPriceBreaksToAdd": [ { "variantId": "gid://shopify/ProductVariant/113711323", "price": { "amount": 35.0, "currencyCode": "USD" }, "minimumQuantity": 10 } ], "quantityPriceBreaksToDelete": [], "quantityRulesToAdd": [ { "variantId": "gid://shopify/ProductVariant/113711323", "minimum": 10, "maximum": 100, "increment": 5 } ], "quantityRulesToDeleteByVariantId": [], "pricesToAdd": [ { "price": { "amount": 40.0, "currencyCode": "USD" }, "variantId": "gid://shopify/ProductVariant/113711323" } ], "pricesToDeleteByVariantId": [] } } #### Graphql Response { "data": { "quantityPricingByVariantUpdate": { "productVariants": [ { "id": "gid://shopify/ProductVariant/113711323", "contextualPricing": { "quantityPriceBreaks": { "nodes": [ { "minimumQuantity": 10, "price": { "amount": "35.0", "currencyCode": "USD" } } ] }, "quantityRule": { "minimum": 10, "maximum": 100, "increment": 5 } } } ], "userErrors": [] } } } ### Configuring invalid quantity pricing returns an error Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-07/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation quantityPricingByVariantUpdate($priceListId: ID!, $input: QuantityPricingByVariantUpdateInput!, $companyLocationId: ID!) { quantityPricingByVariantUpdate(priceListId: $priceListId, input: $input) { productVariants { id contextualPricing(context: {companyLocationId: $companyLocationId}) { quantityPriceBreaks(first: 1) { nodes { minimumQuantity price { amount currencyCode } } } quantityRule { minimum maximum increment } } } userErrors { message code field } } }\",\n \"variables\": {\n \"priceListId\": \"gid://shopify/PriceList/467640202\",\n \"companyLocationId\": \"gid://shopify/CompanyLocation/441870438\",\n \"input\": {\n \"quantityPriceBreaksToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"price\": {\n \"amount\": 35.0,\n \"currencyCode\": \"USD\"\n },\n \"minimumQuantity\": 5\n }\n ],\n \"quantityPriceBreaksToDelete\": [],\n \"quantityRulesToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"minimum\": 10,\n \"maximum\": 100,\n \"increment\": 5\n }\n ],\n \"quantityRulesToDeleteByVariantId\": [],\n \"pricesToAdd\": [\n {\n \"price\": {\n \"amount\": 40.0,\n \"currencyCode\": \"USD\"\n },\n \"variantId\": \"gid://shopify/ProductVariant/113711323\"\n }\n ],\n \"pricesToDeleteByVariantId\": []\n }\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation quantityPricingByVariantUpdate($priceListId: ID!, $input: QuantityPricingByVariantUpdateInput!, $companyLocationId: ID!) {\n quantityPricingByVariantUpdate(priceListId: $priceListId, input: $input) {\n productVariants {\n id\n contextualPricing(context: {companyLocationId: $companyLocationId}) {\n quantityPriceBreaks(first: 1) {\n nodes {\n minimumQuantity\n price {\n amount\n currencyCode\n }\n }\n }\n quantityRule {\n minimum\n maximum\n increment\n }\n }\n }\n userErrors {\n message\n code\n field\n }\n }\n }`,\n \"variables\": {\n \"priceListId\": \"gid://shopify/PriceList/467640202\",\n \"companyLocationId\": \"gid://shopify/CompanyLocation/441870438\",\n \"input\": {\n \"quantityPriceBreaksToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"price\": {\n \"amount\": 35.0,\n \"currencyCode\": \"USD\"\n },\n \"minimumQuantity\": 5\n }\n ],\n \"quantityPriceBreaksToDelete\": [],\n \"quantityRulesToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"minimum\": 10,\n \"maximum\": 100,\n \"increment\": 5\n }\n ],\n \"quantityRulesToDeleteByVariantId\": [],\n \"pricesToAdd\": [\n {\n \"price\": {\n \"amount\": 40.0,\n \"currencyCode\": \"USD\"\n },\n \"variantId\": \"gid://shopify/ProductVariant/113711323\"\n }\n ],\n \"pricesToDeleteByVariantId\": []\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 quantityPricingByVariantUpdate($priceListId: ID!, $input: QuantityPricingByVariantUpdateInput!, $companyLocationId: ID!) {\n quantityPricingByVariantUpdate(priceListId: $priceListId, input: $input) {\n productVariants {\n id\n contextualPricing(context: {companyLocationId: $companyLocationId}) {\n quantityPriceBreaks(first: 1) {\n nodes {\n minimumQuantity\n price {\n amount\n currencyCode\n }\n }\n }\n quantityRule {\n minimum\n maximum\n increment\n }\n }\n }\n userErrors {\n message\n code\n field\n }\n }\n }\nQUERY\n\nvariables = {\n \"priceListId\": \"gid://shopify/PriceList/467640202\",\n \"companyLocationId\": \"gid://shopify/CompanyLocation/441870438\",\n \"input\": {\n \"quantityPriceBreaksToAdd\": [{\"variantId\"=>\"gid://shopify/ProductVariant/113711323\", \"price\"=>{\"amount\"=>35.0, \"currencyCode\"=>\"USD\"}, \"minimumQuantity\"=>5}],\n \"quantityPriceBreaksToDelete\": [],\n \"quantityRulesToAdd\": [{\"variantId\"=>\"gid://shopify/ProductVariant/113711323\", \"minimum\"=>10, \"maximum\"=>100, \"increment\"=>5}],\n \"quantityRulesToDeleteByVariantId\": [],\n \"pricesToAdd\": [{\"price\"=>{\"amount\"=>40.0, \"currencyCode\"=>\"USD\"}, \"variantId\"=>\"gid://shopify/ProductVariant/113711323\"}],\n \"pricesToDeleteByVariantId\": []\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 quantityPricingByVariantUpdate($priceListId: ID!, $input: QuantityPricingByVariantUpdateInput!, $companyLocationId: ID!) {\n quantityPricingByVariantUpdate(priceListId: $priceListId, input: $input) {\n productVariants {\n id\n contextualPricing(context: {companyLocationId: $companyLocationId}) {\n quantityPriceBreaks(first: 1) {\n nodes {\n minimumQuantity\n price {\n amount\n currencyCode\n }\n }\n }\n quantityRule {\n minimum\n maximum\n increment\n }\n }\n }\n userErrors {\n message\n code\n field\n }\n }\n }`,\n {\n variables: {\n \"priceListId\": \"gid://shopify/PriceList/467640202\",\n \"companyLocationId\": \"gid://shopify/CompanyLocation/441870438\",\n \"input\": {\n \"quantityPriceBreaksToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"price\": {\n \"amount\": 35.0,\n \"currencyCode\": \"USD\"\n },\n \"minimumQuantity\": 5\n }\n ],\n \"quantityPriceBreaksToDelete\": [],\n \"quantityRulesToAdd\": [\n {\n \"variantId\": \"gid://shopify/ProductVariant/113711323\",\n \"minimum\": 10,\n \"maximum\": 100,\n \"increment\": 5\n }\n ],\n \"quantityRulesToDeleteByVariantId\": [],\n \"pricesToAdd\": [\n {\n \"price\": {\n \"amount\": 40.0,\n \"currencyCode\": \"USD\"\n },\n \"variantId\": \"gid://shopify/ProductVariant/113711323\"\n }\n ],\n \"pricesToDeleteByVariantId\": []\n }\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation quantityPricingByVariantUpdate($priceListId: ID!, $input: QuantityPricingByVariantUpdateInput!, $companyLocationId: ID!) {\n quantityPricingByVariantUpdate(priceListId: $priceListId, input: $input) {\n productVariants {\n id\n contextualPricing(context: {companyLocationId: $companyLocationId}) {\n quantityPriceBreaks(first: 1) {\n nodes {\n minimumQuantity\n price {\n amount\n currencyCode\n }\n }\n }\n quantityRule {\n minimum\n maximum\n increment\n }\n }\n }\n userErrors {\n message\n code\n field\n }\n }\n}" #### Graphql Input { "priceListId": "gid://shopify/PriceList/467640202", "companyLocationId": "gid://shopify/CompanyLocation/441870438", "input": { "quantityPriceBreaksToAdd": [ { "variantId": "gid://shopify/ProductVariant/113711323", "price": { "amount": 35.0, "currencyCode": "USD" }, "minimumQuantity": 5 } ], "quantityPriceBreaksToDelete": [], "quantityRulesToAdd": [ { "variantId": "gid://shopify/ProductVariant/113711323", "minimum": 10, "maximum": 100, "increment": 5 } ], "quantityRulesToDeleteByVariantId": [], "pricesToAdd": [ { "price": { "amount": 40.0, "currencyCode": "USD" }, "variantId": "gid://shopify/ProductVariant/113711323" } ], "pricesToDeleteByVariantId": [] } } #### Graphql Response { "data": { "quantityPricingByVariantUpdate": { "productVariants": null, "userErrors": [ { "message": "Miniumum quantity price break must be greater than or equal to the minimum quantity rule.", "code": "QUANTITY_PRICE_BREAK_ADD_MIN_LOWER_THAN_QUANTITY_RULES_MIN", "field": [ "input", "quantityPriceBreaksToAdd", "0" ] }, { "message": "Minimum quantity rule must be less than or equal to the minimum quantity price break.", "code": "QUANTITY_RULE_ADD_MIN_HIGHER_THAN_QUANTITY_PRICE_BREAK_MIN", "field": [ "input", "quantityRulesToAdd", "0" ] } ] } } }