Aged Receivables: Building Dental Collections Software on PMS Data
Dental practices are sitting on $30B of uncollected patient and insurance receivables. The data to fix it is already in their PMS — here is how to build software that surfaces it, prioritizes it, and works it down.
The boring problem nobody wants to solve
Everyone in dental software wants to build the next AI scheduler or the patient app that reduces no-shows. Almost nobody wants to build collections software, because collections is unglamorous, the workflows are messy, and the buyer is a back-office manager rather than a doctor. Which is exactly why it's a great place to build a serious business.
Industry analyses put dental aged accounts receivable at roughly 8–12% of monthly production in a healthy practice and 20%+ in a struggling one. For a four-doctor general practice doing $410K a month, that's $30K–$80K of cash sitting unworked at any given time. Multiply by the ~150,000 US dental practices, then add the rest of the English-speaking dental market, and the addressable inefficiency is in the tens of billions.
The data to fix it is already in the PMS — transactions, fee schedules, insurance claims, payment history, contact info. The reason nobody's already built it is the integration tax: stitching together aged-AR views across Dentrix, Eaglesoft, Open Dental, Curve, Denticon and the long tail is a six-figure project before you write your first line of business logic. With a unified API like CRMBridge, that tax disappears, and the actual product becomes the focus.
The data model: what you need from the PMS
A working aged-receivables product reads from a small, predictable set of entities. In CRMBridge's normalized schema:
- CRMAccountReceivables — the per-guarantor aging snapshot the PMS already maintains. Includes total balance, 0–30 / 31–60 / 61–90 / 90+ buckets, and insurance vs patient portion. This is your starting list.
- CRMTransactions — line-level history. You need this for the "why does this guarantor owe $1,200" drill-down: what procedures, when, what insurance paid, what writeoffs / adjustments happened.
- CRMPatients — phone, email, address, preferred contact method, language. The collections workflow lives or dies on getting in touch.
- CRMInsuranceClaims — outstanding claims that haven't been paid. Some "patient AR" is actually "the claim hasn't come back yet" — surfacing that distinction matters because the work is different (chase the carrier, not the patient).
- CRMAppointments — future and past visits. Past unpaid visits explain the AR; future visits are leverage ("you have a cleaning next Tuesday, can we settle the balance first?").
- CRMNotes — existing chart notes, including any prior collections attempts. Don't let your software call a patient who was already promised a payment plan three weeks ago by the front desk.
CRMBridge surfaces all six through one consistent API across 40+ PMS platforms. The same query that returns a Dentrix guarantor's aged AR returns the Eaglesoft / Open Dental / Curve equivalent in the same shape.
Aging buckets: trust the PMS, then validate
Every PMS computes aging slightly differently. Some age from the date of service; some age from the date of billing; a few age from the last statement sent. The nominally same "60-day balance" can off by weeks across systems. Two practical lessons we share with every collections-software partner:
- Trust the PMS's bucket as the source of truth in the UI. Front-desk staff already calibrate against the PMS's aging report; arguing with it confuses everyone. Show what the PMS shows.
- Compute your own canonical age from CRMTransactions for analytics. When you're rolling up across 30 locations or doing portfolio-level analytics, you want a consistent definition. Pick "days since the oldest unpaid line item on the account" and use it everywhere internally.
Splitting "what the user sees" from "what the analytics dashboard shows" prevents the eternal "this report says one thing, my screen says another" support ticket.
Prioritization: not all $500 balances are equal
A $500 balance from a longtime patient with a kid in for a cleaning next week is fundamentally different from a $500 balance from a one-visit patient who moved out of state nine months ago. Generic "highest balance first" worklists waste front-desk time. A modest amount of scoring goes a long way:
- Recoverability score: patient-portion AR with a future appointment scheduled and good contact info is near 100% recoverable. Same balance, no future appointment, three returned mail flags — closer to 30%. Surface the high-recoverability work first.
- Insurance vs patient portion: a 60-day balance that's 80% insurance is a claims-followup task, not a collections task. Route it to a different worklist with different scripts.
- Days-to-write-off threshold: at 90–120 days, recoverability falls off a cliff in dental. Surface anything in the 70–85-day range as "act this week or it tips into the loss bucket" — that urgency drives action.
- Patient lifetime value: a high-LTV patient with a one-time billing dispute deserves a phone call, not an automated dunning email. Use CRMTransactions to compute career production per patient and weight your contact strategy accordingly.
Contact strategy: meeting the patient where they are
The contact ladder for dental AR has become well-understood:
- 0–30 days: first statement. Don't even call this collections; it's standard billing.
- 31–45 days: friendly SMS reminder with a payment link. Conversion rate on a one-tap "pay now" link is 30–50% higher than a mailed statement.
- 46–60 days: personalized email with line-item breakdown ("here's what your insurance covered, here's what's left"). Confusion drives non-payment more than ability.
- 61–75 days: phone call from the front desk. Offer a payment plan.
- 76–90 days: registered mail or final notice; flag for collections-agency referral if no response.
- 90+ days: agency placement. A documented contact history is mandatory for the agency to take the file.
The software's job is to make sure each step happens, in order, at the right time, without anyone manually queuing it. The PMS's aging report tells you who's in each bucket; CRMBridge gives you their phone, email, language preference, and insurance status; you orchestrate the rest.
Two pitfalls to design around: (1) a patient who pays partway through the ladder needs to drop out immediately — nobody loses goodwill faster than a "you owe us $0" auto-text the day after their payment posted; (2) a patient on an active payment plan should be exempt from the standard cadence — honor the plan you negotiated.
Payment plans: the underused recovery tool
A patient who can't pay $1,800 today often can pay $150/month for twelve months. Practices that systematically offer payment plans recover a meaningfully larger share of aged AR than practices that don't. The blocker is operational, not financial — setting up plans manually is slow, tracking them is error-prone, defaulting on a plan often goes unnoticed for weeks.
A modern dental collections product builds payment-plan workflow as a first-class feature:
- Patient self-serve enrollment via a portal link (no phone tag).
- Automated card-on-file charging on the agreed schedule, with retry-on-decline and proactive notification of upcoming charges.
- PMS write-back via CRMBridge so the practice's aging report and chart notes reflect the plan in real time.
- Default detection — missed payment kicks off a separate, gentler contact ladder rather than the standard 30/60/90 cadence.
The payment processor side (Stripe, CardConnect, etc.) is the other half. Pick one with strong subscription/recurring primitives so you don't have to rebuild scheduling from scratch.
The insurance half: chasing carriers, not patients
In a typical practice's aged AR, 30–50% is actually outstanding insurance, not patient balance. Lumping the two together is a category error — the contact strategy, the workflows, the staff who do the work, and the success metrics are completely different.
Surface them as separate worklists. For the insurance side, your software should:
- Pull
CRMInsuranceClaimsand group by carrier. - Highlight claims past the carrier's stated processing window (typically 14–30 days).
- Track the last contact date and outcome with the carrier — "called Aetna 4/12, claim in adjudication, follow up 4/26."
- Surface denial reasons consistently — the same denial code under different names across carriers (CO-45, OA-23, etc.) needs to be normalized for the front-office staff who don't memorize EDI specs.
- When a claim is finally adjudicated, automatically reclassify any remaining patient portion into the patient-collections bucket and re-trigger the contact ladder from the appropriate point.
Reporting: the metrics that matter
Practice owners and DSO operators care about three numbers, in this order:
- Days Sales Outstanding (DSO). Total AR ÷ (production / 30). Industry benchmark is 25–35 days for a healthy practice; 50+ is a problem.
- Net collections percentage. Collections ÷ (production − adjustments). Target is 98%+; sub-95% means you're writing off too much.
- Aged AR by bucket as % of total AR. Healthy mix is roughly 60% in 0–30, 25% in 31–60, 10% in 61–90, <5% in 90+. Inverted mix — lots of 90+ — is a write-off problem in the making.
The product's job is to (a) compute these correctly across whichever PMS the practice runs, (b) trend them over time, and (c) decompose them when the owner wants to know why — which providers, which procedure types, which insurance carriers, which front-office shifts.
For DSOs, add a fourth: cross-location comparison. Identify the highest-DSO outliers among 50 practices and you've found the one with the front-office training problem — or the bad billing manager — in seconds rather than quarters.
Build vs. integrate: where the leverage is
The unsexy reality of dental collections software is that the differentiated work is the workflow logic, the contact strategy automation, the payment-plan UX, the agency-handoff integration. The undifferentiated work is reading aged-AR data out of every PMS in the market.
Building those PMS connectors yourself is six months of engineer time per system, before you ship a single button. Building on top of CRMBridge means you write your collections logic once and it works against Dentrix, Eaglesoft, Open Dental, Curve, Denticon and 22+ others on day one. The same query that powers your Dentrix beta works unchanged when you sign your first DSO running a mixed fleet.
Why now
Three trends converge to make this the right moment for a serious dental collections product:
- DSO consolidation is producing buyers who think in fleet terms — portfolio aging, cross-location DSO benchmarking, centralized RCM teams. They will pay for software that gives them that view.
- Card-on-file is now table stakes for patients in a way it wasn't five years ago. Recurring payment plans no longer require selling the patient on the concept.
- SMS as a collections channel has matured (with TCPA-aware send strategies) and outperforms paper statements 5–10x on response rate.
The data, the channels, and the buyers are all ready. The integration tax is what's been keeping new entrants out. With CRMBridge, that tax goes to zero — and the actual product is what wins.
Build dental RCM software on a unified API
Pull aged AR, transactions, claims, and patient contact data from 40+ dental and veterinary PMS platforms with a single API. Skip the integration tax, ship the product.