How to Manage Clinic Finances for Profit: A Complete Guide for Owners & Operations Managers
N
Back to Blog

How to Manage Clinic Finances for Profit: A Complete Guide for Owners & Operations Managers

ERP & Enterprise
Nugroho Setiawan · Konsultan IT & Full Stack Developer 24 Oct 2026 6 min baca 1,424 kata 0 views
A complete guide to managing clinic finances for profit: separating COGS from overhead, controlling BPJS receivables, and analyzing margins per service with the help of a Clinic Management Information System (SIM Klinik).

Many clinics in Yogyakarta and Magelang grow from 30 visits per day to 150 visits, yet the cash balance actually gets thinner. The cause is rarely the number of patients — usually there is leakage in revenue recording, BPJS claims delayed for weeks, and service prices that have never been recalculated since 2021. When drug stock rises 15% but procedure tariffs remain unchanged, margins erode without being visible in the monthly reports. This article discusses how to manage clinic finances to be profitable with an operational approach: separating revenue from HPP, controlling receivables, and calculating margin per service. All steps can be done manually with a spreadsheet, but the results are far more accurate if supported by a correct and consistently used SIM Klinik.

Data Foundation: Separate Revenue, HPP, and Overhead

The most common mistake I encounter during clinic operational audits is not a lack of patients, but record-keeping that mixes all money in one general cash book. The cashier records total payments, the treasurer records total deposits, and the owner only sees one number at the end of the month. As a result, no one knows whether the dental clinic is truly profitable or just busy.

Separate at least three layers. Revenue is the value of services and goods recorded at the cashier. HPP includes drugs, BMHP, reagents, and proportional medical fees (for example, 40% of the doctor's procedure tariff). Overhead includes fixed staff salaries, rent, electricity, SIM Klinik license, and equipment depreciation. A real example at a primary clinic with 120 visits per day: revenue of IDR 450 million per month, HPP of IDR 180 million (40%), overhead of IDR 150 million (33%), leaving operating profit of IDR 120 million (27%). This 27% figure must be monitored every month — if it drops to 18% for two consecutive months, there is a structural problem, not just seasonality.

Technically, every service item in the SIM Klinik must have a cost center and be linked to the chart of accounts (COA). One cashier transaction must automatically split into at least three accounts: service revenue, drug revenue, and drug HPP. If your application still stores all transactions in one table without a relation to the COA, that is a sign the system needs to be tidied up — this is one of the jobs we usually handle through SIM Klinik development in Yogyakarta and Magelang.

The daily control is simple: close the cashier every day at 21:00, print reports by payment method (cash, debit, QRIS, insurance), then perform a three-way reconciliation between physical cash, bank statements, and system reports. Any discrepancy above IDR 5,000 must be explained that same day, not postponed to the end of the month.

Receivables and BPJS Claim Control with Aging Report

In clinics serving JKN, BPJS receivables can reach 35–45% of total monthly revenue. This means the clinic looks profitable in the income statement but may fail to pay salaries because the money is still at the BPJS branch office. A claim delayed by 60 days is equivalent to giving an interest-free loan to another party.

Create a receivables aging report with buckets of 0–30, 31–60, 61–90, and over 90 days. A healthy target: at least 90% of claims are paid within 45 days from the patient's discharge date. If a claim is rejected (diagnosis code does not match, documents are incomplete, or room verification), record the reason in a separate column so that the cause pattern can be analyzed. In practice, 60–70% of rejections come from 3–4 recurring types of errors, for example, an ICD-10 code that does not match the diagnosis or a SEP that is inactive at the time of service.

To prevent this, integrate BPJS bridging (V-Claim via web service) directly into the SIM Klinik so that SEP status and participant eligibility are validated before the patient enters the polyclinic. For facilities already moving toward SatuSehat, send visit data via FHIR R4 so there is no need for double entry. Add logging to every bridging request so that during a dispute, the IT team can trace when data was sent and what the server response was.

Rule of thumb: claims older than 90 days must be treated as a potential loss, not an asset, and included in the allowance for impairment.

Profitability Analysis per Service and per Doctor

The clinic's average margin hides many things. Some services have a 60% margin, some actually lose money after BMHP and staff time are calculated. Without per-service analysis, you will keep promoting products that actually erode cash.

An example from our client in Magelang: the general polyclinic has an 18% margin, minor procedures (wound suturing, excision) 55%, medical check-up packages 42%, but compounded drugs only 8% because raw material prices rose while selling prices were not adjusted. Instead of raising all tariffs, the solution was to raise compounded drug prices by 12% and create a bundling package of MCU + consultation that increased the average transaction value from IDR 320,000 to IDR 410,000.

The following query calculates margin per service from the transaction table. Run it in MySQL 8.0 or PostgreSQL 15 by adjusting the table names:

SELECT l.nama_layanan,
       SUM(t.harga_jual) AS pendapatan,
       SUM(t.hpp)        AS hpp,
       ROUND((SUM(t.harga_jual) - SUM(t.hpp))
             / NULLIF(SUM(t.harga_jual), 0) * 100, 1) AS margin_persen,
       COUNT(*) AS jumlah_transaksi
FROM transaksi_detail t
JOIN layanan l ON l.id = t.layanan_id
WHERE t.tanggal >= '2025-01-01' AND t.tanggal < '2025-04-01'
GROUP BY l.nama_layanan
ORDER BY margin_persen ASC;

Run a similar query with grouping by dokter_id to see revenue per practice hour. A doctor with revenue per hour below IDR 250,000 at a clinic whose overhead cost is IDR 1.2 million per hour needs their schedule evaluated or should be directed to higher-value services. This number-based decision is much healthier than guessing from patient volume.

Best Practices

  1. Close the books daily, not monthly. Reconcile cash and claims every day so the maximum discrepancy is Rp5.000 and it can be traced while still fresh.
  2. Lock COA at the service item level. Do not let cashiers select revenue accounts manually; mapping must be automatic from the service master.
  3. Monitor three KPIs every Monday. The HPP-to-revenue ratio (maximum target 40%), receivables aging over 60 days (maximum target 10%), and operating margin (minimum target 20%).
  4. Audit prices every quarter. Compare medicine and BMHP purchase prices with selling prices; if HPP rises by more than 5%, tariffs must be reviewed within 30 days.
  5. Back up and test restore the SIM Klinik database at least monthly. Financial data lost due to disk failure is far more expensive than the VPS cost of Rp350.000 per month.

FAQ

Does a small clinic with 30 visits per day need SIM Klinik?

Yes, but not necessarily the most expensive one. At 30 visits per day, a spreadsheet can still work, but once there are BPJS claims and multi-location medicine stock, manual recording errors usually consume 2–4% of revenue. A web-based SIM Klinik with cashier, pharmacy, and claims modules is sufficient.

How long does SIM Klinik implementation take until financial reports can be trusted?

For a primary clinic with 1–3 locations, master data migration and training usually take 3–5 weeks, with the first 2 weeks running in parallel between the new system and the old records. The new reports are considered valid after two monthly book-closing cycles without significant discrepancies.

How can BPJS receivables be controlled if bridging often errors?

Prepare a local claims queue (table klaim_pending) in SIM Klinik. If bridging fails, the data is still saved and automatically resent with a retry mechanism every 15 minutes. Importantly, every failure is recorded with an error code so it can be escalated to the IT team, rather than simply disappearing.

Can per-service margin analysis be done without a data team?

Yes. Three tables are enough: service master, transaction detail, and medicine/BMHP purchase price master. If stocktaking is routine and purchase prices are updated, the SQL query above can be scheduled as an automatic weekly report on the dashboard.

Clinic profit is not solely the result of raising tariffs, but of tidy data: HPP tracked separately, controlled receivables, and precisely known per-service margins. Start with three small steps this week — lock COA in the service master, create a receivables aging report, and run the margin query above. If your team does not yet have the technical capacity to tidy up the SIM Klinik data structure, integrate BPJS/SatuSehat bridging, or build an internal financial dashboard, we are ready to help. Our IT consulting and application development services (SIMRS, SIM Klinik, ERP, POS, website) serve Yogyakarta, DIY, and Magelang. Discuss your needs for a brief audit session.

This article is part of the knowledge base of Nugroho Setiawan, an IT consultant in Jogja (Yogyakarta). Related solutions: PilarPOS Clinic Management System BPJS & SatuSehat Integration. Need a free consultation?

Terakhir diperbarui 24 Oct 2026

Komentar

Komentar ditinjau sebelum tampil.

Belum ada komentar. Jadilah yang pertama!

Butuh bantuan implementasi?

Saya membantu konsultasi IT & pengembangan aplikasi untuk rumah sakit, klinik, dan bisnis di Yogyakarta (DIY), Magelang, dan sekitarnya.

Produk & Solusi SIMRS ERP Portfolio Konsultasi Gratis