You're using the business master key. Create your own email and password now. After that, invite your staff with their own logins and roles from 🔑 Staff Access.
🆕 New Client Requests — Needs Review
Submitted through the public Request-a-Quote link. Each one auto-created a draft quotation — review the details below, then open and price it. It stays flagged until you actually save it.
Clients With an Outstanding Balance
Who actually owes money right now, largest first — click a row to open their full Statement.
Client
# Unpaid/Partial
Outstanding (RM)
Due Status
Invoices & Quotations
Every document created in either invoice tool — search, filter, follow up, or export.
Deleted quotations, proformas, invoices and credit notes are kept here for 90 days, then removed for good. Restoring puts a document back exactly as it was, with the same number, and puts an invoice back in your books.
Deleted
By
Type
Doc #
Client
Total (RM)
Kept for
Date
Client
Doc #
Subtitle
Type
Job
Total (RM)
Status
Collection
Actions
Jobs — Deposit / Progress Billing
Groups multiple invoices under one job so you can track deposit + balance, or multi-stage billing, as a single total.
New Job
Already have a subcontractor PO or staff assigned to this work? Add them on the Job's own card (👷 Team & Resources) once it's created below — that's not part of this form.
All Clients
Shared client directory — pulled live into both invoice tools. Open a Statement to see everything for one client in one place.
Name
Address
Phone
Client POs — Work Authorization
Record a client's approval the moment you get it — written or verbal — before any invoice exists. This is what should trigger work starting, not the invoice.
Client not in the list yet? Type their name below instead — it'll still save correctly.
Approved By (name of the person at the client)HowDate ApprovedWhat Was Agreed
Link to a CRM Job (optional)
This is the real trigger for delivery — linking here lets you assign your own team, equipment, and any subcontractor to this job right away.
Or create a new one — suggested from the client name below, just confirm or edit it:
Date Received
Client
Type
PO #
Details
Job
Linked Invoice
Subcontractors
Your directory of subcontractors, plus every Purchase Order you've issued to them. Client pricing is never shown on these.
Add Subcontractor
Monthly Contract Rate (RM) — optional, for a standing monthly amount rather than per-job (e.g. a freelancer on retainer)
Name
Trade
Contact
Phone
Status
Monthly Contract Payments
For a subcontractor paid a standing monthly amount instead of per job — effectively a freelancer on retainer. Separate from job-based POs below; a subcontractor can have both.
Period Start
Period End
Link to a Job (optional — not every monthly payment traces to one specific job)
Period
Subcontractor
Amount (RM)
Job
Status
Ledger
Subcontractor Purchase Orders
Work orders issued — dates, site, scope, and what you're paying them.
Work Date
Subcontractor
PO #
Site
Client Ref (internal)
Job
Rate (RM)
Payment Terms
Work Status
Payment
Services Catalog
Reusable line items — pick from these in either invoice tool instead of retyping. Prices here are what auto-fill; edit anytime.
Add Service
Name
Qty/Unit
Price (RM)
Category
Expenses
Upload a receipt or bill — AI reads the vendor, date, amount, and suggests a category. You always confirm the details and select how it was paid before saving; payment method is never AI-guessed, since receipts rarely show it reliably.
Scan a Receipt
Take a photo with your camera, or choose an existing photo/PDF from your files — both work with the button below.
Vendor
Date
Amount (RM)
Category
Stock you buy isn't a cost yet: it's added to your inventory, and becomes a cost when it's sold or used.
Tax Treatment — for your accountant, pre-filled based on category, change if neededPayment Method — select this, never AI-guessedClient / Job (optional — for true cost-per-job)Paid ByNotes (optional)
Date
Vendor
Amount (RM)
Category
Tax Treatment
Payment
Client/Job
Paid By
Receipt
Staff Directory
Who submits expenses and gets reimbursed. Not payroll — no salaries, retainers, or hours tracked here.
Add Staff
Name
IC
Phone
Bank
Status
Reimbursements Owed
Grouped by staff member. "Mark as Paid" records that you paid them back — it doesn't move real money, that still happens via your own bank/cash/DuitNow.
📷 Scan an Item
Take a photo — on your phone, this opens the camera directly. AI suggests a name and checks whether it matches something already in stock, before anything is saved.
Scanning
Consumables
Chemicals, nozzles, parts, PPE — track stock levels and get a low-stock flag before you run out.
Add Consumable
Name
Category
Stock
Reorder At
Unit Cost
Equipment / Assets
Jetting machines, cameras, vehicles — what you own, where it is, and its current status.
Add Equipment
Name
Tag
Category
Status
Location
Payroll
⚠️ EPF, SOCSO and EIS are worked out with the 2026 rates published by KWSP and PERKESO. These bodies can change their rates, so check the official tables before your first real payroll run. For foreign workers, SOCSO and EIS are not worked out (they show as RM 0 with a warning); check PERKESO's tables for those amounts.
Separate from Staff & Reimbursements — adding someone as a payroll Employee is deliberate, not automatic.
Add Employee
Statutory Contributions — not every business structure or role requires all of these; confirm with your accountant
EPF SOCSO EIS
Name
Category
Monthly Salary
Status
Run Payroll
Pick an employee and period, review the calculated breakdown, then confirm to save. Nothing saves until you confirm.
Period Start
Period End
Basic Salary (RM)
Bonus (optional — still counts as salary)
Gross Salary: RM 0.00
Payroll History
Period
Employee
Gross
EPF (Emp)
SOCSO (Emp)
EIS (Emp)
Net Pay
Status
Ledger
Subscription
Modules
Switch on only what your business uses. A switched-off module disappears for everyone, and its data stays safe: switch it back on and everything is still there.
Type of business
Always on: Overview, Clients, Invoices & quotations, Company details, Logins.
Business Profile
Your company's own registration details — captured once, updated as needed.
Sdn Bhd legally requires a company secretary — cannot operate without one.
Document Branding — shown on every printed invoice, quote, and PO
Nothing here is hardcoded anywhere in the system — this is the one place it's set, and every generator reads it from here.
Optional Tools
Enable the Web Services invoice tool — a separate generator for web/hosting work, not needed by most trade businesses
Compliance Documents
SSM, LHDN, licenses, and anything else — mandatory vs. optional is a judgment call per document, not assumed for you (e.g. MOF only matters if you bid for government tenders; CIDB only if applicable to your work).
Add Document
Document
Status
Issuing Body
Ref #
Renewal Date
File
General Ledger
A basic, real double-entry ledger — posted automatically from your invoices, payments, and expenses. Not a replacement for a full accounting package, but real books, not just a CSV export.
Shop
Sell items, services and subscription packages. Share a product link on WhatsApp, take payment by bank transfer or Billplz, and bring in Shopee, Lazada and TikTok Shop orders. Every paid order becomes an invoice, updates stock and posts to the books automatically.
Name
SKU (same code as on Shopee/Lazada/TikTok)
Description
Type
Price (RM)
Billing
Recurring fee (RM)
The first recurring invoice is created one period after purchase.
Take stock from (optional, an item in Inventory)PhotoYour listing links (optional, shown as "Also on" buttons) Show in your public shop
Product
SKU
Price
Stock
Channels
Custom order
Your own items and prices. After saving you get a payment link to send the customer.
Customer name
Phone
Email (optional)
Shipping (RM)
Address (optional)
Order
Date
Channel
Customer
Total
Status
Invoices for due subscriptions are created automatically every day once the daily trigger is switched on (see Payment setup). You can also create them now.
For an existing customer on a monthly or yearly fee that wasn't bought through the shop.
Client
Amount (RM)
Description
Every
First invoice date
Client
What
Amount
Next invoice
Status
Download your orders from the seller centre (Shopee: My Orders → Export; Lazada: Orders → Export; TikTok Shop: Orders → Export), then upload the file here. Orders already imported are skipped, so uploading the same file twice is safe.
Marketplace
Export file (.csv or .xlsx)
How customers pay you
Bank transfer (uses the bank details in your Business profile; customers can upload their slip)Online payment (FPX, cards, e-wallets)
In your Billplz account: Settings → Keys & Integration gives the API Secret Key and X Signature Key. Billing → Collections gives the Collection ID. Each business uses its own Billplz account, so money goes straight to them.
API Secret KeyCollection IDX Signature Key (optional) Sandbox (test account, no real money)
Note shown to customers (optional)
Automatic subscription invoices (one-time setup)
In Cloudflare: Workers & Pages → your CRM Worker → Settings → Triggers → Cron Triggers → Add, enter 0 1 * * * (every day at 9:00 am Malaysia time) and save. Until then, use "Create due invoices now" on the Subscriptions screen.
System Status
Shows what's configured and what's missing — never the actual secret values, even to you. Manage the real key values directly in your Cloudflare Worker's Settings → Variables and Secrets.
Component
Status
What it's for
LHDN e-Invoice
E-invoices are sent to LHDN MyInvois through MyResit, under your own business's tax number. Before your first e-invoice:
Register your business as an e-invoice taxpayer on the MyInvois Portal (this is done with LHDN, not in MyResit).
Make sure your TIN, SSM number and MSIC code are filled in under Business → Business Profile.
Contact MyResit to connect your business to MyInvois.
Click Test Connection below to check it works.
🔑 Staff Access
Give each person their own login. Their role decides what they can see and change, and every action is recorded under their name.
Logins
Invite someone
Name
Email
Role
Name
Email
Role
Status
Last login
What each role can do
Old access keys
These still work, as Manager, while you move people to logins. Invite each person above, then revoke their key here.
Staff
Status
Issued
Last Used
Staff Access is only visible to the owner's key — you're signed in with an individual staff key, which is exactly the boundary this is meant to enforce.
Activity Log
Every create, update, and delete across the system — who did it, and when.
When
Actor
Type
Action
Details
Client Statement
Link This PO to an Invoice/Quotation
Search by client name or document number — pick the actual document, not a number to look up.