the register, run right.
we set up the register right in your shop. real stock counts, real returns, real loyalty — your money in your account the same day, and it keeps ringing even when the wifi drops.
the register, the back-room, the regulars — one shop.
what the register looks like.
scan, total, take card. the count on the shelf goes down by one. the customer's points go up. if the internet drops mid-sale, the register keeps ringing and syncs when it comes back.
- Stripe Terminal at the counter — tap, dip, swipe, all native
- per-location stock — transfer between stores in two taps
- offline outbox — the sale keeps closing even when the wifi blinks
load. ring. back.
stock the catalog
products with prices, photos, SKUs, barcodes. set reorder points so the system tells you when to call the rep. add a second location and stock transfers two taps.
the register tap-to-pays
scan the barcode, total the cart, hand the customer the terminal. card runs on Junebug's own Stripe — payouts land in your account, not a Square middleman.
the regulars stay
every sale earns points. gift cards, promos, punch cards, referrals — all five reward shapes live out of the box. close out the day with a cash-drawer reconcile and a one-page report.
AI that writes for you — included.
Junebug drafts your product descriptions (snap a photo and it reads the color and material right off it) and your sale or new-arrival promos for Facebook and text — in your shop's voice, included, no add-on. you edit before anything goes out.
five rewards out of the box.
gift cards, promo codes, points, punch cards, referrals — all native, all tied to the same customer, all reportable. no bolt-ons.
offline that actually works.
when your wifi drops, the register keeps ringing. IndexedDB outbox holds the sales locally; when you reconnect, every transaction syncs in order. no lost sales, no manual re-entry.
real returns.
refund a card, restock the unit, claw back the points the customer earned on it — one button, three things, all consistent. end-of-day numbers stay clean.
144 features. Filter what you want to see.
This list updates the moment something ships. Status pills don't lie — if it says coming soon or waiting on, that's where we honestly are.
- shipped 2026-05-21liveStripe Terminal in-store reader
S700 / WisePOS E — tap, dip, swipe
- shipped 2026-05-21liveStripe Connect onboarding from settings
operator connects their own Stripe account from /junebug/settings/payments
- shipped 2026-05-21liveonline card checkout (Stripe Elements)
if you ship or sell off-site
- shipped 2026-05-22liveonline shipping orders (ship-to-customer)
pickup-only, ship-only, or both; flat fee, free-over threshold, branded 'shipped' email + tracking
- shipped 2026-05-22liveonline oversell protection
atomic stock decrement; if a race leaves a line short, auto-refunds and fails the order
- shipped 2026-05-22livestorefront search, categories, and sort
client-side search + category chips + featured/price/name sort on the public shop
- shipped 2026-05-22livecart drawer with variant picker
slide-in cart with thumbnails, qty stepper, variant pills, mobile sticky 'view cart' bar
- shipped 2026-05-20livebarcode scanning + product lookup
USB or bluetooth scanner, or just the camera
- shipped 2026-05-22livebarcode label printing (bulk + single)
select multiple products, print to an Avery 5160 or Dymo label printer with presets
- shipped 2026-05-21livemanual register discount / markdown
operator-applied % off or $ off at the register, distinct from promo codes
- shipped 2026-05-22liveemailed digital receipts after every sale
itemized receipt under your from-address with a portal CTA
- shipped 2026-05-22liveresend receipt to a different address
operator re-sends a receipt from sales lookup
- shipped 2026-05-22liveoffline register mode (IndexedDB outbox)
sales close when the wifi is down, sync when it's back
- shipped 2026-05-22liveconnectivity heartbeat indicator on the register
register shows online/offline status + pending-queue size
- shipped 2026-05-29just shippedauto-mode reader switching
test mode = simulator, live mode = real hardware
- shipped 2026-05-22liveinline 'add new customer' from checkout
type a name in the customer picker, one click creates the record mid-sale
- shipped 2026-05-22liveloyalty-points redemption as tender at the register
points balance pulled at checkout + redeemed as cash-equivalent against the remaining due — not just 'earn on sale'
- shipped 2026-05-22livestore-credit redemption as tender at register
existing balance drawn down alongside cash/card
- shipped 2026-05-28liveVIP-membership badge on the register checkout dialog
server-side membership discount applied automatically, with a read-only badge so the cashier sees why the total dropped
- shipped 2026-05-20livegift-card sell flow ('write this code on the card')
sell-and-mint with $25/$50/$100 presets, recipient + note, and a printable code reveal screen
- shipped 2026-05-22liveadd-to-cart confirmation toast + cart-button count pulse
subtle 'added to cart' feedback so shoppers don't double-tap
- shipped 2026-05-22liveorder-confirmation success sheet (pickup vs paid)
differentiated post-checkout screen for 'order placed' vs 'reserved · pay at pickup'
- shipped 2026-05-22liveserver-side shipping-fee guard
shipping fee is computed on the server, never trusted from the client — same no-oversell discipline as stock
- shipped 2026-05-28liveserver-resolved VIP discount on every sale
the % is re-derived from the customer's stored discountBps at complete-sale time so the register can't lie about the amount
- shipped 2026-05-22liveidempotent offline-sale replay (client-key dedup)
partial unique index on business + client-key — a re-sent offline sale returns the original order instead of double-charging
- shipped 2026-05-22livecached catalog snapshot for offline-cold-boot
a register opened first-time offline still has products to ring up
- shipped 2026-05-20livecustom (non-catalog) line item at the register
ring up a named item like 'Alterations' with a typed-in price, no catalog row required
- shipped 2026-05-20livetax-rate field at the register (per-shop, remembered)
operator types a sales-tax % once and every cart applies it on the discounted subtotal — server-trusted in completeSale
- shipped 2026-05-29just shippedAR Department of Finance sales-tax auto-fill button
type your city, looks up the combined state + county + city rate from the AR DFA roster, and fills the tax-rate field in one tap — remembers the last city
- shipped 2026-05-30liveshop-canonical sales tax (origin + auto-pull, applied register + online)
tax origin (city/county) saved on the shop instead of each cashier's device. flip the auto-pull switch and the AR DFA rate stays current; pickup orders use the store's origin, shipping orders compute by ship-to city (AR-only, destination-sourced); shipping outside AR is tax-free. server-trusted at both /api/junebug/orders and /api/junebug-shop/[slug]/checkout — mig 0399.
- shipped 2026-05-22live'Only N left' low-stock urgency badge on the public storefront
the last units move twice as fast when a tile shows 'Only 3 left' in your brand color
- shipped 2026-05-21livecustomer-set pickup note on the checkout page
'how + when to come pick up' text the operator writes once — surfaces at checkout and on the order-confirmation screen for pickup orders
- shipped 2026-05-22liveserver-side product-photo pipeline (auto-rotate / EXIF strip / 1200px / WebP)
phone uploads land web-friendly with no setup; served from /api/junebug/photo with a year-long immutable cache
- shipped 2026-05-20liveproducts with photos, SKUs, barcodes
- shipped 2026-05-20liveproduct variants (size / color / multi-option)
per-variant SKU + price override; stock tracked per variant
- shipped 2026-05-22livemulti-location stock counts (per-store display)
every product tile shows the current store's count and the chain-wide total
- shipped 2026-05-22livededicated /junebug/locations management room
add a store, rename one, set the per-location address — distinct from the products + transfers rooms
- shipped 2026-05-22livestock transfers (with partial-receive)
draft → sent → partial receive lands stock at destination while the rest stays in transit
- shipped 2026-05-22livereorder points + auto-drafted purchase orders
system flags when low; draft a PO grouped by supplier in one click
- shipped 2026-05-22livesupplier / vendor directory
name, contact person, email, phone, notes — drives the buy-by-vendor view
- shipped 2026-05-22livevendor CSV import (catalog ingestion)
parses a supplier spreadsheet, dry-run preview, applies in bulk with one-click undo
- shipped 2026-05-20live'don't track stock' per-product toggle
gift items + services bypass stock counts entirely so they never read as out-of-stock
- shipped 2026-05-22liveauto-minted barcodes (atomic per-shop counter)
items missing a barcode get one minted + persisted on first label print; counter is atomic so two simultaneous runs never collide
- shipped 2026-05-22livebulk-select products in the catalog (for label print runs)
'Print labels' toolbar enters select-mode with a 'Select all' and a count badge on the action button
- shipped 2026-05-22livecancel-transfer returns unreceived stock to source
cancelling a sent transfer puts whatever hasn't been received back on the origin shelf — no quantity ever evaporates
- shipped 2026-05-22livepartial purchase-order receive
receive what came in, leave the rest open, finish the PO when the next box arrives
- shipped 2026-05-22liveper-location reorder point + suggested order quantity
each store sets its own 'remind me at' threshold and an optional override on how many to order — a downtown shop and a mall shop never share a reorder rule
- shipped 2026-05-22live'make default' location switch
promote any store to be the default in two clicks; the old default is demoted automatically
- shipped 2026-05-22liveper-location stock grid inside the product editor
set on-hand qty + reorder point + reorder qty for every store in one form (per variant, per location) — no jumping between rooms
- shipped 2026-05-22livelast-store + default-store archive guards
can't archive your only store, and the default has to be reassigned before its old holder can be removed — operator-error-proof
- shipped 2026-05-22livein-tab-bar current-store switcher
dropdown in the Junebug tab bar that flips the operating store everywhere at once — register, products list, purchasing all re-point in one click; auto-hides for single-store shops
- shipped 2026-05-22liverestock-or-not toggle on returns
operator decides at return time whether the unit goes back on the shelf or stays off — damaged goods don't get re-sold by accident
- shipped 2026-05-31just shippedAI-drafted product descriptions (vision-aware)
included with the app — type a product name, get a polished first-draft description in your shop's voice; if a photo is attached, the model reads it for color / material / details. operator-editable before saving — never auto-publishes
- shipped 2026-05-31just shippedpolished multi-location storefront
the in-tab location switcher + per-store storefront and register flows got a polish pass — switching stores now updates the catalog, register, and reports in one click without losing your place
- shipped 2026-05-20livegift cards
sell online or in-person, redeem at the register
- shipped 2026-05-22livepromo codes (in-store + storefront)
percent or dollar off, one-time or stackable, same engine at register and online
- shipped 2026-05-22liveBOGO promo type
buy one, get the cheapest unit in the cart free — alongside percent and dollar-off codes
- shipped 2026-05-22livepromo minimum-subtotal gate
a code only applies above a configurable bill size
- shipped 2026-05-22livepromo usage cap (max-uses + used-count tracking)
the code locks out at the cap; 'X used / Y' rendered on the promo list
- shipped 2026-05-22liveloyalty points
earn per dollar, redeem on a future sale
- shipped 2026-05-22liveconfigurable points earn rate + redemption value
N points per $1 + cents per point, tunable per-shop; operator can also flip the whole program on/off
- shipped 2026-05-22livepunch cards
buy 10, get 1 free — digital, no paper to lose
- shipped 2026-05-22livereferral program
public /junebug-ref/[code] landing page
- shipped 2026-05-28livememberships with auto-applied discount at register
VIP tiers, perk bundles; standing % discount applied automatically at checkout
- shipped 2026-05-28livemembership auto-billing + dunning
daily cron retries failing cards up to 3 attempts then cancels
- shipped 2026-05-28livemembership lifecycle emails
branded transactional emails on signup, renewal, payment-failed
- shipped 2026-05-28livededicated memberships catalog room
/junebug/memberships — define tiers (name, price, interval, discount %)
- shipped 2026-05-28liveper-customer membership panel in the customer dialog
enroll / cancel a VIP membership without leaving the customer card
- shipped 2026-05-28livelayaways
hold a unit for the customer while they pay it off over time
- shipped 2026-05-28livelayaway reserves stock at start (release on cancel)
on-hand decrements at the location the moment a layaway opens — reserved units can't be double-sold
- shipped 2026-05-28livelayaway cancel — refund-vs-forfeit choice on the deposit
operator picks at cancel time; depositRefunded recorded for the audit trail
- shipped 2026-05-28livelayaway take-a-payment (cash / card / other) with auto-finalize-on-payoff
operator takes installments against the balance, picks tender per payment; when the last cent lands the layaway flips to 'paid off' and finalizes as a regular sale
- shipped 2026-05-28livein-dialog layaway payment ledger
every installment with kind / method / date / amount — refund rows render with a minus sign and amber tint
- shipped 2026-05-28livemember-initiated cancel-at-period-end on a VIP membership
perks survive the rest of the cycle; UI shows 'ends {date}'
- shipped 2026-05-28livepast-due VIP membership state + dunning surface
discount pauses while the card is failing; customer card shows 'payment failed — retrying'
- shipped 2026-05-28livemembership cadence picker (monthly / quarterly / semi-annual / annual)
bill every 1 / 3 / 6 / 12 months — not just monthly
last updated 2026-05-31
the register, the back-room, the regulars — one shop.
tell us about your business and we'll get you set up.