Skip to main content
Skip to main content
You're viewing the documentation for v1, which isn't the latest Medusa version.Latest documentation

Examples of Pricing Module

In this document, you’ll find common examples of how you can use the Pricing Module in your application.

Create a Price Set​

import { NextResponse } from "next/server"

import {
initialize as initializePricingModule,
} from "@medusajs/pricing"

export async function POST(request: Request) {
const pricingService = await initializePricingModule()
const body = await request.json()

// A rule type with `rule_attribute=region_id` should
// already be present in the database
const priceSet = await pricingService.create([
{
rules: [{ rule_attribute: "region_id" }],
prices: [
{
currency_code: body.currency_code,
amount: body.amount,
rules: {
region_id: body.region_id,
},
},
],
},
])

return NextResponse.json({ price_set: priceSet })
}

List Price Sets​

import { NextResponse } from "next/server"

import {
initialize as initializePricingModule,
} from "@medusajs/pricing"

export async function GET(request: Request) {
const pricingService = await initializePricingModule()

const priceSets = await pricingService.list()

return NextResponse.json({ price_sets: priceSets })
}

Retrieve a Price Set by its ID​

import { NextResponse } from "next/server"

import {
initialize as initializePricingModule,
} from "@medusajs/pricing"

type ContextType = {
params: {
id: string
}
}

export async function GET(
request: Request,
{ params }: ContextType
) {
const pricingService = await initializePricingModule()

const priceSet = await pricingService.retrieve(params.id)

return NextResponse.json({ price_set: priceSet })
}

Create a Rule Type​

import { NextResponse } from "next/server"

import {
initialize as initializePricingModule,
} from "@medusajs/pricing"

type ContextType = {
params: {
id: string
}
}

export async function GET(
request: Request,
{ params }: ContextType
) {
const pricingService = await initializePricingModule()

const priceSet = await pricingService.retrieve(params.id)

return NextResponse.json({ price_set: priceSet })
}

Add Prices with Rules​

import { NextResponse } from "next/server"

import {
initialize as initializePricingModule,
} from "@medusajs/pricing"

export async function POST(request: Request) {
const pricingService = await initializePricingModule()
const body = await request.json()

const priceSet = await pricingService.addPrices({
priceSetId: body.price_set_id,
prices: [
{
amount: 500,
currency_code: "USD",
rules: {
region_id: body.region_id,
},
},
],
})

return NextResponse.json({ price_set: priceSet })
}

Create a Currency​

import { NextResponse } from "next/server"

import {
initialize as initializePricingModule,
} from "@medusajs/pricing"

export async function POST(request: Request) {
const pricingService = await initializePricingModule()
const body = await request.json()

const currencies = await pricingService.createCurrencies([{
code: "EUR",
symbol: "€",
symbol_native: "€",
name: "Euro",
}])

return NextResponse.json({ currencies })
}

List Currencies​

import { NextResponse } from "next/server"

import {
initialize as initializePricingModule,
} from "@medusajs/pricing"

export async function GET(request: Request) {
const pricingService = await initializePricingModule()

const currencies = await pricingService.listCurrencies()

return NextResponse.json({ currencies })
}

Create Price List​

import { NextResponse } from "next/server"
import { PriceListType } from "@medusajs/medusa";

import {
initialize as initializePricingModule,
} from "@medusajs/pricing"

export async function POST(request: Request) {
const pricingService = await initializePricingModule()

const priceLists = await pricingService.createPriceLists([
{
title: "My Sale",
description: "This is my sale",
type: PriceListType.SALE,
starts_at: Date.parse("01/10/2023").toString(),
ends_at: Date.parse("31/10/2023").toString(),
rules: {
region_id: ["DE", "DK"],
},
prices: [
{
amount: 400,
currency_code: "EUR",
price_set_id: "pset_124",
},
],
}
])

return NextResponse.json({ price_lists: priceLists })
}

Calculate Prices For a Currency​

import { NextResponse } from "next/server"

import {
initialize as initializePricingModule,
} from "@medusajs/pricing"

type ContextType = {
params: {
id: string
currency_code: string
}
}

export async function GET(
request: Request,
{ params }: ContextType
) {
const pricingService = await initializePricingModule()

const price = await pricingService.calculatePrices({
id: [params.id],
}, {
context: {
currency_code: params.currency_code,
},
})

return NextResponse.json({ price })
}

More Examples​

The module interface reference provides a reference to all the methods available for use with examples for each.

Was this section helpful?