> For the complete documentation index, see [llms.txt](https://docs.xorosoft.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.xorosoft.com/xoroerp-1/utilities/pricing-rules/what-is-a-pricing-rule/how-do-pricing-restrictions-work.md).

# How do Pricing Restrictions work?

The pricing rule module allows you to create a “Pricing Restriction”. A Pricing Restriction is designed to prevent sales representatives from selling goods below a certain price. This ensures that your sales team doesn’t accidentally sell products at prices that might hurt your business.&#x20;

Please note: Turn on the app config, "**Enable Pricing Rule Restrictions**" to enable pricing restrictions.

<div align="left"><figure><img src="/files/OezbecRIhO5lAu5BlA7B" alt=""><figcaption></figcaption></figure></div>

### Understanding Pricing Restrictions

Pricing restrictions are defined by equations that specify conditions for the "Input Price" entered by users. The pricing restriction equations are based on two parameters: "Rule Type" set to "Restriction" and "Price Adj Type," which further defines the adjustment type.

#### Markup Adjustments

This adjustment determines how much can you increase the price of the item.&#x20;

For example, if the cost of a product is $100 and you decide on a 30% markup, the selling price can be increased to $130. Based on various operators, here is how the markup adjustment functions:

1. Input Price < \[Cost Type + \[Value % \* Cost Type]] (Operator: Less Than)
2. Input Price <= \[Cost Type + \[Value % \* Cost Type]] (Operator: Less Than or Equal To)
3. Input Price > \[Cost Type + \[Value % \* Cost Type]] (Operator: Greater Than)
4. Input Price >= \[Cost Type + \[Value % \* Cost Type]] (Operator: Greater Than or Equal To)
5. Input Price = \[Cost Type + \[Value % \* Cost Type]] (Operator: Equal To)
6. Input Price ≠ \[Cost Type + \[Value % \* Cost Type]] (Operator: Not Equal To)

#### Markdown Adjustments

This adjustment determines how much you can decrease the price of the item.&#x20;

For example, if the cost of a product is $100 and the markdown is 30%, the selling price cannot be less than $70. Based on various operators, here is how the markdown adjustment functions:

1. \[Cost Type – \[Value % \* Cost Type]] < Input Price (Operator: Less Than)
2. \[Cost Type – \[Value % \* Cost Type]] <= Input Price (Operator: Less Than or Equal To)
3. \[Cost Type – \[Value % \* Cost Type]] > Input Price (Operator: Greater Than)
4. \[Cost Type – \[Value % \* Cost Type]] >= Input Price (Operator: Greater Than or Equal To)
5. \[Cost Type – \[Value % \* Cost Type]] = Input Price (Operator: Equal To)
6. \[Cost Type – \[Value % \* Cost Type]] ≠ Input Price (Operator: Not Equal To)

#### Margin Adjustments

The margin adjustments focus on maintaining a specific profit margin over the cost.

For example, if the cost of a product is $100 and the desired profit margin is 30%, the selling price would be $142.86 (\[$100 / (1 - 0.30)]). Based on various operators, here is how the margin adjustment functions:

1. \[Input Price – Cost Type] < \[Value % \* Input Price] (Operator: Less Than)
2. \[Input Price – Cost Type] <= \[Value % \* Input Price] (Operator: Less Than or Equal To)
3. \[Input Price – Cost Type] > \[Value % \* Input Price] (Operator: Greater Than)
4. \[Input Price – Cost Type] >= \[Value % \* Input Price] (Operator: Greater Than or Equal To)
5. \[Input Price – Cost Type] = \[Value % \* Input Price] (Operator: Equal To)
6. \[Input Price – Cost Type] ≠ \[Value % \* Input Price] (Operator: Not Equal To)

#### Percentage Adjustments

This adjustment allows you to set the percentage for modifying the price of the item.

For example, if the cost of a product is $100, and the condition is "Input Price must be less than 30% of the cost," the selling price would be less than $30. Based on various operators, here is how the percentage adjustment functions:

1. Input Price < \[Value % \* Cost Type] (Operator: Less Than)
2. Input Price <= \[Value % \* Cost Type] (Operator: Less Than or Equal To)
3. Input Price > \[Value % \* Cost Type] (Operator: Greater Than)
4. Input Price >= \[Value % \* Cost Type] (Operator: Greater Than or Equal To)
5. Input Price = \[Value % \* Cost Type] (Operator: Equal To)
6. Input Price ≠ \[Value % \* Cost Type] (Operator: Not Equal To)

#### Amount Adjustments

This adjustment allows you to set a fixed amount for modifying the price of the item. For example, if the cost of a product is $100, and the condition is "Input Price must be less than $200," the selling price would be less than $200. Based on various operators, here is how the amount adjustment functions:

1. Input Price < \[Value + Cost Type] (Operator: Less Than)
2. Input Price <= \[Value + Cost Type] (Operator: Less Than or Equal To)
3. Input Price > \[Value + Cost Type] (Operator: Greater Than)
4. Input Price >= \[Value + Cost Type] (Operator: Greater Than or Equal To)
5. Input Price = \[Value + Cost Type] (Operator: Equal To)
6. Input Price ≠ \[Value + Cost Type] (Operator: Not Equal To)

#### Fixed Adjustments

This option allows you to make the adjustment based on a fixed value. For example, if the cost of a product is $100, and the condition is "Input Price must be less than $150," the selling price would be less than $150. Based on various operators, here is how the fixed adjustment functions:

1. Input Price < Value (Operator: Less Than)
2. Input Price <= Value (Operator: Less Than or Equal To)
3. Input Price > Value (Operator: Greater Than)
4. Input Price >= Value (Operator: Greater Than or Equal To)
5. Input Price = Value (Operator: Equal To)
6. Input Price ≠ Value (Operator: Not Equal To)

### Using the Pricing Restrictions

Once the pricing restrictions are set, the system will display a warning if a proposed price change is restricted. This warning indicator appears adjacent to the item line in the order details, notifying the sales team that the revised price does not align with the business requirements.

Once a restriction is triggered, the order cannot be released and further processed.

<figure><img src="/files/ctZlr3bdwJez9iAg98Sw" alt=""><figcaption></figcaption></figure>

Click on the warning sign to see the details of the pricing restriction.&#x20;

<figure><img src="/files/0BYTKs4RuLoVUCcC9LGD" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/BdWlajkx8pZW7eY0u56U" alt=""><figcaption></figcaption></figure>

Users with appropriate access can override the warning by clicking on "Grant Permission", or they must adjust the price to align with the specified restriction.

#### How do I upload a Sales Order with custom pricing and override the pricing configured in XoroERP?

You can upload a Sales Order with custom pricing by using the **Upload Sales Order** feature and specifying the desired **Unit Price** for each order line in the upload file.

#### Steps

1. Navigate to **Upload Sales Order**.
2. Populate the Sales Order file with the required order details.
3. Enter the desired value in the **Unit Price** field for each line item.
4. Ensure that the **Apply Pricing Rules** option is **unchecked**.
5. Upload the file.

#### Important

The **Apply Pricing Rules** option determines whether XoroERP applies pricing rules during the upload process.

* **Checked**: The system applies pricing rules and overrides the prices provided in the upload file.
* **Unchecked**: The system retains the prices specified in the upload file.

If you want the uploaded pricing to take precedence over configured pricing rules, leave **Apply Pricing Rules** unchecked.

#### Relevant Upload Fields

| Field              | Description                                          |
| ------------------ | ---------------------------------------------------- |
| Unit Price         | Custom selling price for the item                    |
| Qty                | Quantity ordered                                     |
| Discount           | Discount amount or percentage                        |
| Discount Type Name | Type of discount applied                             |
| Total Price        | Total line amount                                    |
| ReCalc Pricing     | Set to 'Y' to recalculate item pricing during upload |

#### Updating an Existing Sales Order

When updating an existing Sales Order, you may use the following options as required:

* **Void And Create** – Voids the existing order and creates a new one.
* **Keep Original Order Number** – Retains the original Sales Order number during the update process.

{% hint style="info" %}

#### **If pricing rules are active and you want the uploaded prices to remain unchanged, do not enable Apply Pricing Rules during the Sales Order upload.**

{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.xorosoft.com/xoroerp-1/utilities/pricing-rules/what-is-a-pricing-rule/how-do-pricing-restrictions-work.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
