Invoice Management
| Master Folio | Invoice No | Check-In No | Guest | Company | Nationality | Country | Arrival | Departure | Total (RM) | Room | E-Invoice | Push | Actions | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||||||||
Report
📋 Invoice detail list
| Master Folio | Invoice No | Check-In No | Guest | Company | Nationality | Country | 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.
Export to accounting system
Export your invoices as a file your accounting system (SQL Account, AutoCount, Excel…) can import. One row per invoice.
SQL Account mapping — applied to every invoice
One row per invoice · dates dd/mm/yyyy · amounts without currency symbols — ready for SQL Account's XLS/MDB Import.
—
Post via API
Send invoices directly to your accounting system's API instead of a file. Leave the URL blank to simulate (demo mode).
Uses the date range on the left. Each invoice is sent and marked pushed.
Company Details
Your company/hotel details — used on printed folios and reports. Saved separately for each hotel.
Invoice Number Series
Configure the prefix and number range used when assigning invoice numbers.
Preview: 001
Payment Types
Import your payment-type master (JSON) — description, GL account, category. Re-importing only adds new codes (no duplicates). The quick chips above are for typing suggestions.
Charge Codes
Import your charge-code master (JSON) — description, GL account, tax settings and more. Re-importing only adds new codes (no duplicates). Posting a charge lets you pick from these.
Invoice Operations
Assign New Numbers = number only the new (un-numbered) invoices, continuing from the last one used (nothing already numbered is touched). Rearrange All = re-sequence every unlocked invoice into clean date order.
🔒 Month Lock
Lock a finished month (all invoices whose departure falls in it) so nothing can be edited, renumbered or deleted. Unlocking requires an owner or manager.
Charge Rate Defaults
Fallback rates used when posting/importing a charge. Serv Chrgs and SST are a % of the amount; TTX is a fixed amount (RM). Saving also updates the SST % and TTX amount on all charge codes that use them.
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