Do you purchase goods and resell them – wholesale, in a retail store, or both at once? This guide is a map for setting up ABRA Flexi for a company that maintains inventory management: from setting up the company and warehouses through pricing and price formation and sets, to sales, stocktaking, and margin evaluation. The sections are in the order you'll need them when getting started, so you can work through them from top to bottom.
ℹ️ Do you also sell online, manufacture goods, or invoice services alongside your goods? Also check out the sister guides for e-shops, for manufacturing companies, and for service providers. Most trading companies combine several areas at once.
💡 Before you begin, go through the appearance settings and left menu customization – so you only have the agendas you actually use in it.
What ABRA Flexi can and can't do for warehouse and sales management
Before diving into the setup, it's worth knowing the boundaries. This will save you time looking for functions that aren't in the system.
What ABRA Flexi handles without add-ons:
Any number of warehouses, transfer notes between them, and stock placement on shelves and racks.
The entire sales cycle from inquiry through order to invoice, warehouse document, and payment.
Inventory valuation using average price or FIFO, warehouse accounting using Method A or Method B.
Multi-tier pricing – margins, price levels, individual prices, quantity tiers, discounts.
Sets and bundles, batches and expiration dates, serial numbers, and packaging with custom EAN codes.
Stocktaking including discrepancy documents and a point-of-sale register for over-the-counter sales.
Connecting an e-shop, WMS, or POS system via REST API.
What you won't find in ABRA Flexi by default – and how it's typically handled:
Picking and order fulfillment. There is no dedicated dispatch document or warehouse worker navigation; or rather, warehouse worker navigation works in a simplified form called warehouse placement. Goods are always issued via an issue note, and any warehouse logistics needs are handled by an external WMS or fulfillment service.
Complaints/returns module. The recommended approach is a custom received order type combined with a returns warehouse.
Consignment warehouse can only be handled from the supplier's side, if you account for inventory using Method A (since the value of goods flows into your accounting). With Method B, where the value doesn't flow into accounting directly from the warehouse (or you post it manually at year-end), you can also work with your supplier's consignment stock held at your premises.
Conversion between units of measure. Buying in pallets and selling by piece is handled through packaging.
A standalone Delivery Note document. This is a print report generated from an issue note or invoice.
Forecast-based purchase planning. Reordering is primarily handled by Order to Minimum based on a fixed minimum stock level. Optionally, you can create a custom query to generate a forecast (contact us at podporaflexi@abra.eu if you're interested in having one built).
⚠️ Two decisions are the hardest to change later: the inventory valuation method (for an existing warehouse, practically only by creating a new warehouse) and batch or serial number tracking (once an item has stock movements, it can't be enabled or disabled retroactively). Settle both before entering your first document.
Before you start: eight questions that determine your setup
Your answers will determine which sections are mandatory for you and which you can skip. Go through them before you start creating anything – some choices are difficult to change later.
Question | Why it matters | Where it shows up |
How many warehouses will we maintain? | Separate warehouses for headquarters, a store, and returns make record-keeping clearer, but you'll need to handle transfers and decide where goods are issued from. | |
Do we value inventory by average price or FIFO? | This determines the value of every issue note, and thus your margin. It applies company-wide and can only be changed via a new warehouse. | |
Do we account for inventory using Method A or Method B? | This determines when a purchase becomes a cost. This choice belongs to your accountant. | Warehouse accounting |
Do we need to trace a specific unit or batch? | Batches, expiration dates, and serial numbers are enabled on the item in the price list, and once an item has stock movements they can't be enabled retroactively. This applies to food, cosmetics, chemicals, and electronics alike. | |
Does each customer have different prices? | The answer determines whether a single price in the price list is enough, or whether you need price levels and individual prices. | |
Do we sell discounted sets? | A set of multiple items under one code is handled by a set, not a bill of materials. Sets are available from the Business plan. | |
Do we sell over the counter in a store? | Over-the-counter sales have their own agenda with a different accounting workflow than invoicing. | |
Do we trade internationally? | This affects the VAT regime and the obligation to report Intrastat and the EC Sales List. | International trade |
💡 Write down your answers – you'll come back to them for every section. If you're unsure about any question, that's exactly the point where it's worth discussing the setup with our support team or at a consultation before entering your first document.
Basic setup
This part is the same for every company. It's worth spending an hour on it at the start – you'll otherwise keep coming back to unfinished setup at every subsequent step.
Company settings
In company settings (top right, under the user icon) you fill in the address, company ID, tax ID, and VAT payer status. Two subsections are essential for a trading company.
Goods tab:
Inventory valuation method – average or FIFO. See the dedicated section.
Post warehouse to accounting – checked = Method A, unchecked = Method B.
Allow generation of issue requests – lets you issue goods that aren't in stock. This creates an issue request with zero value; once the goods arrive, run the Update Issue Requests function – it doesn't resolve itself automatically.
Update purchase price in price list on receipt – useful if you calculate the selling price as a margin on the purchase price. This setting updates the price automatically, but you can also update it manually.
Sales tab:
Reservation creation mode – a critical choice for anyone accepting orders, see Reservations.
Automatic order/project creation – if you want to track orders as separate business cases. You can also think of a project as something that touches multiple documents and can show you a running balance, even after completion.
This is also where you enable the use of cost centers and working with a barcode scanner.
💡 Company settings have a validity period – you can create a new record valid from a chosen date. This is useful, for example, if you're changing your inventory accounting method starting next year and don't want to overwrite the history.
Users and access rights
Everyone who accesses Flexi should have their own account. A warehouse worker, an invoicing clerk, a salesperson, and an accountant all need to see different things – and above all, different prices. Rights are assigned via user roles; they're defined in the desktop application but also apply to the web interface.
Typical roles: warehouse worker (warehouse documents, stocktaking, no prices), salesperson (quotes, orders, invoices), cashier (register only), accountant (accounting and closings).
Data visibility rights let you restrict a user to their own cost center or project – Premium plan, desktop-only setting.
Enable two-factor authentication for accounts with permission to change prices.
If you're setting up another company with the same rules, copying settings will save you work. This copies all user settings, such as filters, sorting, etc.
⚠️ Don't give everyone the administrator role. The most common damage in trading companies isn't caused by an outside attacker, but by an accidentally deleted receipt note or a bulk price change made by someone who shouldn't have had that permission.
Document series and document types
A document type is a template – it determines the accounting entry, due date, texts, rounding, and above all what follow-up document gets created. A document series gives documents their numbering. Think through both in advance – numbering is difficult to change retroactively.
A possible set of document types for a trading company:
Issued invoices: domestic, EU delivery, export, advance payment, tax document for an advance payment, credit note.
Received invoices: domestic, EU purchase with reverse charge, import, received credit note.
Warehouse documents: receipt note, issue note, a pair for transfer notes, a pair for stocktaking discrepancies, and possibly an issue note for returns.
Orders: received from a customer, issued to a supplier, and possibly a type for returns.
Point-of-sale registers: one record for each register or store.
The document type is also where you set up the accounting entry template and the flag indicating whether the document is accounting-relevant. This matters: under Method A, warehouse documents must be accounting-relevant; under Method B, they must not be. When these get out of sync, Flexi shows the message "The Accounting parameter of the document type does not match the warehouse setting."
With your accountant, also check the chart of accounts and the accounting period. You can change the chart of accounts over time, but the accounting period usually can't be changed once set.
⚠️ The invoice type determines which warehouse document type should be generated. Generation is enabled by default – so saving an issued invoice will also create an issue note. If you overlook this setting, you'll either issue goods twice, or not at all.
Bank and cash register
Without a bank account and a cash register, you can't post payments – and thus can't find out who owes you money.
Set up a bank account, including the statement format your bank provides.
Set up a cash register – in retail, usually one per store, so the cash book reconciles.
Set up statement imports and test payment matching on one statement.
If manual uploads don't suit you, we recommend activating automatic online bank connection.
💡 For a wholesaler with dozens of payments a day, set up bulk matching right away. Manual matching is where hidden delays most often occur – unpaid invoices then only show up once reminders are sent.
Customer and supplier directory
In the company directory, for a Czech company it's enough to type the name and Flexi will pull the other details from the ARES registry. Pricing, discounts, due dates, and shipping all tie back to the directory.
Company groups are used for filtering and analysis. They are not the same as a price list group – pricing is tied to a price list group, which you need, for example, to split into wholesale and retail price lists.
In the Business settings section on the company card, you set a standing discount, due date, and default payment method, or, for example, a sales ban after the due date is exceeded.
Do you deliver to a customer at multiple addresses? That's what delivery destinations are for, selected on the Shipping tab of a document.
You maintain contacts individually per company; you can upload an existing directory via Excel import.
📝 For companies with a group tax ID and for foreign partners, turn off automatic updates from the registry. Otherwise ARES will overwrite manually entered details.
Switching from another system?
A comprehensive hub is available in the article on setting up opening balances, and the general procedure is in migrating data from another system. For the most common source systems, we have guides from Pohoda and from ABRA Gen; the accounting side is summarized in Getting Started with Accounting.
Once you've studied the above, let's look below at what's key in this case if you're selling goods.
Typical situation: you have a price list in Excel, you know your stock levels, and you have unpaid invoices on both sides. There's a fixed order to the process – you can't receive goods into stock without a price list, and you can't start issuing goods without an opening balance.
Choose a cutover day, ideally the first day of an accounting period.
Set up product groups and import your price list.
Receive the opening stock into inventory via stock card import or via receipt notes at acquisition prices.
Fill in opening account balances, unpaid invoices, and bank and cash balances.
Enter any unpaid and unsettled advance payments, if you have any.
Check the balances and verify that the warehouse value matches the warehouse account.
⚠️ The opening warehouse balance must be filled in before you first use an item on a document. Quantities on already-created documents cannot be changed retroactively, and the warehouse balance will fall out of sync with accounting. For an item that already has a non-zero card, the import will only fill in the difference – handle further adjustments with receipt and issue notes.
💡 Not sure how to handle the import, or don't have time for it? We'll be happy to import your data for you – write to podporaflexi@abra.eu or use the in-app chat.
Warehouses: where the goods physically sit
A small wholesaler can get by with a single warehouse; a company with a store and headquarters needs at least two. If you have no experience with inventory management, start with the video guide.
Create a separate warehouse wherever you need to know the balance separately:
A warehouse per location – otherwise you won't be able to tell what's in the store versus at headquarters.
Central warehouse – the central location where most of your inventory will sit.
Returns warehouse – returned goods shouldn't be part of your sellable stock.
A separate warehouse for consigned goods – it's not your inventory, but you need to keep track of it.
💡 Did you know you don't need a separate warehouse to track goods in transit? What goods are in transit follows from the quantity ordered from your supplier. You can track that quantity with a single click using our add-on.
You create a new warehouse in the list of warehouses using the New button; one warehouse already exists in every company, and there's no limit on the number of additional ones. Pay attention to the Abbreviation (identifier used for imports), Automatic warehouse (a stock card is created for every new price list item – you want this enabled for a company with a single warehouse), the default receipt and issue series, the warehouse account (most commonly 132), and the cost center that warehouse documents will inherit from the warehouse.
ℹ️ A warehouse has Valid from and Valid to fields. When you close a location, don't delete the warehouse – just limit its validity. It will stop being offered on new documents while its history remains traceable.
Warehouse placement and transfer notes
Warehouse placement (from the Premium plan) records a room, rack, and shelf on the stock card. It's created in a separate agenda – you don't have to set up all three; a single record with a combined label is enough, and a proven convention is 3_B2 for room 3, rack B, shelf 2. The Display flag must remain active, and you can add the field to the stock card via form settings; you can set up placements in bulk via import.
⚠️ ABRA Flexi is not a full-fledged WMS. In short, at the level of a single stock card, you cannot receive an item into multiple positions (i.e., 3 receipt notes for the same item, each into a different position).
A single item can only have one placement on its card. If the goods sit on multiple shelves, you can create a placement with a combined label (for example, shelf "2, 3, 4"). However, you won't be able to tell how many units are on which shelf afterward.
Transfers between warehouses are done via a transfer note – an issue note from one warehouse linked to a receipt note in another. Prepare a pair of warehouse document types for this: a receipt type (a regular receipt movement type is enough) and an issue type with the movement type specification set to "Issue for transfer" and a reference to the receipt type in the Transfer Document Type field. The default type PŘEVODKA usually exists in a company, but it doesn't replace this pair on its own.
Create the issue from the source warehouse – always first.
Fill in the Destination Warehouse before saving, otherwise Flexi will prompt you for it.
Saving will create a receipt note in the destination warehouse; alternatively, complete the transfer via Services in the document footer.
⚠️ A missing movement type specification is by far the most common reason the receipt note for the destination warehouse isn't created. Check this first.
Where goods get issued from
If you have a single warehouse, this section doesn't apply to you. With multiple warehouses, four different mechanisms can determine the warehouse on a document – not a single setting.
Warehouse in the document header – the base setting; the movement is executed from here.
Warehouse on the document line item – can differ from the header and takes precedence at that point.
Item placement in the price list – a single issue note can contain items from multiple warehouses, but only if the item has a placement defined in a warehouse other than the one in the header.
Warehouse document type in the invoice type – predefine a warehouse in the warehouse document type and reference it in the invoice type. This way you separate invoicing from a store versus from headquarters.
Warehouse mapping: only for sets and bills of materials
The Warehouse Mapping agenda is often mistakenly thought of as a general rule for determining the warehouse. That's not the case – it determines the warehouse solely for items contained within a set or a bill of materials: when a set is sold, its components are issued from it; during manufacturing, the material is issued from it. Path: Records → Directories → Goods → Warehouse Mapping. The form has four fields – Warehouse, Price List (for a single item only, otherwise leave blank), Product Group, and Cost Center (blank = all). The most efficient approach is to map by product group.
⚠️ If you sell sets and the components sit in a different warehouse than the set, without mapping the components won't be issued correctly. This is the most common reason a set sale fails or issues from the wrong warehouse.
💡 If you also have a manufacturing branch of your company, we recommend reading the guide for that type of company. Among other things, it covers the details of warehouse mapping and the related bills of materials.
Price list: the catalog of your product range
The price list is the heart of a trading company – every item you buy or sell must be set up here. A comprehensive walkthrough of the setup is described in Setting Up the Price List.
Every item has an inventory type that determines how it's handled:
Inventory type | When to use it | Stock inventory |
Goods | Purchased and resold items – the bulk of a trading company's assortment. | Yes |
Material | Inputs you consume – store packaging and consumable materials. | Yes |
Service | Shipping, assembly, service work, dispatch fee. | No |
Fee | Recycling and copyright fees listed separately on a document. | No |
Product / Semi-finished product | Only if you also assemble your own goods – see the manufacturing section. | Yes |
⚠️ For an item to have a stock card, it must be flagged as stocked and have the Define warehouse placement field filled in (Details tab). Forgetting to check this box is the most common reason goods "can't be received into stock" – the card simply never got created.
Product groups and the price list tree
These two are often confused, yet they do different things. A product group sets shared properties – accounting and pricing. The price list tree is used purely for categorization, like folders on a computer (and for transferring categories to an e-shop).
By default three groups exist: Goods, Services, Material. It's worth breaking them down further by product range or account.
An account can be set on a group. Careful: if an item belongs to a group with a set account, copying the account from the header is disabled once it's inserted into a document – the account from the group takes precedence.
You can also set pricing on a group and apply it to all items with the Apply to Price List button. It's the fastest way to make a blanket margin change.
You can reassign items retroactively via bulk changes, and set them up in bulk via import.
💡 Design your product groups so they serve pricing, accounting, and warehouse mapping for sets all at once. One well-designed structure will save you work in three places.
Creating items manually and via import
Create a new item using the New button; in the top right you can switch the form variant between full and simple. Always fill in the Code/Abbreviation (must be unique – it's used in imports, by the scanner, and for e-shop integration), Name, Inventory Type, the Stocked flag, unit of measure, price type and VAT rate, selling price, and EAN or PLU. You can attach a product image, and foreign-language names are entered in translations.
If you have your price list in Excel, use import (available from the Business plan). Technically only Code/Abbreviation, Name, and Inventory Type are required. A reasonable set of columns is code, name, unit of measure, stocked, VAT rate, price type, inventory type, and selling price; an unspecified rate defaults to 21%, and an unspecified price type defaults to "excl. VAT." Test the import on a single item first using the Test Import button, and simplify repeated imports with smart imports.
💡 Import is also useful for maintenance, not just for initial setup – for example, for a blanket update of selling prices or minimum stock levels. If the file doesn't include columns that affect stock levels, no stock movements will be created.
📝 A price including VAT can't be rounded. If you want round-number prices in your store, select a price type with VAT for the item and enter the price already rounded.
Barcodes, packaging, and attributes
Without EAN codes, neither the scanner, quick receiving, nor register sales work properly. The EAN is entered directly on the item; the barcode scanner is available from the Premium plan, and the web interface treats it as a keyboard, so there's no hardware to configure – just make sure it isn't disabled in company settings. You'll use it in receipt notes, issue notes, invoices, orders, and stocktaking. If you don't have EANs, turn on the Also search price list codes toggle. Label printing is handled by a thermal label printer.
⚠️ The scanner can be used to search for items in the price list only in the desktop application, and it can't be used at all in the document line item list – it only works when adding items to a document. EAN codes assigned to packaging can't currently be scanned during stocktaking (so they can only be used on documents).
Do you buy in cartons and sell by piece? ABRA Flexi cannot convert between units of measure – this is handled by packaging, i.e., a multiple of the base unit. It's set on the Packaging tab; an item can have a maximum of five packaging options, and the price is calculated as a multiple of the selling price (quantity discounts, however, work with the number of units, not packages). Each packaging option can have its own EAN, so the scanner recognizes the carton. The first packaging position is filled in automatically on a new document – if you want to sell primarily by piece, put "piece" in the first position.
Need to track color, size, or another parameter for an item? Use price list attributes. They're also available via the API (useful for e-shop variants), but by default they don't feed into anything else and don't appear in any outputs – getting them into a print report requires custom development. Tags are useful for quickly marking promotions and clearance sales; you may also be affected by EKO-KOM packaging record-keeping.
⚠️ An attribute does not solve the problem of product variants. If you have one product in multiple variants, each variant must have its own price list item and stock card. An attribute is only a supplementary piece of information.
Stock cards, opening balances, and valuation
A stock card is the intersection of an item and a warehouse – one item in three warehouses has three cards. A card is non-editable; its values arise exclusively from stock movements. It's created automatically once an item is flagged as stocked and has Define warehouse placement filled in.
Fields you monitor on the card:
Stock level in units / in CZK – current quantity and value.
Opening balance (units) – the opening balance for the period; it's filled in only after running the initialization of the next accounting period (during period closing). If you enter an additional movement into the previous year, run it again.
Average price (use only with the average price method) and Last price from the most recent receipt note.
Min. Stock (units) – the threshold for the Order to Minimum function.
Reserved (units), Requested (units), and Available Quantity – the balance reduced by reservations and by unsettled issue requests. This is the figure typically of interest to a salesperson or, say, an e-shop.
Stock Balance as of a Date will show you the stock level for any given day. If the card's value doesn't add up, run Recalculate Warehouses. If you need to trace a specific batch, that's what batches and expiration dates and serial numbers are for (from Business). However, ABRA Flexi will not automatically split an issue across multiple batches – if you're issuing from several batches, create multiple line items.
⚠️ For a large database, the warehouse recalculation can take from a few to several dozen hours. Run it outside of business hours, typically over a weekend.
⚠️ For an item with stock movements, batch and expiration tracking cannot be enabled or disabled retroactively. If it involves food, cosmetics, chemicals, pharmaceuticals, or electronics with serial numbers, decide on this before the first stock receipt. Otherwise you'll have to issue the stock out, change the setting, and receive it back in; an exception can be enabled via an advanced parameter – contact our support team.
Receiving opening stock into inventory
You can get inventory into ABRA Flexi three ways – via stock balance import (required columns: accounting period, price list, warehouse, balance in units and in CZK, from which the average price is calculated), via receipt notes (manual, but a fully controlled route, suitable when splitting into batches), or via stocktaking, when you don't know the exact balance. The import creates receipt notes dated the first day of the period, in "Not invoiceable" status, with offsetting account 395xxx; the accounting entry is resolved afterward using bulk changes. A comprehensive overview is given in How to Create a Warehouse and Fill Stock Levels.
⚠️ Stock balance import is intended strictly for opening balances. Never import a quantity onto a stock card that already has a non-zero balance. Handle ongoing updates with receipt and issue notes, not repeated imports.
Inventory valuation method
This is one of the most important decisions in the entire setup. The valuation method determines the value of every issue note – and thus your margin and the warehouse balance in accounting. It's set at the company level, one company = one method for all warehouses.
| Weighted average | FIFO |
Availability | Default, all plans | Premium plan and up only |
How it's calculated | New price = (stock × old price + receipt × acquisition price) ÷ (stock + receipt) | Issues at the prices of the oldest receipt notes; the price is provided by the FIFO receipt–issue link |
When to choose it | Small spread in purchase prices, typical wholesale | Significantly fluctuating prices, items with expiration dates, precise cost tracking per delivery |
Where you'll see the price | In the Average Price field on the card | Only in the issue note after adding the item |
The price on an issue note cannot be changed manually – ABRA Flexi fills it in according to the set method. On a receipt note, on the other hand, it can be adjusted. The choice of valuation method is completely unrelated to inventory accounting Method A and B; these are two independent decisions.
⚠️ Changing the method for an existing warehouse is not done by simply toggling the setting – it would lead to inconsistent valuation. The correct approach is to create a new warehouse with the desired method, sell off or transfer the goods, and limit the validity of the original warehouse to the end of the period. So decide before you start.
Pricing: how much you sell things for
This is where your margin gets decided. ABRA Flexi has several pricing tools that combine with each other – and that's usually the source of questions like "why did the price on my invoice change?" A hub article is available at Pricing.
Tool | What it's for | When it applies |
Calculates the selling price from the purchase price (margin, rebate) or as a discount off the selling price. The result is a fixed price in the price list. | Always the base. The recalculation must be triggered manually with a button. | |
A price for a group of customers or products, with a validity period and quantity tiers. Calculated only at the document level. | Wholesale and retail price lists, time-limited promotions. | |
A specific price for a specific customer, price list group, or currency. | Takes precedence over everything else – it always applies whenever it's set. | |
In the document header, on a line item, or as a standing discount for a business partner. | Applied last, as a correction to an already-calculated price. |
💡 If you sell in a foreign currency, you can also set up pricing exchange rates. This can convert the default selling price using a set exchange rate. However, any individual prices set in a foreign currency take precedence over the pricing exchange rate.
In wholesale, rules almost always tie back to a customer's price list group. If you need to send a customer a complete price list, that's what the so-called individual price list is for.
⚠️ An individual price overrides everything. If one is set for a customer, it always applies once the customer is added to a document – regardless of price levels or the standard price list. If a customer complains that a promotion isn't applying for them, check individual prices first.
ℹ️ If a discount is set both in the document header and on a line item, the header discount applies first, and the line-item discount is then calculated on the newly computed price. So it's not a sum of the two percentages. You can disable this propagation on a line item using the Copy Discount from Document toggle.
Selling price from margin and rebate
The most common way a trading company works. It's set on the Pricing tab of the item detail, which is not shown by default – add it via form settings. Advanced pricing is available from the Business plan, and minimum margin alerts from Premium. Quantity tiers support up to five levels.
Formulas Flexi uses:
Discount or rebate off the selling price:
PC − (PC / 100 × % slevy)Rebate on the purchase price:
NC / (100 − % rabatu) × 100Margin on the purchase price:
NC × (% marže + 100) / 100
⚠️ If the purchase price changes over time, the recalculation of selling prices doesn't happen automatically – you have to manually use the recalculation button. If you don't want to do this manually, you have two options: price levels, which are calculated at the document level, or automation via REST API.
Price levels and individual prices
A price level links a group of items with a group of customers, and you use it whenever you have multiple price tiers. It uses the same formulas but is calculated only at the document level, so you don't need to recalculate anything. It has a validity period – it's the closest thing Flexi has to promotional and seasonal pricing – and it supports quantity discounts. Note: a quantity discount replaces the original discount, it's not an additional 25% on top of the original 20%.
⚠️ The most common mistake: at least one criterion must be filled in from both sides – from the items side and from the companies side. The exception is a rule applied to all companies or to an entire product group; otherwise it won't apply and the customer will get the price list price.
Individual prices are the most commonly used tool of all in wholesale. Selling prices are entered on the Individual Prices tab, purchase prices on the Suppliers tab – both in the price list and in the directory. They can be set for a specific company, for a price list group, or for all companies (typically a fixed price in a foreign currency), can be limited by validity period and cost center, and can include quantity discounts. For a supplier, you can enter their product code, which you'll use when importing invoices in ISDOC format. You can upload them in bulk via selling price import and purchase price import.
📝 A discount from a price level is not shown in the standard print report. If you want it visible on the invoice, there's a free add-on for that – and similarly for issued quotes and received orders.
Purchase price versus cost price
This is a source of confusion worth explaining. The purchase price in the price list is a record-keeping value used to calculate margin-based pricing; you can have it overwritten upon receipt, or recalculate it in bulk using the Update Purchase Prices in Price List function (the source being either the average warehouse price or the last purchase price). The purchase price on a sales document line item, on the other hand, is the actual cost from the stock card – and this is what sales analysis uses when calculating margin.
💡 The Update Purchase Prices function has a safeguard: if some items would end up with a zero price and you preview them, the change won't be applied. So always preview what will be changed first.
Sets and bundles
Do you sell discounted sets, gift packages, or starter kits? That's what sets and bundles are for – a tool trading companies use more than any other segment, and one where misunderstandings about what a set actually is happen most often. This functionality is available from the Business license plan.
Three sentences that explain everything else:
A set doesn't have its own stock inventory. The inventory stays with the components; you never receive the set itself into stock.
Components are only issued from stock when the set is sold. Until then, they sit in the warehouse as regular goods and can be sold or issued individually as well.
The set's selling price is not calculated from the components. You have to enter it manually – and that's exactly what lets you price a set more attractively than the sum of its parts.
💡 Want set prices, whether selling or purchase, automatically recalculated in the price list? We have an add-on available that handles the automatic calculation and updates. Reach out to us at podporaflexi@abra.eu.
If you enter a purchase price for a set, it's only indicative; the actual costs are calculated from the issue note for the components.
⚠️ A set still must be recorded as stocked goods, even though it won't have its own inventory. Without the Stocked flag checked, Flexi won't let you add the set to a document.
Setting up a set step by step
A set is not a separate record type – it's created from a price list item.
Create a regular item in the price list that will act as the set (for example
SET-KAVA-01). Check Stocked and enter the set's selling price.Verify that all components already exist in the price list as separate items with a stock card.
Open the set item's detail and go to the Sets tab in the bottom bar. If it's not visible, add it via form settings.
Use the New button to add components, and fill in the quantity for each one. A single item can appear in a set multiple times.
If the components sit in a different warehouse than the set, set up warehouse mapping to specify which warehouse each component should be issued from.
You can create sets in bulk via Excel import. It has a peculiar behavior: sets can only be created from the perspective of a specific price list item, even when importing multiple sets at once – it doesn't matter which item you launch the import from. Required columns are Set, Price List, and Quantity; all referenced items must exist before the import. The import runs in independent transactions, so an error on one row won't cancel the whole file.
When selling, you add the set to an issued invoice as a single line item – the customer sees the set on the document, not its breakdown. Saving the invoice will create (if the invoice type is set to generate a warehouse document) an issue note for the individual components, which you can find via Link Information. Both receiving and issuing therefore always happen only at the component level.
💡 If you'd like the invoice to show the customer a broken-down set with its contents, reach out to us at podporaflexi@abra.eu. We'll be happy to build you a custom print report.
Things to watch out for with sets
The following list will save you the most support questions.
Always flag a set as stocked. It may seem misleading, but that's how it's supposed to be. Even though the set itself won't have any stock inventory, it must be set up as stocked.
Never track serial numbers on a set itself. These can potentially be tracked on its components instead. Unfortunately, batches and expiration dates cannot be tracked on set components (or rather, you can track them, but when selling a set you can't specify on the issue note which batch/expiration date should be issued for a component).
A set cannot be used in the Purchasing or Goods module – only its individual items are used there. So you can't receive a set into stock via a receipt note.
You cannot manually add a set to an issued order – individual items must be added instead. However, if you generate an issued order from a received order containing a set, Flexi will create it with the components ordered.
The component gets reserved, not the set as a whole. So you won't directly see the available quantity of the set.
In sales analysis, the set appears as a whole, and components appear only on stock cards – so the set's costs are not calculated from their stock prices. If you need such an output, contact us to create a custom query.
Copying a set only works in the desktop application.
If an item was previously a regular product and has a balance, you must first remove the set configuration in the price list before issuing out the stock.
💡 Need to see how many complete sets you can assemble from current stock? Standard Flexi doesn't calculate this – use the Set Stock Availability add-on. It's free for Premium plans, works both in the cloud and on a company server with a public IP address, and takes into account fulfilled reservations (not unsettled issue requests). You'll find the output under custom queries under the eye icon in the Goods agenda.
Set or bill of materials?
The most common question in this entire area. The difference is simple: a set doesn't manufacture anything, a bill of materials does.
| Set / bundle | Bill of materials |
Purpose | Existing goods are sold together as a single item. | A new product is created that didn't exist before. |
Stock inventory | The set has no inventory of its own; it stays with the components. | The product has its own inventory in the warehouse. |
When components are written off | Only when sold, i.e., when the issue note is created. | During manufacturing, i.e., when the product is received into the warehouse. Whether the product is later issued or not is unrelated. |
Price | The purchase price of a set is not automatically calculated from its components. That's only possible after activating the add-on. | The cost price is calculated from the materials consumed. |
Multi-level structure | Single-level – a set within a set doesn't work. | Multi-level, via semi-finished products. |
Typical example | Coffee maker + beans + mug as a discounted set. | Wood, fittings, and varnish become a chair. |
⚠️ There's only one deciding question: does selling it create something new that you can't take back apart? If yes, it's manufacturing, and a bill of materials belongs there. If you're just packaging finished goods together into one package, it's a set.
What if you also assemble or manufacture goods yourself?
Many trading companies eventually start assembling part of their product range themselves – repackaging, assembling, adding accessories. As soon as selling creates a new item with its own stock inventory, it stops being a set and becomes manufacturing.
A product's recipe is set up as a bill of materials on a price list item with the inventory type Product or Semi-finished product. The Bill of Materials tab is not shown by default.
Manufacturing doesn't have its own module – it runs on two warehouse document types. On the receipt type, the trigger is the movement type specification "Product receipt"; without it, materials won't be deducted.
Saving the receipt note receives the product into stock, the components are automatically issued via an issue note, and the cost price is calculated from the actual stock price of the materials.
An issued order with a dedicated type plays the role of a production order – there's no separate order record type.
Flexi does not include MRP or capacity planning and won't manufacture anything for which the materials aren't in stock.
ℹ️ The entire process, including warehouse mapping, semi-finished products, and price recalculation, is described in a separate guide, We Manufacture – How to Set Up ABRA Flexi?. If you only occasionally assemble something, start there with the bill of materials section; you can skip the rest.
Purchasing goods
The purchasing side has three jobs: order on time, receive stock correctly, and don't forget to include shipping and customs duties in the cost of the goods. You can shorten the document chain – the minimum is an issued order and a receipt note.
Issued inquiry – manually, or from a customer's received inquiry.
Received quote from a supplier.
Issued order – manually from a quote, from a received order, or, for example, via the Order to Minimum function. Types are configured separately; available from the Business plan.
Receipt note – by fulfilling the order via More Functions, or manually.
Received invoice – created manually, from a receipt note, or in bulk from multiple receipt notes.
Settling the liability by matching a bank statement.
💡 If you need to order based on your own specific criteria, we can build you a custom query that calculates the individual quantity to order. From that, you can then create an issued order "with one click".
By default, a warehouse document is created from an invoice automatically based on the document type setting, so you don't need to do both. On a received invoice, you'll appreciate creating an invoice from a PDF and signature-based approval for a payment order – for a company with multiple buyers, this replaces an approval workflow (Flexi doesn't have one built in; you need an external application, such as Wflow).
If you receive invoices in ISDOC format, you can import them including price list items and directly receive the goods into stock from them. Do you supply retail chains? ABRA Flexi has EDI support; start with the EDI tutorial.
⚠️ Enable duplicate check for received invoices. Recording a supplier invoice twice is the most common and most expensive mistake on the purchasing side – it receives the goods into stock twice and throws off the warehouse value.
📝 The warehouse balance is always affected as of the actual date the receipt note was created, not necessarily the issue date. Keep this in mind for backdated documents.
Stock monitoring and reordering
To keep goods from running out, set the minimum stock level on the stock card in the Min. Stock (units) field – manually, via import, or already when creating the cards. The Order to Minimum function is then available among the services on an issued order under More Functions, and it always orders the difference between the current stock level and the minimum: 0 in stock, 1 already ordered, minimum 5 → it will suggest 4 units. It's available from the Business plan. If you need to order according to your own rule, an order can also be generated from a custom query.
⚠️ The function has two limitations: it doesn't run on its own (you have to trigger it manually) and it doesn't take reservations into account. If you have stock above the minimum but it's all reserved by orders, Order to Minimum won't suggest ordering it.
💡 Stock monitoring can be automated via the REST API. For a wholesaler, a daily report of items below minimum sent to the buyer by email is ideal – we'd be happy to build one for you. Reach out to us at podporaflexi@abra.eu.
Shipping, customs, and other acquisition costs
The most underestimated topic among trading companies. If you pay CZK 20,000 for a delivery plus CZK 10,000 for shipping and customs, but only receive CZK 20,000 worth into stock, then every item's cost price – and thus your margin – is skewed. This is handled by allocating incidental costs to inventory, in two ways: via the Incidental Costs field on a receipt note line item, or via the Allocate Incidental Costs to Inventory service in the footer of a displayed receipt note (which spreads the cost across all line items).
By price – proportionally. A CZK 20,000 delivery, CZK 10,000 in costs → each unit price increases by 50%. Suitable for goods with varying values.
By quantity – evenly. 20 units, CZK 10,000 in costs → +CZK 500 per unit. Suitable when costs depend on volume or weight.
Both methods also flow into the accounting entry for the warehouse document. If you want to increase the value of already-received stock without adjusting the old receipt notes, the procedure is described in Correcting an Incorrect Stock Card Balance. However, this method should be used sparingly and is more of a "quick" fix for the warehouse balance.
ℹ️ Shipping that you, conversely, rebill to the customer should be handled as a separate price list item with the inventory type service – see your own shipping on the invoice.
International trade
Do you buy from or supply abroad? ABRA Flexi will let you enter the document, but it won't decide for you – consult the VAT regime with your accountant or tax advisor.
Purchases from a VAT payer in the EU, and supplies to a VAT payer in the EU, are handled via reverse charge – on both received and issued invoices. Set up dedicated document types for this.
Domestic reverse charge (construction work, metals, mobile phones) is handled via the domestic reverse charge mechanism.
Imports from third countries are entered based on a Single Administrative Document (SAD); customs duty enters the cost as an incidental acquisition cost. Exports are exempt.
Selling to end customers in the EU above the threshold falls under the One Stop Shop regime, which needs to be set up in advance, including the VAT rates for that country.
If you exceed the threshold, you become obligated to report Intrastat (only available in the Premium plan and in the desktop application) – for items, you must fill in the customs tariff code and weight.
If you sell to foreigners in a physical store, you may be affected by VAT refunds on goods sold to foreigners.
⚠️ An incorrectly chosen VAT regime only shows up in the VAT return or the EC Sales List – meaning too late. Don't experiment: discuss the first document of every new type with your accountant and check how it was reflected in the VAT return lines.
Selling goods
There are several approaches depending on how you sell – wholesale goes through orders and invoices, retail through the point-of-sale register, and e-shop through integration. The full chain is described in the sales cycle guide; most wholesalers start right from a received order.
Received inquiry from a customer.
Issued quote – from a received inquiry, with the document type carried over based on the "Create quote of type" field.
Received order – from a quote via More Functions, manually, via import, or from an e-shop via the API.
Issue note – by fulfilling the order, or automatically alongside an invoice.
Issued invoice – from an order (partial fulfillment possible too), from an issue note, or in bulk from multiple orders.
Payment by matching a bank statement or via a cash document.
Fulfilling a received order
From a received order, you can create an invoice, register sale, issue note, or advance payment; you choose the document type and the fulfilled quantity, so partial fulfillment is possible. Fulfilling the order flips its status to Done.
A received order is a non-accounting document – you can't match a payment to it. If you need payment in advance, issue an advance invoice.
Recurring deliveries can be invoiced from customer contracts (in which case you no longer need a received order).
Payment methods have three visibility toggles – Offer on Invoices, on Cash Register, and on POS. If a payment method isn't being offered, one of these is usually turned off.
Reservations
An order comes in and you want to block the goods in the warehouse. That's what reservations do – the mode is set in company settings, in the Sales subsection.
Mode | Behavior | For whom |
Manual only | A reservation is only created when you choose Services → Reserve on the order. | Default setting. For when orders aren't binding. |
Automatic upon order creation | Reserves only the portion available in stock; once the remainder is received, the reservation is not topped up. | Companies that only sell what they have in stock. |
Automatic, including on receipt | The remainder is reserved when the goods are received. | Wholesalers who reorder. |
Automatic upon order creation + reservation into negative | Always reserves the full ordered quantity; available quantity goes negative and the reservation is satisfied once received. | E-shops and made-to-order sales. The most commonly used combination. |
ℹ️ There's no clear-cut answer as to which mode to use without knowing your company's processes. However, the most commonly used one is automatic creation upon order creation with reservation into negative enabled – the reservation is then always created, regardless of availability.
If you need to create an issue note for goods that aren't in stock, you can enable generation of issue requests. Instead of a valued issue note, a zero-value request is created, which you must settle after receiving the goods using the Update Issue Requests function – it doesn't happen on its own, and the Requested (units) field on the card will stay positive. Note that reservations take precedence over requests.
⚠️ Don't combine reservations with issue requests. Reservations always take precedence over requests and can block their eventual settlement, making it hard to arrive at the "correct result" afterward. If you still feel you need to combine them, consult this approach with our consultants – schedule an individual consultation.
Delivery notes, printing, and sending documents
A delivery note is not a separate document type – it's a print report generated from an issue note or an issued invoice; you print it from the printer icon. An overview of options is described in Print Reports, and custom reports are managed in Custom Reports.
Need the total weight on the delivery note? There are free add-ons for the Business and Premium plans – for issued invoices and for receipt and issue notes. This requires the weight to be filled in on the price list item.
If you invoice dozens of deliveries a month, your customer will appreciate the delivery note number shown against individual invoice line items.
Documents can be sent by email directly from the application – set up an SMTP server and optionally prepare email templates (they support HTML, so you can fully customize the email to your brand).
Save recurring texts (delivery terms, a note about ownership of goods) as predefined texts; documents can have attachments (e.g., a signed delivery note).
💡 If you issue goods continuously but invoice once a month, bulk invoicing of issue notes is essential for you. On the invoice, fill in the customer, then use the From Receipt/Issue Note button to select all uninvoiced issue notes and insert them all at once.
Advance payments, returns, credit notes, and complaints
For new or higher-risk customers, it's common to sell against an advance payment. Prepare document types of the kind Advance – not a tax document and Tax document for advance, issue the advance invoice, once paid create the tax document for the advance payment, and deduct the advance on the final invoice. Deducting the advance is the most common source of small rounding discrepancies – on your first such documents, check that the final invoice after the deduction actually comes out to zero.
If a customer returns goods:
Create a credit note from the original invoice, or manually. This requires a document type of the kind credit note – corrective tax document.
The goods are returned to stock via a receipt note, which by default is created automatically. Because you're creating the credit note from the original invoice whose linked issue note issued the goods from stock, they are received back into stock at the same price.
Settle the credit note by bank transfer or from the cash register. If you're returning goods at a different price, the procedure is described in Returning Goods at a Different Price.
Complaints/returns: ABRA Flexi doesn't have a module specifically for tracking complaints. The recommended approach is to create a custom received order type with its own document series and, optionally, a returns warehouse; enter the complaint as a received order of this type and close it with an issue note against that order. Create the receipt to the returns warehouse manually – from a received order, only an issue note can be generated as a warehouse document. The guide is written for the desktop application, but the same principle applies to the web interface. Item warranty periods are handled by Product Warranty.
Incorrect document: a document that affected the warehouse or VAT can't always simply be deleted – the procedure is described in Cancelling a Document. If you're unable to delete an incorrectly created receipt note or received invoice, the reason is usually a linked document (typically an issue note that issued goods received via that receipt note).
📝 Keep an eye on late-paying customers using overdue receivables, reminders, and possibly penalty invoices.
In-store sales: the point-of-sale register
If you have a physical store, you won't be issuing an invoice to a customer at the counter. That's what the point-of-sale register is for – a dedicated agenda optimized for speed and scanner use. A register sale is a simplified document that both issues the goods from stock and records the payment.
Items can be entered manually or with a scanner. The form is primarily designed for scanner use – if the cursor focus changes, it warns that the scanner is writing elsewhere.
A customer can be selected from the directory, or just typed in by name. A discount can be applied to the entire document.
The Payment button offers cash (you enter the amount received and Flexi calculates the change) and card. Payment methods can be freely combined if a customer pays part in cash and part by card.
Saving the payment saves the entire register sale and immediately opens a new, empty register sale – the register is ready for the next customer.
A register sale can be converted into an invoice – used, for example, for payments over CZK 10,000, or when a customer needs a document made out to their company.
The issue note is generated automatically – by default, yes; this is controlled by the specific register's settings.
Register setup and register sale accounting
Before issuing your first register sale, you need to determine which register and what settings you want to use. This is what records in the Point-of-Sale Registers agenda are for – if you've been using Flexi for a while, these are effectively types of register sales. Create one record for each physical register, set the warehouse, document series, and accounting entry template, define issue note generation, and in the Accounting section check Allow Refunds if you want to accept returns. Also check that the Offer on POS toggle is enabled for your payment methods.
Register sales don't get posted to accounting on their own – the Post Register Sales service at the bottom of the agenda handles this. You enter a date (governed by the register sale's issue date), the register (if there are multiple point-of-sale registers, the posting has to be repeated for each one separately), the cash register and cash document type for cash payments, and the receivable type for card revenue. The model is simple: cash goes into the cash book, card payments as an other receivable, which you then match against the incoming payment from your card processor.
💡 Make posting register sales part of your daily routine at the end of a shift, not just at the end of the month. That way, a discrepancy in the till gets caught after one day, not after thirty.
Returning goods is done by entering a register sale with a negative quantity – this generates a negative issue note. The procedure and advanced parameters are described in Returning Goods at the Point-of-Sale Register. Do you sell gift vouchers? The procedure is in the article Vouchers and Gift Cards – it's handled with a price list item and a payment method, not a separate agenda.
⚠️ Goods returned at the register are refunded at the current stock price, not the price they were sold for. And on a credit note you can't choose the payment method – the application assumes a cash refund.
⚠️ The web interface version of the point-of-sale register currently does not support connecting to POS hardware or a payment terminal. Only the desktop application supports this so far. The barcode scanner works in the web interface (Premium, keyboard mode), but the ELCOM fiscal cash register and the payment terminal both require desktop. For a full-featured POS system, there are partner solutions such as FlexiPOS or KASAFIK.
Selling via e-shop
If you sell online alongside wholesale, the e-shop is just another sales channel over the same warehouse and same price list – the setup isn't duplicated, only the integration is added. A comprehensive guide is in the article I Have an E-shop – How to Set Up ABRA Flexi?, and an overview of connection options is in Connecting Any E-shop.
You can build the integration yourself via REST API, or use one of the ready-made bridges from our partners.
The key decision is where product management will take place – on the e-shop, or in Flexi. If you have multiple sales channels, it's usually better to have Flexi as the single source of truth.
Which items should be transferred is determined in the price list using the Export to E-shop field; the integration must take it into account, though.
Stock levels are transferred in batches – see determining stock levels for an e-shop or stock level from the price list via API.
ℹ️ For an e-shop, choosing the right reservation mode is also essential. Without automatic reservation (ideally with the option to go negative enabled), the same item could get sold twice.
Projects, cost centers, and activities: what's actually making you money
Revenue alone doesn't tell you anything. To know which store or which delivery is profitable, you need to break down your documents. Flexi has three independent dimensions – don't mix them together, each answers a different question.
Dimension | What question it answers | Typical example in a trading business |
How much did we make on this specific business case? | A large one-off delivery, a store fit-out project. | |
Which part of the company is profitable? | Brno store, Prague store, wholesale division, e-shop. | |
Which funded or tracked activity does this belong to? | Used mainly by non-profits and public-funded organizations; usually not needed for a trading company. |
💡 Recommendation for getting started: begin with cost centers only if you have multiple locations, and add projects only once you're actually dealing with individual large business cases. Filling in three dimensions inconsistently is worse than consistently filling in just one.
Cost centers must be enabled: top bar → three dots → Settings → Basic Settings → Use Cost Centers. A default cost center called Headquarters always exists.
Warehouse documents inherit the cost center from the warehouse, unless set otherwise on the warehouse document type.
Both cost center and activity can also be filled in at the line-item level of a document, and reports pull values from the line items – so it's important that they're correctly propagated from the header.
A project can be created automatically together with a received order (enabled in company settings) and is carried over into the invoice and the generated issue note. You can upload them in bulk via import.
The profitability of a single business case is shown by project accounting analysis. The project must include both sides – not just the issued invoice, but also the received invoice and receipt note for the purchased goods. Otherwise the analysis will show revenue with no cost, producing a nonsensically high profit.
⚠️ Project accounting analysis only shows data if documents are posted to cost and revenue accounts. Unposted or incorrectly posted documents won't appear in the analysis, making it look like the function isn't working. The procedure is described in Posting a Project So It's Visible in Project Accounting Analysis.
Warehouse accounting
This is where it's decided how the warehouse gets reflected in your financial results. The choices in this section belong to your accountant – Flexi respects them but won't decide on her behalf. Both methods lead to the same result at year-end; they differ in when the cost arises.
| Method A | Method B |
Setting | Company Settings → Goods → "Post warehouse to accounting" checked | Same field unchecked |
When the cost arises | Purchase goes to a balance sheet account (132); it becomes a cost only upon issue. | Purchase goes straight to consumption accounts 501 and 504. |
Warehouse document types | Must be accounting-relevant, with an accounting entry template. | Must be non-accounting; they cannot be posted. |
At year-end | Ongoing check that the warehouse value matches the account. | Review of the accounting warehouse balance and posting from costs to inventory (for example 132/504, 112/501) via an internal document. |
For whom | Default and most common choice, gives a real-time picture on an ongoing basis. | Smaller companies where ongoing cost tracking doesn't matter. |
For the entire company, only one method applies to all warehouses – for details see Method A and Method B. Under Method A, every warehouse document is posted according to the template on its document type; the account can also be set on the product group, which takes precedence over the account from the header. A comprehensive overview is given in Accounting Within the Warehouse, and regularly check that the warehouse value matches the warehouse account.
⚠️ The most common error message is "The Accounting parameter of the document type does not match the warehouse setting." It means you have Method A active but a non-accounting warehouse document type, or vice versa. Bring them into alignment and the error will disappear.
Stocktaking
Stocktaking is the only way to reconcile the accounting balance with reality. For a trading company, it's done at least once a year; retailers often do it store-by-store on a rolling basis.
In the Stocktaking agenda, create a new one using the New button; fill in the type, the start date (system balances are loaded as of this date), and the warehouse.
Use the Insert Items button to populate items – the filter is set to the warehouse from the header, and a dropdown option lets you include items with zero quantity too. Items can also be added via scanner or import.
Enter the actual counted quantity in the Actual Stock field. If someone created a movement in the meantime, use Update Balances.
Use the Generate Documents button to create discrepancy documents – at most two are created, a receipt note for surpluses and an issue note for shortages.
Have a dedicated warehouse document type for stocktaking discrepancies – this way, shortages and surpluses are immediately traceable in accounting.
The system balance takes into account issue requests for that period. However, requests from previous periods cannot be settled through stocktaking – settle those separately.
For batch-tracked items, the item will appear on as many lines as there are batch/expiration date combinations. If the result doesn't add up, review Discrepancy in Stocktaking.
⚠️ Do stocktaking when there's no activity in the warehouse. Documents created during the count change the system balance, and the discrepancies then won't match reality. Always use the "Update Balances" button before generating discrepancies.
Closing the period and regular reports
At the end of an accounting period, you need to lock the data so no one can change it retroactively.
Verify that the warehouse value matches the warehouse account, and perform a stocktake.
Check the payment status as of a date, run an account balance recalculation, and review the trial balance.
Close the period and lock it against further changes.
At the turn of the year, run the next accounting period initialization so the opening balances on stock cards get populated.
The full year-end procedure is summarized in Year-End Closing in ABRA Flexi; don't forget to make company backups.
Periods can also be locked on a monthly basis, e.g., after filing a VAT return. An error discovered after filing VAT is handled via a supplementary VAT control statement.
⚠️ Don't forget to initialize the next accounting period. Without it, the Opening Balance (units) field on stock cards will remain empty. If you later enter a document into the previous year, you'll need to run the initialization again.
⚠️ Flexi will let you enter the document, but it won't decide for you which VAT regime is correct. For international trade, consignment sales, and VAT-exempt supplies, always consult the process with your accountant or tax advisor.
Assets and payroll
Two record types a trading company needs but which are unrelated to the warehouse: assets (shelving, a forklift, store fixtures, a delivery van – a depreciated asset card is created with the acquisition price, depreciation group, and date of acquisition, and Flexi calculates the depreciation itself) and payroll, for which you should start with the guide How to Get Started with Payroll.
⚠️ Both of these require the desktop application. There is no payroll agenda in the web interface at all. You can view assets on the web, but editing isn't yet available – so create asset cards and depreciation entries in the desktop application, even if you otherwise work exclusively on the web.
Evaluation and reporting
Finally, the most interesting part: how much you're making, and on what. The key tool is sales analysis, which can calculate margin.
Six predefined configurations – highest revenue or profit by customer, customer group, price list group, and product, plus "What did I sell to a selected customer?" and "Who did I sell a selected product to?"
Key columns: Total excl. VAT (revenue), Costs, Discount, Gross Margin (= revenue − costs), and Profit [%].
Costs for stocked items are taken from the stock price (average or FIFO); for non-stocked items, from the purchase price in the price list – so keep it up to date.
Purchase analysis has a similar structure but doesn't calculate margin – it shows the selling price of purchased items alongside the purchase price.
Other outputs you'll appreciate:
Stock Balance as of a Date – inventory value as of month-end, a source document for both accounting and clearance-sale decisions.
Profit and Loss Statement, Balance Sheet, Cash Flow Statement, and Statement of Costs and Revenues – a hub is available in Accounting Reports.
Overdue Receivables – the most-watched report in wholesale, by far.
Displaying custom outputs in a chart for visualizing trends.
💡 Missing the report that trading companies need most often – margin trends over time by product group, inventory turnover, dead stock with no movement in X months, or margin by salesperson? Standard outputs don't support this; it's handled with custom queries. We'd be happy to build such a report for you – write to podporaflexi@abra.eu or book a consultation.
Automation and integrations
Once document volume grows, manual entry can no longer keep up. ABRA Flexi has a REST API that lets you connect practically anything – an e-shop, a carrier (Balíkobot, Touchstore), a WMS and fulfillment provider, a POS system, or a B2B portal for your customers.
A non-technical introduction is in the article API Communication Made Simple for Non-IT Users, and a technical one in the Getting Started with the API series and the API Ninja training.
If you don't want to keep polling for changes, use webhooks or the Changes API – Flexi will notify you of changes on its own.
API access is licensed separately – verify this before you start planning your integration.
You'll find ready-made add-ons (most of them free) in the add-on overview, and the activation procedure in Using Add-ons.
Routine bulk data changes can be handled without the API using bulk changes.
📝 ABRA Flexi doesn't have a mobile app or a built-in task scheduler. However, the web application can be opened in a mobile browser and used for simpler tasks.
FAQ
The questions trading companies ask us most often.
What's the difference between a set and a bill of materials?
A set is a sales tool – you sell existing goods under one code, components are only issued upon sale, and the set has no inventory of its own. A bill of materials is a manufacturing tool – it creates a new item with its own inventory, and materials are written off during manufacturing. A detailed comparison is in the table above.
How many complete sets do I have in stock?
Standard Flexi doesn't calculate this, because a set has no inventory of its own. Use the Set Stock Availability add-on – it's free for Premium plans and also takes fulfilled reservations into account.
Why did the price on my invoice change even though the price list shows something different?
Most often the customer has an individual price set, which takes precedence over everything else. The second possibility is a price level tied to their price list group, and the third is a standing discount in the directory. Check them in this order.
Will the selling price recalculate automatically when the purchase price goes up?
No. Pricing in the price list creates a fixed price, and the recalculation must be triggered manually with a button. If you want prices calculated in real time, use price levels (calculated only at the document level), or automate the recalculation via the API.
Can I set up batches or serial numbers later on?
For an item that already has stock movements, as of version 2026.3.0 it can no longer be enabled or disabled retroactively. You would have to issue out the stock, change the setting, and receive it back in, or ask our support team for an exception. So decide on this before the first receipt into stock.
Can I change the inventory valuation method?
Not by simply toggling it for an existing warehouse – that would lead to inconsistent valuation. The correct approach is to create a new warehouse with the desired method, sell off or transfer the goods, and limit the validity of the original warehouse. FIFO is also only available from the Premium plan.
How do I issue a delivery note?
A delivery note isn't a separate document, but a print report generated from an issue note or an issued invoice – you'll find it under the printer icon. If you need total weight on it, there are free add-ons for the Business and Premium plans.
How do I track a complaint/return?
Flexi doesn't have a dedicated complaints module. The recommended approach is a custom received order type with its own document series and, optionally, a dedicated returns warehouse. You have to create the receipt to the returns warehouse manually – only an issue note can be generated from a received order.
Can I issue goods that I don't have in stock?
Yes, if you enable generation of issue requests in company settings. Instead of a valued issue note, a zero-value request is created, which you settle after receiving the goods using the Update Issue Requests warehouse function – it doesn't resolve itself automatically.
Can I use POS hardware with the web point-of-sale register?
Not yet. The web version of the point-of-sale register doesn't support connecting to POS hardware or a payment terminal – only the desktop application can do that. The barcode scanner, however, works in the web interface in keyboard mode, without any hardware setup.
Where can I see my margin?
In sales analysis, in the Gross Margin and Profit [%] columns. Costs for stocked items come from the stock price; for non-stocked items, from the purchase price in the price list. Margin trends over time, turnover, and dead stock aren't supported by standard outputs – those are handled with a custom query.
I buy in pallets and sell by piece. How do I handle it?
Flexi cannot convert between units of measure. The solution is packaging – you set up to five packaging options on an item as multiples of the base unit, and each can have its own EAN. The packaging price is calculated as a multiple of the selling price.
Will Flexi block a sale to a customer who hasn't paid?
Yes, you can set a ban on further sales to a customer once a certain value of overdue invoices remains unpaid. You'll find this setting in the directory. Handle reminders for unpaid documents with reminders.
The goods won't go into stock, and the stock card doesn't exist. Why?
The price list item must be flagged as stocked and must have the Define warehouse placement field filled in on the Details tab. Without this, the card won't be created. If a warehouse has the Automatic Warehouse flag enabled, a card is created automatically for every new item.
💡 Not sure about your setup? Initial setup of the warehouse, pricing, and inventory accounting is exactly the area where an hour-long consultation is worth more than a week of searching. Write to podporaflexi@abra.eu, reach out via the in-app chat, or book an individual consultation. We're also happy to help you import data from your current system.



















