Sales
Quote-to-cash — quotations, orders, deliveries, packing, proformas, invoices, recurring billing, pricing, targets, commissions (SPM), promotions, TPM (funds / rebates / deductions / AOP), cargo manifests, van trips, returns and POS.
Available with the Sales module. Agents see only their own documents unless their role has View all; approvals are a separate right.
Overview (/sales/overview)
Module home: revenue MTD (invoices + POS), a dedicated POS this month KPI, unpaid invoices, open orders, draft invoices, interactive revenue chart (zoom/brush), sales by agent, and the agent race. Revenue and agent charts can filter All sales / Invoices only / POS only. Quick links include POS receipts. List pages with amounts (invoices, orders, quotations, proformas, POS) show a Subtotal bar above the rows for the filtered set.
What changed (requires Lens report read): this month vs the same-length prior window for net sales, with the largest region and product drivers (drag / lift). Open in Lens jumps to Sales lines with that compare already set.
For deeper analysis, Lens → Sales lines reports net/gross/VAT, margin, and cost coverage without double-counting POS that were later invoiced, or returns that already appear as credit lines. Region and sales team come from the document snapshot at create time.
Flow (/sales/flow)
Live sales pipeline: stage tiles (quotations → orders → deliveries → invoices → paid) with counts and value. Click a stage to filter, spot stuck documents (e.g. confirmed orders not delivered for N days), and drill into a chain from quotation to payment.
Quotations (/sales/quotations) — QTN
Offer to a client. Statuses draft → submitted → sent → accepted | rejected | cancelled.
- Lines priced from the partner's price list and active promotions; substitution rules may replace a SKU automatically.
- Optional approval workflow by amount.
- Mark sent moves a draft quotation to sent without submitting it for approval.
- Send e-mails the PDF; the client can accept in the customer portal.
- Convert to Sales Order carries lines and links.
Sales Orders (/sales/sales-orders) — SO
Confirmed customer order. Statuses draft → submitted → confirmed → partially_delivered → delivered | rejected | cancelled.
- Credit check against the partner's limit; blocked orders are released from Finance → Credit Management.
- Global ATP/CTP (with substitutions) recommends plant and substitute SKU for promise dates.
- Creates Deliveries (full or partial), Packing Lists, Pick Waves (WMS), Production Orders (make-to-order) or Sales Invoices directly.
- Billing plans support milestone progress %, scheduled recurring, and usage meters (record usage → bill overage).
Deliveries (/sales/deliveries) — DLV · stock ↓
Ship goods from a warehouse. Statuses draft → posted | cancelled. Posting writes decrease movements (lot/serial picked per line), relieves reservations and enforces the customer's minimum remaining shelf life. A posted delivery can be invoiced in one click. Select several posted deliveries for the same client (and payment term / currency) to create one sales invoice covering all of them. Drivers' proof-of-delivery arrives via Cargo Manifests.
Packing Lists (/sales/packing-lists) — PKL
Commercial packing list of cartons/packages for a delivery (weights, dimensions, contents). No stock or GL effect; printable for customs.
Proforma Invoices (/sales/proforma-invoices) — PFI
Payment request that looks like an invoice but does not post AR or GL. Convert to a sales invoice when the sale is final. The PDF footer barcode is the proforma number; scanning it in Uktupus opens that proforma.
Sales Invoices (/sales/sales-invoices) — INV · GL post
Customer invoice. Statuses draft → posted | cancelled (and on MK e-Faktura: awaiting_ujp while UJP clearance runs).
On the North Macedonia pack, the official INV number is assigned when the invoice is posted, not when the draft is created. Drafts show a temporary DRAFT-… code so deleting an unused draft cannot open a gap in the statutory series. Credit notes / storno / debit notes follow the same rule. With e-Faktura (UJP) enabled, posting sends the invoice to UJP first (awaiting_ujp); stock and GL post only after the EUID returns. Registered invoices cannot be cancelled — use Storno (full void) or Correct (UJP) (replacement invoice, docStorno 2) from the row actions.
Posting:
- Journal: Dr Accounts receivable (partner dimension), Cr Sales revenue, Cr Sales tax payable per rate. If the invoice relieves stock itself (standalone, no delivery), also Dr COGS / Cr Inventory and decrease movements.
- Creates an open item for the partner; due date from payment terms (copied from the partner’s default term when the invoice has none); cash discount terms recorded.
- Prints in the partner's language with the published layout; Swiss QR-bill on CH pack. MK pack: seller and buyer tax numbers print as ЕДБ; totals list subtotal then tax per VAT rate then total (same list, not a separate table).
- The footer of every page has a Code 128 barcode of the invoice number. Scanning it in Uktupus opens that invoice.
- Line columns (modal and print): barcode, product, packaging qty columns from the document type (type in pack/box/…; other levels convert), sale price (per entered level), tax % (from the product, not editable), price + tax, total excl. tax, total incl. tax. PDF shows entered qty and the level name.
- E-invoice (posted): send Peppol / XRechnung / pack UBL from the row action or Finance → E-Invoicing (Access Point / AS4 partner required for live Peppol).
- Export pack (Trade Compliance): when company country ≠ ship-to country, a globe icon opens a checklist and one-click generation of downloadable PDFs — commercial invoice, packing list, CMR (plus MK Изјава / disinfection when applicable). See Trade Compliance.
Standalone invoices (no quotation/order/delivery) show a warning because they skip the normal chain.
Recurring Invoices (/sales/recurring-invoices)
Schedules (monthly, quarterly…) that generate draft sales invoices from a template — subscriptions, rent, maintenance fees.
Price Lists (/sales/price-lists)
Customer-, channel- and currency-specific prices with quantity tiers and validity dates. Resolution order on a line: partner price list → channel/default list → product sales price.
Pricing Procedures (/sales/pricing-procedures)
SAP-style condition / pricing procedure engine:
- Condition types (PR00 base, K007 discount %, KA00 surcharge, HD00 freight, …)
- Condition records with access sequence (partner+product+warehouse → … → general)
- Default procedure RVAA01 walks steps to a net unit price; commercial pricing uses it when present
Price now & override (salespeople)
On quotations, sales orders, sales invoices, proformas, and van price lookup, the line shows what this customer gets right now with short reason chips (list, customer, promo, discount) — not procedure steps.
- System price is applied automatically when you pick a product.
- Override (pencil) opens a small dialog: new price / %, required reason, and an authority badge (
Within policy/Needs approval/Blocked). - Configure bands under Sales → Pricing procedures → Salesperson price authority (
agent_max_discount_percent,min_margin_percent,hard_floor_margin_percent, require reason). - Out-of-band overrides stay on the draft until Submit; submit keeps the quotation/order pending approval (workflow or legacy approve) instead of auto-confirming.
Contract billing depth (on sales order billing plan)
- Milestone — set progress %; at 100% the line invoices
- Usage —
amount_basis=usagewith meter key / included qty / overage price;record_usagethenbill_usage - Still works with existing scheduled recurring lines and revenue contracts in Finance
Substitutions (/sales/substitutions)
Material determination rules (substitute / supersede / upgrade). When a quotation or sales order line uses SKU A and a rule applies, Uktupus replaces it with SKU B (e.g. out of stock, discontinued, bundle upgrade).
Targets (/sales/targets)
Monthly quotas by one or more sales agents, a region, or the company. Optionally limit the quota to specific products, or keep all products. Progress is measured from posted invoices (for product-scoped targets, only matching invoice lines count toward revenue/quantity; orders count invoices that include those products).
Commissions (/sales/commissions, /sales/commission-plans)
Sales performance management for mid-market: quota-aware incentive compensation without a separate SPM suite.
- Plans — revenue, margin, or quantity basis; tiers by quota attainment (accelerator/decelerator) or basis amount bands; assign agents with optional rate overrides; peg rates to Sales targets.
- Monthly runs — calculate accruals from posted invoices, override with reason, approve, then settle to AP (one purchase invoice per agent via their payable partner).
- What-if calculator — simulate an agent/period before running the period close.
Statuses for a run: draft → calculated → approved → settled (or void). Agents with read access see their own lines unless they have View all.
Demand Sensing (/sales/demand-sensing)
Blends recent orders into a short-term forecast per product. Apply pushes the sensed demand onto products (optional reorder points) and into MRP.
Missed-order radar
Daily scan of regular customers (enough recent invoices/orders, steady cadence). Alerts the customer’s sales agent (partner agent → region agent) in the notification bell and on Today when they are overdue vs their usual interval, or ordering less than the prior period. Open the existing partner dialog for Call / Create order (usual lines) / Snooze / Dismiss. One open alert per customer; posting a new invoice resolves it. Overdue / ordering-less thresholds (X, Y) live under Sales → Overview.
Promotions (/sales/promotions)
Trade promotions: mechanics (discount, BOGO, bundle), planning, lift/ROI, scenarios, scan data. Approval workflow (promotion) activates them; active promotions price quotation/order/POS lines. Link a promo to a trade fund and/or AOP event so approval commits planned trade spend into the fund.
Trade promotion management (/sales/tpm)
Full TPM money layer (funds / rebates / deductions / AOP), alongside on-invoice promotions:
| Area | What operators do |
|---|---|
| Trade funds | Budget pools by year (customer / brand / channel / event / national). Open the fund, commit spend (from promos or manually), accrue, settle. Available = budgeted − committed. |
| AOP calendar | Annual operating plan year with events (promo, rebate, display, slotting, feature). Month board shows planned / committed / actual spend. |
| Rebates | Off-invoice agreements (volume %, volume amount, growth, flat, billback). Accrue from posted customer invoices for a period (GL: Dr trade promotion expense / Cr trade accrual), then settle into the linked fund (GL: clear accrual → rebate payable). |
| Deductions | Customer claims (promo, rebate, spoilage, shortage, pricing, slotting). Match to a fund / promo / rebate, dispute, settle (posts a settle entry on the fund), or write off. |
Permissions: sales.tpm.read / create / update / delete / settle. After seeding new permissions, log out and back in.
Cargo Manifests (/sales/cargo-manifests) — CM
Consolidate posted invoices/deliveries into a vehicle route for a driver. Warehouse staff can also select posted invoices in the Warehouse app and create the manifest there. Drivers use the mobile app to navigate, arrive, take proof photos and deliver; statuses sync back.
Van trips (/sales/van-trips) — SVT
Route / van sales for drivers who also act as distributors. Each trip links a Fleet vehicle, driver membership, van warehouse (van_role = sales), and a source warehouse.
- Create the trip (one open trip per vehicle/driver).
- Load — stock transfer source → van; print товарен лист (loading list PDF). Copy last load prefills from the vehicle’s previous trip.
- Sell and take returns from the Uktupus Sales app against the van warehouse (online).
- Unload — transfer sellable stock van → source. Expired/damaged return lots stay quarantined on the van.
- Reconcile — per product: loaded − sold + good returns − unloaded. Balanced auto-approves; variance needs another user (no self-approve). Trip cannot close until reconciliation is balanced or approved.
- Cash hand-in — expected cash from trip cash invoices vs amount handed; shortage posts a driver receivable (same pattern as Courier COD hand-in). Then close.
Sales Returns / Storno (/sales/sales-returns) — STF / SKO / SKZ · stock ↑ (optional) · GL post
On a posted sales invoice use Storno (full reversal, STF), Credit note (книжно одобрение — partial, SKO), or Debit note (книжно задолжување, SKZ). From Sales → Sales returns use New sales return and pick the invoice to create a draft credit note. Each gets its own numbering series. Storno copies remaining lines at original prices (minus amounts on the print), keeps the original posted and marks it сторнирана, and prints the original invoice number + date. You cannot storno twice or credit more than the original.
Goods: choose goods returned (stock back in; cost matches the original outbound movement) or no goods moved (wrong invoice — AR/VAT only). Debit notes never move stock.
Condition (goods lines): every returned line needs good / expired / damaged (optional note). Lot-tracked products reuse the invoice line’s lot and suggest expired when the lot’s expiry has passed (change needs a reason). Non-lot lines default to good. Good returns to sellable stock; expired / damaged go to quarantine (blocked for sale/picking). From held stock use HSEQ usage decisions to write off (scrap, reason = condition) or return to supplier.
VAT (MK): tax point is the document VAT date (defaults to return date). DDV-04 reduces (or increases for debit notes) output VAT in that period. Buyer confirmation of base reductions is not enforced in software — confirm with your accountant.
Open items: a storno/credit closes the invoice open item; if the invoice was already paid, the excess becomes an unapplied partner credit on the open-items statement.
Posting writes Dr Sales returns, Dr Sales tax payable / Cr AR (debit notes flip AR/revenue/tax); Dr Inventory / Cr COGS when goods come back.
Print after post
On Document types → Sales invoice, configure an ordered Print after post list of layouts to offer (no copy counts there). After you post an invoice, a short dialog asks How many copies? for each layout in order (Enter prints; Skip moves on; last printed count can be remembered per user). Soft print (browser dialog) is used unless a silent/kiosk print agent is available. The commercial food document (MK pack) is only offered when the invoice has animal-origin lines.
MK — commercial food document (Комерцијален документ за храна од животинско потекло за внатрешен промет) is only offered when the company is on the MK pack and the invoice has lines whose product or category is flagged Food of animal origin. One PDF page per such line. Fields are filled from the invoice (receiver + delivery branch + ЕДБ), van trip / vehicle (transporter + plate), lot / expiry, unit quantity, and category/product storage condition (ambient / chilled / frozen). Set the company veterinary registration number on the company profile when required as the sender ID.
POS Receipts (/sales/pos-receipts) — RCP · stock ↓ · GL post
Retail sales from the desktop POS. Posted receipts decrease store stock and post Dr Cash/Bank / Cr Revenue, Cr Tax payable; Dr COGS / Cr Inventory. Cash on a till that posts to the general ledger debits Till cash instead. A receipt dated in a closed period is rejected. Dashboards show cumulative sales by store, till, day, month and cashier. Till sessions and cash handling are under Retail → Till cash.
Parked sales (desktop POS): cashiers can Park sale (F8) to hold an unfinished cart locally on that till (lines, prices, discounts, customer). Recall slots 1–9 with ⌘/Ctrl+1–9; open the parked list for more than nine. Recalling while the cart has items auto-parks the current sale. Parked carts are cleared when the till session closes (with a warning if any remain). Nothing is fiscalized until checkout.
Language (desktop POS): English, Macedonian (Македонски), and Albanian (Shqip). Press F9 anytime to open the language dialog. Choice is stored on that device.
A posted receipt is not edited. A correction is a return receipt that references the original. The cashier who created a return cannot post it unless the company turns off the segregation rule Post a POS return you created. The desktop POS sends an idempotency key with each sale or return; a retry of the same key returns the receipt already stored.
Fiscal printers (desktop POS settings): simulator for training; Net.FP bridge (network) for Datecs/Tremol over the bridge’s serial or TCP link; or direct RS232/COM to Datecs ISL-compatible printers (pick the COM port and baud, protocol Datecs). Tremol: use Network + Net.FP — direct RS232 for Tremol is not wired (POS shows that hint when Tremol + serial is selected). Direct Datecs serial supports sale and storno. Send prices with VAT (bruto) (default on): POS sends shelf/gross (e.g. 10.50); Synergy PF700 extracts ДДВ (2×10.50 → ВКУПЕН 21.00). Turn off only if a device adds VAT on neto prices. If a receipt is already open on the device, POS refuses the sale (no junk second slip) — power-cycle or finish that slip on the printer, then retry. A paper low status shows a warning toast but does not block the sale. A fiscal number is unique for a company and fiscal device.
Фискални извештаи (desktop POS settings): icon actions print Контролен извештај (X, no zeroing), Периодичен извештај (from/to dates from fiscal memory), and Затвори фискална сметка (Z / daily close — confirm first). Сторно сметка opens receipt history so you can pick a slip and run the normal return. Optional Автоматско затварање (Z) prints Z every day at a chosen local time while the desktop POS app is open (does nothing if POS is closed).
Cash drawer (Posiflex on fiscal DRW): plug the drawer into the fiscal printer’s DRW port (not a separate USB/COM cable). In POS settings enable Cash drawer (fiscal DRW); optionally keep Open on cash tender so a posted sale or return that includes cash pulses the drawer via Datecs ISL command 0x6A (or Net.FP /drawer). Manual open is available from Settings and from the till session dialog.
Related
- Customer payments: Finance → Payments
- Dunning, collections, credit: Finance
Master Data
The shared reference data every module depends on — products, partners, warehouses, taxes, currencies and more. Part of the always-on Core entitlement.
Procurement
Enterprise procure-to-pay — punchout catalogs, ASNs, PO acknowledgement, 4-way match with GR/IR clearing, category management and savings, plus RFQs, tenders, OCR invoices and scorecards.