LEGIT B2B · Developers · XML

XML feed

One permanent link with the whole LEGIT B2B catalogue — your net prices, stock per warehouse, logistics, GPSR data, documents and images — for importers that read a file. Your link is under Account → Export → XML, where you can also preview any product. Stock numbers (total and per warehouse) never go above 51 — 51 means more than 50.

We strongly recommend the API

The XML always carries the whole catalogue, so it is slow to import and stock is only as fresh as your last import. The REST API gives the same data and lets you refresh just prices and stock every few minutes — and you can place orders through it, drop-shipping included. The API page has a step-by-step move from XML.

It looks like https://b2b.legit.si/xml/<your-token>.xml?lang=sl,en. It is personal (it shows your prices), needs no login and never changes — put it straight into your importer. Keep it private, like a password.

Structure

One <product> per sellable variant inside <products>. Elements without a value are left out. Text is in CDATA; numbers use a dot as the decimal separator; prices are net (VAT excluded), the RRP includes VAT.

<?xml version="1.0" encoding="UTF-8"?>
<catalog version="1" company="LEGIT d.o.o." store="LEGIT B2B" customer="[email protected]" generated="2026-10-15T12:00:00.000Z" languages="sl,en" products="482">
<products>
<product id="1">
<productId>7</productId>
<variantId>495</variantId>
<ean>0650311612944</ean>
<model><![CDATA[UVIAC104]]></model>
<name lang="sl"><![CDATA[3D naslonjala za roke]]></name>
<name lang="en"><![CDATA[3D armrests]]></name>
<url lang="sl"><![CDATA[https://b2b.legit.si/sl/products/3d-naslonjala-za-roke]]></url>
<description lang="sl"><![CDATA[<p>…</p>]]></description>
<price currency="EUR" vat="excluded">18.00</price>
<specialPrice currency="EUR" vat="excluded" validFrom="2026-10-20" validTo="2026-10-31" qtyLimit="20" qtyLeft="5">15.50</specialPrice>
<vatRate>22</vatRate>
<rrp currency="EUR" vat="included">34.90</rrp>
<brand code="uvi"><![CDATA[UVI]]></brand>
<categories>
<category code="pisarna-dodatki-za-stole" lang="sl"><![CDATA[Pisarniška oprema > Dodatki za stole]]></category>
</categories>
<stock inStock="true">41</stock>
<warehouses>
<warehouse name="Ljubljana (B13)" deliveryDays="1">41</warehouse>
<warehouse name="Šentjernej" deliveryDays="3">0</warehouse>
</warehouses>
<deliveryDays>1</deliveryDays>
<incoming date="2026-12-15" more="true">50</incoming>
<package>
<grossWeight unitOfMeasure="KG">2.000</grossWeight>
<netWeight unitOfMeasure="KG">1.500</netWeight>
<length unitOfMeasure="CM">23.0</length>
<width unitOfMeasure="CM">5.0</width>
<height unitOfMeasure="CM">5.0</height>
<unitsPerBox>10</unitsPerBox>
</package>
<customsTariff>94039100</customsTariff>
<countryOfOrigin>CN</countryOfOrigin>
<warrantyMonths>24</warrantyMonths>
<images>
<image main="true"><![CDATA[https://…/a.jpg]]></image>
<image main="false"><![CDATA[https://…/b.jpg]]></image>
</images>
<specifications lang="sl">
<spec group="Tehnične informacije" name="Barva"><![CDATA[Črna]]></spec>
</specifications>
<attributes lang="sl">
<attribute group="Barva" groupCode="color" code="black"><![CDATA[Črna]]></attribute>
</attributes>
<charging>
<minPowerW>5</minPowerW>
<maxPowerW>65</maxPowerW>
<powerDelivery>true</powerDelivery>
<chargerIncluded>false</chargerIncluded>
</charging>
<energyLabel>
<eprelNumber>1234567</eprelNumber>
<labelUrl><![CDATA[https://…/label.pdf]]></labelUrl>
<productSheetUrl><![CDATA[https://…/sheet.pdf]]></productSheetUrl>
</energyLabel>
<manufacturer>
<name><![CDATA[UVI.GG]]></name>
<address><![CDATA[…]]></address>
<country>SI</country>
<contact><![CDATA[https://uvi.gg]]></contact>
</manufacturer>
<euResponsiblePerson>
<name><![CDATA[…]]></name>
<address><![CDATA[…]]></address>
<country>SI</country>
<contact><![CDATA[…]]></contact>
</euResponsiblePerson>
<safetyImages>
<image><![CDATA[https://…/safety.jpg]]></image>
</safetyImages>
<documents>
<document title="Navodila" lang="sl"><![CDATA[https://…/manual.pdf]]></document>
</documents>
<updated>2026-10-15T10:00:00.000Z</updated>
</product>
</products>
</catalog>

What each element means

The same fields as the API, so a later move to the API keeps every mapping. In the XML, logistics is the <package> element plus <customsTariff>, <countryOfOrigin> and, for a product shipped in several boxes, <extraPackages><box>…</box></extraPackages>; updatedAt is <updated>. Elements without a value (no restock date, no extra boxes) are left out.

FieldTypeMeaning
productId, variantIdstringOur ids. One entry per sellable variant; variants of one product share productId.
eanstringEAN / GTIN — the product identifier, always present. Match products by it.
modelstring | nullManufacturer model / MPN.
name, url, descriptionobject (lang → string)Per requested language. name falls back to the store language; description is HTML and may be missing.
optionsobject (lang → string)Variant options of a several-variant product ("64GB + 2TB"); empty otherwise.
brand{ code, name } | null
categories[{ code, path }]Deepest categories only; path is per language, e.g. "Computing > Computers > Mini PCs".
pricenumber | nullYOUR regular net price (without VAT), in currency — your partner price, without a special.
specialPricenumber | nullA special price that applies to you now (net, lower than price); null = none. You pay specialPrice when it is set, else price.
specialValidFrom, specialValidTostring | nullThe special price's first and last day (YYYY-MM-DD, both included); null = no start / no end.
specialQtyLimitnumber | nullThe most units the special price covers in total (since it started); null = no limit.
specialQtyLeftnumber | nullUnits you can still buy at the special price; null = no limit. Beyond it you pay price.
currencystringISO 4217, EUR.
vatRatenumber | nullVAT % of the product in Slovenia (VAT is added on the invoice where it applies).
rrpnumber | nullRecommended retail price, VAT included.
inStockboolean
stocknumber | nullUnits available now over all warehouses, Always a number, never above 51 (51 = more than 50). For a made-to-order product it is the quantity we can supply (inStock is then always true).
warehouses[{ name, stock, deliveryDays }]Per warehouse (e.g. "Ljubljana (B13)", "Šentjernej"), stock never above 51; deliveryDays = working days to deliver from that warehouse (null = not set).
deliveryDaysnumber | nullWorking days to deliver: the fastest warehouse that has it in stock, else the product’s own delivery time.
restockDatestring | nullWhen an out-of-stock product is expected back (YYYY-MM-DD), set by our staff; null = not known.
incoming{ date, quantity, more } | nullMore stock on order from our supplier: the earliest expected date (YYYY-MM-DD), the quantity then (at most 50; more = true above 50). null = nothing on order.
logisticsobjectgrossWeightKg, netWeightKg, lengthCm, widthCm, heightCm (package), unitsPerBox, customsTariff (HS / CN code), countryOfOrigin (ISO-2), extraPackages ([{ grossWeightKg, lengthCm, widthCm, heightCm }] — a product shipped in several boxes: every box after the first; empty otherwise).
warrantyMonthsnumber | null
imagesstring[]Absolute URLs, main image first.
specificationsobject (lang → [{ group, name, value }])Technical specification rows.
attributesobject (lang → [{ group, groupCode, value, valueCode }])The product attributes our store filters by (colour, connection, size …). The codes stay the same in every language — map on them.
charging{ minPowerW, maxPowerW, powerDelivery, chargerIncluded } | nullMinimum / maximum charging power in watts (a number, may have decimals, e.g. 1.5; null = not entered); powerDelivery (USB Power Delivery) and chargerIncluded are always true or false. null = no charging data.
energyLabel{ eprelNumber, labelUrl, classLabelUrl, productSheetUrl } | nullEU energy label: the EPREL registration number and links to the energy label, the energy class label and the product information sheet; any field may be null. null = none.
manufacturer, euResponsiblePerson{ name, address, country, contact } | nullGPSR data.
safetyImagesstring[]Product safety images (GPSR).
documents[{ title, language, url }]Manuals, safety instructions, declarations (PDF).
updatedAtstring | nullISO 8601, last change of the product data.

Freshness and caching

Changelog

Questions: [email protected].