Module 03 · Close plan and up
A loyalty program you own, even where the POS has no loyalty hook.
Members, points and consent proofs live in BudAlly, not in the register. Every redemption is matched to the POS receipt and the Metrc sale, and every reward has to pass your state's rule pack before it can publish. Email, push and wallet passes come first; SMS runs only on your own registered number.
By BudAlly
Published
01 · NO POS HOOK NEEDED
Redemption works even where the POS has no loyalty hook.
The store sets up a few fixed manual discounts in its POS once. At the counter, the budtender validates the member's reward code in the staff app, which holds the points, applies the matching discount and keys the code into the ticket. Codes are single-use, bound to one member and one store, and expire 15 minutes after they are issued. Where a POS lets a partner attach a single-use member reward directly, BudAlly applies it there after approval, under your own credential.
02 · MATCH-BACK
Every redemption is matched to a POS receipt and a Metrc sale.
Points stay held until a receipt carrying the code arrives, and are returned if none does. A receipt with a BudAlly reward discount but no valid code goes to the fraud queue with the register login. A discount that doesn't equal the reward keeps the points held for a manager, and a code found on more than one receipt goes to a manual queue, never picked automatically.
03 · STATE RULES
Rewards pass your state's rule pack before they can publish.
The pack blocks rewards that give cannabis away free, blocks sweepstakes and prize mechanics, applies a per-line price floor where a state sets one, and keeps points off excise and sales tax. A reward never changes a purchase limit, and a bonus whose threshold sits near a limit is held for review. A rule the pack doesn't hold returns UNKNOWN and fails closed, and a check that starts failing after a pack update pauses the reward.
04 · LINE-AWARE REWARDS
A cart reward is spread across lines without breaking a floor.
A cart-level reward is allocated line by line, largest headroom first, and capped at the total headroom. Any remainder is not issued as credit; the member sees "up to $X applies to this cart". Where a floor depends on wholesale cost and that cost is missing, the reward does not apply to that line.
05 · CONSENT AND PRIVACY
Every channel has its own consent, with proof behind it.
Consent records are append-only: channel, text version, source screen, time and age affirmation. Every marketing control starts unchecked, and joining the program is separate from agreeing to messages. Campaigns go by email, push, wallet-pass alerts and in-app banners, with a 10% holdout by default; lift is reported as "not significant" when the interval includes zero. Segments under 8 members can't be sent to.
06 · IDENTITY AND FRAUD
One account per verified ID, and nobody redeems their own reward.
At the member's first verified purchase, a keyed hash of the ID is computed and the ID number is discarded; a second account with the same hash goes to a merge queue. Redemptions are velocity-limited per member. An employee's own account can't be validated in their session or on their register, and manual point adjustments need two different people.
07 · LIABILITY
A points-liability journal your CPA can trace.
Outstanding points are valued net of a breakage estimate drawn from your own history, split by license and tax regime, with a monthly rollforward. The journals are proposed for maker-checker approval and never post automatically. The method is set out for your CPA to confirm.
08 · WALLET
Stored value next to points, in BudAlly.
The wallet runs in BudAlly alongside members and points, and comes with your subscription. Every top-up, spend and refund is ledgered against the order and the receipt. Payouts, limit increases and unfreezes always need two different people.
What it never does
- No sweepstakes, raffles, contests or spin-to-win mechanics, in any state.
- Points have no cash value and never convert into wallet money.
- No SMS from BudAlly numbers; SMS runs only on the store's own registered 10DLC number and provider.
- Medical status is never a segment, campaign filter, export column or analytics dimension.
- No coalition or marketplace points; a balance redeems only in the state where it was earned.
- Point adjustments, journals and money movements are proposed, then approved by a second person; none happen automatically.
BUILT TO CONNECT WITH
- BLAZE
- Cova
- POS CSV / SFTP exports
- Email-in POS exports
- Metrc
- Aeropay
- CanPay