Which products are coming back, and why. Change of mind → back to stock (qty 1). Broken / defect → flagged 🔧 broken, pending repair.
2 General info
When the refund happened, why, and any remark worth keeping on the record. The reason is stored on the refund and shows on its record — six months from now it is the only thing that explains the money.
3 Refund
How much goes back and how. Store credit keeps the money in the shop — it never leaves an account.
Which account the refund leaves. Defaults to the account the sale was paid into.
4 Proof
The receipt or transfer screenshot for the money going back.
Autosaves as draft
Create credit note
CN — on save
Credit note
Refund
Request
Record payment
One receipt, applied across the customer's open invoices.
OR — on save
Autosaves as draft
Record payment
One payment, applied across the supplier's unpaid bills.
PV — on save
Autosaves as draft
Credit note
Credit a supplier or consignor owes you — offset it against their bills or take it back as cash.
SC — on save
Autosaves as draft
Credit note
📋 Batch expenses
Several separate expenses at once — each row becomes its own record.
0 rows
Autosaves as draft
Edit payment
Dashboard
Recent salesView all →
Pending payoutsView all →
💵 Deposits — balance dueView all →
📈 Sales trend
🛍️ By channel
📦 Inventory health
💰 Money & inbound
💰 Money map — where the cash is right now
⏳
Loading inventory…
Consignors
Suppliers
Contacts
Export
Bukku Sales CSV
Sold items only — import to Bukku as sales invoices
Activity Log
Full audit of every change — additions, edits, sales, repairs, returns, payouts and deletions. Click an entry to open the record it belongs to.
Purchases
Every Stock In becomes a purchase receipt here. Attach the supplier invoice, mark it paid, and edit details — totals recalculate automatically.
Bank
🗄️ Audit
Everything an auditor asks for, in folders: one per account for bank and card statements, the card-terminal merchant statements and swipe CSVs, Stripe reports and anything else. Open a folder, click a file to open it, ⬆ to add one. A bank statement's closing balance is tied to the app's balance at that month end. Files live in the Files library under the folder Statements.
📥 Shoebox
Receipts, bills and invoices land here first — read automatically, then create the record beside the file.
📒 Bukku
A live, auto-synced mirror of every section — showing where each record lands in Bukku. Read-only; nothing is written back to Bukku.
Expenses
Rent, marketing, packaging, fees and other running costs — each can be recorded in Bukku (Money out).
Director Own Use
Own-stock items taken by the director for personal use — non-cash drawings at cost. Each taking is charged to the director's account in Bukku (stock adjustment + journal to 1007 Director Account) — "Settle to Director Account" records that journal and the amount Bukku charged.
Consignment
Files
Drop in invoices, receipts and any document. Give it a quick description (or let AI read it for you), then find it later just by typing.
Health check
Bills, expenses, payments, costs, cards and statements that don't add up. Click a row to open the record and fix it there; the list clears itself as you do.
Reports
Bukku's own figures, read live — the same numbers as Bukku → Reports. Click any account to see its ledger. Read-only: nothing is written to Bukku.
Shipping
Parcels coming IN from suppliers & consignors. Log the tracking code, then tap ✓ Received when it arrives.
Sales
📒 Ledger
A record of every payment received (Bukku OR), newest first. You take payments from the invoice — this is the reconcile/lookup view. Use 💵 Record payment (top right) for one across a customer's open invoices.
📒 Ledger
A record of item-level credit notes (returns / price adjustments). You raise one from the invoice (open a sale → 🧾 Credit note) — this is the reconcile/lookup view.
📒 Ledger
A record of every return / refund (Bukku PV), newest first. You raise one from the invoice (Actions → Return / Refund) — this is the reconcile/lookup view.
Customer sourcing requests (SR) — the hunt pipeline. 📦 Found / 💵 Deposit / ✓ Paid are derived from facts (linked stock item, linked SO sale) — a label can never move money. Take deposits with 💵 on the request → a prefilled sale you review & save.
Repair & bag-spa jobs (SVC) — a customer's own bag you are holding. Record what came in and its condition, send it to the outsource vendor, then invoice on collection. The status is derived from the dates, so a label can never disagree with what happened.
Every Entrupy certificate across the app — auto-collected from inventory items and authentication-service sales. Search by code, product, SKU or customer; tap a result to open the live certificate or its source record.
🗑️ Trash
Deleted items are kept here so you can restore them. Restoring puts the record back exactly where it was. Only admins can permanently delete.
Settings
Most settings sync across all your devices. Lists (categories, channels, payments) and the AI key save instantly; the rest save with the buttons shown.
💾 Data backup
Download a snapshot of every collection — sales, inventory, expenses, transfers, purchases, refunds, credit notes, accounts, consignors, customers, activity and settings — as one JSON file. Do this before any big change and keep it somewhere safe (cloud drive + a USB). Photos and attachments stay in Firebase Storage; condition photos are copied to Drive by the daily backup below.
☁️ Google Drive backup — writes the entire system to a Google Sheet (a tab per section) in your Leluxestudio Backup Excel folder, so you have a readable failover copy even if the app is down. Runs automatically every day; use the button for an on-demand snapshot.
Company profile
Used on invoices, consignor statements and agreements. The more you fill in, the more professional your invoices look.
Payment details (printed on invoices so customers know how to pay)
Sender / pickup address
The "from" details on shipping labels and courier bookings.
Branding
Company logo (shown in sidebar)
Upload logo
Accepts PNG, JPG, SVG. Recommended size: 300×120 px or wider. Transparent PNG works best on the dark sidebar.
The browser-tab icon already follows your logo. For the installed home-screen icon, tap ⬇ App icons from logo, then place the 3 downloaded files into your public/ folder and redeploy.
Colour theme
💳 Payment links
Optional features
Untick what the shop doesn't use to hide it for the whole team. Nothing is deleted: tick it again and everything is still there.
Layout
Pick the page that opens on launch; drag to reorder sidebar items or untick to hide them.
Groups — collapsible categories, like channels. Name them, then assign menu items below.
Sidebar menu — drag to reorder, untick to hide, pick a group
⌨️ Keyboard shortcuts
Speed up data entry on desktop. Click a shortcut and press the keys you want — the hint on the buttons updates to match.
Costing defaults
Pre-filled when you stock in an item (you can still override per item).
Added to landed cost of imported items.
Per-bag authentication cost.
Consignment policy
Shown in the consignment form & agreement. The consign period also drives the "due for return" alerts.
Consignment T&C
One clause per line. Shown at the bottom of the consignment intake form.
Agreement description (the paragraph shown under the agreement header)
Exchange rates (to MYR)
How much 1 unit of each currency equals in MYR. Auto-updates daily from live market rates.
Sales Channels
These appear as options when recording a sale. Drag the ⠿ handle to reorder — the sequence carries into the sale form.
Accessories / inclusions
The tick-chips on the item form's Extras section. Drag ⠿ to reorder, ✎ to rename (offers to update the items that carry it), × to remove — items that already have it keep it.
Product Categories
These appear as options when adding or editing an item. Drag the ⠿ handle to reorder.
Payment Methods
Available payment options when recording a sale. Drag the ⠿ handle to reorder. Use ✎ to rename — it carries the fee rule, the deposit account and every payment already recorded under that name.
✨
AI Assistant
Paste your Anthropic API key to switch on the AI features. Pay-as-you-go & very cheap (a few sen per action). Get a key at console.anthropic.com → API keys.
Shopify
Checks which items are live on your Shopify store (by SKU) and shows a "✓ On Shopify" badge on each product. Read-only. Auto-refreshes in the background when open (every ~2h); tap below to refresh instantly.
🧾 Bukku (accounting)
Read-only pull of invoices, bills, payments, credit notes, bank balances and products into the Bukku section, where each app record is matched to its Bukku document. Hourly in the background and on demand. Nothing is written to Bukku.
🔗 Stripe (payments)
Read-only pull of every Stripe charge with its exact fee, payouts and balance. The real fee replaces the 3% + RM 1 rule once stamped (Balances → 💳 Payment links). Hourly and on demand.
📥 Shoebox intake (WhatsApp + email)
Receipts sent to the shop's WhatsApp number or to a person's Shoebox email address land in the Shoebox, read and ready to key. Official WhatsApp Business Platform + SendGrid Inbound Parse; both receive only.
☁️ Google Drive backup
Every collection is written to a tabbed Google Sheet in the company Drive daily, and on demand from Settings → Admin & data. Vault entries are exported as ciphertext only.
Daily at 03:00 · on-demand copies run from here.
📅 Google Calendar
Appointments and public bookings are pushed into the shared company calendar as they are saved (Cloud Function trigger). The backfill pushes everything once.
✉️ Invoice email (Resend)
Invoices and receipts are emailed from invoices@leluxestudio.com through Resend; delivery, open and bounce status flows back onto each sale.
🤖 Document reader (Claude)
Every file added to Files or the Shoebox is read for supplier, date, amount and a description. Runs through the aiProxy function; the key never reaches the browser.
Users
Admins have full access. Staff cannot access Settings or delete items.
Loading users…
🔒 Staff permissions
Change my password
🛎️ Services
Services you sell in the Sales section — these have no quantity (e.g. Authentication, Bag spa, Watch service, Delivery). Set each one's default price and the details that show under the line; on the sale form, pick one from “🛎️ Add a service.” Add new ones any time; the list syncs to the whole team.
🔐 Business password vault
Zero-knowledge: every password and note is encrypted in your browser with the vault passphrase (AES-256-GCM; key derived by PBKDF2, 600,000 rounds). The passphrase is never stored or sent anywhere — not to the database, not to backups, not to anyone. If it is forgotten, nothing can recover the entries. Admins only. Locks itself after 5 minutes idle or 5 minutes away from this tab; a revealed password hides again after 20 seconds; a copied one is cleared from the clipboard after 30 seconds where the browser allows.
Loading…
💬 Message templates
Every canned WhatsApp/email message the app drafts — edit the wording here. Changes sync to the whole team. Keep the {placeholders}; they're filled in automatically.
Used when a customer has no language set. Per-customer language overrides this and auto-translates their WhatsApp drafts.
📜 Activity & health
Who did what, when — and any app errors caught on team devices.
📄 Document expiry tracking
Agreements, permits, insurance policies, tenancy — the dashboard reminds you 30 days before each renewal.
🗑️ Trash / Recycle Bin
Anything you delete (products, sales, customers, consignors, suppliers) is kept here so you can restore it. Open it to review or restore deleted records.
🔗 Outbound webhooks
POST a JSON payload to Zapier, Make, or a Google Apps Script web app every time a sale is recorded — extend the app without any code. Leave blank to disable.
🔁 Duplicate SKUs
Items that share a SKU (should be unique). Review each pair and move the wrong copy to Trash (recoverable).
📤 Export
Export your inventory, sales and contacts to CSV for accounting or backup.
🕓 Activity log
A history of everything done in the app — who added, edited, sold, or deleted what, and when.
📧 Invoice email self-test
Sends a sample invoice email to your own signed-in address and reports whether the PDF attachment survived. Nothing is sent to a customer, and no sale is touched — the send deliberately carries no sale id, so no invoice gets stamped as emailed.
🧹 Storage orphans — purchases
Files under purchases/ that no bill, payment, payout or expense references. Policy (2026-09-07): these are PARKED for future reference — nothing is deleted. A replaced or ✕-removed attachment stays in Storage too. Scan only counts.
🎨 Display
📅 Public booking link
Share a link where customers pick an available date & time themselves. Requests land on your Dashboard to confirm — confirming creates the appointment. Set your available days, hours and how long each slot is.
Available days
📝 What the customer fills in
Name & phone are always asked. Add your own purpose options and any extra questions — change these anytime.
Saves Business profile, Operations & finance. (Layout, lists and the AI key have their own save buttons.)
Record sale
The same document you see on the invoice — same sections, same fields.
Billing & Shipping
Billing and delivery parties for the transaction.
*Payment Mode
*Customer (type to search existing or add new)
*Fulfilment
📦 Send to Shipping — tick when it's ready to fulfil (auto for a normal Sale; off for Proxy / Preorder / Deposit until you tick it) ✅ Fulfilment success — tick once handed to the customer (otherwise it shows “not fulfilled yet”)
⚡ Express details
Recipient name
Phone
Address
Date of express
Time
Express service
General Info
General information such as number, date and more for the transaction.
Invoice No.
—
Reference No.
*Date
Currency
MYR — Malaysian Ringgit
Rate
1
*Channel
*Type
Description
Internal Note
Tags
Title
Recorded by
—
Items
What was sold, and what it comes to — pick from inventory (it flips to Sold automatically) or add a service.
Add product — search by name, brand or SKU (or type a custom name)
*Sale amount (RM) — the bill, before discount
Discount overall (RM) — kept from before; new discounts go on the item line
Net after discountRM 0.00
Payment Received
Payment received for the transaction. A cash sale receives the whole total; a credit sale receives whatever the deposit covers.
Saves the invoice, then opens Record payment (an OR receipt in the Payments tab).
Payment method *
Received into — set from the payment method; change it if this one went elsewhere
Deposit paid (RM) (if partial)
⏳ Balance still dueRM 0.00
💳 Overpayment — held on the invoiceRM 0.00
You entered more than the items total. The invoice Total stays at the items; the extra shows as Overpaid to bank as store credit or refund later.
Worked out from the Payment Mode and the deposit — nothing to tick. Record a payment and this updates itself.
Additional Info
Additional information such as remarks and country specific fields.
Remarks
Customs Form No.
Customs K2 Form No.
Incoterms
Attachments
Supporting documents attached to the transaction.
Receipt / Proof of transaction
Click to upload receipt (photo or PDF)
📄
Controls
Controls, statuses and actions for the transaction.
History
Action history performed on the transaction.
Autosaves as draft
↩ Return to consignor
How does the consignor want their item(s) back?
Invoice
Set who / when
Done by
Date
Purchase
Add supplier
Supplier / Company name *
Contact person
Phone / WhatsApp
Email
Instagram
Telegram
fFacebook
♪TikTok
小Xiaohongshu (RED)
𝕏X (Twitter)
Country / Region
Currency
Address
Payment method / Bank details
Notes
Add consignor
Full name *
Nickname
IC / Passport no.
Phone
Email
Instagram
Telegram
fFacebook
♪TikTok
小Xiaohongshu (RED)
𝕏X (Twitter)
Address
Bank name
Bank name (specify)
Account number
IC / Passport photo
Click to upload IC / Passport photoJPG, PNG — will be compressed
Notes
🌐 Message language (auto-translates WhatsApp drafts)
Add customer
Role
👤 Customer 🤝 Consignor 👔 Staff 🏢 Company
🛡️ Nothing to verify — money paid to this party has no bank transfer receipt (direct debit, statutory portal), so it skips the maker/checker
A contact can hold more than one. 👔 Staff are the people who can file an expense claim — the Claimed-by picker on a staff claim reads this list. 🏢 Company is a business you pay — the suppliers and vendors your expenses are billed by.
Full name *
Nickname
Phone / WhatsApp
Second phone — optional
Email *
Instagram
Telegram
fFacebook
♪TikTok
小Xiaohongshu (RED)
𝕏X (Twitter)
IC / Passport No.
Address (street, unit, building)
Postcode
City
State
Delivery contact — optional, who receives the parcel
Delivery contact phone
Notes
🔗 Referred by (who introduced them)
🌐 Message language (auto-translates WhatsApp drafts)
🤝 Consignor payout details
Bank name
Bank account no.
IC / Passport photo+Upload IC photo
📥 Import customers
Paste rows copied from Excel or Google Sheets (or comma-separated). Columns, in order: Name, Phone, Email, IC, Address, Notes. Only Name is required. A header row is optional — it's detected automatically.
↩ Refund in
Money coming back to you — a supplier refund (returned/cancelled stock) or a consignor clawback (recovering a payout after a refund).
Type
From (supplier / consignor)
Amount (RM)
Date
Received via (account it lands in)
Linked invoice / SKU (optional)
Reason / notes
Proof (receipt / bank-in slip, optional)📎 Attach
📥 New inbound delivery
From
Which bag is coming back?
Pick the bag you sent for repair — marking it received here finishes the repair.
Sender name
Item(s) / contents
Courier
Expected date
Tracking code
Notes
Photos (parcel, product, receipt)📷 Add photo
💸 New expense
1 General
Contact, number, reference and date for the voucher.
Category *
Description *
Contact (paid to)*
🙋 Claimed by
🔗 Link to purchase / shipment (optional — e.g. the import this courier fee belongs to)
No.
Reference No. — the supplier's invoice no., what Bukku reconciles on
🔗 Bukku carries the supplier's number as its Reference No., so this is the only field the two systems can match on. Left blank, this expense can only ever be matched by a guess on amount + name. Leave it blank only if there genuinely is no number.
Date *
2 Items
What the money was for — one line per account.
Amount (RM) *
Costs *(one line per cost — qty × unit price)
3 Payment Made
Which account the money left.
#
Pay From *
Amount
1
—
Payment Total
MYR
—
💳 / 💵 Paying from a Credit card or Cash account auto‑skips the maker/checker (no transfer to verify). Bank transfers still go through verification.
4 Others
The supplier invoice, receipts and proof — photos or PDFs.
🔁 Repeat every month For fixed costs like rent or utilities — a copy is added automatically each month (same day). Edit or delete this one anytime to change or stop it.
History
Action history performed on the transaction.
🏦 New fund transfer
1 Transfer
Which account the money left, where it went, how much and when.
From (your account)
To *(where it went)
Amount (RM)
Date
2 Details
What it was for, the reference, and any link to a trip.
Purpose
Method / reference
Notes
Link to trip (optional — adds to that trip's RM balance)
3 Attachment
The purchase invoice or transfer slip.
Purchase invoice (maker — photo or PDF)
📎 Tap to attach the purchase invoice
History
Action history performed on the transaction.
🏦 New account
Account name *
Type
Opening balance (RM)
Balance as of (only money in/out AFTER this date is counted)
Account logo (optional — upload your bank / card logo)
📎 Tap to upload a logo
⭐ Main account — any sale / expense / payout / stock payment not assigned to a specific account counts here✅ Nothing to verify — money leaving this account has no bank transfer for a checker to confirm, so it skips the maker/checker. Always on for Credit card and Cash accounts; tick it for wallets like the Director Wallet.
➕ Record money in
1 General
Contact, number, date and currency for the voucher.
Contact *
Billing Attention
Billing Party
No.
Reference No.
Date *
Currency *
Rate
Tags (comma-separated)
2 Items
What the money was for — one line per account.
3Payment Made
Which account the money left, by what method.
4 Others
Remarks, description, internal note and attachments.
Remarks
Description
Internal Note
🔁 Repeat every month A copy is created automatically each month on the same day (e.g. a salary). Untick to stop.
Attachments
📎 Tap to attach a receipt
History
Action history performed on the transaction.
👤 Take item for director use
Item — own stock only *
Drawing amount (RM) *
The figure charged to the director — prefilled with the item's landed cost when you pick; set it to Bukku's stock cost when you settle.
Date taken *
Taken by
Purpose / notes (optional)
The item leaves stock as Director Use (reversible). No money moves — the drawing is charged to the director's account (Bukku 1007 Director Account) at cost.
💰 Settle drawings to Director Account
Tick the drawings recorded in Bukku (stock adjustment + journal Dr 1007 Director Account). Set each amount to what Bukku charged — Bukku's stock cost can differ from the app's landed cost. Settled drawings leave the outstanding total; the items stay with the director.
Whose account?
Journal date *
Bukku journal ref
Drawings to settle
🤝 Consign back to the shop
Consignor (the director) *
Payout when sold (RM) *
Selling price (RM)
Intake date *
The same item (same SKU) goes back on sale as consignment — the director gets the payout when it sells, like any consignor. It appears in Consignment and Bukku intake as usual.
New trip
Trip name *
Start date
End date
Opening cash on hand (optional)
Yen you already hold at the start of this trip — e.g. carried over from a previous trip, before any ATM withdrawal. Counts as ¥ available so the leftover balance is right.
Opening ¥
Its RM cost (value)
ATM withdrawal
Date
Card used opt
RM debited from bank *
¥ withdrawn *
MY bank fee (RM) opt
JP ATM fee (¥) deducted from cash
Headline / quoted rate (optional, for reference)
ATM slip
📎 Tap to attach the ATM slip
Rate slip
📎 Tap to attach the rate slip
Record a spend
What did you buy / pay for? *
Amount (¥) *
Date
Type
🔗 After saving, you'll be offered to link this to an unpaid purchase invoice you already created — paying it off from this trip.
Receipt (optional)
📎 Tap to attach a receipt (optional)
✅ Verify (checker)
Bank transfer receipt *
Click to upload the bank transfer receipt
As checker you confirm the maker's purchase invoice and attach proof the bank transfer was made. Your name and time are recorded.
📎 Add file
File *(photo or PDF)
📎 Tap to choose an invoice / receipt / document
Description
📁 Folder (the app remembers this supplier & auto-files next time)
When you file something into a folder, the app remembers it by supplier and auto-files the next one. You can also add your own keyword rules.
📌 Learned by supplier
🔑 Your keyword rules
If text contains…
→ Folder
🔀 Merge duplicate contacts
Merging keeps ONE record, fills in any missing details from the other, moves everything that pointed at the duplicate onto the kept one, and sends the duplicate to Trash.
✍️ Manual merge
Keep this one
Merge this duplicate into it
🩺 Link integrity check
Finds sales, appointments & consignment items whose hidden contact link doesn't match the name shown — the condition that lets a merge reassign the wrong records. Runs automatically when you open this tool.
🔎 Possible duplicates (any shared detail — phone, email, IC, social, bank acct or name — across customers, consignors & suppliers)
🔀 Re-apply receipt
Tick the invoices this receipt should settle and set how much goes to each. The total must match the receipt.
Add sourcing request
Autosaves as draft
Contact profile
🛎️ Services
Name · default price · details shown under the line · Bukku SKU. Every box saves when you leave it; the list syncs to the whole team and the picker behind this window updates at once.
💳 Adjust store credit
Amount (RM)
Reason / note (optional)
Add user
Full name
Email address
Password
Role
💱 Exchange Rates
How much 1 unit of each currency equals in MYR. Auto-updates daily from live market rates; you can also edit any rate manually.
🛠️ Send to repair
Repair shop / vendor
Date sent
Tracking code (if posted)
Estimated repair cost (MYR)
Notes (what's being repaired)
📤 While out, this bag shows under Shipping → Outgoing. When it's back, create an Inbound record (source “Repair”) to log its return.
💳 Record payout
📤 This sends the payout to Purchases as pending. An admin (checker) does the actual bank transfer, attaches the receipt, and that marks it paid.
Payout amount (MYR)
Payout date
Payment method
Paid from account
Proof of transaction (receipt / transfer screenshot — max 5MB)
💵 Record payment
Payment amount (MYR)
Payment date
Payment method
Proof of transaction (receipt / transfer screenshot — max 5MB)
🚚 Shipping
Courier
Tracking number / link
For Grab/Lalamove, paste the live tracking URL here — the Track button opens it directly.
Ship date
Status
Remark (optional)
📦 New shipment
For something you need to send that isn't a sale (gift, replacement, return, document…).
Recipient
Phone / WhatsApp
What are you sending?
Date
Choose courier
Pick a courier, then enter the tracking number
📅 New appointment
Customer (search existing or type new)
Phone / WhatsApp
Instagram
Date
Time
Purpose
Product (search by name or SKU)
↩ On save, this consignment item's return will be recorded automatically (self-pickup).
Notes
🔔 New reminder
What to remember *
Date *
Time (optional)
Repeat
Repeat until (optional)
Notes
🧾 New bill — stock and costs on one receipt
🔧 Customise form
Drag ⠿ to reorder fields. Tap the eye to hide a field you don't use. Required fields can't be hidden. Saved for the whole team.