Where stock lives on IVO
Stock is not kept on the product, it is kept on your offer - one product (or one variant) at one of your merchant points. Every offer carries two numbers:
- Availability - units you are holding right now, ready for the courier.
- On Order - units you do not hold but can source, delivered within the lead time you set in Settings → Shipping → On-order delivery time.
Shoppers see the offer only when at least one of the two is above zero, the price is above zero, and the merchant point it belongs to is active and approved. When several merchants sell the same product, an in-stock offer always beats an on-order one, and among in-stock offers the lowest price wins.
1. By hand - Offers Matrix
- Open Products in your merchant dashboard.
- Find the product and open its Offers Matrix.
- The grid holds one block per variant and one column per merchant point. Type the new Availability, and On Order if you also take orders for goods you do not stock.
- Press Save.
The change is live at once: the product page, the search results and the category listings all follow within seconds.
2. From your own shop - plugin
If you run WooCommerce, OpenCart, PrestaShop, Magento or Shopify, the IVO extension sends stock for you - immediately when you save the product in your shop, or on the extension's scheduled sync, depending on the platform. Switch on Update stock on sale in its settings as well, so IVO deducts the sold units in your own shop after an IVO order and the two never drift apart. See Extensions: how they work.
3. From a feed - XML, JSON or CSV
Connected feeds are re-read every six hours, and what the feed says at that moment becomes your stock on IVO. Two rules are worth remembering:
- Sending quantity
0for a product you already sell on IVO takes that offer down to zero. For a product IVO does not know yet, a row without stock is skipped with the error No availability - nothing is created. - A product you simply drop from the feed keeps the last quantity IVO saw, unless you switch on Set out of stock for missing products for that feed in Settings → Integrations.
Full reference: Feed integration: XML, JSON and CSV.
4. Through the API
If your back office can call an API, the offer update is the cheapest call there is: it touches price and stock only and never runs the product import.
POST https://a.ivo.md/v1/merchant-api/product-offer/update
X-API-Key: YOUR_KEY
{
"merchant_internal_id": "PRODUCT-123",
"merchant_point_id": "<POINT_ID>",
"availability": 5,
"availability_on_order": 0
}Identify the offer either by offer_id or by your own merchant_internal_id. If the same SKU exists at several locations, add merchant_point_id, otherwise the call fails with merchant_internal_id_not_unique. Keys are created in Settings → Integrations → API Keys; every field is described in the Merchant API reference.
How quickly each way takes effect
| Way | Takes effect |
|---|---|
| Offers Matrix | Immediately on save |
| API | Immediately |
| Plugin | When you save in your shop, or on the plugin's own schedule |
| Feed | At the next sync - within six hours |
| File import (CSV / Excel) | A few minutes after the file finishes processing |
Taking a whole location offline
You do not have to zero every product to close a shop for a while. A merchant point that is not active hides every offer attached to it, and switching it back on brings them all back with their quantities. Locations are managed in Settings → Merchant Points.
What happens when someone buys
IVO reserves the units on the offer when the order is paid and puts them back if the order is cancelled or refused. You never have to adjust for that by hand - deduct nothing, add nothing back.
Why accuracy pays
Stock that is higher than reality is the most common cause of penalties: the order arrives, you cannot ship it, and both refusing it and letting it expire cost money. See What if a product is no longer available? and How to avoid penalties on IVO.