Own product

BS Omni ERP

Own product — omnichannel ERP for wholesale and retail

One system for the in-store till, orders from online stores, marketplaces, B2B and incoming mail, the warehouse, suppliers, couriers, invoices and price lists. Every hour it checks for discrepancies between the warehouse and the stores.

The challenge

A merchant who sells at the same time in a physical shop, in several online stores, on marketplaces such as eMAG and eBay, and wholesale to businesses. Orders also arrive by email. Every channel has its own stock and its own screen, while there is only one warehouse.

When every channel works separately, the same unit gets sold twice, nobody approves till discounts, and discrepancies between warehouse and stores only come to light at stock-take. The merchant needed one system where the channel is just the source of the order, and the goods, the customer and the document are shared.

What we built

BS Omni ERP gathers every order into one buffer: from the till, Shopify, WooCommerce, eMAG, eBay, B2B and incoming emails. From the buffer an order gets a waybill and an invoice, and channel stock is set by the buffer. Mailboxes can create orders on their own, including for dropshipping.

The in-store till works with a scanner. A discount above the limit goes to an administrator for approval. Returns and fast scanner picking are in the same place. The customer card holds the customer's price list, payment term and responsible sales rep, and the supplier card holds the delivery lead time.

Every hour the system compares the buffer, the warehouse and the stores and shows any discrepancy. Stock-takes are reconciled against the till's file. Reports, analytics and margins per product and partner are calculated from the same data. P.A.I., a personal AI assistant, records tasks from team chat conversations, and the administrator has a daily dashboard of what is waiting for them.

  • POS till with scanner, returns and approval of above-limit discounts
  • One buffer for orders from every channel, including incoming mail
  • Waybill and invoice from the buffer; order edits and cancellations
  • Customer card with price list, payment term and sales rep
  • Supplier requests with receiving reconciled against the buffer
  • Product card with text for each store; writing and translating descriptions
  • Retail and wholesale price lists, with and without VAT, plus an XML feed for a customer
  • Hourly checks between buffer, warehouse and stores, and stock-take reconciliation
  • Invoices, credit and debit notes, pro formas, CMR
  • The P.A.I. assistant, team chat, tasks and a daily dashboard

What changed

Goods, customer and document are one record, wherever the order came from. Discrepancies show up within the hour, without waiting for a stock-take.

Decisions involving money (a discount, a credit, a cancellation) go through a person with the right permissions and leave a trail. The system is ours and develops with the needs of the business, with no per-user licences.

Modules in this project (45)

Product card

Every product has one card in our own database: names, per-store copy, prices, barcode, weights and dimensions, links to every channel. Search works in Cyrillic and by code. An edit is saved once and reaches every store without you opening each store's admin separately.

Runs in: KoreanCare, Easy App, BS Omni ERP, LedWhite

Stock sync between stores

Stock comes from the warehouse, and the system writes it to the Shopify and WooCommerce stores. It detects new, removed and mismatched items and shows them on screen instead of quietly fixing them. A sale in one store lowers the available stock in the others.

Runs in: KoreanCare, Easy App, BS Omni ERP

Sales channels

Each store and marketplace is a channel with its own connection, currency and rules for products, stock and orders. A channel is added from settings, without new code. Every order and every stock movement carries its channel, so reports never mix stores.

Runs in: KoreanCare, Easy App, BS Omni ERP

Order cancellation

Cancellation goes through the system and cleans up everything linked to it: waybills, reserved stock and lines in supplier orders. An order cancelled directly in the store shows up in work sessions and is removed with one button. No stock stays locked because of a cancelled order.

Runs in: KoreanCare, Easy App, BS Omni ERP

Several stores in one system

Several stores and markets run from one system on the same logic, with the store as a setting. Every order, shipment, stock movement and stock level carries its store, and every report is filtered by it. Currency, VAT and courier are set in the store settings, with no code changes.

Runs in: KoreanCare, Easy App, BS Omni ERP

Integration with any system that has an API

We connect to any system that has an API (REST, GraphQL, SOAP, webhooks, files over FTP/SFTP or XML/CSV feeds): accounting software, banks, couriers, marketplaces, suppliers, CRMs and warehouse systems. Every request carries the external identifier, so a repeated event never creates a second movement. When the other system refuses something, we log the refusal with its reason.

Runs in: KoreanCare, Easy App, BS Omni ERP, LedWhite

On hand and reserved stock

Every item has three figures: on hand, reserved and available to sell. Reservations follow open orders from every channel, and stock is written off on fulfilment. Available stock comes from one formula and reads the same everywhere.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App, BS Omni ERP

Stock count

Scan the bin, scan the items one by one, enter what was actually counted, and save. Differences are shown before saving and go into the ledger with a reason. For a shop with a till, the count is also reconciled with the till's file.

Runs in: KoreanCare, Ivana Agro, KB Agro, BS Omni ERP

Hourly mismatch checks

Every hour the system compares orders, warehouse and online stores. The result is written as a sentence: which item, where it differs and by how much. Stock reductions with no order behind them show up here too.

Runs in: Easy App, BS Omni ERP

Supplier purchase orders

What the orders are short of is gathered into a purchase order per supplier, with quantities you can adjust by hand. The order goes out by email or as a file, and anything already ordered is not ordered twice. On receiving, deliveries are checked against the order line by line.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App, BS Omni ERP

Supplier card

Each supplier has a card with contacts, price list and lead time. It is marked as a daily supplier or an external one with a longer lead time. Purchase orders and forecasts use this data without it being entered again.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App, BS Omni ERP

eMAG, BOX NOW, Sameday

Shipments to easybox and BOX NOW lockers and with Sameday and eMAG couriers are created from the order. The locker is chosen on the order, with nothing retyped in the courier's portal. The tracking number comes back to the order and is tracked like any other.

Runs in: BS Omni ERP

Royal Mail

The system issues labels for UK shipments. The tracking number is saved on the order and the parcel is tracked. It sits in the same list as the parcels of every other courier.

Runs in: BS Omni ERP

Manual tracking numbers

For postal services and couriers with no connection, the tracking number is typed into the order by hand. From then on the parcel is visible and tracked like the rest. You can also choose your own transport, with a price entered by hand.

Runs in: KoreanCare, Easy App, BS Omni ERP

Freight requests

For pallet and cargo shipments you send a request to the carrier from the system. The CMR is prepared and printed there too, next to the request. All documents for a shipment live in one place.

Runs in: Easy App, BS Omni ERP

COD reconciliation

The system reads courier COD statements and invoices from email, or you can upload them as files. It matches lines to shipments by waybill number and recognises columns by their content, wherever they sit. You see what has been paid out, what is missing and where the courier's fee differs from the expected one.

Runs in: KoreanCare, Easy App, BS Omni ERP

Invoices, notes, proformas

Invoices, credit and debit notes, proformas, CMR and transport orders are all issued from one screen. A badge in the menu shows how many orders are still waiting for an invoice. On wholesale sales the system applies 0% and the legal basis on its own: intra-community supply when the VIES number is valid, or export outside the EU. In a service business, closed work orders are invoiced from here without retyping.

Runs in: Easy App, BS Omni ERP, Ivana Agro, KB Agro

Cash held by couriers

Shows, per courier, how much cash on delivery has been collected but not yet paid out. The system reads payout statements from email and matches them to the bank transfers. You see parcels without a statement, late payouts and differences in amounts. A delivered cash-on-delivery order is marked as paid.

Runs in: KoreanCare, BS Omni ERP

Margins

Margin is calculated from the cost price and the actual selling price per product, order and partner. You see what makes money and what only makes turnover.

Runs in: Easy App, BS Omni ERP, LedWhite

Sales and money reports

Reports on sales, money, stock movements and stock levels, with Excel export. The system compares what was ordered from a supplier with what arrived, line by line. Every report states what is included in the figure and what is not.

Runs in: KoreanCare, Easy App, BS Omni ERP

XML feed per client

Any price list can be given to a business client as an XML address protected by a key. The client pulls it from their own system without logging in to ours. When a price changes in the list, the feed is already up to date.

Runs in: Easy App, BS Omni ERP

Translations

A product, page or article is translated into all of the store's languages with one button, or in bulk overnight. The translation adapts the text to the market, and chosen fields such as ingredients stay untranslated. The system also finds stale translations, where the original changed after it was translated.

Runs in: KoreanCare, BS Omni ERP

Product naming

The title is assembled from one formula in every language: product type, brand, original Latin name and size. The Latin name stays exactly as the manufacturer writes it, because that is how people search for it. Where channels need a different name, the product carries two names.

Runs in: KoreanCare, BS Omni ERP

Personal AI assistant

P.A.I. follows the team chat and records the tasks agreed there. Nobody has to copy them into a separate list. The tasks stay in front of the team until someone closes them.

Runs in: BS Omni ERP

AI product copy

The system writes each description to a fixed template with the same sections for every product, then adapts it for each store and language. The text is built from the product's own data. A person reviews it and saves it.

Runs in: KoreanCare, BS Omni ERP, Easy App, LedWhite, UltraFeeds

Daily dashboard

This is the first screen in the morning: today's orders, overdue tasks and the things waiting for a decision. The manager sees where to start without going through the menu. The dashboard is shown only to people allowed to see it.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App, BS Omni ERP

Business analytics

Turnover, margin, returns, stock turnover and markets, calculated from the orders in the system with no separate spreadsheet. You pick the period and market on screen. Reports and stock work from the same records, so the numbers do not drift apart.

Runs in: KoreanCare, Easy App, BS Omni ERP

Customer file

Everything about a customer is in one place: contacts, orders, tasks and conversations. Wholesale customers also have their own price list, payment terms and an account manager. Search works by name, company ID, city and phone, and the system stops a second record with the same company ID at entry. A sales rep sees their own customers, and the manager sees all of them.

Runs in: KoreanCare, Ivana Agro, KB Agro, Easy App, BS Omni ERP, MyCRM

Approvals

Actions that need a human decision wait in one list: payments, till discounts above the limit, actions proposed by an agent. The person in charge presses "Approve" or "Reject" and the action goes ahead or stops. Every decision is recorded with who made it and when.

Runs in: KoreanCare, BS Omni ERP

Team chat

An internal chat for the whole team inside the system, with history, photos and attachments. New messages reach colleagues as notifications, including on their phones. Work conversations do not scatter across personal apps.

Runs in: Ivana Agro, KB Agro, Easy App, BS Omni ERP

Team tasks

Each task has an owner and a due date and is tracked until it is done. If you do not pick a date, the system sets a default one. In systems with a group chat, a task is created straight from the conversation without retyping. Everyone sees their own tasks, and the manager sees all of them and which are overdue.

Runs in: Easy App, BS Omni ERP

Mail

Mail lives inside the system, full screen, with several mailboxes, replies and attachments. Messages are read directly from the mail server and nothing is copied. The team handles mail without switching to another program.

Runs in: KoreanCare, Easy App, BS Omni ERP

Shared files

Shared storage for the team's documents (contracts, price sheets, photos) inside the system. Who sees what depends on the user's permissions. Files do not sit in someone's personal inbox or on a single computer.

Runs in: Easy App, BS Omni ERP

Roles and permissions

Each user has a role (owner, sales rep, service, technician, driver, accountant) and sees only their own screens and data. An administrator can "log in as" another user to see exactly their screen, then switch back. A new employee gets an account and permissions from one screen.

Runs in: Ivana Agro, KB Agro, Easy App, BS Omni ERP

Multiple companies

Two or more companies run in one system, and you switch between them with a single choice. Each has its own couriers, VAT rates, mailboxes and per-channel rules.

Runs in: Ivana Agro, KB Agro, Easy App, BS Omni ERP

Built-in manual

The user manual lives inside the system and describes the screens as they are. Every user can read it, with no special permission. New staff learn from it instead of asking colleagues about every button.

Runs in: Ivana Agro, KB Agro, Easy App, BS Omni ERP

Feature requests

The team records what gets in the way or what is missing directly in the system rather than over the phone. Each request has a status, so it is clear what has been accepted, what is in progress and what is done. Development works from one list instead of memories of conversations.

Runs in: Ivana Agro, KB Agro, Easy App, BS Omni ERP

In-store till (POS)

The till in the physical store works with a scanner or search, and an item sold in several pack sizes opens a pack picker. The sale is saved as an order on the store channel, and a company invoice can be issued on the spot. A discount above the limit waits for admin approval, and returns go through the same screen.

Runs in: Easy App, BS Omni ERP

Orders from every channel

Orders from Shopify, WooCommerce, eMAG, eBay, B2B, the till and incoming mail land in one list in the same format. Each order leads to a waybill and an invoice, and editing and cancelling happen in one place. The channel is shown on every row, so filtering by store is one click.

Runs in: Easy App, BS Omni ERP

Quick order entry

A phone or walk-in order is entered from a catalog with a cart, as on the wholesale site. You pick the customer and prices come from their price list. The order joins the common list and follows the same path as online orders.

Runs in: Easy App, BS Omni ERP

Orders from email

A mailbox set up for orders creates an order from each incoming email by itself, for example for dropshipping. The order joins the common list under its own channel and follows the same path to waybill and invoice.

Runs in: BS Omni ERP

Order buffer

The buffer is where goods actually ship from. An order is sent to it with a button, once and in full, with the customer details and the exact pack sizes, and stock there drops straight away. If a line cannot be covered exactly, the button says which one and why, and does not send an incomplete order.

Runs in: Easy App, BS Omni ERP

Waiting customers

One screen shows what each customer is waiting for across all their orders and what of it is in stock today. Waiting items ship in full or in part by choosing a quantity per line. Nobody maintains the list by hand. Once the goods leave, the line disappears by itself.

Runs in: Easy App, BS Omni ERP

Price lists

Retail and wholesale price lists, with and without VAT, by group and by customer, with the margin next to each price. You upload an Excel file, the system shows the difference against current prices and saves the new ones only after you confirm. The list also downloads back to Excel. Every change stays in the history, and before an old version is restored the system saves the current one.

Runs in: Easy App, BS Omni ERP

Wholesale site (B2B)

Business customers log in with an account created from the system and see the catalog at the prices of their own price list. An order from the site goes straight into the common list. The site does not accept it without complete company details, so that it can be invoiced later. A packing list with item barcodes is printed for the shipment.

Runs in: Easy App, BS Omni ERP

Got a process that keeps getting stuck?

Describe it briefly. We will tell you how we would solve it.

Send an inquiry
Call us