Pharmacy ERP in 2026: The Complete Map of What It Must Include

Pharmacy ERP in 2026: The Complete Map of What It Must Include

Choosing a pharmacy ERP in 2026 is no longer about finding software that prints receipts and counts boxes. A single pharmacy in Riyadh, a chain with branches across Jeddah and Dammam, or a pharmaceutical wholesaler shipping to hundreds of pharmacies has to prove where every serialised pack came from, sell the batch that expires first, issue tax invoices in the format the tax authority expects, respect each customer's credit limit and stop a cashier from giving a discount the owner never approved. When those jobs live in five different tools, or in a spreadsheet next to the till, the gaps show up as expired stock, compliance fines and margin that leaks away quietly.

This guide is the full map: the eight layers a pharmacy and pharma-distribution ERP must cover, what each one should do in practice, and the questions to ask any vendor before you sign. We use Sellify, the ERP S-Plus built for pharmacies, pharmacy chains and pharmaceutical wholesalers, as the working example, and we describe only what the system does today.

Why generic retail software breaks inside a pharmacy

A supermarket POS treats a product as one SKU with one stock figure. A pharmacy cannot work that way. The same item may sit on the shelf as three batches with three expiry dates, one of them under quarantine after a supplier notice. It may be sold as a full box to one patient and as a single strip to another. It may be a controlled medicine that can only go to a licensed customer, or a serialised pack whose movement must be reported to the regulator. And the person at the counter may be a patient paying cash, an insured patient paying only their share, or a pharmacy buying on 60-day credit.

  • Stock is per batch, not per item. Without batch-level stock you cannot apply FEFO, run a recall, or know what you will write off next quarter.
  • Prices depend on who is buying. Wholesale tiers, quantity breaks and bonus offers are normal in pharma distribution, and they must be calculated the same way on every screen.
  • Compliance is transactional. Track-and-trace notifications and e-invoices are created by sales, returns and transfers, not by a monthly export.
  • Control matters as much as features. Pharmacists, cashiers, storekeepers and accountants need different powers, and every override must leave a trace.

Layer 1: A dispensing counter that keeps up with the queue

The point of sale is where a pharmacy ERP earns or loses the staff's trust. In Sellify the POS is a single-page application designed for the keyboard: the pharmacist types part of a trade name, a barcode or an active ingredient and adds the item with Enter, while function-key shortcuts handle payment, full cash payment, holding and recalling an order, and Ctrl+K opens a command palette.

What the counter should handle

  • Search by active ingredient, with alternatives: when an item is out of stock, the screen offers alternatives with the same active ingredient, so the patient does not leave empty-handed.
  • Selling units: a box or a strip from the same item, with the price following the unit.
  • Batch choice: the system picks the batch by FEFO automatically, and the item details show batches and stock in other branches.
  • Several patients at once: multiple order tabs, plus held orders that can be recalled later.
  • Shifts and cash: opening a shift can be made mandatory before selling, with a cash count and the difference recorded at closing.
  • Split payment: more than one payment method on the same invoice.

The counter also has to survive a dropped connection. We cover that in our guide to an offline pharmacy POS.

Layer 2: Batches, expiry dates and FEFO

Expired stock is the most visible loss in a pharmacy, and it is almost always a data problem before it is a sales problem. The ERP must capture the batch number and expiry date at purchase, dispense First-Expired-First-Out, and refuse to sell what has expired.

  • Batch number and expiry date are mandatory on purchase invoices for batch-tracked items, and the batch is created automatically. Controlled medicines are batch-tracked by default.
  • Sales invoices and the POS dispense from the nearest-expiry batch; expired, quarantined or blocked batches cannot be sold.
  • Every batch movement is recorded, so a batch card shows exactly where each unit went.
  • A batch can be switched to quarantine or blocked, for example when a manufacturer recalls a lot.
  • Editing or deleting a sales invoice returns quantities to the same batches, and a purchase invoice cannot be deleted once part of its batch has been sold.

The full method, including returns, near-expiry reports and a weekly routine, is in our article on pharmacy expiry management with FEFO.

Layer 3: Regulatory compliance built into each transaction

Drug track and trace

In Saudi Arabia, the SFDA's track-and-trace system (RSD) follows each pack through the supply chain using GS1 DataMatrix codes. Reporting is enforced, and the SFDA penalises facilities that fail to report drug movements. A good ERP makes the right notification a by-product of normal work. Sellify links each item to its GTIN, stores a GLN for every warehouse, customer and supplier, asks for a scan of each serialised pack at receipt, sale, transfer and return, and places the resulting notifications in a queue that retries automatically, so a slow connection to the regulator never stops the counter. The live connection is ready to be configured once the facility completes its registration and receives its credentials from the SFDA. Our RSD track and trace guide walks through the whole chain.

E-invoicing

Saudi VAT-registered businesses already issue e-invoices under ZATCA's first phase, and the second (integration) phase is being rolled out in waves; the 25th wave, announced in July 2026, covers taxpayers whose VAT-subject revenue exceeded SAR 187,500 in any year from 2022 to 2025. Sellify issues a simplified tax invoice, or a standard tax invoice for a B2B customer with a valid VAT number, for every sale. Each document carries the QR code, a UUID, an invoice counter and the previous-invoice hash, with a UBL 2.1 XML file, and every return produces a linked credit note. Phase-two onboarding, XAdES signing and reporting or clearance have been verified on ZATCA's sandbox; production needs the facility's own OTP from the Fatoora portal, which is completed together at go-live.

Controlled medicines

Controlled drugs can only be sold to a customer with a valid licence number. A dedicated register records every incoming and outgoing movement by batch, party and licence number, and exports to CSV. A setting can also make a prescription number mandatory for controlled sales.

Layer 4: Wholesale and distribution

A pharmaceutical warehouse sells on terms, not only on price. The ERP must apply the commercial agreement automatically and refuse a sale that breaks it.

NeedWhat Sellify does
Customer tiersEach customer belongs to a tier (pharmacies A or B, hospitals, distributors) with a default discount set as a percentage or a fixed amount per unit.
Quantity breaksPer-item prices by quantity (from 1, from 20, from 100), set as a final price, a percentage or a fixed discount.
Bonus offers“Buy X, get Y” in multiples, general or per tier; the free line is dispensed from batches like any other line.
Credit controlCredit limit, payment term in days and customer suspension; credit sales are refused for suspended customers, exceeded limits or overdue invoices.
CollectionsRunning account statement, debt ageing, and collections allocated to the oldest invoices first.
Annual contractsA yearly sales target with a configurable cashback rate accrued per invoice; when the target is met, the total becomes a wallet balance deducted from next year's invoices.
DeliveryShipment status and a printable packing list showing batches and expiry dates.

Final prices are always calculated on the server, so a price sent by the browser is ignored, and the same rules apply on the POS, the sales invoice and the sales rep's order.

Layer 5: Inventory across branches and warehouses

  • Transfers move from draft, to sent (deducted from the source by FEFO with the batches fixed), to received (added at the destination with the same batches and expiry dates). Cancelling a transfer in transit returns the stock to its original batches.
  • Stocktake takes a batch-level snapshot, records counted quantities and posts the adjustment on approval. With the warehouse mobile app, staff count by scanning.
  • Reorder suggestions come from daily demand, lead time, safety stock and coverage days. The suggested quantity is the maximum level minus effective stock, and effective stock excludes batches that will expire before the delivery arrives.

For forecasting and branch transfers in depth, see our guide to pharmacy inventory management.

Layer 6: Insurance, loyalty and promotions

At the POS payment screen, a prescription and insurance section records the insurer, the patient and the card number. The invoice is posted to the insurance company's account and the patient pays only their share. Prescriptions are grouped into claims, and settlements are allocated to the insurer's oldest invoices first. A loyalty programme, switched off by default, earns points per riyal and redeems them as a discount at payment, reversing points proportionally on returns. Promotions give a percentage or an amount off an item, a category or the whole range for a set period with a minimum quantity, and the pricing engine always applies the best price for the customer.

Layer 7: Permissions, limits and the audit trail

For a chain, this layer decides whether head office can trust the numbers. Sellify ships role templates for branch manager, pharmacist, cashier, storekeeper, accountant, sales rep and a view-only auditor. Roles can be scoped to a single branch, and each role can carry numeric ceilings: maximum line and invoice discount, maximum return and maximum credit override. Going beyond a ceiling asks for a manager approval: the manager enters a PIN and the system issues a one-time code valid for five minutes, tied to that user, branch and value. Nobody can grant a permission they do not hold. Discounts, returns, invoice deletions, role changes, denied access, approvals and shifts are all written to an audit log. More on this in our article on pharmacy chain management.

Layer 8: Accounting, reports, mobile apps and integration

  • Accounting: sales, purchases, expenses and collections post automatically to journal entries, with a trial balance, balance sheet, income statement and closed accounting periods.
  • Reports: stock valuation by batch, slow-moving items, customer profitability, sales rep performance, and a report builder (dataset, grouping, measures, period) with CSV export.
  • Mobile apps: a sales rep app (my customers, account statement, orders under the same pricing and credit rules, collections) and a warehouse app (scan to look up stock and batches, count by scanning, receive incoming transfers).
  • API: a REST API with scoped API keys for products, stock and customers, ready for connecting an online store or delivery apps.

The pharmacy ERP buyer's checklist

Ask the vendorWhat a good answer looks like
Is stock held per batch with expiry, and does the POS dispense by FEFO?Yes, automatically, with expired and quarantined batches blocked.
How are track-and-trace notifications created and retried?From each scan at receipt, sale, transfer and return, through a queue that never stops sales.
Which e-invoicing phase is supported, and where was it tested?Phase-one generation, plus phase-two signing and reporting tested on the authority's sandbox.
Can I cap discounts and returns per role and branch?Yes, enforced on the server, with manager approval and an audit log.
What happens when the internet drops?Cash sales continue and sync later without duplicates.
Can I bring my current data?Products, customers and opening balances import from CSV.

A note for pharmacies across the GCC

Sellify's compliance modules currently target Saudi Arabia: SAR, 15% VAT, ZATCA and SFDA RSD. The system is built on country profiles that set the currency, the VAT rate and the active compliance modules, so it can be adapted to other markets. VAT differs across the Gulf (5% in the UAE and Oman, 10% in Bahrain, none yet in Kuwait and Qatar), and the UAE runs its own national drug traceability platform, Tatmeen. If you operate outside Saudi Arabia, discuss the adaptation scope with us before you plan a rollout.

Frequently asked questions

Is a pharmacy ERP different from pharmacy POS software?

Yes. A POS handles the counter. A pharmacy ERP connects the counter to purchasing, batches, warehouses, credit, insurance, compliance and accounting, so a single sale updates everything it touches.

Can one system run a wholesaler and a pharmacy chain together?

Yes. In Sellify, warehouses and pharmacy branches are both locations in the same company, and wholesale customers, tiers and credit sit alongside retail counters, insurance and loyalty.

Is the RSD connection live?

The internal side is complete: GTIN linking, serial scanning, the event queue, retries and pack history. Sending live notifications requires your facility's registration and credentials from the SFDA, after which the connection is configured and tested on their environment.

How does it handle insurance claims and NPHIES?

Insurance prescriptions and claims are managed inside Sellify, with complete, structured records ready to submit through the insurer's or the national platform's channel. Electronic integration with a specific insurer or with NPHIES can be scoped with the S-Plus team, and clinical checks such as drug interactions stay with the pharmacist's professional references.

How long does migration take?

That depends on your current data. Products, customers and opening balances import from CSV files, and the exact scope is agreed after reviewing an export from your existing system.

See the full map running on your own scenarios

The fastest way to judge a pharmacy ERP is to watch your own day: a serialised sale, a near-expiry batch, a credit limit breach, an insurance claim. S-Plus will walk you through Sellify with your workflows in mind. Request a Sellify demo and tell us how many branches and warehouses you run.

Related Posts

Welcome Back

Sign in to access your account

Create Account

Join and enjoy the full experience

+965 expand_more
🇰🇼 Kuwait +965
🇸🇦 Saudi Arabia +966
🇦🇪 United Arab Emirates +971
🇶🇦 Qatar +974
🇧🇭 Bahrain +973
🇴🇲 Oman +968
🇪🇬 Egypt +20
🇯🇴 Jordan +962

lock_reset

Reset Password

Enter your email to receive a recovery link