Octibiz
Demo

Durchsucht Website und Dokumentation gemeinsam. Enter zeigt alle Treffer, Esc schließt.

Prices & units

Prices & units screen in Octibiz

Overview

Four modules interlock in price determination. Telling them apart answers the most common question of all — why is that the price?

SurfaceWhat it defines
Price tiersquantity-dependent prices per item — globally, per price list or per customer group
Customer pricescustomer-specific price lists with terms per item or category
Customer groupsgroups with discounts, price rules, price display and visibility
Packaging unitsunits of measure, pack sizes per item and free conversions

Core tasks

Maintain price tiers. Tier sets define which price applies from which quantity. The scope decides the reach: globally for everyone, per price list or per customer group.

Grant customer prices. Customer-specific price lists with terms per item or per category. The category term is the more effective lever — it also applies to items that do not exist yet, and to all subcategories: a term on “Tools” also applies to “Tools → Cordless drills”. If the subcategory has a term of its own, the nearer one wins.

Adopt a quote price as customer price. In the quote, the card Adopt as customer price shows each item line with its negotiated net unit price — after the line discount, converted to euros at the quote's rate for foreign currencies. One click turns it into a permanent term: for this item, from the line quantity, valid from today. It goes into the customer's price list for the quote's brand, otherwise into the customer's brandless list, otherwise into a new list "Konditionen aus Angeboten". A second click reports "already exists"; a renegotiated price of the same line changes the term instead of adding a second one.

Approve special conditions. Every person has a discount without approval: up to this discount a new or changed term applies at once, above it the term needs approval. For anyone without their own allowance the approval threshold applies — out of the box from 20 % discount. Until approval the term waits and does not apply: the list shows Awaiting approval, and whoever may approve in the brand receives a notice. Approve (tick) puts all waiting terms of the list into force; Reject takes a reason that goes to the requester — rejected terms stay visible but never apply. A second person must approve or reject: whoever requested a term sees neither Approve nor Reject on it — even if they may approve themselves (four-eyes principle). For an import, the person who started the import counts. The discount of a unit price is measured against the item's list price; without a list price (and for a unit price on a category) it cannot be determined and always needs approval. Set the threshold under Customer prices → Approval of special conditions; 0 turns approval off. Let expire (stopwatch) ends a list with yesterday — from today normal price finding applies again.

Set the discount without approval per person. Under Customer prices → Discount without approval per person, Add person sets up to which discount a person saves special conditions without approval — for one brand or (brand empty) for all brands. The allowance of the brand takes precedence over the one for all brands; 100 % means this person never needs approval. Remove the allowance and the approval threshold applies to the person again. Maintaining it requires the permission customerprices.allowance.manage; only someone holding the permission for all brands creates an allowance for all brands.

Import negotiated price lists. Under Settings → Data import, the target Customer prices takes one term per row: customer number, item number or category (reference product/category), type (price = unit price in euros, percent = discount), value, optionally minimum quantity, valid from/to and the price list name (default "Preisimport"). The list per customer and name is created on the first run in the run's brand; a second run with overwrite changes existing terms instead of doubling them. Imported terms above the threshold also wait for approval. Undo removes the new terms and newly created lists.

Keep an eye on expiring terms. The filters Expires within 14 days and Item narrow the list. Every morning the account manager — otherwise whoever created the list — receives a notice when a list or a term ends within the next 14 days, once per end date. In the customer, the tab Customer prices shows all lists with their terms; waiting and rejected ones are grey.

See where a price comes from. Every article line in a quote, order, invoice and recurring invoice records its price source when saved: customer condition, promotion, customer group, tier, list price — or manual price when the unit price differs from the price determination. It also keeps the rule (such as "tier price from 10") and the list price. The hint appears below the line's unit price. An unchanged line keeps its source even if the condition has expired in the meantime; follow-up documents (quote → order → invoice) take it over.

Analyse special conditions. On the customer, the Customer prices tab shows the card Special conditions analysis above the lists: the invoiced revenue at special conditions (customer condition, customer group, tier, promotion), its share of revenue and the discount compared to the list price — broken down by price source and rule. Revenue counts net by invoice date as everywhere, credit notes reduce it. The period is selectable (last 12 months, current year, previous year). In reporting the same figures are the metrics Revenue at special conditions, Discount from special conditions and Share of revenue at special conditions, broken down by customer and brand; the ready-made report template Special conditions by customer sets them up together with the tier discounts granted.

Filter the tier overview. Under Tiered prices, Scope (general, price list, customer group) and — for a price list or customer group — the reference narrow the list, in addition to item, brand and status.

Tier table on the line. In a document, an article line with tiers shows the hint Tiers below the unit price: a click opens the tiers with their unit price, the tier of the current quantity highlighted. The same tiers apply as in the price determination — with the document's customer if you may see customer prices.

Tiers in the catalogue and the customer portal. The Tiered prices tab on the item shows the effective tier prices per tier below the tier sets (percentage tiers calculated from the list price). In the customer portal the quote carries the card Tiered prices for the quoted items — with the tiers that apply to this customer, the tier of the quoted quantity highlighted. It appears for accesses that may see quotes or orders.

Analyse tier discounts. Settings → Tiered prices → Analysis shows per item and tier how much was invoiced at tier prices and which discount was granted compared to the list price, with quantity and number of customers. In reporting the metrics are Revenue at tier prices and Tier discounts granted. Users who may only analyse see a hint and the Analysis button instead of the tier sets on the Tiered prices page; with the read permission for tier prices the sets are visible without edit buttons.

Set up customer groups. A group brings members together and carries price rules, the price display and visibility. It is the remedy against a hundred individual agreements.

Assign customers — one by one or many at once. In the group's Members tab every chosen customer first goes into a selection; Assign N customers adds all of them in one step, existing members stay unchanged. On the customer itself, the card Customer groups shows the customer's groups — assign the customer to a group or remove the assignment there. Automatically assigned members are only removed by the automation. Existing groups and assignments from a legacy system are taken over by the import targets Customer groups (key, name, default discount, price display) and Customer group assignments (group key, customer number, optionally member since) under Settings → Data import; imported assignments count as set by hand.

Revenue and margin per customer group. A group's Revenue tab shows the net revenue of the invoices of its current members, the cost of goods (quantity × the item's cost price) and the margin with margin % — broken down per member. Revenue without a known cost (services, free text) is shown as a hint; there the margin is an upper bound. A customer in several groups counts in each. In reporting, Revenue per customer group, Cost of goods per customer group, Margin per customer group and Margin % per customer group are available with the breakdown Customer group; the report template Revenue and margin by customer group shows the weakest margin first.

Maintain units and pack sizes. Units of measure with dimension, base factor and decimal places; pack sizes per item; free conversions globally or per item — per item also across dimensions, such as "1 piece = 250 g". That conversion is exactly what anybody weighing piece goods or selling weight goods by the piece needs.

Maintain pack sizes with GTIN, weight and deposit. Under Packaging units → Packagings per article every pack size of an item carries its code, the content in the base unit, its own EAN/GTIN and weight and dimensions. The code or GTIN on a document line chooses the pack size — scanned or typed; at the packing station a pack size as parcel brings weight and dimensions for the shipping label. With a deposit amount and deposit item, every pack-size line gets its own deposit line: quantity = number of packs, exactly one line per deposit item and amount; the document discount does not reduce it. An amount without an item (or vice versa) creates no deposit.

Nested pack sizes. Parent packaging nests pallet → carton → piece. The content of each pack size is stated in the item's base unit (pallet = 120, carton = 12) and is not multiplied across the levels; a cycle (carton in pallet in carton) is rejected.

Minimum sales quantity and decimal places. The minimum sales quantity of a pack size raises a smaller line quantity to it. The unit's decimal places determine how precise a quantity may be: piece (0) is rounded up to whole pieces, kg or l keep up to three places.

Names per language. Units and pack sizes carry a version per installed language next to the name in the default language (Name per language in the dialog). On quotes, order confirmations, invoices and purchase orders the PDF shows the unit in the document language: an English quote for "3 Karton (6 Stück)" prints "3 Carton (6 pcs)". Without a version the default-language name applies; a unit that is not in the master stays as typed on the line. The standard units come with their English abbreviations (pcs, kg, l, h …).

Pack sizes on the item. The Packaging tab of an item shows the same pack-size maintenance as the settings — with the item's base unit and a conversion preview: choose quantity and unit or pack size, and below it the same quantity appears in every pack size and in the base unit.

Conversion helper in documents. Below the unit field of an item line, the line editor converts live: "≙ 0.05 Pallet · 24 Stück". It calculates exactly like saving the document (pack size, then conversion table, then dimension); if a unit cannot be converted, the line stays empty.

Consistency check. Every day at 06:35 the system checks pack sizes and conversions for contradictions: sales pack sizes without a default sales unit, several defaults, a parent pack size that is missing, not smaller or does not divide evenly, the same GTIN on two pack sizes, a conversion that contradicts the pack-size content or the unit master, and there-and-back conversions that do not match. The result is under Packaging units → Check; Check now starts the run immediately. If the result of the daily run changes, everyone allowed to maintain units gets a notice in the bell — reporting the same findings again every morning would only be noise.

Importing pack sizes (CSV). Import packagings on the Packaging tab (or in the settings) opens the data import with the target Packagings per article. Article number and pack-size code are required; new pack sizes need name and content. The parent pack size is given as a code of the same item in the parentCode column — even if it is created further up in the same file. The preview shows what would be created and every faulty row with its reason; a revert removes the created pack sizes again. Example:

sku;code;name;contentQty;role;isDefaultSales;ean;parentCode
LADEN-NB-A5;karton-10;Karton (10 Stück);10;purchase;;4006381333931;
LADEN-NB-A5;palette-400;Palette (40 Kartons);400;shipping;;;karton-10

Fields in detail

The order of price finding decides which price ends up on the document. It is fixed: customer price before promotion before customer group before tier before list price — the first match applies, even if a later source would be cheaper. Anyone who always wants the lowest price switches to best price under Price lists → Price determination. Within the customer group group rule and group tier both calculate — the lower price applies, and the line shows where it comes from.

Price tiers

FieldRequiredValues / formatWhat it does
Article productIdyesan existing articleWhich article the tier applies to.
Scope scopenoglobal, price list, customer groupFor whom. Global applies to everyone, the other two to a specific list or group. A tier per customer group calculates in the customer-group stage: against the group's price rule the lower price wins.
Reference refIdwith list/groupthe list or groupWhich list or group is meant.
Quantity basis qtyBasisnoper item or whole documentWhat the quantity is measured on. Whole document adds the same article across several rows — the difference that decides the tier when one article appears twice.
Tiers tiersyesquantity and price per tierThe tier table itself: from what quantity which price applies.
Rank prioritynonumberWhat wins when two tiers match.
Valid from / to validFrom, validTonodateTime limits. Empty means open-ended.
Brand brandIdnoone of your brandsWhich brand the tier applies to.
Active activenoyes/noWhether the tier applies.

Customer price list

FieldRequiredValues / formatWhat it does
Customer customerUlidyesan existing customerWhose prices.
Name namenotext, max. 100 charactersWhat the list is called, say "framework agreement 2026".
Prices pricesyesarticles with a priceThe agreed prices. They beat everything else — which is why what is contractually promised belongs here, and nothing else.
Valid from / to validFrom, validTonodateTerm of the agreement. After it passes normal price finding applies again without anyone deleting the list.
Approval approvalStatus, approvalNote–approved, waiting, rejected (per term), reason of the rejectionOnly approved terms apply. Waiting ones arise above the discount without approval of the person changing them (without an own allowance: from the discount threshold) — even if they may approve themselves.
Note notenotextWhat the prices rest on.
Brand brandIdnoone of your brandsFor which brand.
Active activenoyes/noWhether the list applies.

Unique per period. Per customer, item or category and minimum quantity only one term may apply in the same period — also across several active lists of the same customer. A brandless list applies to every brand and therefore collides with every brand list; lists of two different brands do not. Other minimum quantities form a tier and are allowed. Saving is rejected otherwise; the message names the other list. Starting on the following day does not overlap.

Customer group

FieldRequiredValues / formatWhat it does
Name nameyestext, max. 100 charactersWhat the group is called, say "resellers".
Key keynotext, max. 50 charactersThe technical identifier for import and automation. Do not change it once customers are assigned.
Default discount (%) defaultDiscountPctnopercentageReduction on the list price every member gets when no price rule and no price list of the group matches. Customer price and promotion come before it in the order, the tier after it.
Price list priceListIdnoan existing price listWhich prices apply to the group — for all members at once, the way to maintain terms without repeating them per customer. Group tiers are maintained under Price tiers with the scope Customer group.
Price display taxDisplaynonet, gross, tax freeWhether members are shown net or gross prices. Net for resellers, gross for consumers — the default for every document of this group.
Automatic assignment autoAssignRulenoconditionsWho joins the group by themselves, say from an annual revenue. Without a rule assignment is manual.
Active activenoyes/noWhether the group has effect.

Price rule of the customer group

FieldRequiredValues / formatWhat it does
Scope scopenogeneral, category, articleWhat the rule applies to. A category includes its subcategories. The more specific wins: article before nearer category before parent category before general.
Reference refIdwith category/articlethe category or articleWhich category or article is meant.
Type and value rateType, valueyespercent or fixed pricePercentage reduction or fixed unit price.
Basis basisnolist price, net priceWhat the percentage is calculated on. Net price is the price after customer and promotion discounts already applied: if a customer price or a promotion matched, the group discount comes on top; otherwise the net price is the list price.
Rank prioritynonumberWhat wins at equal scope.
Valid from / to validFrom, validTonodateTime limits. Two rules with the same scope, reference and rank must not overlap in time — saving is rejected otherwise.
Brand brandIdnoone of your brandsWhich brand the rule applies to.

Settings & permissions

  • Four modules, four flags: module.price_tiers, module.customer_prices,

module.customer_groups, module.packaging.

  • Permissions per surface: pricetiers.tier.view/manage, customerprices.price.view/manage,

customergroups.group.view/manage, packaging.units.view/manage. Approving special conditions from the discount threshold: customerprices.price.approve (out of the box management only), never one's own. Setting the discount without approval per person: customerprices.allowance.manage (out of the box management only).

  • Client portal: your customers see their own valid and approved terms in the portal under

Prices — with the portal permission View own prices and terms (granted under Portal access). Other customers' terms, notes and approval remarks are never shown there.

  • Analyses: special conditions customerprices.analysis.view, tier discounts

pricetiers.analysis.view, revenue and margin per customer group customergroups.revenue.view — out of the box sales and accounting. Invoices of the brands in which the permission applies are counted.

  • Approval threshold: customerprices.approval_min_discount_pct (whole percent, default 20, 0 = off)

— default for everyone without their own allowance.

  • Calculation happens in the core. The order in which tier, customer price and group discount

take effect is determined by the commerce core — not the individual module.

  • Multiple memberships: if a customer belongs to several groups, the most specific rule wins, then

the higher rank. Under Customer groups → Multiple memberships switch to Best price wins — then the lowest price of all matching rules applies.

  • The RRP is never part of price determination, see Products.
  • Pack-size import needs the import permission platform.import.run; everyone with packaging.units.view

sees the consistency check, everyone with packaging.units.manage can start it and gets the daily notice.

FAQ & troubleshooting

The price on the quote is not the expected one. Work through the chain: the customer's individual price, then the promotion, then the customer group, then the tier, then the list price. The first match wins — unless best price is switched on, then the lowest does.

The analysis shows "manual price" although a customer price applies. The line's unit price differed from the price determination when it was saved — for example because it was changed by hand or contains surcharges of a configurable article. Lines from before the price source was introduced appear as no source.

A tier has no effect. Check the scope — a set per customer group applies only to its members.

The consistency check reports a sales pack size without a default sales unit. The item has pack sizes with the role Sales, but none is the default — a line without a unit then sells in the base unit. Mark one pack size as Default sales unit or change the role; the next run no longer reports it.

An import row is rejected. The error list names row, column and reason — such as a content of 0, an unknown role or a parent pack size that does not exist on the item. The remaining rows still run.

A conversion is rejected. Cross-dimension conversions are possible per item only, not globally. A global "piece = gram" would have no universally valid meaning.

New items do not receive the customer discount. Then the term is maintained per item instead of per category.

A new customer term does not apply. It awaits approval — its discount is above the threshold. The list shows Awaiting approval; after approval it applies at once.

A term is rejected when saving. A term for the same item and the same minimum quantity already applies in the same period — the message names the list. End or change it there, then save.

pricing.pricing · Available from version 0.5.0