---
displayed_sidebar: pricingReference
badge:
  variant: orange
  text: Beta
slug: /references/pricing/create
sidebar_label: create
---

import ParameterTypes from "@site/src/components/ParameterTypes"

# create - Pricing Module Reference

This documentation provides a reference to the `create` method. This belongs to the Pricing Module.

## create(data, sharedContext?): Promise&#60;[PriceSetDTO](../../pricing/interfaces/pricing.PriceSetDTO.mdx)&#62;

This method is used to create a new price set.

### Example

To create a default price set, don't pass any rules. For example:

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

async function createPriceSet () {
  const pricingService = await initializePricingModule()

  const priceSet = await pricingService.create(
    {
      rules: [],
      prices: [
        {
          amount: 500,
          currency_code: "USD",
          min_quantity: 0,
          max_quantity: 4,
          rules: {},
        },
        {
          amount: 400,
          currency_code: "USD",
          min_quantity: 5,
          max_quantity: 10,
          rules: {},
        },
      ],
    },
  )

  // do something with the price set or return it
}
```

To create a price set and associate it with rule types:

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

async function createPriceSet () {
  const pricingService = await initializePricingModule()

  const priceSet = await pricingService.create(
    {
      rules: [{ rule_attribute: "region_id" }, { rule_attribute: "city" }],
      prices: [
        {
          amount: 300,
          currency_code: "EUR",
          rules: {
            region_id: "PL",
            city: "krakow"
          },
        },
        {
          amount: 400,
          currency_code: "EUR",
          rules: {
            region_id: "PL"
          },
        },
        {
          amount: 450,
          currency_code: "EUR",
          rules: {
            city: "krakow"
          },
        }
      ],
    },
  )

  // do something with the price set or return it
}
```

### Parameters

<ParameterTypes parameters={[
  {
    "name": "data",
    "type": "[CreatePriceSetDTO](../../pricing/interfaces/pricing.CreatePriceSetDTO.mdx)",
    "description": "The attributes of the price set to create.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": [
      {
        "name": "prices",
        "type": "[CreatePricesDTO](../../pricing/interfaces/pricing.CreatePricesDTO.mdx)[]",
        "description": "The prices to create and add to this price set.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": [
          {
            "name": "amount",
            "type": "`number`",
            "description": "The amount of this money amount.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "currency",
            "type": "[CreateCurrencyDTO](../../pricing/interfaces/pricing.CreateCurrencyDTO.mdx)",
            "description": "The currency of this money amount.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "currency_code",
            "type": "`string`",
            "description": "The currency code of this money amount.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "id",
            "type": "`string`",
            "description": "The ID of the money amount.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "max_quantity",
            "type": "`null` \\| `number`",
            "description": "The maximum quantity required to be purchased for this money amount to be applied.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "min_quantity",
            "type": "`null` \\| `number`",
            "description": "The minimum quantity required to be purchased for this money amount to be applied.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "rules",
            "type": "`Record<string, string>`",
            "description": "The rules to add to the price. The object's keys are rule types' `rule_attribute` attribute, and values are the value of that rule associated with this price.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          }
        ]
      },
      {
        "name": "rules",
        "type": "`object`[]",
        "description": "The rules to associate with the price set.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": [
          {
            "name": "rule_attribute",
            "type": "`string`",
            "description": "the value of the rule's `rule_attribute` attribute.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          }
        ]
      }
    ]
  },
  {
    "name": "sharedContext",
    "type": "[Context](../../pricing/interfaces/pricing.Context.mdx)",
    "description": "A context used to share resources, such as transaction manager, between the application and the module.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": [
      {
        "name": "enableNestedTransactions",
        "type": "`boolean`",
        "description": "A boolean value indicating whether nested transactions are enabled.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": []
      },
      {
        "name": "isolationLevel",
        "type": "`string`",
        "description": "A string indicating the isolation level of the context. Possible values are `READ UNCOMMITTED`, `READ COMMITTED`, `REPEATABLE READ`, or `SERIALIZABLE`.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": []
      },
      {
        "name": "manager",
        "type": "`TManager`",
        "description": "An instance of a manager, typically an entity manager, of type `TManager`, which is a typed parameter passed to the context to specify the type of the `manager`.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": []
      },
      {
        "name": "transactionId",
        "type": "`string`",
        "description": "A string indicating the ID of the current transaction.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": []
      },
      {
        "name": "transactionManager",
        "type": "`TManager`",
        "description": "An instance of a transaction manager of type `TManager`, which is a typed parameter passed to the context to specify the type of the `transactionManager`.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": []
      }
    ]
  }
]} />

### Returns

<ParameterTypes parameters={[
  {
    "name": "Promise",
    "type": "Promise&#60;[PriceSetDTO](../../pricing/interfaces/pricing.PriceSetDTO.mdx)&#62;",
    "optional": false,
    "defaultValue": "",
    "description": "The created price set.",
    "expandable": false,
    "children": [
      {
        "name": "id",
        "type": "`string`",
        "description": "The ID of the price set.",
        "optional": false,
        "defaultValue": "",
        "expandable": false,
        "children": []
      },
      {
        "name": "money_amounts",
        "type": "[MoneyAmountDTO](../../pricing/interfaces/pricing.MoneyAmountDTO.mdx)[]",
        "description": "The prices that belong to this price set.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": [
          {
            "name": "amount",
            "type": "`number`",
            "description": "The price of this money amount.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "currency",
            "type": "[CurrencyDTO](../../pricing/interfaces/pricing.CurrencyDTO.mdx)",
            "description": "The money amount's currency.",
            "optional": true,
            "defaultValue": "",
            "expandable": true,
            "children": []
          },
          {
            "name": "currency_code",
            "type": "`string`",
            "description": "The currency code of this money amount.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "id",
            "type": "`string`",
            "description": "The ID of the money amount.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "max_quantity",
            "type": "`number`",
            "description": "The maximum quantity required to be purchased for this price to be applied.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "min_quantity",
            "type": "`number`",
            "description": "The minimum quantity required to be purchased for this price to be applied.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "price_set_money_amount",
            "type": "[PriceSetMoneyAmountDTO](../../pricing/interfaces/pricing.PriceSetMoneyAmountDTO.mdx)",
            "description": "The details of the relation between the money amount and its associated price set.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          }
        ]
      },
      {
        "name": "rule_types",
        "type": "[RuleTypeDTO](../../pricing/interfaces/pricing.RuleTypeDTO.mdx)[]",
        "description": "The rule types applied on this price set.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": [
          {
            "name": "default_priority",
            "type": "`number`",
            "description": "The priority of the rule type. This is useful when calculating the price of a price set, and multiple rules satisfy \nthe provided context. The higher the value, the higher the priority of the rule type.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "id",
            "type": "`string`",
            "description": "The ID of the rule type.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "name",
            "type": "`string`",
            "description": "The display name of the rule type.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "rule_attribute",
            "type": "`string`",
            "description": "The unique name used to later identify the rule\\_attribute. For example, it can be used in the `context` parameter of \nthe `calculatePrices` method to specify a rule for calculating the price.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          }
        ]
      }
    ]
  }
]} />

## create(data, sharedContext?): Promise&#60;[PriceSetDTO](../../pricing/interfaces/pricing.PriceSetDTO.mdx)[]&#62;

This method is used to create multiple price sets.

### Example

To create price sets with a default price, don't pass any rules and make sure to pass the `currency_code` of the price. For example:

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

async function createPriceSets () {
  const pricingService = await initializePricingModule()

  const priceSets = await pricingService.create([
    {
      rules: [],
      prices: [
        {
          amount: 500,
          currency_code: "USD",
          rules: {},
        },
      ],
    },
  ])

  // do something with the price sets or return them
}
```

To create price sets and associate them with rule types:

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

async function createPriceSets () {
  const pricingService = await initializePricingModule()

  const priceSets = await pricingService.create([
    {
      rules: [{ rule_attribute: "region_id" }, { rule_attribute: "city" }],
      prices: [
        {
          amount: 300,
          currency_code: "EUR",
          rules: {
            region_id: "PL",
            city: "krakow"
          },
        },
        {
          amount: 400,
          currency_code: "EUR",
          min_quantity: 0,
          max_quantity: 4,
          rules: {
            region_id: "PL"
          },
        },
        {
          amount: 450,
          currency_code: "EUR",
          rules: {
            city: "krakow"
          },
        }
      ],
    },
  ])

  // do something with the price sets or return them
}
```

### Parameters

<ParameterTypes parameters={[
  {
    "name": "data",
    "type": "[CreatePriceSetDTO](../../pricing/interfaces/pricing.CreatePriceSetDTO.mdx)[]",
    "description": "The price sets to create.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": [
      {
        "name": "prices",
        "type": "[CreatePricesDTO](../../pricing/interfaces/pricing.CreatePricesDTO.mdx)[]",
        "description": "The prices to create and add to this price set.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": [
          {
            "name": "amount",
            "type": "`number`",
            "description": "The amount of this money amount.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "currency",
            "type": "[CreateCurrencyDTO](../../pricing/interfaces/pricing.CreateCurrencyDTO.mdx)",
            "description": "The currency of this money amount.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "currency_code",
            "type": "`string`",
            "description": "The currency code of this money amount.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "id",
            "type": "`string`",
            "description": "The ID of the money amount.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "max_quantity",
            "type": "`null` \\| `number`",
            "description": "The maximum quantity required to be purchased for this money amount to be applied.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "min_quantity",
            "type": "`null` \\| `number`",
            "description": "The minimum quantity required to be purchased for this money amount to be applied.",
            "optional": true,
            "defaultValue": "",
            "expandable": false,
            "children": []
          },
          {
            "name": "rules",
            "type": "`Record<string, string>`",
            "description": "The rules to add to the price. The object's keys are rule types' `rule_attribute` attribute, and values are the value of that rule associated with this price.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          }
        ]
      },
      {
        "name": "rules",
        "type": "`object`[]",
        "description": "The rules to associate with the price set.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": [
          {
            "name": "rule_attribute",
            "type": "`string`",
            "description": "the value of the rule's `rule_attribute` attribute.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          }
        ]
      }
    ]
  },
  {
    "name": "sharedContext",
    "type": "[Context](../../pricing/interfaces/pricing.Context.mdx)",
    "description": "A context used to share resources, such as transaction manager, between the application and the module.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": [
      {
        "name": "enableNestedTransactions",
        "type": "`boolean`",
        "description": "A boolean value indicating whether nested transactions are enabled.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": []
      },
      {
        "name": "isolationLevel",
        "type": "`string`",
        "description": "A string indicating the isolation level of the context. Possible values are `READ UNCOMMITTED`, `READ COMMITTED`, `REPEATABLE READ`, or `SERIALIZABLE`.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": []
      },
      {
        "name": "manager",
        "type": "`TManager`",
        "description": "An instance of a manager, typically an entity manager, of type `TManager`, which is a typed parameter passed to the context to specify the type of the `manager`.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": []
      },
      {
        "name": "transactionId",
        "type": "`string`",
        "description": "A string indicating the ID of the current transaction.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": []
      },
      {
        "name": "transactionManager",
        "type": "`TManager`",
        "description": "An instance of a transaction manager of type `TManager`, which is a typed parameter passed to the context to specify the type of the `transactionManager`.",
        "optional": true,
        "defaultValue": "",
        "expandable": false,
        "children": []
      }
    ]
  }
]} />

### Returns

<ParameterTypes parameters={[
  {
    "name": "Promise",
    "type": "Promise&#60;[PriceSetDTO](../../pricing/interfaces/pricing.PriceSetDTO.mdx)[]&#62;",
    "optional": false,
    "defaultValue": "",
    "description": "The list of created price sets.",
    "expandable": false,
    "children": [
      {
        "name": "PriceSetDTO[]",
        "type": "[PriceSetDTO](../../pricing/interfaces/pricing.PriceSetDTO.mdx)[]",
        "optional": false,
        "defaultValue": "",
        "description": "",
        "expandable": false,
        "children": [
          {
            "name": "PriceSetDTO",
            "type": "`object`",
            "description": "A price set's data.",
            "optional": false,
            "defaultValue": "",
            "expandable": false,
            "children": []
          }
        ]
      }
    ]
  }
]} />
