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 key →
x-api-keyheader.A valid token, obtained via
/loginand valid for 12 hours →Authorization: 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 keyAuthorization→ Bearer followed by your tokenContent-Type→application/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), ornone(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: indicatetrueif the price repeats every year, otherwisefalse.
💡 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 msbetween 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 samereferenceto 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).






