Manage Cart's Items in Storefront

In this document, you'll learn how to manage a cart's line items, including adding, updating, and removing them.

Add Product Variant to Cart#

To add a product variant to a cart, use the Add Line Item API route.

TipTo retrieve a variant's available quantity and check if it's in stock, refer to this guide.

For example:

Code
1const addToCart = (variant_id: string) => {2  const cartId = localStorage.getItem("cart_id")3
4  if (!cartId) {5    return6  }7
8  fetch(`http://localhost:9000/store/carts/${cartId}/line-items`, {9    credentials: "include",10    method: "POST",11    headers: {12      "Content-Type": "application/json",13      "x-publishable-api-key": process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY || "temp",14    },15    body: JSON.stringify({16      variant_id,17      quantity: 1,18    }),19  })20  .then((res) => res.json())21  .then(({ cart }) => {22    // use cart23    console.log(cart)24    alert("Product added to cart")25  })26}

The Add Line Item API route requires two request body parameters:

  • variant_id: The ID of the product variant to add to the cart. This is the variant selected by the customer.
  • quantity: The quantity to add to cart.

The API route returns the updated cart object.


Update Line Item in Cart#

You can update the quantity of a line item in the cart using the Update Line Item API route.

For example:

Code
1const updateQuantity = (2  itemId: string,3  quantity: number4) => {5  const cartId = localStorage.getItem("cart_id")6
7  if (!cartId) {8    return9  }10
11  fetch(`http://localhost:9000/store/carts/${cartId}/line-items/${12    itemId13  }`, {14    credentials: "include",15    method: "POST",16    headers: {17      "Content-Type": "application/json",18      "x-publishable-api-key": process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY || "temp",19    },20    body: JSON.stringify({21      quantity,22    }),23  })24  .then((res) => res.json())25  .then(({ cart }) => {26    // use cart27    console.log(cart)28  })29}

The Update Line Item API route requires:

  • The line item's ID to be passed as a path parameter.
  • The quantity request body parameter, which is the new quantity of the item.

The API route returns the updated cart object.


Remove Line Item from Cart#

To remove a line item from the cart, send a request to the Remove Line Item API route.

For example:

Code
1const removeItem = (itemId: string) => {2  const cartId = localStorage.getItem("cart_id")3
4  if (!cartId) {5    return6  }7
8  fetch(`http://localhost:9000/store/carts/${cartId}/line-items/${9    itemId10  }`, {11    credentials: "include",12    headers: {13      "x-publishable-api-key": process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY || "temp",14    },15    method: "DELETE",16  })17  .then((res) => res.json())18  .then(({ parent: cart }) => {19    // use cart20    console.log(cart)21  })22}

The Delete Line Item API route returns the updated cart object as the parent field.

Was this page helpful?
Edited Dec 26·Edit this page
Ask Anything
FAQ
What is Medusa?
How can I create a module?
How can I create a data model?
How do I create a workflow?
How can I extend a data model in the Product Module?
Recipes
How do I build a marketplace with Medusa?
How do I build digital products with Medusa?
How do I build subscription-based purchases with Medusa?
What other recipes are available in the Medusa documentation?
Chat is cleared on refresh
Line break