> For the complete documentation index, see [llms.txt](https://docs.fulfillmenttools.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fulfillmenttools.com/documentation/by-pillar/order-management/pricing-data-model.md).

# Pricing data model

fulfillmenttools handles pricing data throughout the order lifecycle, but it doesn't make pricing decisions.

This article explains what pricing information fulfillmenttools accepts, how it stores pricing inputs, and how it derives deterministic order totals from those inputs.

You can fully reconstruct all order prices and intermediate totals at any time using only the pricing data stored with the order and the arithmetic-derived fields calculated by fulfillmenttools. Price reconstruction requires no catalog prices, defaults, or external systems.

{% hint style="warning" %}
The values calculated by fulfillmenttools, including derived fields, order totals, tax aggregates, and other calculated pricing values, are provided for operational fulfillment purposes only.&#x20;

They are not intended and must not be used as an authoritative basis for invoicing, accounting, tax reporting, statutory reporting, or any other legally binding financial document.&#x20;

You remain solely responsible for determining, validating, and maintaining legally compliant prices, taxes, invoices, accounting records, and financial reports using your own authoritative systems and processes.
{% endhint %}

## Responsibility split

fulfillmenttools isn't a pricing engine. It doesn't make pricing decisions.

Pricing authority lies outside fulfillmenttools and typically resides in a customer‑owned pricing engine or an authorized user acting through a backoffice application or other administrative interface with permission to create or modify pricing data.

fulfillmenttools has exactly two responsibilities:

* Store all pricing inputs verbatim
* Calculate deterministic, arithmetic-derived values based on those inputs

fulfillmenttools never applies:

* Business rules
* Pricing logic
* Tax logic
* Decision‑making logic

### Operational versus financial use

The pricing capabilities provided by fulfillmenttools are intended to support operational processes such as order management, fulfillment, picking, returns processing, operational reporting, and customer service workflows. The values calculated by fulfillmenttools are designed to provide consistent, traceable operational pricing information throughout the order lifecycle.

fulfillmenttools is not intended to serve as a financial, accounting, billing, invoicing, or tax system of record. Customers are responsible for maintaining and operating authoritative systems for financial reporting, invoice generation, accounting, tax determination, and statutory compliance.

## Pricing scopes

Pricing data exists on two distinct scopes, which can coexist within the same order. These scopes are:&#x20;

* Line item pricing (item scope)
* Order pricing (order scope)

The table below outlines the key differences.

|                    | Line item pricing                                                                                                                  | Order pricing                                                                                                           |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **Applies to**     | Single order line item                                                                                                             | Entire order                                                                                                            |
| **Typical inputs** | <ul><li>Base price</li><li>Line item discounts</li><li>Line item taxes (already calculated)</li><li>Line item surcharges</li></ul> | <ul><li>Order‑wide discounts (promotions, coupons)</li><li>Order‑wide fees</li><li>Aggregated tax information</li></ul> |
| **Stored on**      | Article attribute level                                                                                                            | Top-level pricing object                                                                                                |

{% hint style="info" %}
Order pricing never modifies line item pricing.
{% endhint %}

## Core principles

### Monetary representation

All monetary values are represented using:

* `value` (integer)
* `currency` (ISO‑4217)
* `decimalPlaces`

### Deterministic arithmetic

fulfillmenttools performs deterministic arithmetic aggregation using:

* Multiplication
* Addition
* Subtraction
* Division

### No pricing logic

fulfillmenttools:

* Doesn't apply pricing logic
* Doesn't apply tax logic
* Doesn't infer missing values

### Representation normalization

fulfillmenttools doesn't perform business-rule rounding. However, some arithmetic operations (for example, percentage discounts or unit-price derivations) may produce results that can't be represented exactly using the integer-based monetary model (`value + decimalPlaces`). In such cases, fulfillmenttools applies deterministic normalization to the derived result so it can be represented using the required integer format.

For percentage-based discounts, normalization applies to the resulting subtotal after the discount is applied. The effective discount amount is then derived from the normalized subtotal.

This normalization is a technical representation constraint, not a pricing decision, and is applied consistently across all calculations.

{% hint style="info" %}
The current implementation uses standard rounding to the nearest representable minor unit based on the configured `decimalPlaces`.
{% endhint %}

Because normalization is applied to derived values rather than pricing inputs, small differences of one minor unit may occur compared to systems that apply normalization at a different calculation stage.

Such differences are expected because fulfillmenttools applies normalization to derived values rather than pricing inputs or intermediate calculation results. Systems that apply normalization at a different stage of the calculation may therefore produce slightly different results.

Customers are responsible for ensuring that downstream systems apply compatible calculation and normalization rules where consistency across systems is required. As a consequence of deterministic normalization, multiplying a normalized unit price by its quantity may result in a value that differs by up to one minor unit from the corresponding line-item total.

In such cases, the line-item total is considered the primary value for price aggregation and further calculations. The unit price represents a normalized derivation of that value.

## Line item pricing inputs

Line item pricing inputs are provided as pricing-related `attributes` on the respective order line item.

The supported pricing categories are:

* `basePrice`
* `discount`
* `tax`
* `surcharge`

For example:

```json
...
    "orderLineItems": [
    {
      "article": {
        "tenantArticleId": "TSHIRT-W-2468",
        "title": "Basic T-shirt white",
        "attributes": [
          { "category": "descriptive", "priority": 100, "key": "Size", "value": "S", "type": "STRING" },
          { "category": "basePrice", "key": "value", "value": "3000", "type": "NUMBER" },
          { "category": "basePrice", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "basePrice", "key": "decimalPlaces", "value": "2", "type": "NUMBER" },
          { "category": "discount", "key": "value", "value": "399", "type": "NUMBER" },
          { "category": "discount", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "discount", "key": "decimalPlaces", "value": "2", "type": "NUMBER" },
          { "category": "tax", "key": "value", "value": "513", "type": "NUMBER" },
          { "category": "tax", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "tax", "key": "decimalPlaces", "value": "2", "type": "NUMBER" }
        ]
      },
      "quantity": 1,
      "scannableCodes": ["829401938473"]
    }
...    
```

### Base price (input)

The base price represents the tax-inclusive unit price provided by the pricing authority.

fulfillmenttools treats base prices as authoritative input, stores them verbatim, and doesn't recalculate or infer missing values.

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Field</th><th>Definition</th></tr></thead><tbody><tr><td><code>basePrice.value</code></td><td>Unit price including all taxes applicable to the item, before discounts</td></tr><tr><td><code>basePrice.currency</code></td><td>ISO currency</td></tr><tr><td><code>basePrice.decimalPlaces</code></td><td>Decimal precision</td></tr><tr><td><code>basePrice.valueOfMeasureForBasePrice</code></td><td>Reference quantity for base price</td></tr><tr><td><code>basePrice.unitKeyOfMeasureForBasePrice</code></td><td>Measurement unit for base price (must be the same unit key in <code>quantity</code>)</td></tr></tbody></table>

In the tabs below, you'll find examples of the difference between an item purchased by weight and by piece.

{% tabs %}
{% tab title="Weighted line item" %}

```json
 ...
        [
          { "category": "basePrice", "key": "value", "value": "349", "type": "NUMBER" },
          { "category": "basePrice", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "basePrice", "key": "decimalPlaces", "value": "2", "type": "NUMBER" },
          { "category": "basePrice", "key": "valueOfMeasureForBasePrice", "value": "1000", "type": "NUMBER" },
          { "category": "basePrice", "key": "unitKeyOfMeasureForBasePrice", "value": "gram", "type": "STRING" }
        ]
      },
      "quantity": 800,
      "measurementUnitKey": "gram",
...
```

{% endtab %}

{% tab title="Piece line item" %}

```
...
        "attributes": [
          { "category": "basePrice", "key": "value", "value": "2999", "type": "NUMBER" },
          { "category": "basePrice", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "basePrice", "key": "decimalPlaces", "value": "2", "type": "NUMBER" },
        ]
      },
      "quantity": 1,
...      
```

{% endtab %}
{% endtabs %}

### Line item discounts (input)

Line item discounts only apply to the specific item.&#x20;

Possible representations:

* Absolute discount amount
* Percentage discount
* Both

If both an absolute value and a percentage are provided, the absolute value is used for all fulfillmenttools‑calculated derived fields. Percentage values are treated as informational.

### Line item taxes (input)

fulfillmenttools never calculates taxes.

Tax data is:

* Provided by the pricing authority
* Stored verbatim
* Used for informational and reporting purposes only

All base prices are tax‑inclusive.

Tax values:

* Aren't price‑forming
* Aren't added on top of calculations

### Line‑item surcharges (input)

All surcharge values must be pre‑calculated by the pricing authority. The surcharge applies to the entire line item, not per quantity.

## Order pricing inputs

Order inputs are provided in the top‑level `pricing` object of the order entity.&#x20;

```http
POST https://{YOUR_TENANT_NAME}.api.fulfillmenttools.com/api/orders
```

For example:

```json
...
{
    "pricing": {
       "discounts": [
            {
                "name": "Summer promotion",
                "nameLocalized": {
                    "en_US": "Coupon SUMMER2026",
                    "de_DE": "Coupon SOMMER2026"
                },
                "type": "PERCENTAGE",
                "percentage": 10,
                "context": "PROMOTION",
                "tenantDiscountId": "summer-2026"
            },
       ], 
       "fees": [
         {
          "name": "Shipping fee",
          "value": { "value": 499, "currency": "EUR", "decimalPlaces": 2 }
         }
       ],
       "taxes": [
         {
           "type": "VAT",
           "ratePercent": 19,
           "value": { "value": 2565, "currency": "EUR", "decimalPlaces": 2 },
           "scope": "DOMESTIC",
           "taxableValue": { "value": 13493, "currency": "EUR", "decimalPlaces": 2 }
         }
       ]
...       
```

### Order discounts (input)

Apply to the entire order only.&#x20;

Examples:

* Campaign promotions
* Vouchers
* Coupons

Order discounts:

* Don't affect individual line item prices
* Aren't redistributed to items
* Are treated as fixed inputs

If both a percentage and an absolute value are provided, the absolute value takes precedence.

#### Gift cards or prepaid instruments

This pricing model doesn't support gift cards, prepaid instruments, or store credit. Within this documentation, vouchers refer to discount codes that reduce the price of goods. Instruments carrying a monetary balance are not discounts. They are payment methods and don't reduce the value of the goods themselves. Such instruments may have their own redemption, balance management, and tax treatment rules, which are outside the scope of fulfillmenttools and aren't represented by this pricing model.&#x20;

A voucher code may be carried through the order as an order-level discount by storing the code in `tenantDiscountId` and providing a discount value of 0. fulfillmenttools passes the code through without validation and doesn't derive any discount value from it.&#x20;

External systems remain responsible for voucher redemption, remaining balance calculations, payment handling, and tax treatment.

### Order fees (input)

Order fees apply once per order. They are treated as fixed order inputs. They aren't automatically recalculated or redistributed when you add, remove, or change line items.

Examples:

* Packaging
* Service fees
* Handling fees

### Order taxes (input)

Order taxes represent aggregated, informational tax summaries.

They can coexist with line item tax data.

fulfillmenttools:

* Doesn't calculate taxes
* Doesn't reconcile line item and order taxes
* Doesn't validate tax consistency

## Derived price components (fulfillmenttools‑calculated)

### General rules

fulfillmenttools performs only deterministic arithmetic aggregation:

* Multiplication
* Addition
* Subtraction

fulfillmenttools:

* Doesn't apply pricing logic
* Applies no tax logic
* Performs no business-rule rounding. When derived values can't be represented exactly using the target integer representation (`value + decimalPlaces`), fulfillmenttools applies deterministic normalization to the derived result.
* Infers no missing values

### Derived fields: Line item

<table data-header-hidden="false" data-header-sticky><thead><tr><th width="151.453125">Field</th><th width="213.05859375">Formula</th><th width="224.453125">Can't calculate when</th><th>Result when it can't be calculated</th></tr></thead><tbody><tr><td><code>subtotalBeforeDiscounts</code></td><td><p><code>basePrice.value</code> × <code>quantity</code></p><p></p><p>or<br><br><code>basePrice.value</code> × (<code>quantity</code> / <code>valueOfMeasureForBasePrice</code>)</p></td><td>Missing <code>basePrice</code> or <code>quantity</code></td><td><code>null</code></td></tr><tr><td><code>subtotalAfterDiscounts</code></td><td><code>subtotalBeforeDiscounts</code> − <code>discount.value</code></td><td>Missing inputs</td><td><code>null</code></td></tr><tr><td><code>finalUnitPrice</code></td><td><code>subtotalAfterDiscount</code> / <code>quantity</code></td><td>Missing inputs</td><td><code>null</code></td></tr><tr><td><code>finalLineItemPrice</code></td><td><code>(finalUnitPrice</code> ×  <code>quantity</code>) + <code>surcharge.value</code></td><td>Missing inputs</td><td><code>null</code></td></tr></tbody></table>

If required inputs are missing, fulfillmenttools doesn't perform partial calculations and logs an internal warning.

### Derived fields: Order totals

fulfillmenttools also calculates order totals based on:

* Line item derived values
* Order pricing inputs

Within the `pricing` object, you'll find the below fields within the `total.priceBreakdown`:

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Field</th><th>Meaning</th><th>Can't calculate when</th><th>Result when it can't be calculated</th></tr></thead><tbody><tr><td><code>subTotal</code></td><td>Sum of all line item <code>subtotalBeforeDiscounts</code></td><td>Any subtotal missing</td><td><code>null</code></td></tr><tr><td><code>totalDiscounts</code></td><td>Sum of all discounts affecting order total (item + order scope)</td><td>No discounts present</td><td><code>0</code></td></tr><tr><td><code>totalLineItemSurcharges</code></td><td>Sum of (surcharges.value)</td><td>No surcharge present</td><td><code>0</code></td></tr><tr><td><code>totalFees</code></td><td>Sum of order‑level fees</td><td>No fees present</td><td><code>0</code></td></tr><tr><td><code>totalTaxes</code></td><td>Sum of (tax.value (line-item)) + sum of (tax.value (order-level))<br><br>No VAT calculations in the totals. These are just for information.</td><td>Missing tax values</td><td><code>null</code></td></tr><tr><td><code>total</code></td><td><code>subTotal</code> − <code>totalDiscounts</code> + <code>totalFees</code> + <code>totalLineItemSurcharges</code></td><td>Any required input missing</td><td><code>null</code></td></tr></tbody></table>

## Behavior when pricing is missing

If required pricing inputs for a derived field are missing, fulfillmenttools doesn't calculate that derived field, sets it to `null`, and logs an internal warning.

Derived pricing is calculated only when all required inputs are present. No partial derivations are performed.

Missing values are never interpreted as zero. You must explicitly provide a base price of `0` to indicate a free item. Derived values are only calculated when all inputs required for the respective calculation are present.

## Price reconstruction guarantee

The final order price and all intermediate totals can be fully reconstructed using:

* Stored pricing inputs
* fulfillmenttools-calculated arithmetic derived fields

No catalog prices, defaults, assumptions, or external systems are required.

The reconstruction guarantee applies to price calculation and traceability. The pricing authority remains responsible for pricing correctness.

## Contractual scope

This document describes the technical behavior of fulfillmenttools pricing functionality.

The contractual scope of fulfillmenttools responsibilities is defined exclusively by the applicable contractual agreements between fulfillmenttools and the customer.

This documentation doesn't constitute a contractual warranty, legal opinion, accounting guidance, tax guidance, or guarantee regarding the correctness, validity, or compliance of pricing, tax, accounting, or invoicing data.

## Example

{% tabs %}
{% tab title="Endpoint" %}

```http
POST https://{YOUR_TENANT_NAME}.api.fulfillmenttools.com/api/orders
```

{% endtab %}

{% tab title="Request" %}

```json
{
    "orderDate": "{{$isoTimestamp}}",
    "consumer": {
        "email": "phil.bison@fulfillmenttools.com",
        "addresses": [
            {
                "street": "42nd street",
                "houseNumber": "42",
                "postalCode": "42420",
                "city": "Los Angeles",
                "country": "US",
                "firstName": "Phil",
                "lastName": "Bison"
            }
        ]
    },
    "tenantOrderId": "R42424242",
    "status": "OPEN",
  "orderLineItems": [
    {
      "article": {
        "tenantArticleId": "TSHIRT-W-2468",
        "title": "Basic T-shirt white",
        "attributes": [
          { "category": "descriptive", "priority": 100, "key": "Size", "value": "S", "type": "STRING" },
          { "category": "basePrice", "key": "value", "value": "3000", "type": "NUMBER" },
          { "category": "basePrice", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "basePrice", "key": "decimalPlaces", "value": "2", "type": "NUMBER" },
          { "category": "discount", "key": "value", "value": "399", "type": "NUMBER" },
          { "category": "discount", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "discount", "key": "decimalPlaces", "value": "2", "type": "NUMBER" },
          { "category": "tax", "key": "value", "value": "513", "type": "NUMBER" },
          { "category": "tax", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "tax", "key": "decimalPlaces", "value": "2", "type": "NUMBER" }
        ]
      },
      "quantity": 1,
      "scannableCodes": ["829401938473"]
    },
    {
      "article": {
        "tenantArticleId": "SNEAK-W-4891",
        "title": "White sneakers",
        "attributes": [
          { "category": "descriptive", "priority": 100, "key": "Size", "value": "44", "type": "STRING" },
          { "category": "basePrice", "key": "value", "value": "8999", "type": "NUMBER" },
          { "category": "basePrice", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "basePrice", "key": "decimalPlaces", "value": "2", "type": "NUMBER" },
          { "category": "discount", "key": "value", "value": "999", "type": "NUMBER" },
          { "category": "discount", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "discount", "key": "decimalPlaces", "value": "2", "type": "NUMBER" },
          { "category": "tax", "key": "value", "value": "1539", "type": "NUMBER" },
          { "category": "tax", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "tax", "key": "decimalPlaces", "value": "2", "type": "NUMBER" },
          { "category": "surcharge", "key": "value", "value": "299", "type": "NUMBER" },
          { "category": "surcharge", "key": "currency", "value": "EUR", "type": "CURRENCY" },
          { "category": "surcharge", "key": "decimalPlaces", "value": "2", "type": "NUMBER" }
        ]
      },
      "quantity": 1,
      "scannableCodes": ["738502847562"]
    }
  ],
  "paymentInfo": {
    "currency": "EUR"
  },
  "pricing": {
       "discounts": [
            {
                "name": "Summer promotion",
                "nameLocalized": {
                    "en_US": "Coupon SUMMER2026",
                    "de_DE": "Coupon SOMMER2026"
                },
                "type": "PERCENTAGE",
                "percentage": 10,
                "context": "PROMOTION",
                "tenantDiscountId": "summer-2026"
            },
            {
                "name": "First order promotion",
                "nameLocalized": {
                    "en_US": "First order promotion",
                    "de_DE": "Neukunde Promotion"
                },
                "type": "ABSOLUTE",
                "value": {
                    "value": 1000,
                    "decimalPlaces": 2,
                    "currency": "EUR"
                },
                "context": "PROMOTION",
                "tenantDiscountId": "first-order"
              }
           ],
    "fees": [
      {
        "name": "Packaging fee",
        "value": { "value": 199, "currency": "EUR", "decimalPlaces": 2 }
      },
      {
        "name": "Shipping fee",
        "value": { "value": 499, "currency": "EUR", "decimalPlaces": 2 }
      }
    ],
    "taxes": [
       {
         "type": "VAT",
         "ratePercent": 19,
         "value": { "value": 2565, "currency": "EUR", "decimalPlaces": 2 },
         "scope": "DOMESTIC",
         "taxableValue": { "value": 13493, "currency": "EUR", "decimalPlaces": 2 }
       },
       {
         "type": "VAT",
         "ratePercent": 7,
         "value": { "value": 22, "currency": "EUR", "decimalPlaces": 2 },
         "scope": "DOMESTIC",
         "taxableValue": { "value": 319, "currency": "EUR", "decimalPlaces": 2 }
       }
    ]
  }
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
    "orderDate": "2026-07-13T08:01:50.324Z",
    "consumer": {
        "email": "phil.bison@fulfillmenttools.com",
        "addresses": [
            {
                "street": "42nd street",
                "houseNumber": "42",
                "postalCode": "42420",
                "city": "Los Angeles",
                "country": "US",
                "firstName": "Phil",
                "lastName": "Bison",
                "addressType": "POSTAL_ADDRESS"
            }
        ]
    },
    "tenantOrderId": "R42424242",
    "status": "OPEN",
    "orderLineItems": [
        {
            "article": {
                "tenantArticleId": "TSHIRT-W-2468",
                "title": "Basic T-shirt white",
                "attributes": [
                    {
                        "category": "descriptive",
                        "priority": 100,
                        "key": "Size",
                        "value": "S",
                        "type": "STRING"
                    },
                    {
                        "category": "basePrice",
                        "key": "value",
                        "value": "3000",
                        "type": "NUMBER"
                    },
                    {
                        "category": "basePrice",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "basePrice",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "discount",
                        "key": "value",
                        "value": "399",
                        "type": "NUMBER"
                    },
                    {
                        "category": "discount",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "discount",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "tax",
                        "key": "value",
                        "value": "570",
                        "type": "NUMBER"
                    },
                    {
                        "category": "tax",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "tax",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "subtotalBeforeDiscounts",
                        "key": "value",
                        "value": "3000",
                        "type": "NUMBER"
                    },
                    {
                        "category": "subtotalBeforeDiscounts",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "subtotalBeforeDiscounts",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "subtotalAfterDiscounts",
                        "key": "value",
                        "value": "2601",
                        "type": "NUMBER"
                    },
                    {
                        "category": "subtotalAfterDiscounts",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "subtotalAfterDiscounts",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "finalUnitPrice",
                        "key": "value",
                        "value": "2601",
                        "type": "NUMBER"
                    },
                    {
                        "category": "finalUnitPrice",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "finalUnitPrice",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "finalLineItemPrice",
                        "key": "value",
                        "value": "2601",
                        "type": "NUMBER"
                    },
                    {
                        "category": "finalLineItemPrice",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "finalLineItemPrice",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    }
                ]
            },
            "quantity": 1,
            "scannableCodes": [
                "829401938473"
            ],
            "id": "019f5a7f-6ec5-746a-83dc-3127fea1b97e"
        },
        {
            "article": {
                "tenantArticleId": "SNEAK-W-4891",
                "title": "White sneakers",
                "attributes": [
                    {
                        "category": "descriptive",
                        "priority": 100,
                        "key": "Size",
                        "value": "44",
                        "type": "STRING"
                    },
                    {
                        "category": "basePrice",
                        "key": "value",
                        "value": "11900",
                        "type": "NUMBER"
                    },
                    {
                        "category": "basePrice",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "basePrice",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "discount",
                        "key": "value",
                        "value": "999",
                        "type": "NUMBER"
                    },
                    {
                        "category": "discount",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "discount",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "tax",
                        "key": "value",
                        "value": "2261",
                        "type": "NUMBER"
                    },
                    {
                        "category": "tax",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "tax",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "surcharge",
                        "key": "value",
                        "value": "299",
                        "type": "NUMBER"
                    },
                    {
                        "category": "surcharge",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "surcharge",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "subtotalBeforeDiscounts",
                        "key": "value",
                        "value": "11900",
                        "type": "NUMBER"
                    },
                    {
                        "category": "subtotalBeforeDiscounts",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "subtotalBeforeDiscounts",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "subtotalAfterDiscounts",
                        "key": "value",
                        "value": "10901",
                        "type": "NUMBER"
                    },
                    {
                        "category": "subtotalAfterDiscounts",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "subtotalAfterDiscounts",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "finalUnitPrice",
                        "key": "value",
                        "value": "10901",
                        "type": "NUMBER"
                    },
                    {
                        "category": "finalUnitPrice",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "finalUnitPrice",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    },
                    {
                        "category": "finalLineItemPrice",
                        "key": "value",
                        "value": "11200",
                        "type": "NUMBER"
                    },
                    {
                        "category": "finalLineItemPrice",
                        "key": "currency",
                        "value": "EUR",
                        "type": "CURRENCY"
                    },
                    {
                        "category": "finalLineItemPrice",
                        "key": "decimalPlaces",
                        "value": "2",
                        "type": "NUMBER"
                    }
                ]
            },
            "quantity": 1,
            "scannableCodes": [
                "738502847562"
            ],
            "id": "019f5a7f-6ec5-746a-83dc-37f1f22e0af6"
        }
    ],
    "paymentInfo": {
        "currency": "EUR"
    },
    "pricing": {
        "discounts": [
            {
                "name": "Summer promotion",
                "nameLocalized": {
                    "en_US": "Coupon SUMMER2026",
                    "de_DE": "Coupon SOMMER2026"
                },
                "type": "PERCENTAGE",
                "percentage": 10,
                "context": "PROMOTION",
                "tenantDiscountId": "summer-2026"
            },
            {
                "name": "First order promotion",
                "nameLocalized": {
                    "en_US": "First order promotion",
                    "de_DE": "Neukunde Promotion"
                },
                "type": "ABSOLUTE",
                "value": {
                    "value": 1000,
                    "decimalPlaces": 2,
                    "currency": "EUR"
                },
                "context": "PROMOTION",
                "tenantDiscountId": "first-order"
            }
        ],
        "fees": [
            {
                "name": "Packaging fee",
                "value": {
                    "value": 199,
                    "currency": "EUR",
                    "decimalPlaces": 2
                }
            },
            {
                "name": "Shipping fee",
                "value": {
                    "value": 499,
                    "currency": "EUR",
                    "decimalPlaces": 2
                }
            }
        ],
        "taxes": [
            {
                "type": "VAT",
                "ratePercent": 19,
                "value": {
                    "value": 2622,
                    "currency": "EUR",
                    "decimalPlaces": 2
                },
                "scope": "DOMESTIC",
                "taxableValue": {
                    "value": 13801,
                    "currency": "EUR",
                    "decimalPlaces": 2
                }
            }
        ],
        "total": {
            "priceBreakdown": {
                "subTotal": {
                    "value": 14900,
                    "currency": "EUR",
                    "decimalPlaces": 2
                },
                "totalDiscounts": {
                    "value": {
                        "value": 3407,
                        "currency": "EUR",
                        "decimalPlaces": 2
                    },
                    "breakdown": {
                        "lineItemDiscounts": {
                            "value": 1099,
                            "currency": "EUR",
                            "decimalPlaces": 2
                        },
                        "orderDiscounts": {
                            "value": 2308,
                            "currency": "EUR",
                            "decimalPlaces": 2
                        }
                    }
                },
                "totalTaxes": {
                    "value": 2622,
                    "currency": "EUR",
                    "decimalPlaces": 2
                },
                "totalFees": {
                    "value": 698,
                    "currency": "EUR",
                    "decimalPlaces": 2
                },
                "totalLineItemSurcharges": {
                    "value": 299,
                    "currency": "EUR",
                    "decimalPlaces": 2
                },
                "total": {
                    "value": 15112,
                    "currency": "EUR",
                    "decimalPlaces": 2
                }
            }
        }
    },
    "deliveryPreferences": {
        "shipping": {
            "serviceLevel": "DELIVERY"
        }
    },
    "version": 1,
    "processId": "019f5a7f-6ec4-72d8-b21a-f5510a7c8e33",
    "lastModified": "2026-07-13T08:02:08.750Z",
    "created": "2026-07-13T08:02:08.750Z",
    "id": "019f5a7f-6ec4-72d8-b21a-f144b550b615"
}
```

{% endtab %}
{% endtabs %}


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.fulfillmenttools.com/documentation/by-pillar/order-management/pricing-data-model.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
