Run every part of your shop. Keep every record connected.

Checkout & payments

Move quickly at the till without separating the sale from the patient, prescription, stock batch, payment, or staff member behind it.

Prescription-gated checkout

Controlled products cannot finalize without an eligible patient and active PT33 context.

Live allowance checks

The server rechecks validity, product scope, prior dispensing, and remaining quantity at payment.

Batch-exact selling

Every controlled line leaves a named sellable batch, with last-stock conflicts stopped before payment.

Cash, card & Thai QR

The server validates cash, card, Thai QR, and enabled custom methods before it records the sale.

Held sales & safe retry

Blocked sales stay recoverable, while repeated payment requests return the original result instead of charging twice.

Custom, immutable receipts

PorThorOS numbers each receipt and locks its sale and print history. Add your logo, tax details, Wi-Fi, Google review QR, and return offer.

Patient & PT33 workflow

Bring Cannabox MD intake, consent, clinician review, prescription status, and dispensary history into one private handoff.

Signed patient intake

One-use links collect patient details through an expiring, tamper-resistant public flow.

English & Thai forms

Patients and staff can complete the same core workflow in English or Thai.

Consent & private uploads

Typed consent, signatures, and validated documents stay private and access-controlled.

Branch check-in

A branch kiosk creates a signed handoff into patient intake without exposing tenant records.

Patient records & history

Authorized teams can search and review patient details, consent, PT33, and immutable sales history.

Customer groups & loyalty

Set checkout notes and discounts by group, award points on completed sales, and keep the applied benefit with the receipt.

PT33 review queue

Compliance staff can review intake, verify originals, request more information, reject, or approve a PT33.

Compliance & audit

Capture the evidence while the work happens, then review the same source ledger instead of rebuilding the month from memory.

PT27 source ledger

Received controlled stock carries its supplier, purchase, product, batch, quantity, and source-document trail.

PT28 outbound ledger

Completed controlled sales produce source-derived outbound rows tied back to the patient, purpose, product, and quantity.

Reasoned sale decisions

Every passed or blocked finalization keeps stable reason codes and the rule context used for the decision.

Private review workspaces

Role-scoped queues protect patient documents, clinician verification, and branch records from broad access.

Spreadsheet-safe exports

Authorized users can export working PT27/PT28 ledgers with protected CSV values and auditable downloads.

Immutable audit trail

Sensitive reads, decisions, retries, settings changes, prints, refunds, and stock movements leave sanitized audit events.

Inventory & purchasing

Follow each product from supplier evidence to branch room, count, transfer, sale, or approved adjustment.

Typed product catalog

Save incomplete products as hidden drafts, then publish them with generated identifiers, category-specific attributes, private documents, and branch pricing.

Supplier & batch evidence

Keep licence, COA, GACP, expiry, lot, and source details with the stock they support.

FEFO stock selection

Sellable stock can be selected by earliest expiry while reserved and unavailable quantities stay excluded.

Direct & purchase-order receiving

Receive stock directly or against a purchase order, in stages or all at once. The server checks source documents and posts each batch movement.

Counts, loss & conversion

Run blind stock counts, approve differences, record loss, track rooms, and preserve conversion traceability.

Controlled branch transfers

Request, approve, dispatch, receive, and resolve variances with batch-exact movements at both branches.

Inventory history & CSV

Filter batch movements by product, document, reason, employee, and date, open the source record, or export the branch history.

Pricing & tax

Keep commercial rules centralized and let the server resolve the final branch price, deal, cost, and tax at checkout.

Price profiles

Create reusable retail pricing profiles with revision-safe updates.

Branch overrides

Set branch-specific prices without creating a second product catalog.

Quantity tiers

Define explicit quantity breaks for products that change price by amount.

Deals & line discounts

PorThorOS calculates scheduled and customer-group offers inside the server quote. Staff can add a line discount or free sample with a recorded reason.

Tax rules

Apply configured tax treatment during quoting and preserve the resolved amounts with the sale.

Supply & transfer pricing

Keep supply books and immutable cost-plus franchise transfer pricing separate from retail overrides.

Sales, refunds & shifts

Give the counter a clean daily rhythm from staff login and opening cash to receipt lookup, refund review, variance, and close.

Sales history

Search branch-scoped sales by date or receipt and open the original receipt and audit detail.

Reviewed refunds

Refund complete sale lines through an approval flow with manager PIN protection and safe retry.

Controlled return handling

Regulated stock is not silently returned to sellable inventory; eligible accessories return to the original batch.

Shift opening

Open or resume a device-bound shift with an opening cash ledger and reasoned variance.

Cash movement ledger

Record validated cash in and cash out alongside tender totals throughout the shift.

Atomic shift close

Close once, preserve the report snapshot, and keep immutable history for later review.

Reports & analytics

Read performance from transaction and stock ledgers, with the branch and date scope each role is allowed to see.

Sales performance

Track net sales, refunds, discounts, average sale, daily trend, category mix, and tender breakdown.

Inventory position

Review stock on hand, value, movement, aging, and branch-level inventory signals.

COGS & margin

Analyze historical cost snapshots and gross margin without depending on today’s catalog values.

Customer patterns

See privacy-conscious visit and spend aggregates without exposing patient identity in analytics.

Staff performance

Compare sales, discounts, refunds, and workload using branch-scoped employee metrics.

Branch comparison

Authorized owners and investors can compare performance across branches from one report workspace.

Strain demand

Read historical strain mix and demand from the values captured with each completed sale.

Multi-branch operations

Keep every person, device, branch, and setting inside the right operating boundary as the business grows.

Guided first-POS setup

Create the first branch, employee, and POS device, then generate its pairing link from one setup checklist.

Device activation

Pair, name, assign, revoke, and reactivate POS devices for a specific branch.

PIN login & lockout

Use hashed staff PINs with device scope, duplicate protection, and failed-login lockout.

Custom roles & branch access

Start with role presets or create a role with exact POS and back-office permissions, then assign each employee to their branches.

Employee lifecycle

Create staff, assign roles and branches, update access, and protect against unsafe self-demotion.

Operating settings

Manage branches, payments, receipts, employees, devices, roles, and other daily operating settings.

Operational alerts

Route low stock, blocked sales, count and cash variances, shift close, transfers, and ready-report notices to Telegram or an in-app queue without patient data.

Finance & data exports

Record monthly branch or shared costs, download the audit CSV, or export a package of branch, role, finance, and audit records.

See the connected workflow

Bring one real operating day. We’ll trace every record.

Walk through stock receiving, one patient sale, shift close, and the resulting reports with your team.