Singapore dental insurance has specifics that most international dental software handles poorly. There are TPA-direct claims (Aviva, Great Eastern, AIA, AXA), Integrated Shield Plan coverage (for surgical procedures), and MediSave (limited applicability — mostly oral surgery, never general dentistry). The structural separation of insurance line from patient portion is the difference between a clean checkout and an end-of-month reconciliation that takes hours.
This article is for the clinic owner or office manager dealing with the operational reality of insurance billing in Singapore. It complements same-day billing and GST mechanics — read those first if you haven't.
The Singapore insurance landscape
For a typical general practice, three insurance interactions show up in billing:
TPA-direct (third-party administrator) claims
A patient with corporate dental cover through Aviva, Great Eastern, AIA, AXA, or similar usually has direct billing — the clinic invoices the TPA for the covered portion, the patient pays the rest at discharge. Most TPAs require pre-authorisation for procedures above a threshold (typically S$300–500), which adds an asynchronous workflow.
Integrated Shield Plans (IPs)
For inpatient surgical dental procedures (oral surgery, surgical extractions of impacted wisdom teeth in a hospital setting), IP coverage may apply. This is rare in standalone dental practice but common in oral surgery clinics. The claim runs through the hospital's admissions process, not directly through the dental clinic.
MediSave for dental
MediSave covers limited dental — surgical procedures only, mostly under specific HSA/MOH approved procedure codes (extraction of impacted teeth, certain biopsies). It does not cover general dentistry, hygiene, fillings, or cosmetic procedures. The claim is filed via MOH's portal post-procedure with supporting documentation.
The two-ledger approach
The structural model that handles all three cleanly is to keep two separate ledgers per invoice:
- Insurance ledger — what the insurer is liable for. Has its own GST handling (the insurer pays GST on their contribution; the clinic still recognises the gross fee for tax purposes).
- Patient ledger — what the patient owes at discharge. This is what gets collected in the same-day checkout flow.
The invoice surface that the patient sees has a clear structure:
- Service fee (gross, excl. GST)
- GST 9%
- Total invoice value
- Insurance contribution (with their portion of GST)
- Patient portion payable
The patient pays only the “patient portion payable” line at discharge. The insurance contribution is filed by the clinic with the TPA via their workflow.
Why conflating them hurts
Three operational failures when the ledgers are merged:
1. GST applied to the wrong base
If GST is computed on patient portion only (because the system treats “patient portion” as the invoice total), the clinic under-collects GST. IRAS expects GST on the gross service fee, not on the patient's share. The mismatch surfaces at F5 filing time as a reconciliation gap.
2. Insurance recovery delays misclassified as A/R
Insurance claims take 14–45 days to settle, depending on TPA. If the unpaid portion sits on the patient ledger as receivable, the A/R aging report flags it as a patient-due balance. The practice manager spends time chasing patients for amounts the patient doesn't owe. The right tag is “insurance pending”, not “patient overdue.”
3. End-of-month reconciliation takes hours, not minutes
When TPA payments arrive (usually batched), the office manager needs to match each payment to the right invoice and clear the insurance ledger. With separate ledgers, this is mechanical — sum payments by TPA, match to claim IDs, clear. With merged ledgers, every payment requires figuring out which invoice it partially settles and what's still owed by whom.
Pre-authorisation workflow
For TPA-direct billing on procedures above the pre-authorisation threshold (typically S$300–500 depending on TPA), the clinic submits the proposed treatment code and estimate, the TPA approves coverage amount, the clinic proceeds with treatment, the actual claim is filed post-procedure.
Modern PMS systems handle this as a workflow with states: proposed → pre-auth submitted → pre-auth approved → treatment scheduled → treatment completed → claim filed → settled. Each transition has a date and an actor. When something stalls (TPA hasn't responded in 5 days), the system surfaces it.
Without that workflow, pre-auth tracking lives in a spreadsheet the office manager updates manually, and stalls go unnoticed until a patient calls asking why their treatment hasn't been booked.
Co-payment, deductible, co-insurance
Three cost-sharing models that show up in Singapore TPA contracts:
- Co-payment — fixed amount the patient pays per visit (e.g., S$30). Same regardless of total bill.
- Deductible — amount patient pays before insurance kicks in. Tracked annually per patient.
- Co-insurance — percentage split (e.g., insurer pays 80%, patient pays 20% of the gross). Most common for dental.
A working PMS handles all three at the policy level — when the patient is selected and their TPA policy is loaded, the system applies the right rule to the invoice automatically. Manual application is where errors compound.
What to look for in PMS billing
Six checks specific to insurance handling:
- Two-ledger model — insurance and patient portions structurally separate, not just visually labelled.
- Per-policy cost-sharing rules— co-payment, deductible, or co-insurance applied automatically based on the patient's TPA policy.
- Pre-auth workflow — states + dates + actors, surfaced when stalled.
- TPA payment matching — incoming batched payments matched to claim IDs, clearing the insurance ledger mechanically.
- A/R aging by category — patient-due vs insurance-pending tagged separately so the chasing list is actually patients.
- GST on gross service fee — not on patient portion. Required for IRAS compliance.
What to do next
Audit one current week of invoices. For each insurance-involved invoice: how clear is the patient's portion? Did GST go on gross fee or patient portion? Is the insurance recovery tagged as pending or as A/R?
If the answers are messy, the structural model is the fix — not more careful manual reconciliation. See the Oralstack billing workflow for the two-ledger implementation.