Metro Moto

Complete user manual · Version 1.3 · Updated August 2026 · All roles covered

📖 Getting started

Introduction

Metro Moto is a web-based shop management system for motorcycle dealerships and repair centers. It covers four main areas of daily operation:

🛒

Point of Sale

Sell parts and accessories over the counter with a fast, searchable cart.

🔧

Services

Create and track repair and maintenance work orders from intake to payment.

🧰

Service Packages

Build reusable bundles of labor + parts (e.g. "Change oil + filter") and apply them to work orders in one click.

📦

Inventory

Manage your parts catalog, stock levels, pricing, and supplier links.

📈

Reports

Monitor revenue, mechanic productivity, and inventory health over any date range.

The system supports multiple branches and a fine-grained role system so each team member sees only what they need to do their job.

🔑 Access control

Roles & permissions

Every user in Metro Moto is assigned one of the following roles. What you see in the sidebar and what actions you can perform depends on your role.

Role Who it's for Dashboard POS Services Inventory Reports Admin
Owner Shop owner — full access
Admin Operations manager
Manager Floor / branch manager
Cashier Counter staff view only view only
Mechanic Workshop technician own jobs
Staff General shop staff view only
💡
Custom permissions

Owners and Admins can customize what each role can do from Settings → Role permissions. The table above shows the default configuration.

🔐 Authentication

Logging in

Standard login

  1. Open your shop's Metro Moto URL in a web browser.
  2. Enter your email address and password, then click Log in.
  3. If your account has two-factor authentication (2FA) enabled, you will be asked to enter a code from your authenticator app.
  4. You are taken to the Dashboard after successful login.

Forgotten password

  1. On the login page, click Forgot your password?
  2. Enter your email address and click Email password reset link.
  3. Open the email you receive and click the reset link (valid for 60 minutes).
  4. Enter and confirm your new password, then click Reset password.

Logging out

Click your name or avatar at the bottom of the sidebar (or top-right on mobile), then select Log out.

⚠️
Shared computers

Always log out when using a shared POS terminal or computer. Sessions remain active until explicitly logged out or the browser is closed.


📊 Feature

Dashboard

The Dashboard gives you a live summary of what is happening in your shop right now. It is the first page you see after logging in.

Date range filter

The summary cards, sales chart, and performance panels reflect the selected date range. Use the Today, Week, or Month shortcuts, or open the displayed date range to choose custom From and To dates and click Apply range.

KPI cards

CardWhat it shows
Net salesPaid service revenue plus POS sales in the selected range, after mechanic commissions and sourced-item cash returns.
Service revenueRevenue from completed services in the range, with the number completed.
POS salesNumber of POS transactions and total revenue from over-the-counter sales.
ExpensesApproved expenses in the range. This card appears only for users allowed to view expenses.

Net sales chart

The main chart plots net sales over the selected period and shows the daily average. Hover over the chart for exact dated amounts.

Customer motorcycles

The doughnut chart summarizes active customer motorcycles. Toggle between Make and Make & model to see the largest group and percentage breakdown; smaller groups are combined as Other.

Services status panel

A live count of current work-orders by status — not filtered by date. Use this to see at a glance how many bikes are still in the shop:

Recent activity

A merged feed of the latest services and POS sales, ordered most-recent first. Each row shows the activity, channel, status, and amount.

Mechanic performance

A ranked list of all mechanics by revenue generated in the selected range, with a proportional bar and job count.

Low stock alerts

The low-stock panel shows items currently at or below their minimum level and links to Inventory. It is not affected by the dashboard date range.

🛒 Feature

Point of Sale

The POS screen lets cashiers and managers sell parts and accessories over the counter. The layout has a search panel on the left and a cart on the right.

🔑

Required role: Cashier, Manager, Admin, or Owner.

Step 1 — Find an item

  1. Click in the large search box (it is focused automatically when the page loads).
  2. Type any part of the item's name, SKU, part number, or compatible motorcycle model. Results appear instantly below — no need to press Enter.
  3. Each result row shows a thumbnail, name, SKU, stock quantity, and selling price.
📷
Barcode scan-to-cart

The search box also works as a barcode scanner input. Point a USB barcode scanner at an item — it types the code and presses Enter automatically. On an exact barcode or SKU match, the item is added straight to the cart (or its quantity is incremented if already there), a green flash confirms the addition, and focus returns to the search box so you can scan the next item immediately. If no match is found, a "Scan not found" dialog shows the scanned code.

Step 2 — View item details (optional)

Click the item name to open a details modal showing brand, category, stock, compatibility, and description. Click Add to Cart directly from the modal, or close it and use the Add button on the list row.

Click the thumbnail to open a full-screen image carousel for items that have photos.

Step 3 — Build the cart

  1. Click the Add button on any search result to add it to the cart.
  2. Use the + and buttons in the cart to adjust quantity. You cannot add more than the available stock.
  3. Click the trash icon to remove a line from the cart.
  4. To start over, click the Clear button at the top-right.
⚠️
Minimum selling price

If an item has a minimum selling price set in inventory, the cart will show a warning if the line's unit price drops below it. The sale can still proceed, but the warning flags it for a supervisor to review.

Step 4 — Add customer details (optional)

Click Customer details to expand the customer section. Fill in the customer's name, phone, email, and any notes (motorcycle model, plate, etc.). This is optional for walk-in sales but recommended for record-keeping.

Step 5 — Apply a discount

Enter a peso amount in the Discount field in the totals area. The total updates immediately.

Step 6 — Choose payment method and complete the sale

MethodWhat to enter
CashEnter the Tendered amount (what the customer hands you). The change due is shown automatically.
GCashEnter the GCash reference number from the customer's payment confirmation.
CardNo additional input needed — just select Card and the checkout button becomes active.
Bank transferEnter the bank transfer reference number.

The green Complete Sale button is disabled until all requirements are met. A hint message above the button explains what is still needed. When ready, click Complete Sale — the sale is recorded and stock is deducted automatically.

A green success banner appears at the top of the page for 6 seconds after a successful sale, confirming the sale number. The cart is automatically cleared and ready for the next transaction.

🧾 Feature

Sales / Invoices

The Sales / Invoices page, indented below Point of Sale in the sidebar, is the searchable history of completed POS transactions. Use it to retrieve an invoice after checkout instead of searching through the activity feed.

Finding a sale

Search by invoice number, customer, payment reference, SKU, or item name, then narrow the list by payment method and date range. Select a row to expand its items or open the full sale detail.

Sale detail

The detail page shows the sale number and date, cashier and customer information, every item and quantity, subtotal, discount, final total, and payment details. Inventory links let authorized users open the related item record. Historical invoices remain available even when an item is later deactivated.

🔧 Feature

Services

Services are repair and maintenance work orders. A work order tracks everything from intake to completion — the motorcycle, customer, assigned mechanic, parts used, labor cost, and payment.

🔑

View services: Cashier, Manager, Admin, Owner. Create & manage: Manager, Admin, Owner. Update own job status: Mechanic.

Service statuses

Every service moves through these statuses:

Pending → received, not yet started   Ongoing → being worked on   Completed → finished   Cancelled → will not proceed

Creating a new service

  1. Go to Services in the sidebar, then click New service.
  2. Customer & motorcycle: Type the customer's name, mobile number, or plate number in the search box. Select them from the dropdown — plate-number matches show the plate in a highlighted badge with the motorcycle details, and selecting one auto-fills both the customer and motorcycle fields. If they have motorcycles on file, pick the correct one. If not, expand Register a new motorcycle and fill in the make, model, year, and plate number.
  3. Assign a mechanic from the dropdown (optional but recommended).
  4. Fill in the Service title (e.g. "Full tune-up"), Description, Date received, and Estimated completion date.
  5. Enter the Odometer reading in kilometers (optional).
  6. Enter the Labor cost for the job.
  7. Click Create service. You are taken to the service detail page.

Adding parts, custom tasks, and labor

  1. On the service detail page, find the Inventory items used section.
  2. Click Add item, search by name or SKU, and select the part. You can also use a barcode scanner — scan a barcode in the search field and the item is added automatically on an exact match.
  3. Set the quantity and unit price. The subtotal is calculated automatically, and stock is deducted immediately.
  4. Need to bill something that isn't a stocked part (e.g. a specialty task or outsourced work)? Click Add custom task instead, enter a description and price, and choose its commission effectNone, Add, or Deduct — controlling whether it affects the assigned mechanic's commission.
  5. Repeat for all parts and tasks. The Grand total (labor + custom tasks + inventory items + any applied packages − discount) updates in real time in the Pricing panel.

Editing service details, discount & warranty

The service's own edit form covers the customer/motorcycle, mechanic, status, dates, labor cost, discount, warranty period (in days), and internal notes. Warranty period is measured from the completion date — the resulting expiry date and a live Within Warranty / Warranty Expired / No Warranty Set badge show in the At a glance panel.

⚠️
Changing labor cost or discount requires a reason

These are money-sensitive fields — if you change either one, you must pick a reason (e.g. Price adjustment, Wrong input, Customer discount, Warranty adjustment, or Other with a note). The reason is stamped onto the activity log entry as a critical update so it's easy to audit later — see Activity log.

Updating service status

On the service detail page, use the Status dropdown to move the work order through the workflow. Mechanics assigned to a job can update the status of their own jobs. Managers and above can change any job's status.

Recording a payment

  1. On the service detail page, scroll to the Payment section.
  2. Enter the cash tendered and click Record. If the amount exceeds the remaining balance, the change to give is calculated and shown instantly; if it's less, a partial-payment note shows the balance that will remain. The server always clamps the recorded payment to the outstanding balance, so it never goes negative.
  3. The payment status updates to Partial or Paid depending on the balance, and a green "Fully paid" confirmation appears once the balance reaches zero.

Applying a service package

If you have predefined service packages set up (see the next section), you can apply one to a work order in a single click. On the service detail page, click Apply package, search for the package by name, and confirm. The package is billed as its own “Packages applied” line on the work order (labor + parts for an itemized package, or the flat price for a fixed-price one) rather than being merged into the service's own labor cost. Its parts are still added to the items table for stock tracking (stock is reserved and deducted when the service is completed or fully paid), but they aren't charged a second time. A labelled block describing the package is appended to the service's description so the history is preserved even if the package itself is changed later.

Marking a service complete

  1. On the service detail page, click Mark complete.
  2. Confirm in the dialog. Completing a service deducts any pending inventory, locks the work-order from further edits (except by owners, admins, and managers), and stamps the completion date.
  3. If a mechanic was assigned with a commission rate, the commission is recorded automatically — visible later under Mechanics → Commissions.

Inspection photos

On the service detail page, click Inspection Photos to open the photo dialog. Take a photo with your phone's camera or upload existing images — no details are needed at upload time. Open any photo to page through them in a slider (arrow keys or on-screen arrows) and add or edit a short note for it (e.g. "Worn brake pad — recommend replacement"). Photos can be deleted from the slider as well.

Every photo attached to a work order is visible to that customer in the customer portal, giving them clear, photographic proof of what was inspected and why a repair is recommended.

Linked back jobs

If a return visit was ever opened against this work order, the At a glance panel lists every linked back job with its status, so you can see the full history of a job — including any warranty return — from the original service page.

Deleting a service

Managers, admins, and owners can delete a service from its detail page (trash icon, top right). Deleting restores any stock that had been deducted for its inventory items, so your stock counts stay accurate.

Service list filters

The services index page lets you search (service number, customer, or plate) and filter by status, mechanic, payment status, and date range to quickly find the jobs you need.

💡

Mechanics assigned the View assigned services only permission can only see their own jobs — other work orders are hidden from them.

↩️ Feature

Back jobs & warranty

A back job is a return visit — the customer brings a motorcycle back after a completed service because the same problem recurred or something wasn't right. The Back Jobs module (sidebar → Back Jobs, indented under Services) tracks the complaint, the inspection, the warranty decision, any parts and labor, and the payment — all linked back to the original work order.

🔑

View & manage: Owner, Admin, Manager, Staff. Approve a warranty-covered back job: Owner, Admin, Manager only.

⚠️
Only against completed work orders

A back job can only be opened for a service that has reached Completed status. You select the original work order when creating it, and the customer + motorcycle are carried across automatically.

Warranty decision

Every back job carries a warranty decision that controls what the customer is charged:

DecisionWhat it means
Pending inspectionDefault on a new back job — the cause hasn't been assessed yet.
Approved (warranty)The shop accepts responsibility. Labor is forced to ₱0 automatically; parts may still be charged if some aren't covered.
Rejected (chargeable)Not a warranty issue — the customer pays for labor and parts. A rejection reason is required on the edit form.
Partially coveredA mix — some labor/parts covered, the rest billed. Coverage notes (what's covered vs. chargeable) are required on the edit form to explain the split.

Statuses

A back job moves through: ReportedInspection neededPending approvalApproved (warranty) / Rejected (chargeable)In progressCompletedClosed.

Creating a back job

  1. Go to Back Jobs in the sidebar and click New back job.
  2. Select the original (completed) work order. The customer and motorcycle fill in from it.
  3. Record the customer complaint — what went wrong on the return visit.
  4. Optionally set the date returned (defaults to today), reassign the mechanic, and add inspection findings / root cause as you diagnose.
  5. Click Create. A back-job number is generated (e.g. BKJ-20260613-0001).

Adding parts and labor

  1. On the back-job detail page, use Add item to attach inventory parts — search by name or SKU, set quantity and unit price. Stock is deducted immediately, exactly like a service.
  2. Need to bill something that isn't a stocked part (e.g. a specialty repair task or an outsourced job)? Add a custom task line instead — enter a description and a price directly, with no inventory deduction.
  3. Set the labor charge. If the decision is Approved (warranty), labor is held at ₱0.
  4. The total charge (labor + parts + custom tasks) updates as you go.

Each item and custom task line also carries a commission effectNone (doesn't touch the mechanic's commission), Add (adds to it), or Deduct (subtracts from it).

⚠️
Every part, task, and charge change needs a reason

Adding or removing an item or custom task always prompts for a reason. Changing the labor charge or parts charge on the edit form additionally requires picking one (e.g. Price adjustment, Warranty adjustment, Manager approved, Other) — these are money-sensitive fields, so every change is stamped as a critical update in the Activity log.

Manager approval

A back job whose decision is Approved (warranty) or Partially covered must be approved by a manager (or Admin/Owner) before it can be Closed. The approval stamps who signed off and when, and is shown on the detail page. Staff can log and work back jobs but cannot approve them.

Mechanic commission

Unlike a normal service, a back job only generates a mechanic commission when the warranty decision is Rejected (chargeable) — a warranty-covered repair doesn't cost the shop a commission on top of the free labor. When it applies, the commission uses the mechanic's snapshotted commission rate and shows as Pending until the back job is completed and fully paid, then Earned — the same eligibility rule used for regular service commissions.

Recording payment

For chargeable or partially-covered jobs, enter the cash tendered in the Charges & payment panel and click Record — the same change-calculation and partial-payment preview used on services applies here. The payment status derives automatically — Unpaid, Partial, or Paid — from how much has been paid against the total charge.

Status history

The detail page's Status history panel lists every recorded change to the back job (who made it, when, and what fields changed) — a quick audit trail without needing to open the full Activity log.

List & filters

The Back Jobs index shows summary cards (total, approved, rejected, partially covered) and lets you search by back-job number, original service number, or customer, and filter by status, warranty decision, mechanic, and date range.

📦

Deleting a back job restores any stock its parts had deducted, so your inventory counts stay correct.

🧰 Feature

Service Packages

Service packages are reusable bundles of labor + inventory items that you can apply to a service work order in one click — perfect for recurring jobs like Change oil, Tune-up, or Brake service. Building them once saves you from re-entering the same lines on every job, and it keeps your prices and parts consistent across the shop.

🔑

View packages: any role with the View packages permission. Create & manage: Owner, Admin, Manager (any role with Manage packages).

Pricing types

Each package has one of two pricing types — chosen when you create it:

Browsing packages — tiles & list

The Service Packages page has two layouts; use the toggle in the filter row to switch.

The view choice survives filter changes, "Clear filters", and pagination — pick once and the page remembers it.

Creating a package

  1. Go to Service Packages in the sidebar, then click New Package.
  2. Enter a Package name (e.g. "Change oil + filter"), an optional Description, and an optional Category (used for grouping/filtering, e.g. "Oil service").
  3. Pick a Pricing type — Itemized or Fixed price (see above).
  4. Enter the Labor charge in pesos.
  5. Optionally upload a Tile image (JPG, PNG, or WebP — up to 4 MB). This image fills the lower half of the package's tile and helps staff recognize the package at a glance.
  6. Leave Active checked so the package shows up in the service "Apply package" picker.
  7. Click Create Package. You're taken to the detail page where you can add parts.

Adding parts to a package

  1. On the package detail page, click Add Item in the Included Parts / Items section.
  2. Search the inventory by name or SKU and pick the part.
  3. Set the quantity and unit price (defaults to the item's selling price). The subtotal updates automatically.
  4. Click Save. The line appears in the items table; the package total recalculates if the package is itemized.
  5. Repeat for every part the package should include.

You can edit or remove lines at any time from the same table. Removing a package's items doesn't affect any service work orders the package was previously applied to — the items on those services are independent copies.

Editing a package

The package detail page also has an edit form at the top. From there you can update the name, description, category, pricing type, labor charge, and Active flag — and replace or remove the tile image (tick Remove current image on save to clear it).

Applying a package to a service

This is where packages pay off in everyday work. On any service work-order detail page, click Apply package, search for the package, and confirm. The system will:

The service stays fully editable afterwards — the package contributes its line, then you can tweak quantities, prices, or labor on the specific job without touching the package definition. Removing an applied package takes its labor and parts back off the bill.

Package usage report

From the Service Packages page, click Reports to see how often each package has been applied within a date range, broken down into labor revenue, parts revenue, and grand total. Useful for identifying which packages are paying off and which aren't being used.

💡

Deactivate (uncheck Active) instead of deleting a package when you want to retire it but keep its usage history intact for reports.

📅 Feature

Appointments

The Appointments module (sidebar → Appointments, calendar icon) lets customers reserve service slots in advance and staff manage the schedule. Each booking captures a customer + motorcycle + service type for a specific date and time.

Booking statuses

StatusMeaning
PendingJust created, awaiting staff confirmation.
ConfirmedStaff acknowledged the slot. The customer is expected to show up.
RescheduledThe date/time was changed after confirmation. Automatically set when staff edit the time on a confirmed booking.
CancelledTerminal. Optional reason captured for the audit trail.
CompletedTerminal. The work was done — typically set after the service was performed.
No-showTerminal. Customer did not arrive at the scheduled time.

Creating a booking

  1. Open the Appointments page and click New booking.
  2. Pick the customer. The motorcycle dropdown narrows to that customer's bikes.
  3. Pick a service package from your catalog, or type a free-text service type (e.g. "Tire change").
  4. Set the date and time.
  5. Optionally pre-assign a mechanic.
  6. Capture the customer concern (symptoms / notes from the customer) and any internal staff notes.
  7. Click Create booking. A booking number is generated (e.g. BKG-20260604-0001).

Calendar view

From the Appointments page, click Calendar to switch from the table view to a calendar. Three modes:

Use Prev / Today / Next in the toolbar to navigate. Bookings are colour-coded by status; click any booking to open its detail page.

Confirming, cancelling, completing

On a booking's detail page, the Actions panel shows the available transitions:

Editing the date or time of a Confirmed booking automatically moves it back to Rescheduled so the customer can be informed.

🔒

View appointments permission is required to see the list and calendar; Manage appointments is required to create, edit, or change status.

📋 Feature

Service queue

The Queue page (sidebar → Queue, list icon) is the live shop-floor board. Three swimlanes sit side by side — one per queue type — and each card walks through the workflow until it's complete.

Queue types

QueueUsed for
Walk-inCustomer showed up without an appointment.
AppointmentCustomer kept a scheduled booking. Pre-fills the customer, motorcycle, and (if set) mechanic from the booking.
PriorityVIP, urgent, or escalated jobs that should jump the line.

Workflow statuses

Every card walks through the same five-step workflow:

Adding to the queue

  1. Click Add to queue.
  2. Pick the queue type:
    • Walk-in or Priority — pick the customer + motorcycle directly.
    • Appointment — pick from today's confirmed bookings; the form auto-fills customer / motorcycle / mechanic.
  3. Optionally assign a mechanic and add notes.
  4. Click Add. The card lands in the Waiting status of the chosen queue.

Moving cards through the workflow

💡
Tracking shop-floor time

The board records both started_at (first time the card hit "In progress") and completed_at. These power future reports on average bay time per job.

🔒

View queue permission is required to see the board; Manage queue is required to add cards, change status, or remove cards.

📦 Feature

Inventory

The inventory module is your parts and accessories catalog. It controls what items appear in POS search results, what parts can be added to service work orders, and which items trigger low-stock alerts.

🔑

View inventory: Cashier, Staff, Manager, Admin, Owner. Create & edit items: Manager, Admin, Owner.

Adding a new item

  1. Go to Inventory in the sidebar, then click Add item.
  2. Fill in the name and optional part number. The SKU is optional — leave it blank and the system auto-generates one from the brand and name (e.g. MOTUL-7100-20W50). If you type your own SKU it's kept as-is. Either way it must be unique within your organization.
  3. Optionally enter a barcode (used by the Scan items workflow) and a location (e.g. "Shelf A3, Bin 12") to find the part on the floor. Like the SKU, a barcode must be unique within your organization.
  4. Select a category and brand. Create these first under Catalog → Categories and Catalog → Brands if needed.
  5. Set the unit of measure (pcs, set, liter, etc.).
  6. Enter cost price, selling price, and optionally a minimum selling price (the floor below which the POS shows a warning).
  7. Set the current stock quantity and a minimum stock level for low-stock alerts.
  8. Optionally, fill in compatible model, compatible year, and a description — these help cashiers identify the right part in POS search.
  9. Click Save. The item is now available in POS search and can be added to service jobs.

Uploading item images

On the item edit page, scroll to the Images section and upload one or more photos. The first image is set as the thumbnail shown in POS search results. You can change the primary image by clicking Set as primary next to any photo. Images can be clicked in the POS to open a full-screen carousel.

Duplicating an item

To create a new item based on an existing one, click the Duplicate button (copy icon) on any item row in the inventory list or tile view. The "Add item" form opens pre-filled with the source item's details (name, part number, category, brand, supplier, description, etc.). Fields that must be unique — SKU, barcode — are cleared, and pricing and stock are reset to zero so you can fill in the correct values for the new item.

Editing and deactivating items

Click any item on the inventory list to open its edit form. To stop an item from appearing in POS or service forms without deleting it, uncheck Active. Inactive items remain in historical records but cannot be added to new sales or services.

Stock levels

Stock is automatically deducted when an item is sold via POS or added to a service work order (or back job). You can also adjust quantity directly on the edit form for quick corrections.

For deliveries, returns, and write-offs, the cleaner way is a stock movement via the Scan items tool (below): every stock-in / stock-out records a reason and a before/after snapshot so you keep an audit trail of why the count changed. Stock-in reasons are received, return, and correction; stock-out reasons are sold, used, damaged, lost, correction, and other.

⚠️
Low stock alerts

When an item's quantity falls to or below its minimum stock value, it appears in the Dashboard low-stock panel and in the Reports → Low stock section. Set realistic minimums so you have enough lead time to reorder.

Filtering, searching, and sorting the inventory list

Use the search bar and category / brand filters at the top of the inventory page to quickly find items. Multi-word searches match item details; prefix an unwanted word with a minus sign (for example, oil -gear) to exclude matching items. The list shows current stock, selling price, and status at a glance.

Column headers are clickable to sort the list — click once for ascending, again for descending. The active sort column shows an arrow indicator; other columns show a faint sort icon on hover. The default sort is by item name ascending.

Physical inventory count sheet

Click Download Count Sheet to export the currently filtered inventory list as a CSV. It includes item identity, location, unit, system quantity, and a blank Actual Count column for a physical stocktake. Apply search, category, or brand filters before downloading if you only want part of the catalog.

Barcode scanning (Scan items)

Click Scan items in the sidebar to open the scan modal from any page. Point your device camera at a product barcode — or type a barcode / SKU and press Enter. The modal has three modes:

If a scanned code isn't in inventory, the modal offers to Create new item (pre-filling the barcode) — except in Stock Out mode, where you can't remove stock for an unknown product.

Stock forecast

From the Inventory page, open the Stock forecast view to see which items are predicted to run out, based on recent sales + service usage. Each row shows on-hand quantity, average daily usage, estimated days left, the predicted run-out date, and a suggested reorder quantity. Items are graded:

StatusMeaning
CriticalPredicted to run out within the days-of-cover threshold (or already at/below minimum stock).
WarningRunning low soon — getting close to the threshold.
OKWell stocked for the foreseeable period.
No usageNo recent demand, so no run-out can be predicted.

The threshold (days of cover) comes from your organization default, but any item can override it via the Forecast days of cover field on its edit form — overridden rows are flagged. The number of items currently forecast as low also appears as a red badge on the Inventory sidebar item.

🚚 Feature

Stock-In

Stock-In, indented below Inventory, records a supplier delivery as one traceable document with multiple item lines. Use it for purchase receipts; use the Scan items modal for a quick single-item correction or return.

🔑

View: users who can view inventory. Create, edit, confirm, and delete drafts: users who can manage inventory.

Recording a delivery

  1. Open Inventory → Stock-In and click New Stock-In.
  2. Enter the delivery date, optional supplier, supplier reference or invoice number, and notes. Duplicate supplier/reference combinations are flagged.
  3. Search for items, add each delivered line, and enter quantity and purchase cost. Review the calculated average cost and choose whether to keep, use the suggested, or set a custom selling price. If a product is missing, authorized users can create a basic inventory item without leaving the form.
  4. Choose Save as Draft, review the saved document, then confirm it when the delivery is final.
⚠️

Drafts do not change stock. Confirmation posts every line to inventory, updates weighted average and latest purchase costs, and records the stock movements used by financial reporting. Confirmed documents are read-only; only drafts can be edited or deleted.

⚖️ Feature

Stock Adjustments

Use Inventory → Stock Adjustments for a traceable correction to one item's balance. Choose Stock In or Stock Out, select the item, enter the quantity, and choose Damaged, Lost, or Correction as the reason. You may also add a reference number and notes.

Save as Draft records the document without changing inventory. Record Adjustment, or confirming a saved draft, posts the movement and records the balance before and after. Confirmed adjustments are read-only.

↩️ Feature

Return Items

Use Inventory → Return Items to record one or more items returned by a customer or sent back to a supplier. Select the return type and matching customer or supplier, add an optional reference and reason, then add each item with its quantity and refund amount.

For each line, choose whether it should be restocked. A confirmed customer return adds restocked items to inventory; a confirmed supplier return removes its items from inventory. Drafts do not change stock, and confirmed returns are read-only.

👤 Feature

Customers

The Customers module stores your customer contact information and their registered motorcycles. Customer records are used when creating service work orders and can be attached to POS sales for tracking purposes.

🔑

View customers: Cashier, Mechanic, Manager, Admin, Owner. Add & edit: Cashier, Manager, Admin, Owner.

Adding a new customer

  1. Go to Customers in the sidebar, then click Add customer.
  2. Fill in the customer's name and optionally their mobile number, email, and address. The mobile field is optional — not every customer wants to share a number.
  3. Click Save customer.

Registering a motorcycle for a customer

  1. Open the customer's profile page (click their name in the customer list).
  2. Click Add motorcycle.
  3. Enter the make (e.g. Honda), model (e.g. CBR 150), year, and plate number.
  4. Click Save motorcycle.

A customer can have multiple motorcycles. When creating a service, you choose which motorcycle is being brought in.

Transferring motorcycle ownership

When a customer sells a bike to someone else, you can transfer it without losing history:

  1. Open the original owner's customer profile and find the motorcycle in the Motorcycles table.
  2. Click the transfer button (arrows icon) next to the active motorcycle.
  3. In the modal, search for and select the new owner (must be a customer in the same branch).
  4. Click Transfer bike. The original record is marked "Transferred" and a fresh copy is created under the new owner.

The original owner's service history stays linked to the retired record — nothing is lost. The motorcycles table shows transferred bikes with a Transferred badge and a link to the new owner.

Customer profile

The customer profile page shows all their registered motorcycles (including transferred ones) and their full service history — every work order ever created for that customer, with dates, status, and amounts paid.

💵 Feature

Mechanic commissions

The Commissions page (sidebar → Commissions, banknotes icon) is a per-mechanic earnings ledger. Each row represents one service the mechanic was assigned to with a commission rate — the row is created automatically when the service is created, and its eligibility state changes as the service progresses.

How commissions are generated

When you assign a mechanic to a service and that mechanic has a commission rate configured on their profile, a commission row is recorded for the service. You don't need to do anything manually — the ledger fills itself. The commission is calculated on the job's labor (including the labor portion of any applied packages); parts are excluded.

If a branch has a minimum daily commission, the daily reconciliation compares each mechanic's eligible job commission with that guarantee. When the job total is lower, a daily adjustment tops it up to the configured minimum. The report links each total to its contributing services and back jobs so the amount can be audited.

💡

The commission rate is locked in when the mechanic is assigned to the service. Updating a mechanic's rate later applies only to new services — it never rewrites the commission on jobs they were already assigned to.

Eligibility statuses

StatusMeaning
PendingService is still in progress or not fully paid. The commission is projected but not yet owed.
EarnedService is completed and fully paid. The commission is now owed to the mechanic and can be marked paid.
⚠️
Pending commissions can't be paid out

You can only mark earned rows as paid. A service must reach Completed status and have a zero outstanding balance before its commission becomes earned.

Summary totals

The page header shows totals for the active filter set: total count, pending amount, earned amount, paid amount, and unpaid amount. These respect every filter you apply, so you can quickly answer "how much do I owe Mike for last month?" by filtering by mechanic + date range.

Filters

Marking commissions paid

  1. Find the earned, unpaid row(s).
  2. Click Mark paid on a single row to pay just that one, or click Mark all paid at the top to pay every unpaid + earned row matching the current filters.
  3. The system stamps the row with the current timestamp and records who marked it paid.
💡
Bulk payout tip

Filter by mechanic + date range, then click Mark all paid. This is the fastest way to close out a payroll period for one mechanic.

💸 Feature

Expenses

The Expenses module (sidebar → Expenses, banknotes icon) lets you track business outflows — rent, utilities, parts purchases, supplies, and anything else the shop spends money on. Expenses go through an approval workflow so managers can review costs before they count in financial reports.

🔑

View: Cashier, Mechanic, Staff, Manager, Admin, Owner. Create & edit: Mechanic, Staff, Manager, Admin, Owner. Approve / reject: Manager, Admin, Owner.

Expense statuses

StatusMeaning
DraftJust created, not yet submitted for review.
PendingSubmitted and waiting for approval.
ApprovedAccepted — counts toward financial reports and Profit & Loss.
RejectedDeclined by a manager. A rejection reason is recorded.
CancelledWithdrawn by the submitter or an admin.

Recording an expense

  1. Go to Expenses in the sidebar and click New expense.
  2. Select an expense category (e.g. Utilities, Rent, Office Supplies). Categories are managed under Catalog → Expense Categories.
  3. Fill in the title, amount, date, payment method (cash, GCash, bank transfer, card, cheque, or other), and optional reference/OR number.
  4. Optionally link a supplier, a related work order, and add a description or notes.
  5. Upload one or more receipt images (up to 5 MB each) if you have them — click any receipt thumbnail afterward to view it full-size.
  6. Click Save. The modal returns you to the current filtered list after saving. The expense is created in Draft status.
💡
Instant approval

Users with the approve expenses permission see an Approve immediately checkbox on the create form — tick it to skip the pending step and record an already-approved expense.

Approving or rejecting

On the expense detail page, managers (or anyone with the approve expenses permission) see Approve and Reject buttons. Rejecting requires a reason. Only approved expenses count in financial reports.

Due dates, accruals, and payments

An approved expense can be tracked before it is fully paid. Set a due date and record one or more payments from the detail page; the page shows paid and outstanding amounts and identifies unpaid, partially paid, paid, and overdue obligations. If a payment was entered incorrectly, an authorized user can reverse it without deleting the expense history. Expense obligations and payments are scoped to the active branch.

List & filters

The Expenses index shows summary metrics and a filterable table. Filter by one or more categories, status, payment method, person who incurred it, supplier, and date range. Click Export CSV to download the filtered list.

🛍️ Feature

Sourced items

Sourced items (sidebar → Sourced Items, indented under Expenses) track parts purchased from external suppliers for a customer's service job — e.g. a mechanic buys a specific part from another shop because you don't have it in stock. The module records the cost, markup, and links everything back to the work order.

🔑

View: Cashier, Mechanic, Staff, Manager, Admin, Owner. Create & manage: Mechanic, Staff, Manager, Admin, Owner. Approve: Manager, Admin, Owner. Sell below cost: Owner, Admin only.

Lifecycle

A sourced item moves through these stages:

Draft / PendingApprovedCharged (added to work order) → optionally Stocked (surplus added to inventory). It can also be Cancelled at any point, which reverses any created line items and expenses.

Recording a sourced item

  1. Go to Sourced Items in the sidebar and click New sourced item.
  2. Select the customer and optionally link a work order.
  3. Enter the item name, quantity, unit cost (what you paid), and selling price (what the customer pays).
  4. Fill in the source shop name, optional known supplier, purchased by, and payment method.
  5. Upload a receipt if available.
  6. Click Save.

The form shows a live-computed panel with total cost, profit, and margin % as you type.

⚠️
Margin guard

Saving a selling price below cost requires the sell sourced item below cost permission (Owner and Admin only by default). This prevents accidental losses on sourced parts.

After approval

Once a sourced item is approved, the detail page shows additional actions:

List & filters

The index page shows summary cards and a filterable table. Filter by status, customer, mechanic, purchaser, supplier, linked service, and date range.

🧾 Feature

Purchase Orders

A purchase order (PO) is a formal order you place with a supplier for a batch of items from that supplier's catalog. POs are built from the supplier's existing item catalog (see Catalog setup → Suppliers), so make sure the supplier's items are populated before you start.

🔑

Create, edit, and manage purchase orders: users with the manage inventory permission (typically Manager, Admin, Owner). View only: anyone with view inventory.

Creating a purchase order

  1. Go to Catalog → Purchase Orders in the sidebar (below Suppliers) and click Create PO.
  2. Choose a supplier from the dropdown — each option shows whether that supplier is Global or Internal so you can tell apart suppliers that share the same name.
  3. The supplier's item catalog loads on the left. Use the search box to filter by description or model, tick the items you want (or use the header checkbox to select all visible items), enter a quantity for each, and click Add Selected Items to PO — or add items one at a time with each row's own Add Item button.
  4. Selected items move to the Selected Items to PO table on the right, where you can adjust quantities or remove a line. The Grand Total updates as you go.
  5. Click Save as Draft to keep working on it later, or Submit Purchase Order to finalize it.
⚠️
Minimum order quantity (MOQ)

Every supplier item can define a minimum order quantity. If you try to add a quantity below an item's MOQ, the app blocks it and tells you the minimum required.

Purchase order statuses

StatusWhat it means
DraftSaved but not yet sent — still fully editable, including changing the supplier (this clears the current item selection) or deleting it outright.
SubmittedFinalized and sent to the supplier. No longer editable — only Mark Received or Cancel PO are available.
ReceivedThe order has arrived. This does not automatically adjust inventory stock — use the Inventory scan-in tool separately when the stock physically arrives.
CancelledThe order will not be fulfilled.

Editing or deleting a draft

Open a Draft PO from the list (click Edit) to change its supplier, items, or quantities — the same builder screen is reused for editing. A Draft PO can also be deleted entirely, from either the list (trash icon on its row) or the edit screen itself (Delete Draft) — this is only available while it's still a Draft.

List & filters

The Purchase Orders index shows every PO with its number, supplier, status, total, and submission date. Search by PO number and filter by supplier or status. Rows show Edit for Draft POs or Open (read-only detail view) for everything else.

📈 Feature

Reports

The main Reports page brings together revenue, profitability, outstanding service balances, inventory usage, mechanic performance, and warranty activity for the active branch.

🔑

Required permission: View reports. The reports shown always follow the active branch and your assigned permissions.

Using the date filter

Set the From and To dates and click Apply range. Most figures use the selected period. Outstanding receivables and Low stock are current snapshots, while pending service revenue is limited to in-progress jobs created in the selected range.

Period totals

The four summary cards show:

Revenue breakdown

Services by mechanic

Each mechanic row shows services assigned, completed jobs, completed value, and final commission. The final commission includes eligible job commissions and any earned minimum-daily adjustment.

Top inventory items used

This table combines inventory items used in paid services and sold through POS. It shows channel mix, units, and revenue. Click an item to expand the underlying service and POS transactions, or use View full report to open Sold Items.

Low stock alert

A snapshot (independent of the date filter) of inventory items currently at or below their minimum stock level. This section always shows the current state so you can identify items that need to be reordered immediately.

Back jobs & warranty

The warranty section summarizes total, approved, rejected, and partial back jobs plus recorded back-job cost. Its mechanic table shows each mechanic's back jobs, warranty approvals, rejection rate, cost, and average resolution time.

🛍️ Report

Sold Items

The Sold Items report combines inventory consumed through service jobs and POS sales for the selected period. It shows total units, revenue, channel mix, the top item by revenue, and a ranked item list.

Use the date range, item search, and All / Service / POS channel chips to focus the report. Sort by item, quantity, or revenue. Select an item row to expand its transaction breakdown, then follow a linked service or sale number to inspect the source record.

⚖️ Feature

Profit & Loss

The Profit & Loss page (sidebar → Profit & Loss, indented under Reports) gives you a date-range-filterable financial statement that ties together your revenue and costs in one view.

🔑

Required permission: View Profit & Loss. This sensitive financial statement is restricted to Owners by default.

The P&L formula

Net Profit = Gross Sales − Mechanic Commissions − Inventory Cost (COGS) − Sourced Item Cost − Operating Expenses

The page shows each component as a row — Gross Sales, minus Mechanic Commissions, Inventory Cost, Sourced Item Cost, and Operating Expenses — with the final Net Profit at the bottom. A separate card highlights the sourced-item profit contribution so you can see how much markup you're earning on externally sourced parts.

Expense reports

A companion Expense Reports page can use Accrual basis (approved expenses by incurred date) or Cash basis (approved payments by payment date). It shows accounts-payable aging, sourced-item count/cost/revenue/profit, and expense totals by category, payment method, staff or mechanic, and day. Users with Profit & Loss access can move between the two pages.

✨ Feature

AI Insights

AI Insights summarizes scheduled analysis for the active branch. It is available to users who can view reports and is decision support, not an automatic change to inventory or accounting records.

ℹ️

Insights appear after their scheduled jobs have run. “No insight yet” does not indicate an error on a new installation or branch with insufficient history.


🏢 Administration

Team & users

🔑

Required role: Admin or Owner.

Inviting a new team member

  1. Go to Organization → Team in the sidebar.
  2. Click Add user.
  3. Enter the new member's name, email, and a temporary password.
  4. Select their role from the dropdown.
  5. Optionally assign them to a specific branch. Branch-specific users only see data for their branch; org-level users (no branch assigned) see all branches.
  6. Click Save. The user can now log in with the provided credentials and should change their password under My account → Security.

Editing or deactivating a user

Click the edit icon next to any user on the Team page to change their name, role, or branch assignment. To remove access, delete the user. Their historical records (sales, services) are preserved.

Customizing role permissions

  1. Go to Settings → Role permissions.
  2. Select a role (Admin, Manager, Cashier, Mechanic, or Staff) using the tabs at the top.
  3. Check or uncheck permissions in each module group.
  4. Click Save permissions. Changes take effect immediately for all users with that role.
⚠️

The Owner role always has full access and cannot be restricted. This prevents the shop owner from being accidentally locked out.

📍 Administration

Branches

🔑

Required role: Admin or Owner.

If your business operates from more than one location, you can create separate branches. Each branch has its own sales, service, and inventory records.

Creating a branch

  1. Go to Settings → Branches.
  2. Click Add branch and enter the branch name and address.
  3. Click Save.

Switching branches

Users with org-level access (no fixed branch) see a branch switcher dropdown at the top of the sidebar. Click it and select a branch to view that branch's data. The active branch name is shown in the dropdown button.

Staff assigned to a specific branch always see their branch's data — they do not have a branch switcher.

🗂️ Administration

Catalog setup

Before adding inventory items you should set up your brands, categories, and suppliers. These are found under the Catalog section in the sidebar (visible to Managers, Admins, and Owners).

Categories

Categories group your inventory items (e.g. Engine parts, Filters, Brakes, Electrical). Go to Catalog → Categories, click Add category, enter a name, and save.

Brands

Brands represent manufacturers (e.g. Honda, Yamaha, NGK, Motul). Go to Catalog → Brands, click Add brand, and save.

Suppliers

Suppliers are the companies you purchase inventory from. Go to Catalog → Suppliers, click Add supplier, and fill in the name, contact person, contact number, email, address, notes, and an optional logo.

TypeWhat it means
InternalCreated by your organization's own staff (Manager/Admin/Owner). Only your organization can see and manage it.
GlobalCreated by a super admin and shared across every organization on the platform. Your organization can order from a global supplier's catalog, but cannot edit the supplier record itself.

Each supplier keeps its own item catalog — the list of parts/products it sells, with price, SRP, unit, minimum order quantity (MOQ), and an optional brand. The brand field lets the same supplier carry the same part/model under more than one manufacturer (e.g. a "Brake Pad" for "Mio" sold under both "Yamaha" and an aftermarket brand) without the two conflicting. Staff can populate a supplier's catalog in either of two ways:

  1. Go to Catalog → Supplier Items (below Suppliers in the sidebar), select the supplier, and click Download Excel Template — the file is pre-filled with the supplier's name and ID so it always matches back to the right catalog. Fill in each row's Model/Variant, Description, Brand, Unit, MOQ, Price, and SRP.
  2. Upload the completed file back on the same page. New rows are created, existing rows (matched by description, model, and brand together) are updated with the new price/SRP, and invalid rows are skipped with an error explaining why.

This staff-side import is only available for Internal suppliers — a Global supplier manages its own catalog through the separate Supplier Portal login instead.

Mechanics

Mechanics are the technicians assigned to service work orders. Go to Catalog → Mechanics, click Add mechanic, and enter their name and contact number.

💡

Set up your categories, brands, and mechanics before adding inventory items and services — the forms reference these lists and they cannot be left blank.

🚚 Administration

Supplier Portal

The Supplier Portal is a completely separate, self-service login (at /supplier/login) that lets a Global supplier manage their own item catalog and view their own purchase orders — without ever logging into the main Metro Moto app or seeing any of your organization's other data.

🔑

Only Global suppliers can have portal accounts. Granting portal access: Super Admin only.

Granting a supplier portal access

  1. As a super admin, go to Catalog → Suppliers.
  2. On a Global supplier's row, click the users icon button to open its portal-user list.
  3. Click Add user, enter a name, email, and password for the supplier's contact person, and save.
  4. Share the login URL and credentials with the supplier. They log in at /supplier/login — separate from the staff login page.
  5. A portal user can be edited (including resetting the password) or deactivated at any time from the same list.

What the supplier sees

After logging in, the supplier lands on a dashboard summarizing their total, active, and inactive items, and their total, pending, and completed purchase orders. From there they can:

💡

Because a Global supplier's catalog is shared across every organization on the platform, updates the supplier makes through their portal are immediately visible to every organization building a purchase order from that supplier.

🏷️ Administration

Expense categories

🔑

Required permission: Manage expense categories (Owner, Admin, Manager by default).

Expense categories classify what your shop spends money on — e.g. "Utilities", "Rent", "Office Supplies", "Vehicle Maintenance". Each category also has an expense type: Operating Expense, Inventory Purchase, Capital Expenditure, or Non-operating Expense. Only approved expenses in categories classified as Operating Expense are included in the Profit & Loss operating-expense total.

Go to Catalog → Expense Categories to manage them. The page supports inline create, edit, and delete. Each category has a name, optional description, expense type, sort order (controls display sequence), and an active toggle.

⚠️
System categories

Some categories (like "Sourced Items") are created automatically by the system and cannot be deactivated or deleted. Categories that already have expenses linked to them cannot be deleted — deactivate them instead to hide them from the dropdown.

⚙️ Administration

Organization settings

🔑

Required role: Owner (full access) or Admin (most settings).

Go to Settings → Organization to update your shop's details.

Business information

Update your organization's name and other business details. This information may appear on printed receipts and reports.

Logo

Upload your shop's logo by clicking Upload logo on the Organization settings page. To remove it, click Remove logo. Supported formats: PNG, JPG, SVG.

Subscription plan

Owners can view and change their subscription plan under Organization settings. The current plan and trial status (if applicable) are shown at the top of the page.

💡

New organizations start with a 30-day free trial. A banner at the top of every page shows how many days remain. Click Upgrade → to switch to a paid plan before the trial expires.

💳 Administration

Billing

The Billing page (sidebar → Billing, credit-card icon) is where owners purchase, renew, and submit proof of payment for their subscription. Payments are submitted off-platform (GCash, bank transfer, or cash) and activated by a Metro Moto super admin after review.

🔒

Only users with the Manage organization settings permission (typically Owners) can see this page.

What's on the page

Submitting a payment

  1. Pick the plan and billing cycle (monthly or yearly) you want to pay for.
  2. Pay off-platform using the payment instructions shown (GCash number, bank account, etc.).
  3. Fill out the submission form: payment method, reference number (GCash ref / bank transaction ID), amount, date paid, and optional notes.
  4. Upload your proof of payment (screenshot or receipt).
  5. Click Submit payment.

Your submission lands in the super admin's review queue with status Pending. Once approved, your plan is activated and the renewal date is extended. If rejected, you'll see the reviewer's note explaining why.

⚠️
Activation isn't instant

Submitting payment doesn't auto-activate your plan — a super admin must approve it first. Allow some time for review, especially outside business hours.

Plan limits

Your plan caps how much your organization can do. Limits are organization-wide (shared across all branches), and a blank limit means unlimited. Two caps are actively enforced:

The Point of Sale and New Service pages show a heads-up banner when you're close to (amber) or have reached (red) the transaction cap, so cashiers know before they start a sale or job. Your current users / branches / transactions usage is summarized on the subscription view.

💡

Both POS sales and service work-orders count toward the transaction cap — not just sales — and the 30-day window is a rolling one, not a calendar month.

🕒 Administration

Activity log

The Activity log page (sidebar → Activity log, clock icon) is a paginated audit feed of every meaningful action taken in your organization — record created, updated, deleted, restored, plus authentication events like logins and logouts.

🔒

Only users with the View activity log permission can see this page.

What gets logged

Branch scoping

Rows are automatically scoped to your current organization and the branch you're viewing. Switching branches changes which entries you see. Org-wide events that aren't tied to a branch — like login / logout — stay visible in every branch's feed so the audit trail stays complete.

Critical updates

Some edits are flagged as critical updates — changes to money- or stock-sensitive fields (labor cost, discount, charges, stock quantity, parts/packages added or removed) made through an edit form. These always require the person making the change to pick a reason (e.g. Price adjustment, Stock correction, Damaged item, Warranty adjustment, Manager approved, or Other with a note). Critical rows are highlighted in red in the feed and carry their reason so you can quickly spot and investigate sensitive changes.

Filters

💡
Use it to answer "who changed this?"

If a customer's phone number looks wrong or a service status is unexpected, filter by subject type and date range to find the exact edit and the user behind it.

🕒

Activity entries are retained for 90 days by default and older entries are removed by the scheduled cleanup job. The deployment administrator can change the retention period.

👤 Personal settings

My account

Every user can manage their own profile and security settings. Click your name or avatar in the sidebar and select Settings.

Profile

Update your display name and email address. If you change your email, a verification link will be sent to the new address before it takes effect.

Password

Go to Settings → Security to change your password. Enter your current password, then enter and confirm a new one.

Two-factor authentication (2FA)

  1. Go to Settings → Security.
  2. Click Enable two-factor authentication.
  3. Scan the QR code with an authenticator app (Google Authenticator, Authy, etc.).
  4. Enter the 6-digit code shown in your app to confirm setup.
  5. Save your recovery codes in a safe place — they can be used to log in if you lose access to your authenticator app.

Passkeys

Metro Moto supports passkeys (biometric / hardware key login) as an alternative to passwords. Go to Settings → Security → Passkeys to register your device.

Appearance

Switch between Light, Dark, and System (follows your device) color modes from Settings → Appearance.

Deleting your account

Users can delete their own account from Settings → Profile → Delete account. This action is permanent. Your transaction history is preserved in the system for record-keeping.


Quick reference — keyboard shortcuts & tips

TipDetail
POS search focusThe search box is auto-focused when the POS page loads — start typing immediately without clicking.
ESC key in POSCloses any open modal (item detail or image carousel). Also clears the search box if no modal is open.
Arrow keys in lightbox← and → navigate between images in the item photo carousel.
Low stock badgeThe amber "Low stock" KPI card on the dashboard links directly to the inventory list filtered for low-stock items.
Branch switcherChanging branch in the sidebar immediately scopes all data on the current page to that branch — no page reload needed.
Date range memoryThe Dashboard and Reports pages remember the date range you applied in the URL — bookmark a filtered URL to reopen the same view later.
Dark modeToggle dark mode under Settings → Appearance. The setting is per-user and saved to your account.
Metro Moto User Manual
For support or questions, contact your system administrator.