import { CodeTabs, CodeTab } from "docs-ui" export const metadata = { title: `Examples of the Cart Module`, } # {metadata.title} In this guide, you’ll find common examples of how you can use the Cart Module in your application. ## Create a Cart ```ts import { MedusaRequest, MedusaResponse } from "@medusajs/medusa" import { ICartModuleService } from "@medusajs/types" import { ModuleRegistrationName } from "@medusajs/utils" export async function POST( req: MedusaRequest, res: MedusaResponse ): Promise { const cartModuleService: ICartModuleService = req.scope.resolve( ModuleRegistrationName.CART ) const cart = await cartModuleService.createCarts({ currency_code: "usd", shipping_address: { address_1: "1512 Barataria Blvd", country_code: "us", }, items: [ { title: "Shirt", unit_price: 1000, quantity: 1, }, ], }) res.json({ cart }) } ``` ```ts import { NextResponse } from "next/server" import { initialize as initializeCartModule } from "@medusajs/cart" export async function POST(request: Request) { const cartModuleService = await initializeCartModule() const cart = await cartModuleService.createCarts({ currency_code: "usd", shipping_address: { address_1: "1512 Barataria Blvd", country_code: "us", }, items: [ { title: "Shirt", unit_price: 1000, quantity: 1, }, ], }) return NextResponse.json({ cart, }) } ``` --- ## Retrieve Cart by ID ```ts import { MedusaRequest, MedusaResponse } from "@medusajs/medusa" import { ICartModuleService } from "@medusajs/types" import { ModuleRegistrationName } from "@medusajs/utils" export async function GET( req: MedusaRequest, res: MedusaResponse ): Promise { const cartModuleService: ICartModuleService = req.scope.resolve( ModuleRegistrationName.CART ) const cart = await cartModuleService.retrieveCart("cart_123") res.json({ cart }) } ``` ```ts import { NextResponse } from "next/server" import { initialize as initializeCartModule } from "@medusajs/cart" export async function GET(request: Request) { const cartModuleService = await initializeCartModule() const cart = await cartModuleService.retrieveCart("cart_123") return NextResponse.json({ cart, }) } ``` --- ## Add Item to Cart ```ts import { MedusaRequest, MedusaResponse } from "@medusajs/medusa" import { ICartModuleService } from "@medusajs/types" import { ModuleRegistrationName } from "@medusajs/utils" export async function POST( req: MedusaRequest, res: MedusaResponse ): Promise { const cartModuleService: ICartModuleService = req.scope.resolve( ModuleRegistrationName.CART ) const lineItem = await cartModuleService.addLineItems({ cart_id: "cart_123", title: "Shirt", quantity: 2, unit_price: 5000, }) res.json({ line_item: lineItem, }) } ``` ```ts import { NextResponse } from "next/server" import { initialize as initializeCartModule } from "@medusajs/cart" export async function POST(request: Request) { const cartModuleService = await initializeCartModule() const lineItem = await cartModuleService.addLineItems({ cart_id: "cart_123", title: "Shirt", quantity: 2, unit_price: 5000, }) return NextResponse.json({ line_item: lineItem, }) } ``` --- ## Add Shipping Method to Cart ```ts import { MedusaRequest, MedusaResponse } from "@medusajs/medusa" import { ICartModuleService } from "@medusajs/types" import { ModuleRegistrationName } from "@medusajs/utils" export async function POST( req: MedusaRequest, res: MedusaResponse ): Promise { const cartModuleService: ICartModuleService = req.scope.resolve( ModuleRegistrationName.CART ) const shippingMethod = await cartModuleService.addShippingMethods({ cart_id: "cart_123", name: "Custom shipping", amount: 1000, }) res.json({ shipping_method: shippingMethod, }) } ``` ```ts import { NextResponse } from "next/server" import { initialize as initializeCartModule } from "@medusajs/cart" export async function POST(request: Request) { const cartModuleService = await initializeCartModule() const shippingMethod = await cartModuleService.addShippingMethods({ cart_id: "cart_123", name: "Custom shipping", amount: 1000, }) return NextResponse.json({ shipping_method: shippingMethod, }) } ``` --- ## Add Item Adjustment Line ```ts import { MedusaRequest, MedusaResponse } from "@medusajs/medusa" import { ICartModuleService } from "@medusajs/types" import { ModuleRegistrationName } from "@medusajs/utils" export async function POST( req: MedusaRequest, res: MedusaResponse ): Promise { const cartModuleService: ICartModuleService = req.scope.resolve( ModuleRegistrationName.CART ) const itemAdjustment = await cartModuleService.addLineItemAdjustments({ item_id: "cali_123", amount: 500, code: "50%OFF", }) res.json({ adjustment: itemAdjustment, }) } ``` ```ts import { NextResponse } from "next/server" import { initialize as initializeCartModule } from "@medusajs/cart" export async function POST(request: Request) { const cartModuleService = await initializeCartModule() const itemAdjustment = await cartModuleService.addLineItemAdjustments({ item_id: "cali_123", amount: 500, code: "50%OFF", }) return NextResponse.json({ adjustment: itemAdjustment, }) } ``` --- ## Add Shipping Method Adjustment Line ```ts import { MedusaRequest, MedusaResponse } from "@medusajs/medusa" import { ICartModuleService } from "@medusajs/types" import { ModuleRegistrationName } from "@medusajs/utils" export async function POST( req: MedusaRequest, res: MedusaResponse ): Promise { const cartModuleService: ICartModuleService = req.scope.resolve( ModuleRegistrationName.CART ) const shippingMethodAdjustment = await cartModuleService.addShippingMethodAdjustments({ shipping_method_id: "casm_123", amount: 500, code: "FREESHIPPING", }) res.json({ adjustment: shippingMethodAdjustment, }) } ``` ```ts import { NextResponse } from "next/server" import { initialize as initializeCartModule } from "@medusajs/cart" export async function POST(request: Request) { const cartModuleService = await initializeCartModule() const shippingMethodAdjustment = await cartModuleService.addShippingMethodAdjustments({ shipping_method_id: "casm_123", amount: 500, code: "FREESHIPPING", }) return NextResponse.json({ adjustment: shippingMethodAdjustment, }) } ``` --- ## Remove Line Item from Cart ```ts import { MedusaRequest, MedusaResponse } from "@medusajs/medusa" import { ICartModuleService } from "@medusajs/types" import { ModuleRegistrationName } from "@medusajs/utils" export async function DELETE( req: MedusaRequest, res: MedusaResponse ): Promise { const cartModuleService: ICartModuleService = req.scope.resolve( ModuleRegistrationName.CART ) await cartModuleService.deleteLineItems(["cali_123"]) res.status(200) } ``` ```ts import { NextResponse } from "next/server" import { initialize as initializeCartModule } from "@medusajs/cart" export async function DELETE(request: Request) { const cartModuleService = await initializeCartModule() await cartModuleService.deleteLineItems(["cali_123"]) } ``` --- ## Remove Shipping Method from Cart ```ts import { MedusaRequest, MedusaResponse } from "@medusajs/medusa" import { ICartModuleService } from "@medusajs/types" import { ModuleRegistrationName } from "@medusajs/utils" export async function DELETE( req: MedusaRequest, res: MedusaResponse ): Promise { const cartModuleService: ICartModuleService = req.scope.resolve( ModuleRegistrationName.CART ) await cartModuleService.deleteShippingMethods(["casm_123"]) res.status(200) } ``` ```ts import { MedusaRequest, MedusaResponse } from "@medusajs/medusa" import { ICartModuleService } from "@medusajs/types" import { ModuleRegistrationName } from "@medusajs/utils" export async function DELETE( req: MedusaRequest, res: MedusaResponse ): Promise { const cartModuleService: ICartModuleService = req.scope.resolve( ModuleRegistrationName.CART ) await cartModuleService.deleteShippingMethods(["casm_123"]) res.status(200) } ``` --- ## More Examples The [Cart Module's main service reference](/references/cart) provides a reference to all the methods available for use with examples for each.