KepFinance

Kepler Resting Services (M) Sdn Bhd — Cash Flow Ledger

KepFinance KRSM

Data health — app era

every entry since the switch should keep these green
Checking…

Reconciliation status

computed ledger balance vs the latest reported bank/cash balances

New transaction

Details

Who, when, and which way the money went.


Classification & status

Each choice here narrows the next.


Amount & notes

Value, currency and anything worth recording.


Entries

One row per entry — the fields above are shared by all of them.

AmountStay dateCard feeCommentary

Ledger

Date range
Category
Dept
Channel
Currency
Stay date
# ↓ Date Rec.ItemCategory DeptChannelAmountUSD Stay Date Invoice Actions

Daily Direct Revenue by Payment Method

Gross daily sales per channel, sale-day attributed. Foreign currencies converted to MYR at the airport rate, and the daily total to USD at the MYRUSD mid — the "KUL - Daily Regular Rev" sheet (columns through the total).

Monthly Direct Revenue

Monthly totals of regular revenue (the daily grid rolled up by sale-day month) — Landside, Airside and combined, in MYR and USD. Mirrors the Excel "TOTAL Regular Monthly Sales" block.

Direct Revenue Analyses

Each channel's share of daily revenue — Credit Card (incl. GIRO), Cash (all currencies), Booking.com, Web — sale-day attributed, with 7-day trailing averages. The facility selector drives both charts; the table below always shows Landside, Airside and Total side by side. Mirrors the "Daily Sales by Channel (%)" block.

Share of Web Sales in Direct Revenue

Channel mix — 7-day average (%)

Revenue by channel — 7-day average

Absolute revenue per channel on a 7-day trailing average. Untick a channel to hide its line. Currency switches the whole chart — each day is converted at that day's own rate, then averaged.

Daily Direct Revenue Breakdown by Payment Type

Daily Total Revenue

Consolidated daily revenue across the four channels — Cabin, Lounge, Booking.com, Web — with per-channel 7-day averages and total 7/14/28-day and all-time (running) averages. Regular channels and the USD conversion come from the ledger at the daily MYRUSD rate; Lounge is the daily lounge record. Mirrors the Excel "KUL - Daily Total Revenue" sheet (columns through the Total block).

Monthly Total Revenue

Calendar-month totals across Cabin, Lounge, Booking.com, and Web, with month-over-month growth, year-over-year growth, and daily average. The in-progress month is excluded (see the Daily Total for live figures).

7-day average revenue

7-day rolling average of total daily revenue, per facility — recreating the three "7-day average" charts on the Excel "KUL - Daily Total Revenue" sheet. The average always uses the trailing 7 days, so the date range just sets which stretch is drawn.

Landside

Airside

Total

Revenue mix — 7-day rolling share by channel

Each channel's share of total revenue on a 7-day rolling basis; with all five shown they sum to 100% each day. Show picks which lines are drawn — untick the big channels to let the scale open up on a small one like Web. Combine adds two or more channels' joint share as an extra dashed line, e.g. Web + OTA together. Every line is a share of the whole day, so hiding one never changes another.

Daily lounge guests — 7-day average

Daily Lounge Guest Numbers

Number of lounge guests accepted per program per day — the "Daily Number of Lounge Guests" block.

Monthly Lounge Guest Numbers

Calendar-month guest totals per lounge program, with month-over-month and year-over-year growth — the guest counterpart of the Monthly Total Revenue table. The newest month shows how far its days reach.

Monthly Lounge Invoice Amounts

Monthly invoice totals (MYR) per program. Use a row's Edit button to enter the actual invoice for a completed month — the unit price is then invoice ÷ guests. The current month (*) is an estimate at last completed month's unit price (shown in grey) until its invoice is entered.

Corporate — daily invoices & guests

Turkish Airlines, Malaysia Airlines and Journify are invoiced per passenger-stay — each stay is one row and gets its own invoice. The invoice amounts are revenue directly, booked on the check-in day; guest numbers are a volume metric and never affect revenue.
This page is a day-level summary (a ×N marker means N stays that day). Stays are logged and corrected per passenger on Operational → Corporate Stay.

Monthly summary

These partners are invoiced daily, so there is no separate monthly invoice to reconcile against:
each month simply sums the daily amounts entered above, and that total is the month's revenue. Edit a figure on the daily table above to change it.

Receivables — partner invoices

A self-contained invoice register: add each invoice here as you issue it, and when the money arrives, match it. Matching works both ways — several payments can settle one invoice (Match on the invoice row), and one payment can cover several invoices (Match a payment…, e.g. an airline paying a whole month of stays at once).
Every match must tie exactly: the payment total and the invoice total must be equal — no partial matches. Balances are always computed from the matches, never stored.

Invoices

Payables — supplier invoices

Log each invoice when it arrives and attach the PDF right away — that is when the document is in hand. When you pay it, Record payment writes the ledger entry itself, pre-filled, with the documents carried over. Nothing is entered twice and nothing needs matching.

Register

Bank — statement reconciliation

Import each account's e-statement CSV, then review what the matcher proposes. Nothing changes in the Ledger: approving a match only records that a bank line and its ledger row(s) are the same money. Statement lines that have no ledger row can be booked from here — the entry form opens prefilled, with every normal rule applied.

Review

Operating Performance (USD)

Corporate Expenses — Head Office (USD)

Not in the table above

Lines the sheet has no column for

Months the sheet does not cover

Month-end close

Closing a month locks its figures: transactions, lounge days and exchange rates for that month can no longer be added, changed or voided by anyone — an admin reopens the month instead, and the reason is recorded. Receivables and bank balances stay open, since payments legitimately arrive later.

Loading…

Department budget

Capex — monthly capital investment (USD)

Deposits outstanding — expected back

All deposit movements

KLIA Passenger Numbers

MAHB monthly data · Kepler facilities are in Terminal 1

Revenue per passenger (MYR)

USD reporting rates

These drive the USD conversions in the reports and load themselves every evening from BNM and TCMB — nobody types them any more. (Foreign→MYR revenue conversions use the airport rates in the next card, not these.)

Enter or correct a rate by hand

Only needed if a day is missing or a published quote was later revised — the loader never overwrites a rate entered here. Save under the ledger date, which is the day after the quotes were published (see below).

Where these rates come from
  • Loaded automatically each evening at 21:00 KUL — after BNM's 1700 session and TCMB's afternoon bulletin. If a night is missed the digest email says so, and the day can be filled from the panel above.
  • USDMYR, EURMYR, AUDMYR, GBPMYR — from Bank Negara Malaysia, the 1700 session and the middle rate — not the 0900 or 1200 session, and not the buying or selling columns.
  • USDTRY — forex selling rate from the TCMB daily rates (döviz satış), not the buying or effective rate.
  • Deliberately one day behind. Both sources publish in arrears, and this ledger follows the Excel convention: the quotes BNM and TCMB publish for 5 August are saved here dated 6 August. So a row dated 6 August holds the 5 August quotes, and a transaction dated 6 August converts at them. Keeping that offset is what makes the app and the Excel Forex sheet tie.
  • SGD — never typed: synced automatically from the ECB daily reference rates whenever the Forex tab is opened. No BNM quote or Excel methodology ever covered it.
  • Everything else is derived, exactly as in the Excel: MYR→USD = 1 ÷ USDMYR · EUR→USD = EURMYR ÷ USDMYR · AUD→USD = AUDMYR ÷ USDMYR · GBP→USD = GBPMYR ÷ USDMYR · TRY→USD = 1 ÷ USDTRY. Saving also derives the airport TRY→MYR rate as USDMYR ÷ USDTRY, since KLIA does not quote it.
  • Not these rates: foreign cash and web takings convert to MYR at the airport rates below, which KLIA sets and posts daily in the #kul-currency-rates Slack channel.

Recent rates — last 30 days; derived columns computed exactly as the Excel formulas

Sales-desk rates

Airport → MYR rates

The rates KLIA actually credits for foreign-currency takings — enter them whenever the airport updates them; they stay in force until the next entry. All foreign→MYR revenue conversions in the reports use these. TRY→MYR is not quoted by the airport — it is derived automatically (USDMYR ÷ USDTRY) each time you save the USD reporting rates above.

Recent airport rates

Total account balances (USD)

Consolidated Monthly Revenue (USD) — KRSM + KLS + KDH

Consolidated Revenue — SAW, KUL and RIX (USD)

Consolidated Revenue — 7-day average (USD)

Consolidated Revenue — 7-day averages by country (USD)

Sales channel mix — 7-day average (%)

Log corporate stay

When an airline sends stranded passengers, record the day here — Finance sees it immediately as revenue and as an awaiting-invoice item, no email needed. One passenger per entry — log each guest separately, so every stay carries its own name. Partner, facility, order date, name and amount are all required; the stay date too, except for Journify (a web order can predate a known stay day — until one is entered, the day books under the order date); Duration is optional, but Malaysia Airlines invoices need it; the Order no. is how Finance matches the partner’s payment to the invoice, so write it whenever the partner sent one.
Your own entries can be corrected until the end of the day (KUL time); anything older is Finance's to fix — except a missing stay date, which you can always add from the list below once the passenger has stayed.

New corporate stay entry

Recent corporate entries

Guests per partner, by month

Operational Dashboard

A read-only view of the same figures as the revenue and P&L tabs — nothing here changes any data.

Revenue — 7-day average

Revenue mix by stream — 7-day average

Lounge guests — 7-day average

Revenue movers

Monthly revenue — last 4 complete months

Change password

Choose a new password for your account. Use at least 8 characters.

Daily Cash Sales

One stay date, every direct channel. Leave a box empty to skip it — only the channels you fill in are entered.

Record payment

Maybank import

Drop in the Transaction Activity export — CSV preferred, PDF also works. Each settlement is placed on the stay date it was earned, and every day is compared against what the ledger already holds: new days post in full, days whose stragglers just landed get a top-up for the difference, complete days show ✓. Run it any day; the ledger always ends up holding exactly what the bank has received.

Maybank Transaction Activity export (CSV or PDF)

OCBC import

Drop in three things: the OCBC e-Statement CSV (with header) for the card batches, the GHL StatementOfAccountDetails CSV(s) for the wallets, and the Merchant Portal’s Transaction report (Transaction Query → Download, covering the same days) — together or separately, any order. Each settlement lands on the stay date it was earned and is compared against what the ledger already holds: new days post in full, stragglers become top-ups, complete days show ✓. Card grosses fill themselves from the Transaction report and cards do not post without it — the report is the proof that the gross and fee are the terminal’s own numbers, not typed ones. Wallet gross and fee come from the GHL file itself.

OCBC e-Statement CSV GHL StatementOfAccountDetails CSV(s) Portal Transaction report

Import from Excel

Nothing is saved until you review the rows and press Approve.

  1. Download the template — it lists every valid category, department and channel on its Reference sheet.
  2. Fill the Transactions sheet — one row per transaction, amounts signed: sales and other money in positive, expenses and refunds negative.
  3. Upload it here — every row is checked with the same rules as the entry form, then you approve.

Line items

Match payments

Review the selected stays

Set each amount to the remittance advice's net line — the day's revenue is corrected to what the partner actually pays. The total below becomes the invoice amount.

Total:

Break down

Invoice attachments

Drag & drop the invoice / receipt here — or click to choose a file

Update reported balances

Type what each bank app / cash count shows — leave cells blank to skip. Totals, differences and tie checks update as you type. Saving the same date overwrites it.