Invoice Management
| Master Folio | Invoice No | Check-In No | Guest | Company | Arrival | Departure | Total (RM) | Room | E-Invoice | Push | Actions | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||||||
Report
| Master Folio | Invoice No | Check-In No | Guest | Company | Arrival | Departure | Total (RM) | Room | E-Invoice | Push |
|---|---|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||||
Import Data
Guest name · Folio No · Arrival date · Collection totals
Linked by Check-In No & Folio No · Requires Step 1 first
Recent Import Batches
Loading…
Import Policy Rules
Auto-enforced during import previewThese rules are automatically applied when you click Next on the Import detect step. Each row in the preview is evaluated and highlighted accordingly — no manual action needed.
When a file is uploaded, the system reads its column headers and scores them against two known sets of signals to determine whether it is a Daily Folio Sales or Detail Transaction file.
- +4 — Folio Type
- +4 — Nights
- +3 — Arrival
- +3 — Departure
- +3 — Guest Name
- +3 — Credit Card
- +2 — TTax
- +2 — Nationality
- +2 — Payout
- +2 — Deposit
- +1 — Cash · Others · IC · Country
- +4 — Category
- +4 — Clerk
- +3 — Net Amount
- +3 — Service Charges
- +3 — Misc Charges
- +2 — Description
- +2 — TTX
- +1 — Room · Date
How it works: Each column header in the uploaded file is normalized (lowercase, spaces/hyphens/dots removed) and matched against the signals above. The type with the higher total score wins.
Tie-break: If scores are equal, the system checks for strong unique signals — Category or Clerk → Detail Transaction; Nights or Arrival → Daily Folio Sales.
Auto-switch: If you upload a file via the Daily Folio Sales card but detection identifies it as Detail Transaction (or vice versa), the wizard automatically switches to the correct type and shows an amber notice.
Condition: The importing record's Check-In No / Invoice No already exists in the database, and that record meets either of the following:
- Invoice has been locked by the system
- E-Invoice has been submitted to the tax authority
⚠️ This invoice is locked / submitted and will be skipped during import.
Locked invoices are immutable. Re-importing them would create data inconsistency with the submitted E-Invoice record.
Condition: All data fields of the importing row are completely identical to an existing record in the database. The row is treated as a duplicate and skipped.
- • Check-In No
- • Folio No
- • Folio Type
- • Guest Name
- • IC
- • Company
- • Arrival
- • Departure
- • Nights
- • E-Invoice Status
- • Deposit · Payout · Cash · Credit Card
- • City Ledger · Others · Total
- • SST · S/Chrgs · TTax · Misc · Total
- • Category
- • Folio No
- • Check-In No
- • Room
- • Date
- • Description
- • Net Amount
- • SST
- • TTX
- • Service Charges
- • Misc Charges
- • Amount
- • Clerk
* Amount fields use ±0.01 tolerance to avoid floating-point differences.
For Detail Transactions, the entire set of rows sharing the same Folio No is compared as a group against the existing database rows for that folio.
The record does not match any locked/submitted invoice and is not an exact duplicate of existing data. It will be included in the import.
Invoice Number Series
Configure the prefix and number range used when assigning invoice numbers.
Preview: 001
Payment Types
CSV: one code per line (first column). A header row is skipped automatically.
Charge Codes
CSV: one code per line (first column). A header row is skipped automatically.
Invoice Operations
Assign sequential invoice numbers or push invoices to your external system.
Charge Rate Defaults
Applied during Detail Transaction import when a column has no value. Each rate is a % of the transaction amount.
Revenue Safe Level
Set an annual amount. The dashboard shows how much this month's revenue is over the monthly safe level (annual ÷ 12), in red — delete invoices to bring it back under.
Monthly safe level: RM 0.00
Push Target (Internal System)
Leave blank to simulate push (demo mode).
Data Backup
Download a full copy of all invoices, folios and transactions as a restorable .sql file. Keep it somewhere safe (external drive / cloud).
Restore: mysql -uroot hotel_finance < backup.sql
Team & Users
Create staff accounts, set their role, and choose which hotels they can access.
Two-Factor Authentication (2FA)
Add a second step at sign-in using an authenticator app on your phone (Google Authenticator, Authy…).
About
Hotel Finance — Financial CSV Importer
Version 1.1.0 · One invoice per Check-In No
Daily Folio Sales + Detail Transaction → auto-combined by check_in_no