Belt & RoastOperator access
Paste your admin token — or scan with another logged-in device.
Belt & RoastOperator access
Scan with a logged-in device to approve
Paste your admin token — or scan with another logged-in device.
Belt & RoastLocked
Enter your 6-digit passcode.
Open orders, soonest pickup first. Tap a status to advance it.
C-…) and tap Look up.One product, several grind×size options. Each line: Name = price,
e.g. Whole · 12oz = 18. Customers pick an option and pay now.
A preset is a named set of drinks shown for an event. Activate one to swap the whole drink menu in a tap, e.g. a market day with no Flan & Food. Bean bags stay available regardless of preset, and with no preset active the full menu shows.
Loading…
Drag a photo here or pick one. Large images are auto-shrunk in your browser (and EXIF/location stripped) before upload. JPG, PNG, WebP, GIF.
| Loading… |
Receipts, order-ready, and feedback texts. When the SMS gateway isn't wired, they queue here. Tap Copy, send from the shop phone, then Mark sent.
e.g. a 12oz bag every 2 weeks. When Square is connected, this also creates the Square plan so customers can self-enroll + auto-pay.
Post-pickup ratings + comments, auto-triaged.
Loading…
Enter a customer's phone or email to see points and redeem a reward at the counter.
For a customer who lost or switched devices. Mint a one-time link, then send or show it to them. Opening it logs that device into their card. Single-use, expires in 24h.
Loading…
Loading…
Money-in is confirmed by you (customer paid in person). Leave the wallet ID blank to mint a new wallet on a load.
Mint a funded code (the buyer paid). They redeem it at /wallet (no expiry, no fees).
Loading…
Loading…
Generate a one-time QR. Scan it with a phone or tablet to log in as owner on that device. For kiosks or devices without a camera, copy the link instead.
Scan with phone camera — or copy the link for a kiosk
Mint a one-time QR + link. The new person scans it on their phone to set up their own operator access (full shop, including taking payment). Single-use, expires in 24h.
Have them scan this with their phone camera
| Loading… |
Shown on the storefront pages (order, beans, stay-in-touch). Leave blank to hide.
Optional banner at the top of the storefront pages. Off by default (popup details live on social). Turn it on to announce your next date here; turning it off hides the banner without losing the text below.
Store both IDs once. The server auto-picks the right one based on its current Square environment (sandbox vs production). Get each from Square Developer dashboard → your app → Credentials → Application ID.
Force the storefront into sandbox mode for training or testing, even if the server is running in production. Going live still requires a server-level change — this only overrides down to sandbox.
The access token, location ID, and webhook key are secrets that can move money. They are stored in server config only (never the database, never shown again) and the token is verified against Square before saving. Re-saving the token rotates it. Leave a field blank to keep its current value.
From Square → Sandbox → Webhooks → your bnr.ktown.cloud subscription.
From Square → Production → Webhooks → your beltandroast.com subscription.
Setting credentials does not turn on real charges. Use Go live / test mode below to switch the store between test and live.
Switch the store between TEST MODE (sandbox — practice orders, no real charges) and LIVE (production — real customer cards are charged). No server login needed; the change takes effect right away.
A member shares their link; when a new friend's first order is picked up, both earn points.
Recent referrals
Controls the bean store (/shop). Flat rate added at checkout when a customer ships; optional free-ship over a cart total.
Default CA only — CA Cottage Food law forbids out-of-state shipping. Widen this only after a CDPH Processed Food Registration / licensed facility (see doc/BNR-COMPLIANCE-RESEARCH.md).
Buy carrier labels + auto-fill tracking from a paid ship order. The provider is swappable — orders keep whichever provider made their label, so you're never locked in.
📦 USPS pricing change — Jul 12, 2026. Until then, keep a single-bag shipment under 12 oz for the cheapest tier. From Jul 12, USPS drops the 4 oz/8 oz tiers — anything under 16 oz is one flat sub-1lb rate, so a heavier bag, better padding, or an insert card costs nothing extra. To capture it, weigh a real mailer and set the per-bag + packaging ounces (Settings → shipping) so the declared weight is accurate (a 250 g bag is ~9 oz; we currently over-declare at 18 oz).
Ship-from address (your sender)
Who can order from the full drinks menu (order-ahead). Beans are always open to everyone, no invite needed. Open = anyone. Invite only = only people who open your invite link on their device (the link carries a secret key; it unlocks + is remembered on that device). Closed = nobody yet (coming-soon screen). Enforced server-side, so it can't be bypassed.
Rotating the key instantly revokes every link you shared before. The key is never exposed on public pages.
The AI chat tab uses this key to call the language model. Stored server-side only — never shown after saving. Defaults to the server's built-in key if not set here. Only the owner can set this.