What is Velora?
Velora is a fully managed, white-label restaurant platform built by Codifyany. It gives your restaurant a branded online presence — with an online ordering system, table booking engine, and a clean admin dashboard — all deployed and maintained for you.
You don't need to touch any code, manage any servers, or deal with software updates. Codifyany handles the full technical stack. You focus on running your kitchen — Velora handles the rest.
Online Ordering
Customers order directly from your menu and pay via Stripe.
Table Bookings
Slot-based reservations with your full control over capacity.
Admin Dashboard
One place to manage orders, bookings, and refunds.
Automated Emails
Instant confirmations for customers and alerts for your team.
Velora is a white-label platform — your customers see only your restaurant's branding. Velora is never visible to them. Your domain, your logo, your colours.
Getting Started
Getting live with Velora takes a few days — not weeks. Here's what the onboarding process looks like from your first conversation with Codifyany to taking your first online order.
Initial Conversation
Send Us Your Assets
- Menu items with names, descriptions, and prices
- Logo (SVG or high-resolution PNG preferred)
- Brand colours (hex codes or a reference site)
- Your Stripe account email (or we can help you create one)
- Booking slot times and capacity per slot
- Preferred domain or subdomain for your site
We Build & Configure
Review & Go Live
Most restaurants are live within 3–5 business days of sending their assets, assuming Stripe onboarding is complete. Stripe verification can add 1–2 days on their end.
Online Ordering
Velora's online ordering system lets customers browse your menu, build a cart, and pay securely with a card — all from their phone or laptop, without calling in.
How it works for customers
- 1Customer opens the Order page — category tabs at the top let them jump straight to Starters, Fried Rice, Kottu, and so on.
- 2They browse items and tap "+ Add". Items with size options (e.g. Regular or Large) show a size picker. Items with add-ons (e.g. Fried Rice, Kottu) open a modifier modal where they can tick extras.
- 3Added items appear in the cart drawer (slides in from the right on desktop; floating bar at the bottom on mobile).
- 4When ready, they enter their name, email, phone, and any special requests, then tap "Pay".
- 5Stripe's secure checkout handles the payment. Apple Pay and Google Pay are supported on compatible devices.
- 6On successful payment, they receive an instant email confirmation with the full itemised order, selected add-ons, and pickup address.
- 7You receive an alert in your admin dashboard and an email — the order appears immediately.
Opening hours & order cutoff
Online ordering is only available during your configured opening hours. The system automatically closes for new orders 30 minutes before your kitchen closes — giving you time to finish existing orders cleanly.
- Outside opening hours — a closed banner is shown on the order page. Customers can see the next opening time but cannot add to cart or place an order.
- Within 30 minutes of cutoff — a "closing soon" warning appears so customers know ordering is about to end.
- All times are automatically adjusted for New Zealand daylight saving — no manual changes needed when clocks change.
Order statuses
Every order moves through a lifecycle that you control from the admin dashboard:
An 8% service charge is added at checkout on all online orders. This is displayed transparently to your customers — there are no hidden fees.
Menu management
Menu items, categories, and pricing are managed by Codifyany on request. To add, remove, or update items permanently, contact your support channel and changes are typically reflected the same day. For temporary availability changes (e.g. an item is sold out tonight), use the Menu tab in your admin dashboard — see the section below.
Table Bookings
Velora's booking system uses a slot-based model. You define available time slots and guest capacity — customers pick a slot and request a reservation. You approve or decline from your dashboard.
How it works for customers
- 1Customer opens the Bookings page and selects a date.
- 2Available slots for that date are shown — fully booked slots are hidden automatically.
- 3They enter their name, contact details, and number of guests, then submit.
- 4They receive an instant email confirming their request is pending review.
- 5Once you approve or decline, they get a follow-up email with the outcome.
Booking statuses
Managing your slots
Slots are configured during onboarding. Each slot has:
- A time (e.g. 12:00 PM, 6:30 PM)
- A maximum guest capacity for that slot
- Days of the week it appears (e.g. Fri–Sun only)
To change your available slots, times, or guest capacity, contact Codifyany support. Changes are applied the same or next business day.
Table bookings are free for customers — there is no payment taken at the booking stage. The 8% service charge only applies to online food orders.
Admin Dashboard
Your admin dashboard is the control centre for your restaurant. Accessible from any device, it gives you a real-time view of incoming orders and reservation requests. No technical knowledge required.
Logging in
Your admin area lives at /admin on your Velora domain. Access is protected with a secure login — credentials are set up during onboarding. Sessions use HTTP-only cookies and JWT authentication, so your dashboard stays safe even on shared devices as long as you log out when finished.
Never share your admin password. If you need to give a staff member access, contact Codifyany to set up a separate account.
Online Orders
The Online Orders tab is your live kitchen feed. It polls for new orders automatically and alerts you the moment a customer completes checkout.
Real-time polling
The dashboard silently polls the server every 10 seconds. You never need to manually refresh — new orders appear automatically as cards at the top of the list.
Chime & alert behaviour
When one or more orders arrive in New status, Velora triggers an audible chime. The chime repeats on a 4-second loop for as long as any unacknowledged New orders remain. As soon as all New orders are moved to Preparing (or beyond), the chime stops automatically — no manual dismiss button needed.
Alongside the chime, two visual signals fire:
- Tab title flash — the browser tab alternates between "🔔 New Order!" and your restaurant name until all New orders are acknowledged.
- Desktop push notification — a browser push notification appears showing the order number and total (requires you to grant notification permission the first time you open the dashboard).
Sound toggle & PWA persistence
A sound toggle sits in the dashboard header (bell icon with a slash when muted). Your preference is saved to localStorage, so it persists across browser restarts and PWA reinstalls — you won't have to toggle it off again every morning. Tab title flash and desktop push notifications are unaffected by the sound toggle and always fire when new orders arrive.
If you use Velora as a PWA on a tablet in the kitchen, grant notification permission once on first load. Notifications will continue to fire even when the screen is locked.
Order cards — compact view
Every order appears as a compact card in the list. Each card shows:
| Field | Example |
|---|---|
| Order number | #1042 |
| Customer name | Amal Fernando |
| Time placed | 2 min ago |
| Item count | 3 items |
| Order total | NZD 34.50 |
| Status badge | New Orders (green) · Preparing (amber) · Ready (blue) · Fulfilled (grey) |
| Primary action button | Context-sensitive: "Start Preparing" / "Mark Ready" / "Mark Fulfilled" |
Order detail modal
Clicking anywhere on an order card opens the full detail modal. The modal contains:
- Full item list — each line item with name, quantity, any modifiers or add-ons, and line subtotal
- Customer details — name and phone number
- Special instructions — any notes the customer added at checkout
- Order total breakdown — subtotal, 8% service charge, grand total
- Status timeline — timestamped history of every status change (e.g. "New → Preparing at 7:42 PM")
- Refund button — visible on all non-refunded orders; see Payments & Refunds for full details
Status pipeline & filters
The list defaults to showing New and Preparing orders at the top. Use the status filter chips to switch views. The full pipeline:
When moving an order to Preparing, you must first select a prep time — the customer receives this in their email so they know when to pick up.
| Status | What it means | Action that moves it forward |
|---|---|---|
| New Orders | Order placed, payment confirmed. Kitchen not yet notified. | Select prep time → tap "Start Preparing" |
| Preparing | Kitchen has acknowledged the order and is cooking. | Tap "Mark Ready" |
| Ready | Food is ready for pickup. | Tap "Mark Fulfilled" |
| Fulfilled | Order collected. No further action needed. | — |
| Refunded | Full or partial refund issued via Velora. Archived from active view. | — |
Moving an order to Preparing is what silences the chime. Make it the first tap when a new order appears — your kitchen knows, the chime stops.
The Menu tab lets you control what customers can currently order — without contacting Codifyany and without any code changes. Two independent availability layers exist: item availability and modifier (add-on) availability.
Item availability
Every menu item has an on/off toggle. When you toggle an item off:
- The item disappears from the customer-facing menu immediately — no page reload needed.
- Customers who already have it in their cart will see it marked as unavailable on checkout.
- In the admin list, the item is shown greyed out with an "Unavailable" badge.
- Toggle it back on at any time to restore it instantly.
Example — Chicken Devilled
You run out of Chicken Devilled mid-service. Toggle Chicken Devilled → off in the Menu tab. The item is immediately greyed out on the customer order page with an "Unavailable" message — customers cannot add it to their cart. After restocking, toggle it back on and it reappears on the live menu within seconds.
Modifier (add-on) availability
Certain menu categories have selectable add-ons that customers choose when ordering. Each add-on can be toggled independently — this is separate from item availability. You can keep a category fully available while disabling only a specific add-on that's out of stock.
When an add-on is toggled off:
- That specific add-on is hidden from the modifier selection at checkout.
- The category and all other add-ons remain fully available.
- The change takes effect immediately — no save button required.
Example — Kottu add-ons
Kottu has four add-on options: Substitute with String Hoppers (+$2), Add Cheese (+$3), Add Vegetable (+$4), Add Meat (+$4). You run out of cheese mid-service.
Toggle Add Cheese → off. Customers can still order Kottu and still choose any other add-on — only the cheese option disappears from their screen.
Every toggle fires an instant API call — there is no "Save changes" button. The moment you flip a toggle, the customer-facing menu reflects the change.
Bookings
The Bookings tab gives you a calendar-based view of all reservation requests. You confirm, suggest alternatives, or decline from here — the customer is notified by email automatically.
Calendar navigation
- The calendar opens in month view by default.
- Days that have bookings show a dot indicator — amber for days with pending bookings, emerald for days with only approved bookings.
- Click any day to load that day's booking list in the panel below.
- Use the left/right arrows to navigate between months.
- The Today button jumps back to the current month immediately.
- Past days are greyed out and non-interactive.
Booking list — sort order
Within any selected day, bookings are sorted by status priority, not submission time:
- 1Pending — always shown first, sorted by slot time ascending. These need your attention.
- 2Approved — shown next, sorted by slot time ascending.
- 3Declined — shown last, visually de-emphasised (lighter text, no action buttons).
Status pipeline & admin actions
| Status | Meaning | Admin action | Email triggered to customer |
|---|---|---|---|
| Pending | Booking submitted, awaiting your review. | Confirm, Suggest Alternative, or Decline | None yet — customer already got a "request received" email at submission |
| Confirmed | You confirmed the requested date and time. | Cancel (if needed) | Booking confirmed — date, time, party size, and restaurant address |
| Alt. Suggested | You proposed a different date or time. Awaiting customer response. | — (waiting) | Alternative time suggested — includes an accept link the customer can click |
| Alt. Accepted | Customer clicked the accept link and confirmed your alternative time. | — (terminal) | None — customer accepted via the link in the suggestion email |
| Rejected | You declined the booking. | — (terminal) | Booking declined — polite note with encouragement to request a different time |
| Cancelled | Booking was cancelled (by you or the customer). | — (terminal) | Cancellation confirmation sent |
Suggesting an alternative time
If the customer's requested slot is full but you can accommodate them at a different time, use Suggest Alternative instead of declining outright. Here's how it works:
- 1Open the booking and tap "Suggest Alternative".
- 2Pick a new date and time and add an optional note to the customer.
- 3The customer receives an email with your suggested time and a one-click accept link.
- 4If they click accept, the booking moves to "Alt. Accepted" and both parties are notified.
- 5If they don't respond, the booking stays in "Alt. Suggested" until you act on it.
Use "Suggest Alternative" instead of declining when you're simply full at that slot — it keeps the customer engaged and often converts to a confirmed booking at a slightly different time.
Reject and Cancel are final — there is no undo. If you accidentally reject a booking, the customer has already received the rejection email. Contact Codifyany support to manually re-open the booking if needed.
Booking detail panel
Clicking any booking card opens the detail panel — it slides in from the right on desktop and opens as a full-screen modal on mobile. The panel contains:
- Customer full name
- Email address
- Phone number
- Requested date and slot time
- Party size (number of guests)
- Special requests or dietary notes (if provided)
- Submission timestamp
- Current status badge
- Status history timeline — shows when each status change occurred
- Action buttons — Approve (green) and Decline (red), visible only on Pending bookings
Payments & Refunds
All payments are processed by Stripe — one of the world's most trusted payment platforms. Velora uses Stripe Connect so that funds settle directly into your restaurant's Stripe account.
How payments work
- Customer pays at checkout via Stripe's secure card form (supports all major cards)
- Stripe charges the customer's card and deducts its standard processing fee
- Velora's 8% service charge is deducted automatically from the order total
- The remaining balance settles into your Stripe account on Stripe's standard payout schedule
- You can view all transactions directly in your Stripe Dashboard
Full refunds
Full refunds can be issued from your Velora admin dashboard in a few taps:
- 1Open the Orders tab and find the order.
- 2Click the order card to open the detail modal.
- 3Click Refund — a confirmation prompt appears.
- 4Confirm the refund.
Optimistic UI & rollback
The moment you confirm a refund, the order card immediately shows Refunded status in the UI — this is an optimistic update made before the Stripe API call completes. If the underlying API call fails (e.g. a network error or insufficient balance on your connected account), the card automatically reverts to its previous status and an error toast appears. No manual action is needed — simply retry the refund once the issue is resolved.
How the reverse_transfer works
Velora uses Stripe Connect with destination charges. When a customer pays, Stripe creates the charge on the platform and immediately transfers the net amount to your connected restaurant account. When a full refund is issued via Velora, Stripe reverses the transfer — the funds are returned from your connected account balance to Stripe, and then refunded to the customer's original payment method. The 8% service charge is also reversed in full on a dashboard-initiated refund.
If your Stripe connected account has insufficient balance to cover the reversal, Stripe may debit your linked bank account. Ensure your payout schedule is set appropriately if you process high volumes of refunds.
Partial refunds
If one or more items in an order cannot be fulfilled (e.g. you've run out of an ingredient after the order was placed), you can refund just those items — without cancelling the whole order. This is handled entirely within the Velora dashboard:
- 1Open the order detail modal.
- 2Select a prep time (required — the remaining items will continue to be prepared).
- 3Tick the checkbox next to each item you cannot fulfil.
- 4Tap "Refund selected items & start preparing".
Velora calculates the refund amount automatically, processes it via Stripe, and sends the customer a partial refund email showing exactly which items were refunded. The remaining items move to Preparing status as normal.
A prep time must be selected before a partial refund can be issued — the order continues for the remaining items and the customer is notified with the estimated wait time.
Emails sent on refund
| Recipient | Email content |
|---|---|
| Customer | Refund confirmation — order number, refunded amount, and a note that funds appear within 5–10 business days depending on their bank |
| Admin | No email — you initiated the refund and can see the updated status in your dashboard |
Stripe payouts
Payout timing is governed by Stripe's standard schedule — typically 2 business days for NZ accounts. You can adjust your payout frequency (daily, weekly, monthly) in your Stripe Dashboard under Settings → Payouts.
Email Notifications
Velora sends automated emails at every key moment — so your customers are always informed and you never miss an incoming order or booking request.
Emails sent to customers
| Trigger | Email sent to customer |
|---|---|
| Order placed successfully | Order confirmation with full itemised summary, modifiers, and total |
| Order status → Preparing | "Your order is now being prepared" with estimated pickup time |
| Order status → Ready | "Your order is ready for pickup" |
| Full refund issued | Refund confirmation with amount and expected timeline |
| Partial refund issued | Partial refund confirmation — shows exactly which items were refunded and the refund amount |
| Booking request submitted | Booking received — pending review |
| Booking confirmed | Booking confirmed — date, time, party size, and restaurant address |
| Alternative time suggested | Alternative suggestion email with a one-click accept link |
| Booking rejected | Booking declined — polite note with encouragement to request a different time |
| Booking cancelled | Cancellation confirmation |
Admin alert emails
| Trigger | Alert sent to admin |
|---|---|
| New online order received | Instant alert with order number, items, and total |
| New booking request received | Instant alert with customer name, date, slot, and party size |
Admin alert emails are sent to the address registered during onboarding. To change your admin notification email, contact Codifyany support.
Pricing & Billing
Velora has three simple cost components — a one-time setup fee, a flat monthly service fee, and a per-transaction charge on online orders. No hidden costs, no long-term contracts.
One-time
Setup Fee
NZD 1,000
+ GST
Full self-branded website + configuration — menu, branding, Stripe, email, domain, and admin access. Includes 1 year free domain and business email.
Monthly
Service Fee
NZD 50
+ GST · cancel anytime
Hosting, uptime monitoring, security patches, backups, and support.
Per order
Service Charge
8%
of each online order
Only charged on successful online orders — displayed transparently at checkout.
Cancellation
You can cancel your monthly service at any time — no notice period required. Your platform remains active until the end of your current billing period. After cancellation, your site will be taken offline and your data retained for 30 days before deletion.
The 8% service charge is collected by Velora at the point of checkout. It is not a separate invoice — it is deducted automatically from each Stripe payment before settlement.
Support
Codifyany manages all hosting, maintenance, and technical issues on your behalf. If you encounter anything unexpected or want to make a change, we're here to help.
What we handle for you
- Server hosting and deployment infrastructure
- Security patches and dependency updates
- Uptime monitoring and incident response
- Backup and data recovery
- Menu, slot, and configuration changes (on request)
- Stripe Connect and billing questions
- Email deliverability and template updates
Getting in touch
Contact Codifyany
Use the contact form for all support requests, change requests, and billing questions. We typically respond within one business day.
For urgent issues (e.g. site down, payments not processing), mention it clearly in your message subject line so we can prioritise your request.
