Een meeteenheid (unit of measure, UoM) is de eenheid waarin een hoeveelheid wordt uitgedrukt: een stuk, een kilogram, een liter, een meter. In productdata beantwoordt hij bij elk getal dezelfde vraag: 330 wat? Prijs, voorraad, netto-inhoud, bestelaantal en verpakkingsgrootte hebben allemaal een eenheid nodig, en dat hoeft niet steeds dezelfde te zijn.
De meeste catalogi hebben vier begrippen nodig: de basiseenheid (het kleinste dat je telt, één blikje), de verkoopeenheid (wat de klant in de winkelwagen legt, een sixpack), de besteleenheid (wat jij bij de leverancier inkoopt, een tray van 24) en de netto-inhoud met eenheid (330 ml per blikje). Klopt dat, dan volgen eenheidsprijzen, feeds en B2B-bestelregels vanzelf. In dit artikel zie je de velden, de Europese en Google-regels voor eenheidsprijzen, de standaardcodes en een rekenvoorbeeld om leverancierswaarden als 500gr, 0,5 kg en 500 g op te schonen.
Basiseenheid, verkoopeenheid en besteleenheid op één blikje bruiswater
Neem bruiswater in blikjes van 330 ml. De leverancier levert trays van 24 blikjes en pallets van 84 trays. Je webshop verkoopt losse blikjes aan kantoren en sixpacks aan consumenten. Eén product, vijf niveaus:
Eenheidsniveaus voor één product: bruiswater 330 ml
| Basiseenheid | 1 blikje | 1 | H87 (stuk) | Voorraad tellen, eenheidsprijs |
|---|---|---|---|---|
| Netto-inhoud | 330 ml per blikje | n.v.t. | MLT (milliliter) | Etiket, eenheidsprijs, feeds |
| Verkoopeenheid (consument) | Sixpack | 6 | XPK (verpakking) | Webshopprijs en winkelwagen |
| Besteleenheid | Tray van 24 | 24 | XPK (verpakking) | Inkoop, B2B-bestelregels |
| Logistieke eenheid | Pallet van 84 trays | 2.016 | Verpakkingscode volgens afspraak met vervoerder | Magazijn en transport |
Het gaat mis zodra een prijs of voorraad zijn niveau kwijtraakt. Een inkoopprijs van € 7,20 geldt per tray van 24, dus € 0,30 per blikje. Importeer je die in een veld dat de webshop leest als prijs per sixpack, dan verkoop je met verlies. Een voorraad van 10 kan 10 blikjes of 10 trays (240 blikjes) zijn, en een voorraad in de verkeerde eenheid zet ook je backorder-limieten en de beschikbaarheid in feeds scheef. De oplossing is saai maar werkt: sla bij elke hoeveelheid het niveau op.
Verpakkingsgrootte, netto-inhoud en omrekenfactoren als velden
Een minimaal eenhedenmodel past in een handvol attributen. Gebruik in de hele catalogus dezelfde codes en zet getal en eenheid in aparte velden, zodat systemen met het getal kunnen rekenen.
- net_content_value en net_content_unit: 330 en ml. De hoeveelheid product in één basiseenheid, zoals op het etiket.
- sales_unit en units_per_sales_unit: verpakking en 6. Wat één orderregel met aantal 1 bevat.
- order_unit en units_per_order_unit: verpakking en 24. Wat één inkoopregel met aantal 1 bevat; daar horen ook de minimale bestelhoeveelheid en bestelveelvouden bij.
- price_quantity: standaard 1; 100 als de leverancier per 100 stuks prijst, gebruikelijk bij schroeven en bevestigingsmateriaal.
- net_weight en gross_weight met eenheid: voor verzendregels en douane, niet voor de eenheidsprijs.
- unit_pricing_measure en unit_pricing_base_measure: alleen waar een eenheidsprijs verplicht is (zie hieronder).
B2B-catalogusformaten werken hetzelfde. BMEcat beschrijft een artikel bijvoorbeeld met een ORDER_UNIT, een CONTENT_UNIT, het aantal inhoudseenheden per besteleenheid (NO_CU_PER_OU) en een PRICE_QUANTITY, zodat een doos van 100 schroeven met een prijs per doos ondubbelzinnig is voor het systeem van de inkoper.
De eenheidsprijs volgens de Europese prijsaanduidingsrichtlijn
In de EU moeten producten die je aan consumenten aanbiedt naast de verkoopprijs een eenheidsprijs tonen. Richtlijn 98/6/EG definieert die als de eindprijs inclusief btw en andere belastingen voor één kilogram, één liter, één meter, één vierkante meter of één kubieke meter, of een andere eenheid die in de lidstaat voor dat product gebruikelijk is. Bij los verkochte producten volstaat de eenheidsprijs, en een advertentie met een verkoopprijs moet ook de eenheidsprijs noemen.
In Nederland is dit uitgewerkt in het Besluit prijsaanduiding producten. Volgens Ondernemersplein vermeld je bij verpakte producten ook de prijs per meeteenheid, bijvoorbeeld per kilo, liter of meter, en hoeft dat niet bij verschillende producten in één verpakking; de volledige uitzonderingen staan in de bijlagen van het besluit. Verkoop je ook in België of Duitsland, check dan de regels per land. Het rekenwerk is eenvoudig, en de unit price calculator doet het per product:
- Koffiebonen, 500 g voor € 7,49: 7,49 / 0,5 = € 14,98 per kg.
- Olijfolie, 750 ml voor € 8,95: 8,95 / 0,75 = € 11,93 per liter.
- Bruiswater, 6 x 330 ml voor € 5,40: 6 x 0,33 = 1,98 l, dus 5,40 / 1,98 = € 2,73 per liter.
Geen van deze bedragen kun je uitrekenen als de netto-inhoud ontbreekt, als tekst in de producttitel staat of een eenheid gebruikt die de webshop niet herkent. Een eenheidsprijs is eerst een productdataprobleem.
unit_pricing_measure en unit_pricing_base_measure in Google Merchant Center
Google Shopping toont eenheidsprijzen op basis van twee attributen. unit_pricing_measure is de hoeveelheid zoals verkocht, bijvoorbeeld 750ml; verplicht voor producten die je adverteert in de EU, de EVA-landen, het VK, Australië en Nieuw-Zeeland als lokale regels een eenheidsprijs eisen, en elders optioneel. unit_pricing_base_measure is de noemer, bijvoorbeeld 1l of 100ml.
- Ondersteunde eenheden: gewicht oz, lb, mg, g, kg; volume floz, pt, qt, gal, ml, cl, l, cbm; lengte in, ft, yd, cm, m; oppervlakte sqft, sqm; per stuk ct (sheet en item alleen in Australië en Nieuw-Zeeland).
- Waarden voor de basismaat: de hele getallen 1, 10, 100, 2, 4 en 8 met een eenheid, plus de metrische combinaties 75cl, 750ml, 50kg en 1000kg.
- Decimalen: maximaal twee cijfers achter de komma; Google rondt de rest af.
- Conflict: heeft een product ook energy_efficiency_class, dan toont Google het energielabel en niet de eenheidsprijs.
Voor de drie voorbeelden hierboven wordt dat 500g met basis 1kg, 750ml met basis 1l en 1980ml met basis 1l voor de sixpack. Let op: de feed gebruikt kleine letters zoals ml en sqm, niet de UN/CEFACT-codes die je ERP misschien exporteert, en een punt als decimaalteken. Meer over feedattributen lees je in de gids over Google Merchant Center.
Standaardcodes voor eenheden: UN/CEFACT Recommendation 20 en ETIM
Systemen die orders en facturen uitwisselen, schrijven geen kg of stuks maar codes. De gangbare lijst is UN/ECE Recommendation 20, aangevuld met verpakkingscodes uit Recommendation 21 met de prefix X. De Peppol-codelijst voor Recommendation 20, die voor Europese e-facturatie wordt gebruikt, is een handige plek om ze op te zoeken.
Eén eenheid, drie schrijfwijzen: etiket, UN/CEFACT en Google
| Kilogram | KGM | kg | kg |
|---|---|---|---|
| Gram | GRM | g | g |
| Liter | LTR | l | l |
| Milliliter | MLT | ml | ml |
| Centiliter | CLT | cl | cl |
| Meter | MTR | m | m |
| Centimeter | CMT | cm | cm |
| Vierkante meter | MTK | sqm | m² |
| Kubieke meter | MTQ | cbm | m³ |
| Stuk | H87 of C62 (one) | ct | st. |
| Verpakking | XPK | n.v.t. | pak |
H87 (piece) en C62 (one, ook gebruikt als unit) tellen allebei losse stuks; handelspartners spreken meestal één van de twee af. De technische groothandel voegt nog een laag toe: in ETIM hebben numerieke kenmerken zoals lengte of vermogen een vaste eenheid, dus een kabellengte reken je om naar de eenheid die het ETIM-kenmerk verwacht voordat je hem uitwisselt.
Rommelige leverancierseenheden normaliseren: een rekenvoorbeeld
Leveranciersbestanden zijn het zelden eens over eenheden. De een stuurt 500gr, de ander 0,5 kg, een derde zet 500 g alleen in de titel. Zo worden tien ruwe waarden uit drie leveranciersbestanden een waarde, een eenheidscode en een waarde in de basiseenheid van het attribuut.
Tien leverancierswaarden, genormaliseerd
| 500gr | 500 | GRM | 0,5 kg | gr is een alias voor g |
|---|---|---|---|---|
| 0,5 kg | 0,5 | KGM | 0,5 kg | Decimale komma, geen duizendtalscheiding |
| 500 g | 500 | GRM | 0,5 kg | Al schoon |
| 1/2 kilo | 0,5 | KGM | 0,5 kg | Breuk en alias |
| 1.000 g | 1000 | GRM | 1 kg | Punt als duizendtalscheiding (Nederlandse en Duitse bestanden) |
| 1,5L | 1,5 | LTR | 1,5 l | Hoofdletter L, decimale komma |
| 75cl | 75 | CLT | 0,75 l | Houd cl aan als het etiket cl zegt |
| 750 ML | 750 | MLT | 0,75 l | Alleen hoofdletters |
| 6 x 330 ml | 330 | MLT | 0,33 l per blikje | Multipack: units_per_sales_unit = 6 |
| 25 stuks | 25 | H87 | 25 stuks | Aantal, hoort bij verpakkingsgrootte |
De regels achter de tabel gelden voor elk attribuut:
- Bewaar de ruwe waarde in een eigen kolom, zodat je elke omrekening later kunt controleren.
- Bepaal het getalformaat per bron. 1.000 van een Duitse leverancier is duizend; 1.000 van een Amerikaanse leverancier is één. Beslis per bestand, nooit per waarde.
- Splits het getal van de eenheid en koppel aliassen (gr, gram, grams, G) aan één code.
- Kies één basiseenheid per attribuut (kg voor gewicht, l voor volume, mm of cm voor afmetingen) en reken om met een vaste factor.
- Splits multipacks in inhoud per stuk en stuks per verpakking, zodat eenheidsprijs en verpakkingsgrootte allebei kloppen.
- Sla het resultaat op in numerieke velden en maak weergavetekst als 500 g daaruit, niet andersom.
Het is dezelfde aanpak als bij attribuutstandaardisatie in het algemeen: spreek eerst de toegestane waarden af, herstel dan de data in bulk en houd nieuwe afwijkingen aan de poort tegen.
Opgeslagen eenheden vs getoonde eenheden per markt
Normaliseren betekent niet dat elke markt dezelfde tekst ziet. Sla één waarde op in één basiseenheid en maak er bij de output per taal en kanaal de juiste notatie van. Een zak van 0,5 kg staat als 0.5 kg op een Engelstalige pagina, als 0,5 kg op een Nederlandse of Duitse pagina en als 500g in een Google-feed.
- Getalnotatie: het decimaalteken en de duizendtalscheiding volgen de taal van de pagina, nooit het leveranciersbestand.
- Eenheidslabel: stuk is st. in het Nederlands, Stk. in het Duits en pc in het Engels; de opgeslagen code (H87) blijft gelijk.
- Metrisch en imperiaal: verkoop je in de VS, reken 500 g dan bij de weergave om naar 17,6 oz, maar bewaar gram als opgeslagen waarde zodat de Europese eenheidsprijs exact blijft. De Britse feed moet metrische waarden gebruiken.
- Afronden: rond alleen de getoonde waarde af. Wie de opgeslagen waarde bij elke omrekening afrondt, schuift weg: 17,6 oz terugrekenen geeft 498,95 g.
Die scheiding houdt ook vertalen eenvoudig. Een vertaler komt nooit aan 500 g; het sjabloon dat het label maakt wel.
Zeven eenheidsfouten die eenheidsprijzen en feeds breken
- De eenheid zit in de waarde. 500g in een tekstveld kun je niet sorteren, filteren of delen. Splits het.
- Decimale komma gelezen als duizendtalscheiding. 0,5 kg wordt 5 kg, en de eenheidsprijs zakt met een factor tien.
- Prijs van een multipack vergeleken met een losse stuksprijs. De sixpack en het losse blikje tonen eenheidsprijzen op basis van verschillende hoeveelheden.
- Brutogewicht gebruikt als netto-inhoud. De verpakking telt mee, dus de eenheidsprijs is te laag.
- Uitlekgewicht vergeten. Bij producten op vloeistof, zoals olijven op pekel, staat de richtlijn de eenheidsprijs op het netto uitlekgewicht toe als dat gewicht verplicht vermeld wordt.
- Fluid ounces verward met ounces. floz is volume en oz is gewicht; Google ziet ze als verschillende eenheden.
- Alleen het label omzetten. cm veranderen in mm zonder de waarde met 10 te vermenigvuldigen, maakt van een plank van 30 cm er een van 30 mm.
Eenheidssets, omrekeningen en controles in WISEPIM
WISEPIM behandelt eenheden als data, niet als tekst. Met de workspace-functie Classification aan groeperen UOM code sets (eenheidssets) verwante eenheden (gewicht, lengte, volume en meer) met een code, een symbool, gelokaliseerde namen en een omrekenfactor naar de basiseenheid van de set, plus instellingen voor weergave en export. De actie Change Unit of Measure in bulkbewerkingen en in automatiseringen rekent waarden om voor een selectie, of wijzigt alleen het label als waarden verkeerd gelabeld waren.
Daaromheen helpen bestaande functies bij rommelige eenheden. De pagina attribute values (attribuutwaarden, voor tekst- en keuzeattributen) groepeert waarden die alleen verschillen in hoofdletters, spaties of leestekens, zoals 500gr, 500 GR en 500 gr, of 1,5 ml en 1.5 ml, en laat je elke groep in één stap samenvoegen tot één waarde, met ongedaan maken (zie attribuutwaarde-normalisatie). Gr en g ziet de pagina niet als dezelfde eenheid, en gram rekent ze niet om naar kilogram: 500 g en 0,5 kg blijven aparte waarden tot je ze omrekent. Maakt de CSV-import attributen aan uit leverancierskolommen, dan kan hij de eenheidskolom van een leverancier achter de waarde zetten, in een apart _uom-attribuut bewaren of weglaten. AI-verrijking kan de netto-inhoud uit omschrijvingen halen en in attributen zetten. Regels in kwaliteitsbewaking (Quality Guard) waarschuwen of blokkeren als een eenheidsveld leeg is of niet aan een patroon voldoet. De BMEcat-export in Feed Hub vult ORDER_UNIT, CONTENT_UNIT, NO_CU_PER_OU en PRICE_QUANTITY uit attributen zoals order_unit en pack_size, en zet waarden als stuks of pcs om naar UN/CEFACT-codes. WISEPIM rekent geen eenheidsprijzen uit, en de Google Shopping-feedtemplate en de Merchant Center-koppeling sturen geen unit_pricing_measure of unit_pricing_base_measure mee. Wel houdt WISEPIM netto-inhoud, verpakkingsgrootte en eenheid consistent, zodat je webshop of de tool die die feedvelden opbouwt schone invoer krijgt.

