Skip to main content

Update your product prices via the API (Postman)

In this article, you'll find the procedures to follow to modify:

  • a product's base price (purchase price, sales price, VAT), i.e. the price that applies by default all year round

  • your seasonal prices, which replace the base price over a specific period of the year (high season, promotion, etc.)

To learn more about seasonal prices, please consult our article ✍️ Seasonal prices.

Prerequisites

Before starting, we recommend consulting our article ✍️ Configure Postman for your API calls.

You will need to retrieve the following information:

  • Your Ezus API keyx-api-key header.

  • A valid token, obtained via /login and valid for 12 hoursAuthorization: Bearer … header.

  • The reference ("API field") of the product(s) to be modified.

The routes used work in "upsert" mode = update or insert. This means that if the reference sent already exists, the element is updated; otherwise, it is created.

Each product has a unique reference that corresponds to the value of the "API field" column of your product export. It is this data that tells Ezus which product to modify.

💡 Note that all prices are entered All Taxes Included (incl. VAT) and in the product's currency. It is not possible to enter a price excluding VAT or in another currency.


Case 1 — Update a product's base price

We use the products-upsert route, also available via https://api.ezus.io/#post-products-upsert.

The principle: you send the product reference + only the price fields to change. All other information related to the product (title, description, category, etc.) remains unchanged.

Step 1 — Create the request

In Postman, create a new request. Choose the POST method and enter the URL: https://api.ezus.app/products-upsert

Step 2 — Fill in the headers (Headers)

In the Headers tab, add three lines:

  • x-api-key → your API key

  • Authorization → Bearer followed by your token

  • Content-Typeapplication/json

Step 3 — Write the content (Body)

In the Body tab, choose raw then the JSON format, and paste:

{ "reference": "PRODUCT_REFERENCE", "purchase_price": 42, "sales_price": 84, "vat_rate": 20, "vat_regime": "margin" }

Meaning of the fields:

  • reference: the product reference ("API field"). Required to target the right product.

  • purchase_price: purchase price, as a number, incl. VAT (e.g. 42 or 42.50 — decimal point, no € symbol).

  • sales_price: sales price, as a number, incl. VAT.

  • vat_rate: VAT rate as a percentage (e.g. 20 for 20%). Left empty → the account's default rate applies.

  • vat_regime: classic (standard VAT), margin (VAT on margin), or none (not applicable).

💡 Only include the fields you wish to modify. For example, if you only want to update the sales price, send only reference and sales_price.

Step 4 — Send and check

Click Send. A successful response looks like:

{ "error": "false", "message": "ok", "action": "Product successfully updated", "reference": "PRODUCT_REFERENCE" }

Then check in Ezus that the price has indeed changed on the product profile.


Case 2 — Create or update a seasonal price

To modify a specific price over a given period (high season, limited offer, etc.), use the product-seasons-upsert route, also available via https://api.ezus.io/#post-product-seasons-upsert.

Each season is attached to a product via product_reference.

Same method as for Case 1 (POST + identical Headers), with the URL https://api.ezus.app/product-seasons-upsert and this Body:

{ "product_reference": "PRODUCT_REFERENCE", "reference": "SEASON_REFERENCE", "name": "High season 2026", "purchase_price": 165.25, "sales_price": 200, "limit_start": "2026-01-01", "limit_end": "2026-01-31", "is_yearly": true }

Meaning of the fields:

  • product_reference: reference of the product concerned (required).

  • reference: unique reference of the season. Mandatory if you wish to update an existing season. Otherwise, Ezus will automatically create a new season.

  • name: name of the seasonal price (100 characters max).

  • purchase_price / sales_price: purchase / sales price incl. VAT for the period.

  • limit_start / limit_end: start and end of the season, in YYYY-MM-DD format.

  • is_yearly: indicate true if the price repeats every year, otherwise false.

💡 How do I obtain the unique reference of the season?

You must first call the GET /product API for the product concerned. The response contains an array of prices, and each entry has its own reference. It is this value that must be passed as the reference in the POST /product-seasons-upsert API to update an existing season.


Update your product prices in bulk

To modify the prices of many products at once, you can group one request per product in a collection, then launch the Collection Runner:

  • Hover over the collection name → click the ··· → Run collection.

  • Check that the desired requests are ticked.

  • Set a Delay of about 200 ms between requests.

  • Leave "Stop run if an error occurs" ticked: in the event of an error, execution stops on the faulty request.

  • Click Run: each product is displayed with a Passed or Failed status.

💡 Tip: always test a single request successfully before launching a full run; this avoids sending dozens of erroneous calls.

Troubleshooting common problems

  • 401 / 403 error: authentication problem. Check the API key and the token (no extra space). If the token is more than 12 h old, regenerate it via /login.

  • The price did not change: the reference does not match any existing product. Be sure to use the value from the "API field" column.

  • A duplicate seasonal price appeared: you used a new season reference. Reuse the same reference to update instead of creating.

  • Price rejected / strange result: enter a number (decimal point, no symbol), incl. VAT, in the product's currency.

  • Date rejected: respect the YYYY-MM-DD format (e.g. 2026-07-01).

Did this answer your question?