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
🛒 What to buy next
Auto-ranked from waitlist demand + how fast each brand sells + current stock gaps.
🎯 Price Check learning
How accurate your market scans are, and how the items you accepted actually performed.
🏆 Top brands & items (this period)
⏱ Sell-through speed (last 12 months)
🚀 Capital velocity (own stock · last 12 months)
% return per week your cash earns while parked in each brand / supplier — buy more of the top, less of the bottom.
⏳
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.
Consignment Payouts
Purchases
Every Stock In becomes a purchase receipt here. Attach the supplier invoice, mark it paid, and edit details — totals recalculate automatically.
Account
📒 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. The outstanding total accumulates until a dividend is declared, then "Settle against dividend" nets the drawings off.
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.
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
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.
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.
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). On the sale form, pick one from “🛎️ Add a service.” Add new ones any time; the list syncs to the whole team.
💬 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.
🎨 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”)
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)
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 Details
What the expense was, when, and who you paid.
Category *
Date *
Paid to *
🙋 Claimed by
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.
🔗 Link to purchase / shipment (optional — e.g. the import this courier fee belongs to)
Description *
2 Costs
What this invoice was made up of — one line per cost.
Amount (RM) *
Costs *(one line per cost — qty × unit price)
3 Account
Which account the money came out of.
Paid from account *
💳 / 💵 Paying from a Credit card or Cash account auto‑skips the maker/checker (no transfer to verify). Bank transfers still go through verification.
🔁 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 Details
What the money is for, how much, when, and which account it moves.
What is it for? *
Amount (RM) *
Date *
Account
2 More
The method and any reference or memo.
Method (optional)
Notes (optional)
3 Attachment
A receipt or proof for this movement.
Receipt / proof (optional)
📎 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 to deduct from the director's dividend — prefilled with the item's landed cost when you pick, adjust if the agreed figure differs.
Date taken *
Taken by
Purpose / notes (optional)
The item leaves stock as Director Use (reversible). No money moves — the drawing amount accumulates against the director and is deducted when dividends are declared.
💰 Settle drawings against dividend
Tick the drawings this dividend covers. They stop counting in the outstanding total and move to the settled history — the items stay with the director.
Whose dividend?
Settlement date *
Dividend reference
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
💳 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.