Appointments,
199 AED/ month | Includes 1 user | +49 AED / extra seat
A complete booking + client-CRM system for salons, clinics, studios, gyms, and any service business. Resources, services, schedules, online booking page, intake forms, memberships, packages, gift cards, loyalty: the lot.
- Resources (staff, rooms, equipment) + services with duration + price
- Public booking page at your own URL lets customers book themselves
- Group classes via capacity > 1 on a resource
- Memberships, packages, gift cards, loyalty points
- Intake forms with e-signature, auto-attached before/after appointments
- No-show rules + automated reminders
Whatever can be booked.
Resources are anything customers reserve: a stylist, a treatment room, a yoga teacher, a tennis court. Each has a weekly schedule (split shifts supported), date-specific exceptions (closed for the holiday, half-day on Friday), and a capacity (capacity > 1 enables group classes).
- Per-resource weekly schedule with split shifts
- Date-specific overrides (closed / different hours)
- Capacity > 1 for group classes + courts
- Per-service prices per resource (Maria charges 200, Ana charges 150)
Your customers, self-service.
Each company gets a tokenised public URL at `/book/:companyId/:key`. Customers pick a service, see real availability across your resources, book, and pay deposit if you require one. No accounts, no friction.
- Per-company tokenised public URL
- Pick service → real availability across resources → confirm
- Optional deposit collection (Stripe / PayTabs / Telr)
- Client-facing rebrand: your logo, your accent colour
A real till for service businesses.
Complete a reservation through the checkout flow: service price + tip + wallet credit + loyalty redemption + gift card. Outputs payment record, posts to Accounting, decrements package/membership sessions, accrues loyalty. Refund flow reverses the whole stack atomically.
- Tip, wallet, loyalty redemption, gift card on one checkout
- Atomic refund reverses payment + accrual + redemption
- Per-staff commission % captured at checkout
- No-show + late-cancellation rules with auto-charge
Recurring revenue + session bundles.
Membership plans (monthly / quarterly / annual) auto-renew AND auto-bill — the nightly renewal cron raises an Invoice keyed `MBR-RENEW-{subId}-CYC-{n}` for every due subscription, idempotent per cycle so re-runs are no-ops. Packages are one-shot bundles (10 sessions, valid 90 days). Both feed the checkout: when a member books, the session is auto-deducted from their bundle.
- Renewal cron raises Invoice per cycle (no manual chasing of recurring revenue)
- Package purchases with validity windows + expire-with-breakage journal
- Service-restricted bundles (this package only covers facials)
- Per-client wallet + loyalty + gift-card balance on one view
Wallet, gift card, loyalty — all balanced in the GL.
Every cash-equivalent flow posts the matching journal. Wallet top-up → DR Cash / CR Customer Deposits (2210). Wallet refund (cash-out) drains the liability cleanly. Gift card sold → liability; redeemed → revenue; reservation-cancellation refund reverses the original redeem journal. Loyalty redemption posts as a contra-revenue expense so net revenue stays accurate.
- Wallet refund / cash-out endpoint (manager-gated + audit-stamped)
- Gift card refund (reservation cancellation) reverses the redeem journal
- Per-payment-method PaymentReceived splits at checkout (cash + card + wallet + gift card)
- Discount-code marketing-cost gross-up (optional per-code)
Per-branch P&L without per-line tagging.
Multi-site operators (salon chains, fitness studios) wire each `BookingLocation` to its own income + cost-centre accounts in the CoA. The reservation invoice handler resolves: BookableResource override → Location override → Product/default. So every branch's revenue lands on its own P&L line automatically — no per-reservation editing.
- Per-branch incomeAccountId routes revenue automatically
- Per-branch costCentreAccountId for branch overhead attribution
- Resource-level override still wins when set (per-staff cost centres)
- Single-site tenants leave both null — falls through to default revenue
Built for repeat customers.
Intake forms (consent, allergies, medical history) auto-attach before the appointment + collect e-signature. Loyalty points accrue on every visit. Birthday cron fires a "happy birthday" message. Reactivation cron pings clients who haven't visited in 60 days. The whole Fresha-style client lifecycle, scripted.
- Intake forms with conditional logic + signature capture
- Loyalty tiers (bronze / silver / gold) with per-tier perks
- Birthday + reactivation + intake-before-trigger crons
- Per-client messaging thread (SMS + email when adapter wired)
Everything Fresha does. For 199 AED/month.