This guide walks through every module of EasyWDA — the same reference our customers' own teams use day to day, published here so you can see exactly how the product works before you sign up.
What EasyWDA does
EasyWDA is the system of record for a wholesale dealer's authorisation (WDA(H)) holder: it tracks stock from goods-in to dispatch, keeps the compliance records a GDP inspection expects to see, and runs the commercial pipeline from customer enquiry through to a shipped order.
Every organisation using EasyWDA is a tenant, with its own products, stock, partners, and compliance records, fully separated from every other tenant. Within a tenant, staff hold one of three roles — Responsible Person, License Holder, or User — described in full in Chapter 4. Customers and suppliers can also be given their own logins, through a separate partner portal with a smaller set of screens for placing enquiries, submitting due diligence, and confirming purchase orders.
Where EasyWDA enforces a rule automatically — an export block, a witness requirement, a quantity that can't go negative — it's called out below in an amber Rule box, so you can see exactly what's deliberate system behaviour.
Getting started
2.1 Account setup
Team members aren't self-registered. A Responsible Person or License Holder invites each one by email, which sends a password-reset link. Signing in with the temporary credentials leads through two setup steps before the dashboard:
- Set a permanent password. At least 8 characters, including an upper-case letter, a lower-case letter, a number, and a symbol.
- Enrol two-factor authentication. An authenticator app (TOTP — Google Authenticator, Authy, 1Password, etc.) is mandatory for every account. SMS is available afterwards as an additional method, never a replacement.
A login that belongs to more than one organisation is asked to pick one on every sign-in. And whenever an organisation publishes a new version of its Terms & Conditions, every user is asked to accept it before continuing.
2.2 A new organisation
A brand-new tenant is created by registering, which sets the organisation to Pending and creates its first Responsible Person account. EasyWDA's platform team reviews and approves new organisations before the account can trade.
2.3 Profile
From the account menu, each user can change their password, reset their authenticator enrolment, switch the interface theme (light, dark, or automatic), and set a location so the clock and day/night theming reflect their local time.
Dashboard
The dashboard is a status board, not a workflow — it surfaces what needs attention before anyone goes looking for it: team and partner counts and licensed categories; any temperature excursions alongside the five most recent temperature logs; the five most recent export records and controlled-drug entries; stock expiring within the next 90 days; open quotes; pending orders; and any partner due diligence that's due soon or overdue.
Roles & team
EasyWDA has three tenant-level roles:
- Responsible Person — the regulatory RP named on the WDA(H) licence.
- License Holder — carries identical system permissions to the Responsible Person. The two labels exist so an organisation can distinguish its named regulatory RP from other senior staff who need the same system rights.
- User — day-to-day staff. Can operate stock, compliance logging, and sales, but cannot change organisation-wide configuration, delete records, or manage the team.
The full breakdown of what each role can do, module by module, is in Appendix A. As a rule of thumb: day-to-day operation is open to any user; configuration, deletion, and anything with regulatory weight is reserved for the Responsible Person / License Holder.
4.1 Managing the team
RP / License Holder A Responsible Person or License Holder invites a new member by email, assigns their role, or attaches an existing EasyWDA user who already has a login with another organisation. A Responsible Person or License Holder can assign any of the three roles; a User cannot assign roles to anyone.
Nobody can change their own role or status, or delete their own account.
Products & catalogue Any user
The product catalogue is the master list of tradeable items. Each product record carries: name, a unique SKU, description, unit of measure, pack size, manufacturer/supplier, PIP code, medicine class (GSL, P, POM, CD Schedule 2–3, CD Schedule 4–5, Immunological, or Other), a storage condition, a controlled-drug flag and schedule where relevant, a default unit price and VAT rate, and a status of Active or Discontinued.
5.1 Storage conditions
Every product declares one of four storage conditions: Ambient, below 25°C; Ambient, below 30°C; Fridge (2–8°C); or No storage conditions specified.
A product's storage condition and a storage location's temperature range (Chapter 9) are two separate fields — EasyWDA does not cross-check that a batch has been put somewhere that actually meets its product's storage condition. Checking the match is a manual step at goods-in and whenever stock is relocated.
5.2 Bulk import
Products can be bulk-imported from a CSV or Excel file, with column mapping suggested automatically from common column names. Rows are matched and updated by SKU, so re-importing a file only changes what's different. A single import is capped at 5,000 rows.
Customers & suppliers
Any team member can view and search the partner list; creating, editing, or deleting a business partner is RP / License Holder only. A partner can be flagged as a customer, a supplier, both, and separately as an export customer. Partner type covers Pharmacy, Hospital, Wholesaler, Manufacturer, Clinic, GP Practice, Care Home, Veterinary Practice, Dentist, or Other, alongside licence number and expiry, address, VAT rate, and contact details.
A partner with any trading history (an enquiry, quote, invoice, order, purchase order, or supplier invoice) cannot be deleted. Its status is set to Inactive instead.
If a customer carries a minimum order value, any quote or invoice that falls below it automatically gains a below-minimum surcharge line, added and removed automatically as the total crosses the threshold.
6.1 Onboarding a partner
RP / License Holder A new customer or supplier can be invited by email — creating an Invited partner record and a sign-up link valid for 14 days — or granted partner-portal access if they already hold an EasyWDA login elsewhere. A self-signed-up partner moves through Awaiting validation and Pending approval before review.
RP / License Holder Applications from partners who've completed their sign-up land in a review queue, badged with the count awaiting review. Approve to activate the partner, or decline with a reason.
6.2 Due diligence & validation
RP / License Holder Each partner's Validations tab records a due-diligence review against the organisation's checklist (16 GDP/WDA(H)-standard items are seeded by default, split across customer and supplier, and fully customisable). It captures the applicable export flags (EU, non-EU, domestic, controlled drug), a revalidation due date, and any supporting documents.
Each partner's validation state — Valid, Due soon (within 30 days), Overdue, or None — surfaces on the dashboard so revalidations don't get missed.
6.3 Pricing & portal access
RP / License Holder A partner's Pricing Rules set a default margin multiplier and, where needed, per-product overrides — applied automatically when that customer's cost prices become quote and invoice lines. Their Portal Users tab manages the individual logins the partner's own staff use in their portal.
Receiving goods Any user
Stock enters EasyWDA through a fixed two-step sequence: a Supplier Invoice, then a Goods In entry against it.
7.1 Supplier invoices
Recording a supplier invoice captures the supplier, invoice number, and invoice date, with one or more invoice files attached (PDF, JPG, or PNG, up to 10MB each) — useful for a multi-page paper invoice or extra supporting scans.
A Goods In record cannot be created until a Supplier Invoice with a matching invoice number already exists. A supplier invoice also can't be deleted once goods-in records have been created against it.
7.2 Goods in
Goods In captures the invoice number (matched against the supplier invoice above), a reference number, the date received, and who received it, then the batch itself:
- Select the product.
- Enter the batch number and expiry date.
- Enter the quantity received.
- Choose a storage location, if placing it immediately.
- Enter unit cost and, where relevant, a licence number.
Saving creates the stock batch in one step, set to Available with quantity on hand equal to quantity received. The Goods In list shows each batch's storage condition and manufacturer/supplier alongside the usual detail.
Editing a goods-in entry recalculates quantity on hand from the corrected quantity received, minus whatever has already been sold, removed, or allocated against that batch — and can't be corrected down below the amount already used.
7.3 Stock
Stock is the batch-level inventory view: searchable, sortable, and filterable by product, status, expiry, or goods-in date. A batch's status is Available, Quarantine, Expired, or Exhausted. A CSV export produces product, SKU, batch number, expiry, quantities, storage location, storage condition, supplier, unit cost, licence number, goods-in date, and status.
Every batch's Trace view shows its full lifecycle — receipt, the supplier invoice it came in against, every order allocation, every goods-out removal, and its quarantine history — for audits and recalls.
When an order ships, EasyWDA allocates stock first-expiry-first-out (FEFO) automatically — the earliest-expiring available batch of a product is always picked first.
7.4 Stock Movement Report
A Stock Movement Report can be downloaded as an Excel workbook for any date range up to 31 days: goods received, goods removed, and stock shipped on orders, with a running balance per batch and per product. A "Movement Detail" sheet breaks it down day by day; a "Daily Balance" sheet answers "what did we hold on date X" at a glance.
Quarantine & goods out Any user
8.1 Quarantine
Quarantine moves a quantity of an available batch aside with a reason — damaged, temperature excursion, suspected counterfeit or tampering, quality query, recall, or other — reducing quantity on hand immediately. Entries are actioned later as returned to supplier, restored to stock, destroyed, or other.
8.2 Goods out
Goods Out removes stock for a sale, destruction, return to supplier, write-off, internal use, or other reason. Quantity on hand decreases accordingly, and a batch that reaches zero automatically flips to Exhausted.
Cancelling a goods-out entry restores its quantity to the batch and deletes the entry outright — nothing is kept as a cancelled record.
Shipping an order creates a real Goods Out entry for every batch it allocates, tagged with the order and reason "Sale" — so this list includes order shipments as well as manual removals.
Compliance Any user
9.1 Temperature & storage locations
Logging a reading against a storage location checks it automatically against that location's set range and flags an excursion if it falls outside. A direct "Log an excursion" flow supports transcribing a full excursion from a data logger's own export after the fact — start and end time, minimum and maximum temperature reached, and optionally average temperature, standard deviation, and mean kinetic temperature (MKT).
Every excursion lists the stock batches in that location that could have been affected, weighed against each product's own storage condition rather than just the location's range. Batches split into three groups: affected (the excursion breached that product's own limit), unaffected (stayed within it), and no storage condition specified (the product has no storage condition on file, so it can't be checked). A one-click action moves an affected batch straight to quarantine.
9.2 Export records
Free-text export records — destination country, product description, date, and reference — support ongoing export record-keeping.
9.3 Country validations
RP / License Holder A country validation records that a destination country has been approved for export, along with its regulatory authority, local contact details, and any specific requirements.
An export destination cannot be selected on a quote, invoice, or order unless the customer is flagged as an export customer, is Active, has a country on file, and that country has a validation recorded. Missing any one of the four blocks the export sale.
9.4 Controlled drugs
Organisations holding a CD Schedule 2–3 or 4–5 licence category get a Controlled Drugs register: receipt, supply, destruction, and adjustment entries per drug and schedule, with an automatic running balance.
A destruction entry cannot be saved without recording a witness.
9.5 MHRA alerts
Published MHRA recalls and alerts are matched automatically against an organisation's own stock batches. Actioning a match records what was done — quarantined, returned to supplier, destroyed, no action needed, or other — plus a date, who actioned it, and notes.
Once an alert is actioned, it cannot be re-actioned.
9.6 Deviations & CAPA
Deviations capture anything that's departed from normal process: date of discovery, category (Service, Quality, or Other), severity (Major or Minor), a description of the incident and immediate action taken, and whether it's happened before.
A deviation is also created automatically whenever a temperature excursion is logged (9.1) — category, description, and due date are filled in from the excursion, with severity and "has this happened before" left for a person to answer.
Product Details links a deviation to the actual stock batches involved, populated automatically for excursion-triggered deviations and stays in sync as goods move.
The due date is set automatically from severity, counted from the date of discovery: 5 days for Major, 30 days for Minor.
An optional CAPA (corrective and preventive action) workflow records a corrective action, an optional preventive action, who's responsible, and a target date, tracked through Open, In progress, and Closed. A CAPA Register lists every CAPA raised across the organisation in one place.
RP / License Holder An RP Risk Assessment field captures the Responsible Person's own written assessment of a deviation's impact.
Sign-off as RP checked is RP / License Holder only, and is one-way — it can't be undone once saved.
Every deviation can be printed or downloaded as a real PDF — the formal form to hand to an inspector — and several can be combined into a single multi-deviation PDF at once.
Sales pipeline
A sale moves through four stages, each a one-way conversion that carries its line items forward: Enquiry → Quote → Invoice → Order.
10.1 Enquiries Any user
Enquiries arrive from customers' own portal baskets with status New, and convert into a draft quote to carry lines forward with indicative pricing.
10.2 Quotes Any user
A quote moves Draft → Sent → Accepted / Declined, targeting either a UK or export destination. Each line snapshots the product's medicine class, storage condition, manufacturer, and PIP code at the time it's added, along with cost price and the customer's pricing-rule margin. Sending a quote emails the customer a signed link valid for 30 days.
10.3 Invoices Any user
Invoices follow the same shape as quotes — Draft → Sent → Accepted → Paid. Delivery and packing slips print from an invoice, listing the distinct storage temperatures its lines require and each line's batch number, expiry, and quantity picked.
Converting an invoice into an order is RP / License Holder only, and works once it's Accepted or Paid, still subject to the export-validation check in 9.3.
10.4 Orders Any user
Orders move Pending → Shipped → Delivered (or Cancelled). Shipping is the moment stock actually leaves inventory: EasyWDA allocates each remaining line by FEFO, decrements quantity on hand, and creates a real Goods Out entry for every batch it allocates — as a single all-or-nothing step.
Every export order is automatically screened against the latest export ban list on creation, and can be re-screened manually at any time — a guidance tool, not an automatic block.
Purchasing Any user
Purchase orders can be raised against a supplier, with lines added freely or from that supplier's own published product list. Sending a purchase order emails the supplier a CSV of its lines; the supplier confirms it from their own portal.
Organisation settings RP / License Holder
- General Settings — organisation logo.
- License Settings — which of 15 licence categories the organisation holds, which is what drives whether Controlled Drugs appears in the menu.
- Sales Settings — trading address and contact, premises notes, payment instructions, and terms templates pre-filled onto every new quote and invoice.
- Terms & Conditions — editing bumps the version and snapshots a dated PDF; every partner-portal user must re-accept before continuing.
- Backups — on-demand or automatic daily backups, downloadable as a zip.
- Floor Plans — warehouse floor plan files.
Document repository
A shared document repository with nested folders supports images, PDFs, text, CSV, Word, and Excel files, all previewable in the browser — plus version history with notes per version, bulk upload preserving folder structure, and zip upload that extracts and rebuilds a folder tree automatically.
Working with lists
Every list screen behaves the same way: click a column heading to sort by it; use the search box, with a Clear button to reset it; results page through numbered links at 20 rows at a time. Dropdown pickers throughout the app — batches, partners, orders, invoices, products, and more — filter as you type. Any printable document also has a real PDF download alongside its Print button.
Permission matrix
What a User can do versus what's reserved for a Responsible Person / License Holder (the two share identical permissions throughout).
| Area | User | RP / License Holder |
|---|---|---|
| Products & catalogue, incl. import | Full access | Full access |
| Goods In, Stock, Goods Out, Quarantine, Supplier Invoices, Stock Movement Report | Full access | Full access |
| Temperature logging, excursions & export logging | Log & edit entries/excursions | Log, edit + delete entries/excursions |
| Storage locations | View only | Add, edit, remove |
| Country validations | View only | Full access |
| Controlled drugs register | Full access | Full access |
| Deviations & CAPA Register | Log, edit, view, print/download | Log, edit, view, print/download + risk assessment + sign off as RP checked |
| Enquiries, quotes, invoices | Create & edit | Create, edit + delete (quotes: draft/sent/declined; invoices: draft/sent) |
| Orders | Create, edit, ship | Cancel, reinstate, delete once cancelled |
| Invoice → order conversion / reversion | — | Only role permitted |
| Purchase orders | Full access | Full access |
| Customers & suppliers | View / search only | Create, edit, delete |
| Due diligence, pricing rules, partner portal users | — | Full access |
| Partner applications & invites | — | Full access |
| Team management | — | Full access |
| Organisation settings, licences, terms, backups | — | Full access |
| Customer product list | — | Full access |
| Document repository | View / preview only | Upload, version, delete |
Status reference
| Available | Can be allocated to an order or moved to quarantine |
| Quarantine | Withdrawn from sale pending investigation |
| Expired | Past expiry date |
| Exhausted | Quantity on hand has reached zero |
| Open | Logged, not yet signed off by RP / License Holder |
| Checked off | Signed off by RP / License Holder — final, can't be reopened |
| Overdue | Past its due date and not yet checked off |
| Open → In progress → Closed | Set by hand on the parent deviation; flagged Overdue past its target date while not Closed |
| Draft → Sent → Accepted → Paid | Invoice progression (quotes stop at Accepted / Declined) |
| Pending → Shipped → Delivered | Normal progression; Cancelled is available while Pending |
| Invited → Awaiting validation → Pending approval → Active | Portal onboarding path (or Declined / Inactive) |
| Sale (default) · Destruction · Return to supplier · Write-off · Internal use · Other |
Reference numbers
Quotes, invoices, orders, and deviations each carry an auto-generated reference, sequential per organisation and never reused:
| Quote | QUO-000001 |
| Invoice | INV-000001 |
| Order | ORD-000001 |
| Deviation | DEV-000001 |
| CAPA | CAPA-000001 |
Business rules at a glance
- A product's storage condition is not cross-checked against a storage location's temperature range.
- A minimum-order surcharge line is added and removed automatically.
- A partner with any trading history can't be deleted — its status is set Inactive instead.
- Goods In cannot be created without a matching Supplier Invoice logged first.
- Stock is allocated FEFO (first-expiry-first-out) automatically when an order ships.
- Export destinations are blocked unless the customer is an active export customer with a validated country on file.
- A controlled-drug destruction entry requires a recorded witness.
- An MHRA alert can't be re-actioned once actioned.
- Converting an accepted or paid invoice to an order is Responsible Person / License Holder only.
- A deviation's due date is fixed automatically by severity — 5 days for Major, 30 days for Minor.
- Signing a deviation off as RP checked is one-way.
- Cancelling a Goods Out entry restores its quantity and deletes the entry outright.
- Shipping an order creates a real Goods Out entry for every batch it allocates.
- The Stock Movement Report covers at most 31 days in a single download.
Frequently asked questions
What is EasyWDA?
EasyWDA is compliance and stock-management software built for UK Wholesale Dealer's Authorisation (WDA(H)) holders. It tracks stock from goods-in to dispatch, keeps the compliance records a GDP inspection expects to see, and runs the commercial pipeline from customer enquiry through to a shipped order.
Does EasyWDA support controlled drugs (CD) record-keeping?
Yes. Organisations holding a CD Schedule 2–3 or 4–5 licence category get a Controlled Drugs register with an automatic running balance per drug and schedule, and every destruction entry requires a recorded witness before it can be saved.
How does EasyWDA handle a temperature excursion?
Every reading is checked automatically against its storage location's set range. An excursion opens a linked deviation and cross-references stock batches in that location against each product's own storage condition to flag which batches may have been affected, with a one-click way to move an affected batch into quarantine.
Can I trace a stock batch from receipt to sale?
Yes. Every batch has a Trace view showing its full lifecycle — the goods-in receipt, every order allocation, every goods-out removal, and its quarantine history — and stock is allocated first-expiry-first-out (FEFO) automatically when an order ships.
Does EasyWDA support deviations and CAPA tracking?
Yes. Deviations can be logged manually or created automatically from a temperature excursion, with due dates set automatically by severity. An optional CAPA (corrective and preventive action) workflow tracks status through to closure, and a CAPA Register lists every CAPA raised across the organisation.
Who can use EasyWDA within an organisation?
Three roles: Responsible Person, License Holder (identical permissions to the Responsible Person), and User. Day-to-day operation — stock, compliance logging, and sales — is open to any team member; organisation configuration and anything with regulatory weight is reserved for the Responsible Person or License Holder.
Can customers and suppliers access EasyWDA directly?
Yes, through a separate partner portal with its own smaller set of screens, where they can submit enquiries, complete due diligence, browse a tailored product list, and confirm purchase orders.
See it running on your own stock
Register your organisation and we'll set up your first products, storage locations, and team accounts.