Trapyfy

Dispensary Module

Member-based distribution: eligibility, legal quantity and member credit enforced on every channel. Built for licensed associations and dispensaries that must know who received what, when, and under which rules.

In plain words

The Dispensary module is for places that must obey the law about who may receive how much. It checks the member, checks the limit, and writes down what was handed over — at the bot, the till and the kiosk, every time.

The module sits on top of your normal catalogue, clients and orders. It does not create products or clients; it consumes them. A member is a client record with a date of birth, a status and an allowance. Every checkout on the bot, at the POS or on a kiosk is checked against the member's status, the organization's quantity limits and, where used, the member's credit balance, and the result is written to ledgers you can report on.

What it does

  • •Requires a verified member before checkout
  • •Enforces the age and membership rules you configure
  • •Keeps an append-only record of what each member received

What it does not do

  • •Certify that your configured limits are legally correct for your market
  • •Verify identity documents automatically
  • •Hold member funds

The module enforces the limits you configure. It does not tell you what those limits should be. Set them from your licence and your market's rules, and record who approved them; the Reports page keeps the history of what was in force on each date.

Setup order

Do these in order; each later step needs the one before it.

1

Categories, products, clients

Create your product categories and products as usual, and add the people who will become members as clients. Members are always registered from an existing client.

2

Enable the module

Open Modules → Module Store, click the Dispensary card, and enable it. The sidebar gains Modules → Dispensary with Members, Potency, Reports and Settings. See the Module Store page.

3

Configure settings

One scrollable page: membership rules, quantity limits, member cap, equivalency defaults, restoration. Click Save; the button shows Saving… and returns to normal when done. There is no separate confirmation.

4

Set potency

Give every product you will sell through the module a grams-per-unit value, or a category default. Products without one block checkout.

5

Register and verify members

Register each member from their client record, then verify them. For Malta, complete the evidence steps first.

Settings, top to bottom

Modules → Dispensary → Settings, or the Settings button in the module's dialog.

Membership rules

Minimum age to become a member; what happens once a membership expires (Block checkout, or Warn only); and the organization's market, Spain or Malta. Choosing Malta adds evidence requirements at verification time: registry check, residency and intake must each be marked complete before a member can be verified.

Quantity limits

Repeatable rows, each with an id, a scope, grams and an optional maximum age. Scope is transaction (per basket), day, month or category. Day and month limits are cumulative: every order that day or month counts, not just the current basket. Use the optional max age to apply a tighter limit to younger members.

Member cap

The maximum number of members the organization may hold, and which statuses count toward it (Pending, Active, Suspended, Expired). Leave the maximum blank for no cap.

Equivalency defaults

How a product converts to grams when it has no value of its own. Checkout looks for a variation-level value, then a product-level value, then the category default, then the organization-wide default; if none resolves, checkout blocks with UNKNOWN_POTENCY. Category defaults start empty on a fresh organization.

Restoration

Whether cancelling or refunding an order restores the grams it consumed from the member's allowance. Two toggles, Restore allowance on cancel and Restore allowance on refund. This is an anti-gaming policy: with both off, a cancelled order still counts against the allowance.

A worked example. An organization in the Malta market with two quantity limits, 7 g per day and 50 g per month, and a member cap of 500 counting all four statuses. A member who has already taken 5 g today and adds 3.5 g to a basket is blocked: the day limit is cumulative. The same basket tomorrow goes through, provided the month total stays under 50 g.

Next: Members, Potency, Checkout & Reports.