> For the complete documentation index, see [llms.txt](https://developer.esw.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.esw.com/pricing-advisor-api/resources/postman-collection/pricing-advisor.md).

# Pricing Advisor

***

### <img src="/files/3Hzf3CWYWyHDFskuSRKJ" alt="" data-size="line"> What This Collection Does

This Postman collection covers the **ESW Pricing Advisor API v4.0** — a read-only API that returns pricing data retailers use to set shopper-facing prices in international markets.

All six endpoints are `GET` requests. There are no write operations, no request bodies, and no async processing.&#x20;

{% hint style="info" %}
You need [**Postman**](https://postman.com/) to use this collection
{% endhint %}

{% file src="/files/XQHM8faAV7CwfnFSNGBO" %}

The collection is organized into two folders:

**Standard Advice** — Returns the full pricing breakdown for a country. Use this when you need to display individual pricing components or build a custom price calculation. The response includes FX rates, per-category tax/duty/fee estimates, retailer adjustments, rounding rules, and currency display configuration.

**Multiplier Advice** — Returns pre-calculated multiplier values per currency pair. Use this when you need a single number to multiply a base price by to get the correct shopper-facing price — without applying individual rate components separately.

Both folders contain the same three access patterns:

```
Get all countries for a brand    →  /{tenantCode}
Get advice for one country       →  /{tenantCode}/{countryIso}
Get a historical record by ID    →  /{id}/archived
```

***

### Import the Collection

{% stepper %}
{% step %}

#### Open Postman&#x20;

{% endstep %}

{% step %}

#### Click the three dots <i class="fa-ellipsis">:ellipsis:</i>

Click **Import** from the three dots in the top left corner
{% endstep %}

{% step %}

#### Upload file <i class="fa-file-code">:file-code:</i>

Drag and drop `ESW_Pricing_Advisor.postman_collection.json` into the import window, or click **Upload Files** and select it
{% endstep %}

{% step %}

#### Confirm

Click **Import** to confirm

{% hint style="info" %}
The collection will appear in your left sidebar under **Collections** as:

{% code expandable="true" %}

```ruby
ESW Pricing Advisor API v4.0
```

{% endcode %}

Expand it to see all ten requests listed in step order.
{% endhint %}
{% endstep %}
{% endstepper %}

***

### Set Up Variables

The collection uses variables. Set them once and every request picks them up automatically.

**To set them:**

1. Click the collection name in the sidebar
2. Click the **Variables** tab at the top of the right panel

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

Fill in the column

| Variable             | What to enter                           | Example                                              | Auto-managed? |
| -------------------- | --------------------------------------- | ---------------------------------------------------- | ------------- |
| `baseUrl`            | API base URL                            | `https://pricing-advisor-api.sandbox.eshopworld.com` | No            |
| `token`              | Bearer JWT access token                 | `eyJhbGci...`                                        | No            |
| `tenantCode`         | Retailer's eShopWorld tenant code       | `ACME`                                               | No            |
| `countryIso`         | ISO 3166 two-letter country code        | `DE`                                                 | No            |
| `standardAdviceId`   | Leave blank — auto-saved from responses | *(empty)*                                            | Yes           |
| `multiplierAdviceId` | Leave blank — auto-saved from responses | *(empty)*                                            | Yes           |

Click **Save** (`Cmd + S` on Mac / `Ctrl + S` on Windows).

#### How ID variables are auto-managed

The archived endpoints require the `id` of a specific advice record. Rather than making you find and copy IDs manually, the test scripts on the **Get All** and **Get for a Country** requests automatically save the first `id` they encounter:

* Running any Standard Advice request saves the ID to `{{standardAdviceId}}`
* Running any Multiplier Advice request saves the ID to `{{multiplierAdviceId}}`

The archived endpoints then use these variables automatically. You only need to set them manually if you want to retrieve a specific historical record that differs from the most recently seen one.

#### Changing country

To query a different country, update the `countryIso` **Current Value** in the Variables tab. All country-specific requests (`Get for a Country` in both folders) will immediately use the new value.

***

### Authentication

The collection uses **Bearer Token** authentication at the collection level. Every request automatically sends:

```
Authorization: Bearer {{token}}
```

**To verify it is configured:**

1. Click the collection name
2. Click the **Authorization** tab
3. **Auth Type** should show **Bearer Token**
4. **Token** should show `{{token}}`

All six requests inherit this — their individual **Authorization** tabs show **Inherit auth from parent**.

**Refreshing an expired token:**

1. Click the collection name → **Variables**
2. Update the **Current Value** of `token`
3. Click **Save**

***

### Advice Types

Before using the collection, it helps to understand what each advice type is for and when to use one over the other.

#### Standard Advice

Standard Advice returns **individual pricing components** for a country. It tells you:

* The FX conversion rate between currencies
* The estimated VAT or sales tax percentage per product category
* The estimated import duty percentage per category
* The estimated carrier/handling fee percentage
* Any retailer-defined price adjustment
* How to round and display the final price

Use Standard Advice when your system needs to show shoppers a breakdown of what they are paying — for example, showing the product price separately from duties and taxes. It is also the right choice if you want to apply your own pricing logic on top of the individual components.

#### Multiplier Advice

Multiplier Advice returns a **single pre-calculated number** per currency pair per product category. This number — the multiplier — already incorporates the FX rate, estimated duty, estimated tax, and retailer adjustment into one composite value.

```
Shopper price = Retailer base price × multiplier
```

For example: if a product costs £100 in the retailer's home currency (GBP) and the GBP → EUR multiplier for Germany is `1.52`, the shopper-facing price in Germany is **€152**.

Use Multiplier Advice when your system needs a fast, simple price calculation without breaking down the individual components. It is the most common choice for e-commerce frontends that just need to display localized prices.

#### The `value` vs `adjustedValue` distinction

Each multiplier has two values:

| Field           | Description                                                                         |
| --------------- | ----------------------------------------------------------------------------------- |
| `value`         | Standard multiplier — incorporates FX, duty, tax, and retailer adjustment           |
| `adjustedValue` | Same as `value` but further adjusted for the country's specific input/pricing model |

In most cases `value` and `adjustedValue` are identical. When they differ, it means the country uses a special pricing model (such as DAP — Delivered At Place — where some costs are excluded from the shopper price). The Console output flags this automatically when it detects a difference.

***

### Standard Advice — Get All Countries

**Method:** `GET` **URL:** `{{baseUrl}}/api/4.0/StandardAdvice/{{tenantCode}}`

#### What it does

Returns a complete array of standard pricing advice records — one entry per configured country for the brand. Use this to get an overview of your full international pricing setup in a single call.

#### No parameters required

All information is in the URL path, resolved from the `{{tenantCode}}` variable. There is no query string and no request body.

#### Expected response — 200 OK

The response is a JSON **array**. Each element is a `PricingAdviceResponse` object:

{% code expandable="true" %}

```json
[
  {
    "id": "sa-001-de",
    "version": "4.0.1",
    "countryIso": "DE",
    "lastUpdated": "2024-05-01T08:00:00Z",
    "tenantIdentifier": "ACME",
    "fxRates": [ ... ],
    "categories": [ ... ],
    "merchandisePricingModel": { ... }
  },
  {
    "id": "sa-002-us",
    "countryIso": "US",
    ...
  }
]
```

{% endcode %}

#### Test results

| Test                             | Passes when                   |
| -------------------------------- | ----------------------------- |
| `Standard advice returned (200)` | Status is 200                 |
| `Response is an array`           | Response body is a JSON array |

#### Console output

```
Countries returned: 2
  DE | id: sa-001-de | version: 4.0.1 | updated: 2024-05-01T08:00:00Z
    Categories: 2 | FX rates: 2 | Pricing model: DDP
  US | id: sa-002-us | version: 4.0.1 | updated: 2024-05-01T08:00:00Z
    Categories: 1 | FX rates: 1 | Pricing model: DDP
✓ standardAdviceId saved: sa-001-de
```

The `standardAdviceId` is saved automatically from the first record in the array. If you want a specific country's ID, retrieve it individually using the **Get for a Country** request.

***

### Standard Advice — Get for a Country

**Method:** `GET` **URL:** `{{baseUrl}}/api/4.0/StandardAdvice/{{tenantCode}}/{{countryIso}}`

#### What it does

Retrieves the latest standard pricing advice for the specific country set in `{{countryIso}}`. Use this for targeted lookups — for example, when a shopper lands on your site from Germany and you need the DE pricing configuration.

#### No parameters required

Both path parameters — `tenantCode` and `countryIso` — are resolved from collection variables.

#### Expected response — 200 OK

The response is a single `PricingAdviceResponse` object (not an array):

{% code expandable="true" %}

```json
{
  "id": "sa-001-de",
  "version": "4.0.1",
  "countryIso": "DE",
  "lastUpdated": "2024-05-01T08:00:00Z",
  "tenantIdentifier": "ACME",
  "fxRates": [
    { "from": "EUR", "to": "EUR", "rate": 1.0 },
    { "from": "GBP", "to": "EUR", "rate": 1.17 }
  ],
  "categories": [
    {
      "id": "ApparelAccessories",
      "estimatedTax": 19.0,
      "estimatedFee": 1.5,
      "estimatedDuty": 12.0,
      "retailerAdjustment": 0.0,
      "roundingConfigurations": [ ... ],
      "currencyDisplays": [ ... ]
    }
  ],
  "merchandisePricingModel": {
    "id": "DDP",
    "applicableRates": ["VAT", "Duty"]
  }
}
```

{% endcode %}

#### Key fields explained

**`fxRates`** — Array of currency conversion rates from the retailer's base currency to the shopper's currency. Each entry has `from` (source), `to` (target), and `rate` (multiplier to convert).

**`categories`** — Array of product category pricing breakdowns. Each category has:

| Field                | Description                                              |
| -------------------- | -------------------------------------------------------- |
| `id`                 | Category name (e.g. `ApparelAccessories`, `Electronics`) |
| `estimatedTax`       | VAT or sales tax percentage                              |
| `estimatedDuty`      | Import duty percentage                                   |
| `estimatedFee`       | Carrier/handling fee percentage                          |
| `retailerAdjustment` | Retailer-defined price adjustment percentage             |

**`roundingConfigurations`** — How to round prices before display. Each entry specifies the currency, the number of decimal places (`currencyExponent`), the rounding `direction` (`Up`, `Down`, or `Nearest`), and the rounding `model`.

**`currencyDisplays`** — How to format prices for display. Each entry includes:

| Field                 | Example (EUR) | Description                               |
| --------------------- | ------------- | ----------------------------------------- |
| `currencySymbol`      | `€`           | Currency symbol to display                |
| `currencyExponent`    | `2`           | Decimal places                            |
| `decimalSeparator`    | `,`           | Character between whole and decimal parts |
| `thousandSeparator`   | `.`           | Character between thousands groups        |
| `showTrailingZeros`   | `true`        | Whether to show `.00` on whole numbers    |
| `configurationString` | `€#,##0.00`   | Format string for price rendering         |

**`merchandisePricingModel`** — The pricing model for this country:

| Field             | Description                                                            |
| ----------------- | ---------------------------------------------------------------------- |
| `id`              | Model name — `DDP` (Delivered Duty Paid) or `DAP` (Delivered At Place) |
| `applicableRates` | Which cost components are included in the shopper price                |

#### Test results

| Test                                     | Passes when                                        |
| ---------------------------------------- | -------------------------------------------------- |
| `Standard advice returned (200)`         | Status is 200                                      |
| `Response has countryIso and categories` | Body has both `countryIso` and `categories` fields |

#### Console output

```
Country:          DE
Record ID:        sa-001-de
Version:          4.0.1
Last updated:     2024-05-01T08:00:00Z
Pricing model:    DDP | Rates: VAT, Duty
FX rates (2):
  EUR → EUR @ 1
  GBP → EUR @ 1.17
Categories (2):
  ApparelAccessories | Tax: 19% | Duty: 12% | Fee: 1.5% | Adjustment: 0%
    Display: € (EUR) format: €#,##0.00
  Electronics | Tax: 19% | Duty: 0% | Fee: 1.5% | Adjustment: 0%
    Display: € (EUR) format: €#,##0.00
✓ standardAdviceId saved: sa-001-de
```

***

### Standard Advice — Get Archived by ID

**Method:** `GET` **URL:** `{{baseUrl}}/api/4.0/StandardAdvice/{{standardAdviceId}}/archived`

#### What it does

Retrieves a specific historical standard pricing advice record by its unique ID. Use this for auditing past pricing decisions — for example, to check what the German duty rate was three months ago, or to verify which pricing configuration was active when a specific order was placed.

#### How IDs are obtained

The `{{standardAdviceId}}` variable is auto-populated by the test scripts in the two requests above. If you have run either **Get All Countries** or **Get for a Country**, the ID from that response is already set.

To retrieve a specific historical record, manually update `standardAdviceId` in the Variables tab to the exact ID you want before sending.

#### Pre-request warning

If `{{standardAdviceId}}` is empty when you send, a pre-request script logs a warning to the Console before the request fires:

```
⚠ standardAdviceId is not set.
  Run "Get All Standard Advice" or "Get Standard Advice for a Country" first,
  or set standardAdviceId manually in the collection Variables tab.
```

The request still sends — but it will return `404` if the ID resolves to an empty path segment.

#### Expected response — 200 OK

The response structure is identical to the **Get for a Country** response. The difference is that this returns a historical snapshot — the record as it existed at a point in time — rather than the current active version. Note that the `version` and `lastUpdated` fields will reflect the historical record's values.

#### Test results

| Test                                      | Passes when                             |
| ----------------------------------------- | --------------------------------------- |
| `Archived standard advice returned (200)` | Status is 200                           |
| `Response has id and version`             | Body has both `id` and `version` fields |

#### Console output

```
Fetching archived StandardAdvice id: sa-001-de
Archived record ID:  sa-001-de
Version:             4.0.0
Country:             DE
Last updated:        2024-04-01T08:00:00Z
Tenant:              ACME
Categories: 1 | FX rates: 2
```

***

### Multiplier Advice — Get All Countries

**Method:** `GET` **URL:** `{{baseUrl}}/api/4.0/MultiplierAdvice/{{tenantCode}}`

#### What it does

Returns all available multiplier pricing advice records for the brand — one entry per configured country. Use this to get a complete picture of all multiplier values across every market your retailer operates in.

#### Expected response — 200 OK

The response is a JSON **array** of `MultiplierAdviceResponse` objects:

{% code expandable="true" %}

```json
[
  {
    "id": "ma-001-de",
    "version": "4.0.1",
    "countryIso": "DE",
    "lastUpdated": "2024-05-01T08:00:00Z",
    "tenantIdentifier": "ACME",
    "categories": [
      {
        "id": "ApparelAccessories",
        "multipliers": [
          {
            "fromCurrencyIso": "GBP",
            "toCurrencyIso": "EUR",
            "value": 1.52,
            "adjustedValue": 1.52
          }
        ],
        "roundingConfigurations": [ ... ],
        "currencyDisplays": [ ... ]
      }
    ]
  }
]
```

{% endcode %}

#### Test results

| Test                               | Passes when                   |
| ---------------------------------- | ----------------------------- |
| `Multiplier advice returned (200)` | Status is 200                 |
| `Response is an array`             | Response body is a JSON array |

#### Console output

```
Countries returned: 2
  DE | id: ma-001-de | version: 4.0.1 | updated: 2024-05-01T08:00:00Z
    [ApparelAccessories] GBP → EUR | value: 1.52 | adjustedValue: 1.52
  US | id: ma-002-us | version: 4.0.1 | updated: 2024-05-01T08:00:00Z
    [ApparelAccessories] EUR → USD | value: 1.36 | adjustedValue: 1.36
✓ multiplierAdviceId saved: ma-001-de
```

***

### Multiplier Advice — Get for a Country

**Method:** `GET` **URL:** `{{baseUrl}}/api/4.0/MultiplierAdvice/{{tenantCode}}/{{countryIso}}`

#### What it does

Retrieves the latest multiplier pricing advice for the country in `{{countryIso}}`. This is the most commonly used endpoint for e-commerce integrations — you call it with a country code and get back the multiplier values needed to calculate shopper-facing prices.

#### How to use the multiplier

Apply the multiplier to your retailer base price to get the shopper price:

```
shopperPrice = basePrice × multiplier.value
```

**Example:** A product costs £100 in the retailer's base currency (GBP). The GBP → EUR multiplier for Germany is `1.52`. The shopper-facing price for a German shopper is **€152.00**.

After calculating the raw price, apply the `roundingConfigurations` to round correctly, then format using the `configurationString` from `currencyDisplays`.

#### Key response fields

{% code expandable="true" %}

```json
{
  "categories": [
    {
      "id": "ApparelAccessories",
      "multipliers": [
        {
          "fromCurrencyIso": "GBP",
          "toCurrencyIso": "EUR",
          "value": 1.52,
          "adjustedValue": 1.52
        }
      ],
      "roundingConfigurations": [
        {
          "currencyIso": "EUR",
          "currencyExponent": 2,
          "direction": "Up",
          "model": "Standard"
        }
      ],
      "currencyDisplays": [
        {
          "currencyIso": "EUR",
          "currencySymbol": "€",
          "currencyExponent": 2,
          "decimalSeparator": ",",
          "thousandSeparator": ".",
          "showTrailingZeros": true,
          "configurationString": "€#,##0.00"
        }
      ]
    }
  ]
}
```

{% endcode %}

**`categories[].id`** — The product category. Use this to look up the correct multiplier for each product based on its category.

**`multipliers[].fromCurrencyIso`** — The retailer's base currency (the currency your base prices are in).

**`multipliers[].toCurrencyIso`** — The shopper's currency for this country.

**`multipliers[].value`** — The standard multiplier. Use this in most cases.

**`multipliers[].adjustedValue`** — The input-model-adjusted multiplier. Use this when the country's `merchandisePricingModel` is `DAP` or another non-standard model. The Console flags automatically when these two values differ.

**`roundingConfigurations[].direction`** — How to round the calculated price:

| Direction | Meaning                     |
| --------- | --------------------------- |
| `Up`      | Always round up (ceiling)   |
| `Down`    | Always round down (floor)   |
| `Nearest` | Round to nearest (standard) |

**`currencyDisplays[].configurationString`** — Format string for rendering the price. For example, `€#,##0.00` means: euro symbol, comma as thousand separator, dot as decimal, two decimal places always shown.

#### Test results

| Test                                     | Passes when          |
| ---------------------------------------- | -------------------- |
| `Multiplier advice returned (200)`       | Status is 200        |
| `Response has countryIso and categories` | Body has both fields |

#### Console output

```
Country:      DE
Record ID:    ma-001-de
Version:      4.0.1
Last updated: 2024-05-01T08:00:00Z
Categories (2):
  [ApparelAccessories] GBP → EUR
    value:         1.52
    adjustedValue: 1.52
    Format: €#,##0.00 | Rounding: Up
  [Electronics] GBP → EUR
    value:         1.39
    adjustedValue: 1.39
    Format: €#,##0.00 | Rounding: Up
✓ multiplierAdviceId saved: ma-001-de
```

If `value` and `adjustedValue` differ:

```
  ℹ value and adjustedValue differ — country uses a specific input pricing model.
```

***

### Multiplier Advice — Get Archived by ID

**Method:** `GET` **URL:** `{{baseUrl}}/api/4.0/MultiplierAdvice/{{multiplierAdviceId}}/archived`

#### What it does

Retrieves a specific historical multiplier pricing advice record. Use this to audit how multiplier values have changed over time — for example, comparing the current GBP → EUR multiplier for Germany against what it was when an order was placed six weeks ago.

#### How IDs are obtained

`{{multiplierAdviceId}}` is auto-populated by the test scripts in the two requests above. To retrieve a specific historical record, manually set `multiplierAdviceId` in the Variables tab to the exact ID before sending.

#### Pre-request warning

If `{{multiplierAdviceId}}` is empty, the Console logs a warning before the request fires — identical in format to the Standard Advice archived warning.

#### Expected response — 200 OK

The response is a `MultiplierAdviceResponse` object. The structure is identical to the **Get for a Country** response. The key difference is the historical `version` and `lastUpdated` values, and the multiplier figures themselves — which reflect what the values were at that point in time.

#### Test results

| Test                                        | Passes when                             |
| ------------------------------------------- | --------------------------------------- |
| `Archived multiplier advice returned (200)` | Status is 200                           |
| `Response has id and version`               | Body has both `id` and `version` fields |

#### Console output

```
Fetching archived MultiplierAdvice id: ma-001-de
Archived record ID:  ma-001-de
Version:             4.0.0
Country:             DE
Last updated:        2024-04-01T08:00:00Z
Tenant:              ACME
  [ApparelAccessories] GBP → EUR | value: 1.49 | adjustedValue: 1.49
```

***

### Reading Test Results and Console Output

#### Test Results tab

After sending any request, click **Test Results** in the response panel to see pass/fail status.

**All tests across the collection:**

| Request                  | Test                                        | Passes when          |
| ------------------------ | ------------------------------------------- | -------------------- |
| Standard — Get All       | `Standard advice returned (200)`            | Status 200           |
| Standard — Get All       | `Response is an array`                      | Body is JSON array   |
| Standard — Get Country   | `Standard advice returned (200)`            | Status 200           |
| Standard — Get Country   | `Response has countryIso and categories`    | Body has both fields |
| Standard — Archived      | `Archived standard advice returned (200)`   | Status 200           |
| Standard — Archived      | `Response has id and version`               | Body has both fields |
| Multiplier — Get All     | `Multiplier advice returned (200)`          | Status 200           |
| Multiplier — Get All     | `Response is an array`                      | Body is JSON array   |
| Multiplier — Get Country | `Multiplier advice returned (200)`          | Status 200           |
| Multiplier — Get Country | `Response has countryIso and categories`    | Body has both fields |
| Multiplier — Archived    | `Archived multiplier advice returned (200)` | Status 200           |
| Multiplier — Archived    | `Response has id and version`               | Body has both fields |

#### Postman Console

Open via **View → Postman Console** or `Cmd + Alt + C` (Mac) / `Ctrl + Alt + C` (Windows/Linux).

> Open the Console **before** running requests — output from requests sent before it was open is not retained.

**What the Console shows per request:**

| Request                  | Key console output                                                                                                                                                                   |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Standard — Get All       | Country list with ID, version, category count, FX rate count, pricing model; `standardAdviceId` save confirmation                                                                    |
| Standard — Get Country   | FX rates (from → to @ rate), all categories with Tax/Duty/Fee/Adjustment %, currency display format string, pricing model and applicable rates; `standardAdviceId` save confirmation |
| Standard — Archived      | Pre-request ID check; archived record ID, version, country, timestamps, category and FX rate counts                                                                                  |
| Multiplier — Get All     | Country list with all category multipliers (from → to, value, `adjustedValue`); `multiplierAdviceId` save confirmation                                                               |
| Multiplier — Get Country | Per-category multiplier values, value vs `adjustedValue` comparison note, format string and rounding direction; `multiplierAdviceId` save confirmation                               |
| Multiplier — Archived    | Pre-request ID check; archived record multiplier values per category                                                                                                                 |

***

### Response Field Reference

#### `PricingAdviceResponse` (Standard Advice)

| Field                     | Type   | Description                                                    |
| ------------------------- | ------ | -------------------------------------------------------------- |
| `id`                      | string | Unique record identifier — save this for the archived endpoint |
| `version`                 | string | Version string for this advice record                          |
| `countryIso`              | string | ISO 3166 two-letter country code                               |
| `lastUpdated`             | string | UTC ISO 8601 timestamp of last update                          |
| `tenantIdentifier`        | string | Retailer's tenant code                                         |
| `fxRates`                 | array  | FX conversion rates (see below)                                |
| `categories`              | array  | Per-category pricing breakdowns (see below)                    |
| `merchandisePricingModel` | object | Pricing model for this country                                 |

**`fxRates[]`**

| Field  | Description                                                         |
| ------ | ------------------------------------------------------------------- |
| `from` | Source currency ISO code                                            |
| `to`   | Target currency ISO code                                            |
| `rate` | Conversion rate (multiply `from` amount by this to get `to` amount) |

**`categories[]`**

| Field                    | Description                                                          |
| ------------------------ | -------------------------------------------------------------------- |
| `id`                     | Category name (e.g. `ApparelAccessories`, `Electronics`, `Footwear`) |
| `estimatedTax`           | Estimated VAT/sales tax %                                            |
| `estimatedDuty`          | Estimated import duty %                                              |
| `estimatedFee`           | Estimated carrier/handling fee %                                     |
| `retailerAdjustment`     | Retailer-defined price adjustment %                                  |
| `roundingConfigurations` | Per-currency rounding rules                                          |
| `currencyDisplays`       | Per-currency display formatting                                      |

**`merchandisePricingModel`**

| Field             | Description                                                                |
| ----------------- | -------------------------------------------------------------------------- |
| `id`              | `DDP` (Delivered Duty Paid) or `DAP` (Delivered At Place)                  |
| `applicableRates` | Array of rate names included in the shopper price (e.g. `["VAT", "Duty"]`) |

***

#### `MultiplierAdviceResponse` (Multiplier Advice)

| Field              | Type   | Description                              |
| ------------------ | ------ | ---------------------------------------- |
| `id`               | string | Unique record identifier                 |
| `version`          | string | Version string                           |
| `countryIso`       | string | ISO 3166 two-letter country code         |
| `lastUpdated`      | string | UTC ISO 8601 timestamp of last update    |
| `tenantIdentifier` | string | Retailer's tenant code                   |
| `categories`       | array  | Per-category multiplier data (see below) |

**`categories[]`**

| Field                    | Description                         |
| ------------------------ | ----------------------------------- |
| `id`                     | Category name                       |
| `multipliers`            | Per-currency-pair multiplier values |
| `roundingConfigurations` | Per-currency rounding rules         |
| `currencyDisplays`       | Per-currency display formatting     |

**`categories[].multipliers[]`**

| Field             | Description                                                                 |
| ----------------- | --------------------------------------------------------------------------- |
| `fromCurrencyIso` | Retailer's base currency                                                    |
| `toCurrencyIso`   | Shopper's currency                                                          |
| `value`           | Standard multiplier (FX + duty + tax + adjustments)                         |
| `adjustedValue`   | Input-model-adjusted multiplier — may differ from `value` for DAP countries |

***

#### Shared sub-objects

**`roundingConfigurations[]`**

| Field              | Description                                    |
| ------------------ | ---------------------------------------------- |
| `currencyIso`      | Currency this configuration applies to         |
| `currencyExponent` | Decimal places (e.g. `2` = two decimal places) |
| `direction`        | `Up`, `Down`, or `Nearest`                     |
| `model`            | Rounding model name (e.g. `Standard`)          |

**`currencyDisplays[]`**

| Field                 | Description                                                                |
| --------------------- | -------------------------------------------------------------------------- |
| `currencyIso`         | Currency this configuration applies to                                     |
| `currencySymbol`      | Display symbol (e.g. `€`, `$`, `£`)                                        |
| `currencyExponent`    | Decimal places                                                             |
| `decimalSeparator`    | Character between whole and decimal parts (e.g. `,` in Germany, `.` in US) |
| `thousandSeparator`   | Character between thousands groups (e.g. `.` in Germany, `,` in US)        |
| `showTrailingZeros`   | Whether to show `.00` for whole-number prices                              |
| `configurationString` | Full format string for price rendering (e.g. `€#,##0.00`)                  |

***

### Common Scenarios

#### "Checking pricing for a new market before launch"

1. Set `countryIso` to the new country code (e.g. `JP` for Japan)
2. Run **Standard Advice — Get for a Country** — check `returnsOmsEnabled`, duty rates, and the pricing model
3. Run **Multiplier Advice — Get for a Country** — note the multiplier values per category
4. Compare the multiplier `value` and `adjustedValue` — if they differ, confirm with your ESW account team which to use

***

#### "Getting multipliers for all markets in one call"

Run **Multiplier Advice — Get All Countries**. The Console will print a summary of every country and its multiplier values. The full response body contains the complete dataset — copy it from the **Body** tab in the response panel.

***

#### "Verifying pricing at the time an order was placed"

1. Find the `id` of the advice record that was current when the order was placed (check your system's order record or ask your ESW account team)
2. Set `standardAdviceId` or `multiplierAdviceId` to that ID in the Variables tab
3. Run the appropriate **Archived** endpoint — the response shows the exact rates that were in effect at that time

***

#### "Comparing Standard and Multiplier advice for the same country"

1. Set `countryIso` to your target country
2. Run **Standard Advice — Get for a Country** — note the FX rate, duty, and tax components
3. Run **Multiplier Advice — Get for a Country** — note the combined multiplier
4. Verify the multiplier is consistent with the Standard Advice components (the multiplier should approximate the combined effect of FX × (1 + duty/100) × (1 + tax/100))

***

#### "Testing across multiple countries in sequence"

Update `countryIso` in the Variables tab and re-run the desired requests for each country. You do not need to re-import or duplicate the collection — just change the variable and send again. Each run overwrites the Console output and the ID variables with the latest country's data.

***

#### "Switching from sandbox to production"

Update `baseUrl` in the Variables tab to the production URL. Everything else — token, tenant code, country — stays the same. No other changes are needed.

***

### Troubleshooting

**`401 Unauthorized` on any request** The JWT token has expired or is missing. Update the `token` **Current Value** in the Variables tab and click **Save**.

***

**`403 Forbidden` on any request** Your token does not have permission to access this endpoint. Verify with your ESW account team that your credentials have the correct scope for the Pricing Advisor API.

***

**`404 Not Found` on Standard or Multiplier — Get for a Country** No pricing advice is configured for this `tenantCode` and `countryIso` combination. Confirm the country code is correct (e.g. `DE` not `Germany` or `de`) and that the market has been configured in your ESW account. Try **Get All Countries** first to see which countries are available.

***

**`404 Not Found` on an archived endpoint** The ID in `standardAdviceId` or `multiplierAdviceId` does not match any record. This can happen if the variable was set to a stale or incorrect value. Run **Get All Countries** or **Get for a Country** to refresh the auto-saved ID, or manually set the variable to the exact ID you want to retrieve.

***

**`400 Bad Request` on Get All Countries** The `tenantCode` is invalid. Confirm the exact tenant code string with your ESW account team — it is case-sensitive.

***

**The archived endpoint returns the wrong country's record** The `standardAdviceId` or `multiplierAdviceId` was auto-saved from a different country than intended. To retrieve a specific country's historical record: run **Get for a Country** with the correct `countryIso` set, which will auto-save that country's ID — then immediately run the archived endpoint.

***

**`value` and `adjustedValue` are different in Multiplier Advice** This is expected for countries that use a DAP (Delivered At Place) or other non-standard pricing model. The Console logs a note when this occurs. Contact your ESW account team to confirm which value your integration should use for that specific country.

***

**Console shows nothing after sending** Open the Console before sending: **View → Postman Console** (`Cmd + Alt + C` on Mac / `Ctrl + Alt + C` on Windows/Linux). Output from requests sent before the Console was open is not retained — re-run the request with the Console open.

***

**`{{standardAdviceId}}` or `{{multiplierAdviceId}}` appears literally in the URL** The variable has no value and the archived endpoint is resolving the path incorrectly. Run any of the non-archived requests first to auto-populate the variable, or manually set the ID in the Variables tab. The pre-request script logs a warning to the Console when it detects an empty ID — look there for confirmation.


---

# 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://developer.esw.com/pricing-advisor-api/resources/postman-collection/pricing-advisor.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.
