> For the complete documentation index, see [llms.txt](https://docs.solutioo.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.solutioo.de/datanorm-item-import/datanorm_en_us/prices/purchase-price-lists.md).

# Purchase Price Lists

## What the app writes

An imported price is only useful once Business Central finds it on a purchase order. The app therefore writes prices not just onto the item but as **price list lines** into a purchase price list for the delivering vendor. Standard Business Central price calculation then applies.

One DATANORM purchase price list is created **per vendor** and updated on every subsequent import.

<table><thead><tr><th width="230">Property</th><th>Value</th></tr></thead><tbody><tr><td><strong>Code</strong></td><td>Prefix, price type and vendor number, for example <code>DN-PUR-10000</code>. Set the prefix through <strong>Price List Code Prefix</strong>.</td></tr><tr><td><strong>Description</strong></td><td><em>DATANORM purchase prices</em> plus the vendor name.</td></tr><tr><td><strong>Source type</strong></td><td>Vendor</td></tr><tr><td><strong>Status</strong></td><td>From <strong>Price List Status</strong>: <em>Active</em> or <em>Draft</em>.</td></tr></tbody></table>

## Steps

{% stepper %}
{% step %}

#### Synchronise the articles

Price lines need an item, so synchronise article staging first, see [Reviewing and Approving Staging](/datanorm-item-import/datanorm_en_us/importing-datanorm-files/review-staging.md).
{% endstep %}

{% step %}

#### Write the prices

Run **Write Purchase Price List** on the import session.
{% endstep %}

{% step %}

#### Read the result

The app reports the number of purchase, sales and scale price lines written, plus the number of articles skipped.
{% endstep %}

{% step %}

#### Open the price list

Verify the result with **Show Purchase Price List**.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
With **Write Purchase Price Lists** enabled in the setup, prices are already written during synchronisation. You then only need the action on the import session to write them again, for example after reassigning the vendor.
{% endhint %}

## Which price becomes the purchase price?

DATANORM delivers up to two prices per article, distinguished by the price indicator: the **list price** (indicator 1) and the **net price** (indicator 2). **Purchase Price Source** decides which one applies.

<table><thead><tr><th width="290">Setting</th><th>Effect</th></tr></thead><tbody><tr><td><strong>Net Price</strong></td><td>Only the net price is used. Articles without a net price get no price line.</td></tr><tr><td><strong>List Price</strong></td><td>Only the list price is used – sensible when you derive discounts from the discount group.</td></tr><tr><td><strong>Net Price then List Price</strong></td><td>Prefers the net price and falls back to the list price when it is missing. The shipped default and the most robust choice for most deliveries.</td></tr></tbody></table>

## Applying discount groups

Enable **Apply Discount Groups to Purchase Price** and the app applies the discounts of the DATANORM discount group to the list price. Multiple discounts are chained **multiplicatively**, as DATANORM specifies.

{% hint style="warning" %}
The `.RAB` file must be imported before you write the price list, otherwise the app does not know the discount rates. See [Discount Groups](/datanorm-item-import/datanorm_en_us/master-data-and-mappings/discount-groups.md).
{% endhint %}

## Price changes

A `DATPREIS` file contains only new prices for articles already delivered. After importing it, run **Write Purchase Price List**; the app updates the existing lines of the price list rather than creating new ones.

If a price record carries a validity date, it becomes the starting date of the price line.

## Skipped articles

The result message reports a number of skipped articles. Typical reasons:

<table><thead><tr><th width="330">Reason</th><th>Remedy</th></tr></thead><tbody><tr><td>The article has not been synchronised yet.</td><td>Approve and synchronise article staging, then write again.</td></tr><tr><td>The article has no price in the selected source.</td><td>Set <strong>Purchase Price Source</strong> to <em>Net Price then List Price</em>.</td></tr><tr><td>The price is 0.</td><td>Check whether the supplier actually delivers the price.</td></tr></tbody></table>

{% hint style="warning" %}
If no vendor is assigned to the import, writing stops with a message – a purchase price list without a vendor is not possible. Assign the vendor with **Assign Vendor**, see [Manual Import and Vendor Assignment](/datanorm-item-import/datanorm_en_us/importing-datanorm-files/manual-import.md).
{% 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.solutioo.de/datanorm-item-import/datanorm_en_us/prices/purchase-price-lists.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.
