Prescription-gated checkout
Controlled products cannot finalize without an eligible patient and active PT33 context.
Move quickly at the till without separating the sale from the patient, prescription, stock batch, payment, or staff member behind it.
Controlled products cannot finalize without an eligible patient and active PT33 context.
The server rechecks validity, product scope, prior dispensing, and remaining quantity at payment.
Every controlled line leaves a named sellable batch, with last-stock conflicts stopped before payment.
The server validates cash, card, Thai QR, and enabled custom methods before it records the sale.
Blocked sales stay recoverable, while repeated payment requests return the original result instead of charging twice.
PorThorOS numbers each receipt and locks its sale and print history. Add your logo, tax details, Wi-Fi, Google review QR, and return offer.
Bring Cannabox MD intake, consent, clinician review, prescription status, and dispensary history into one private handoff.
One-use links collect patient details through an expiring, tamper-resistant public flow.
Patients and staff can complete the same core workflow in English or Thai.
Typed consent, signatures, and validated documents stay private and access-controlled.
A branch kiosk creates a signed handoff into patient intake without exposing tenant records.
Authorized teams can search and review patient details, consent, PT33, and immutable sales history.
Set checkout notes and discounts by group, award points on completed sales, and keep the applied benefit with the receipt.
Compliance staff can review intake, verify originals, request more information, reject, or approve a PT33.
Capture the evidence while the work happens, then review the same source ledger instead of rebuilding the month from memory.
Received controlled stock carries its supplier, purchase, product, batch, quantity, and source-document trail.
Completed controlled sales produce source-derived outbound rows tied back to the patient, purpose, product, and quantity.
Every passed or blocked finalization keeps stable reason codes and the rule context used for the decision.
Role-scoped queues protect patient documents, clinician verification, and branch records from broad access.
Authorized users can export working PT27/PT28 ledgers with protected CSV values and auditable downloads.
Sensitive reads, decisions, retries, settings changes, prints, refunds, and stock movements leave sanitized audit events.
Follow each product from supplier evidence to branch room, count, transfer, sale, or approved adjustment.
Save incomplete products as hidden drafts, then publish them with generated identifiers, category-specific attributes, private documents, and branch pricing.
Keep licence, COA, GACP, expiry, lot, and source details with the stock they support.
Sellable stock can be selected by earliest expiry while reserved and unavailable quantities stay excluded.
Receive stock directly or against a purchase order, in stages or all at once. The server checks source documents and posts each batch movement.
Run blind stock counts, approve differences, record loss, track rooms, and preserve conversion traceability.
Request, approve, dispatch, receive, and resolve variances with batch-exact movements at both branches.
Filter batch movements by product, document, reason, employee, and date, open the source record, or export the branch history.
Keep commercial rules centralized and let the server resolve the final branch price, deal, cost, and tax at checkout.
Create reusable retail pricing profiles with revision-safe updates.
Set branch-specific prices without creating a second product catalog.
Define explicit quantity breaks for products that change price by amount.
PorThorOS calculates scheduled and customer-group offers inside the server quote. Staff can add a line discount or free sample with a recorded reason.
Apply configured tax treatment during quoting and preserve the resolved amounts with the sale.
Keep supply books and immutable cost-plus franchise transfer pricing separate from retail overrides.
Give the counter a clean daily rhythm from staff login and opening cash to receipt lookup, refund review, variance, and close.
Search branch-scoped sales by date or receipt and open the original receipt and audit detail.
Refund complete sale lines through an approval flow with manager PIN protection and safe retry.
Regulated stock is not silently returned to sellable inventory; eligible accessories return to the original batch.
Open or resume a device-bound shift with an opening cash ledger and reasoned variance.
Record validated cash in and cash out alongside tender totals throughout the shift.
Close once, preserve the report snapshot, and keep immutable history for later review.
Read performance from transaction and stock ledgers, with the branch and date scope each role is allowed to see.
Track net sales, refunds, discounts, average sale, daily trend, category mix, and tender breakdown.
Review stock on hand, value, movement, aging, and branch-level inventory signals.
Analyze historical cost snapshots and gross margin without depending on today’s catalog values.
See privacy-conscious visit and spend aggregates without exposing patient identity in analytics.
Compare sales, discounts, refunds, and workload using branch-scoped employee metrics.
Authorized owners and investors can compare performance across branches from one report workspace.
Read historical strain mix and demand from the values captured with each completed sale.
Keep every person, device, branch, and setting inside the right operating boundary as the business grows.
Create the first branch, employee, and POS device, then generate its pairing link from one setup checklist.
Pair, name, assign, revoke, and reactivate POS devices for a specific branch.
Use hashed staff PINs with device scope, duplicate protection, and failed-login lockout.
Start with role presets or create a role with exact POS and back-office permissions, then assign each employee to their branches.
Create staff, assign roles and branches, update access, and protect against unsafe self-demotion.
Manage branches, payments, receipts, employees, devices, roles, and other daily operating settings.
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.
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
Walk through stock receiving, one patient sale, shift close, and the resulting reports with your team.