Back to Blog

How to Audit Dental Payments: A Step-by-Step Guide to Finding What Insurance Owes You

A dental payment audit is the process of systematically comparing what your insurance payers actually paid versus what they were contractually obligated to pay based on your negotiated fee schedules. In EDiFi's beta validation across 2,399 real dental claims, this process found $59,000 in underpayments at a single practice — 27% of all audited claims were underpaid.

That number is not an anomaly. Across the practices we've analyzed, the pattern repeats with striking consistency: payers are systematically remitting less than contracted rates, and most dental offices have no process in place to catch it. The money is simply written off as a timing issue, a coordination-of-benefits complexity, or worse — assumed correct.

This guide walks through exactly how to conduct a dental payment audit from scratch, what tools and data you need, the most common underpayment patterns to look for, and how to move from a one-time audit to a continuous payment integrity system. Whether you're doing this manually for the first time or evaluating software solutions, the framework is the same.

What Is a Dental Payment Audit?

A dental payment audit is a systematic review of insurance payments received against the amounts your practice was contractually entitled to receive under each payer's fee schedule. It is not the same as a claims audit (which focuses on whether claims were submitted correctly) or a billing audit (which focuses on coding accuracy). A payment audit focuses entirely on the back end: what came in versus what was owed.

The audit compares three data points for every processed claim:

  1. Your submitted fee — what you billed for each procedure code
  2. Your contracted rate — the amount each payer agreed to pay for that procedure under your specific contract
  3. The actual payment received — what the payer actually remitted per the EOB or ERA

When the actual payment is less than the contracted rate, that gap is an underpayment. It is money your practice is owed, and in most cases, you have a contractual right — and a limited window — to pursue it.

Payment audits differ from denial management. A denied claim is one the payer explicitly rejected. An underpayment is a claim the payer processed and paid — just at the wrong amount. Because the claim appears "closed" in your system, underpayments are far more likely to go undetected. That invisibility is precisely what makes them so costly at scale.

Why Dental Practices Are Being Underpaid Right Now

Payer underpayment is not a new problem, but its scale and sophistication have grown considerably over the past decade. The average dental practice is estimated to lose between $30,000 and $80,000 per year in insurance underpayments — most of it undetected and unrecovered.

Understanding why this happens helps you audit more effectively:

  • Fee schedule loading errors: When payers update their systems, contracted rates are sometimes loaded incorrectly — wrong amounts, wrong procedure codes, wrong effective dates. These errors can persist for months or years across thousands of claims before anyone notices.
  • Contract version mismatches: Most dental practices have multiple fee schedules across multiple payers, sometimes with different rates for different plan types (HMO, PPO, EPO) within the same payer. When a claim is processed against the wrong fee schedule version, the payment comes up short.
  • Downcoding: Payers sometimes substitute a less complex, lower-reimbursing procedure code for what was submitted. A submitted D2750 (crown, porcelain fused to high noble metal) may be paid at D2740 rates. The claim processes, but at a lower amount than contracted.
  • Bundling and unbundling errors: Payers apply different rules about which codes can be billed separately and which must be bundled. When their bundling logic is applied incorrectly or inconsistently, individual procedures are systematically underpaid.
  • CDT code update lag: New CDT codes take time to propagate through payer processing systems. In the interim, claims for newer codes are often cross-walked to older, lower-paying equivalents without disclosure.
  • Coordination of benefits (COB) miscalculations: When a patient has dual coverage, the secondary payer's liability is calculated based on what the primary paid. If the primary underpaid, the secondary calculation compounds the error.

Payers process millions of claims per month. The errors described above are systemic, not accidental — they emerge from the interaction of complex adjudication logic, fee schedule databases, and code translation tables. Individual claims are rarely reviewed by a human. They pass through automated systems, and those systems have embedded errors that persist until someone challenges them.

The industry loses over $16 billion annually to revenue leakage across billing, eligibility, and payment integrity failures. Underpayment is one of the most recoverable pieces of that problem — but only if you have a process to find it.

27%of audited claims were underpaid in EDiFi's beta validation across 2,399 real claims
$59Kin underpayments found at a single practice during EDiFi's initial validation run
$80Kestimated maximum annual underpayment loss for a mid-size dental practice

What You Need Before You Start an Audit

A payment audit is only as accurate as the data it runs against. Before you start comparing payments to contracted rates, you need to assemble the right inputs. Missing any of these will compromise your results.

Prerequisites Checklist:

  • Current, signed fee schedules for every active payer. This is the foundation. If your fee schedule documents are more than 12 months old, request updated copies directly from each payer's provider relations department. Fee schedules are updated annually — sometimes mid-year — and your copies must match the effective dates of the claims you're auditing.
  • EOBs or ERAs (Electronic Remittance Advices) for the audit period. You need the actual payment documentation for each claim, not just the amounts recorded in your PMS. ERAs in 835 transaction format contain the specific adjustment reason codes that tell you why a claim was paid the way it was.
  • Claim-level data from your practice management system. You need procedure code, date of service, billed amount, patient, and payer for every claim in the audit window. Most PMS platforms can export this as a report or spreadsheet.
  • Your provider contract numbers and effective dates. Each payer relationship has a contract with a specific effective date and rate table. You need to know which contract version was in force on each date of service.
  • A clean, deduplicated patient and payer master list. Duplicate records cause false matches and missed payments. Verify that patient IDs and payer IDs are consistent across your PMS export and your EOB data before you start comparing.
  • A defined audit window. Most payer contracts include a timely filing limit for underpayment disputes — typically 90 to 180 days from the date of payment. If you're doing a retrospective audit, start with the most recent 6 months to maximize recovery eligibility, then work backward.
  • A spreadsheet or audit tool to log findings. You'll need to track claim number, DOS, procedure code, contracted rate, amount paid, variance amount, and dispute status for each finding. A simple spreadsheet works for a manual audit; software is needed at scale.

The most common audit failure point: outdated fee schedules. Practices often have fee schedules from 2–3 years ago and assume payer rates haven't changed. They have. Always request a current fee schedule directly from provider relations before running any audit. An audit built on stale rates will generate false positives and miss real underpayments at the same time.

Step-by-Step: How to Audit Your Dental Payments

With your prerequisites in place, follow these six steps to conduct a complete dental payment audit:

  1. Pull your claim data for the audit period.

    Export a complete list of processed insurance claims from your PMS for the time window you've chosen. Include every claim where an insurance payment was received (not just denials). For each claim, you need: claim ID, date of service, procedure codes, billed amount, insurance payment received, patient responsibility applied, and payer name/ID. Filter out self-pay and unprocessed claims — focus only on claims that show an insurance payment in your system. If your PMS stores line-item detail, export at the procedure code level, not just the claim level. One claim can contain multiple procedure codes with different contracted rates, and they need to be evaluated individually.

  2. Map each claim to its contracted fee schedule.

    For each claim, identify the payer and the correct fee schedule version that was in effect on the date of service. This is the step most practices skip, and it's why manual audits are error-prone. You need a lookup table: payer → plan type → procedure code → contracted rate → effective date range. Build this from your fee schedule documents. For practices with 5 or more payer contracts, this mapping process alone can take several hours. Prioritize your highest-volume payers first — Delta Dental, MetLife, Cigna, Aetna, and Guardian typically represent 60–75% of a typical practice's insurance revenue, and auditing these first maximizes your time investment.

  3. Calculate the variance for each line item.

    For each procedure code on each claim, subtract the actual insurance payment from the contracted rate: Variance = Contracted Rate − Amount Paid. A positive variance means the payer paid less than contracted — this is a potential underpayment. A zero variance means the claim was paid correctly. A negative variance (payer paid more than contracted) is rare but worth flagging; in some cases it represents a billing error on your part that could trigger a future audit or recoupment. Organize your findings by payer, then by variance amount. You want to identify both the total underpayment value and the frequency — high-frequency, low-dollar underpayments on common procedure codes (like D0120, D1110, or D2391) add up fast and are typically the result of systematic fee schedule errors rather than one-off mistakes.

  4. Separate legitimate adjustments from true underpayments.

    Not every negative variance is a recoverable underpayment. Some differences are legitimate: patient cost-sharing (deductibles, coinsurance), contractual write-offs for procedures above your fee ceiling, frequency limitation adjustments, or COB reductions. Your EOB or ERA will include reason codes that explain each adjustment. Common ANSI reason codes to watch: CO-45 (charges exceed fee schedule), PR-1 (deductible), CO-97 (payment included in allowance for another service), and OA-23 (impact of prior payer). Pull the reason codes for each claim with a variance and separate out the adjustments that are contractually valid. What remains after removing valid adjustments is your net underpayment pool — the money you have a right to recover.

  5. Prioritize and document your disputes.

    Organize your underpayment findings into a dispute log. For each finding, record: claim number, date of service, procedure code, contracted rate, amount paid, variance, reason code, and the specific provision in your payer contract that supports the dispute. Sort by dollar amount and by payer. Target the highest-value payers and highest-frequency underpayment patterns first. Check the timely appeal window for each payer — most contracts allow 90 to 180 days from the date of payment for disputes. Claims outside the appeal window are typically unrecoverable, so move quickly once you identify findings. For patterns affecting many claims (such as a fee schedule loading error that underpaid an entire procedure code across months), document the systemic nature of the error. A single letter addressing 40 claims at once is far more effective than 40 individual appeals.

  6. Submit disputes and track resolution.

    Each payer has a specific process for submitting payment disputes. Most require a written reconsideration request, a copy of the original EOB, documentation of your contracted rate, and a calculation of the disputed amount. Some payers have online portals; others require fax or mail. Submit each dispute with a clear reference to the specific contract language that was violated. Log every submission with a date and confirmation number. Follow up after 30 days if you have not received a response. Escalate to your payer's Provider Relations department if the initial dispute is denied without substantive explanation. Track your recovery rate by payer — over time, this data tells you which payers have systematic problems and informs your next contract negotiation. See our frequently asked questions for more guidance on dispute timelines and escalation paths.

The Most Common Underpayment Patterns

Across our analysis of thousands of dental claims, the same underpayment patterns appear repeatedly. Knowing what to look for helps you move through a manual audit faster and configure automated detection correctly.

Underpayment Pattern How It Appears Typical Impact
Fee schedule version mismatch Consistent underpayment across many codes from a single payer; variance is flat (same dollar amount per code) High — affects all claims from that payer during the period
Downcoding EOB shows a different (lower) procedure code than what was submitted; variance equals difference between code rates Medium-high — concentrated in restorative and crown codes
Incorrect CDT-to-plan crosswalk Newer CDT codes paid at rates of older equivalents; especially visible after annual CDT updates in January Medium — concentrated in the first 6 months after a CDT update year
Improper bundling Multiple procedure codes on the same DOS bundled into a single payment; individual procedures show zero payment Medium — varies by payer bundling policy and procedure mix
COB calculation error Secondary payer remittance is lower than expected given primary EOB; often requires recalculating COB manually Low-medium — depends on dual-coverage patient volume
Missing add-on code payment Add-on codes (e.g., D4921 with D4910) paid at $0 when the payer's policy allows separate reimbursement Low — but consistent and recoverable
Contract rate not updated after renegotiation Payments processing at old contracted rates despite a new agreement being in effect; requires contract effective date verification High if renegotiation produced a meaningful rate increase

The highest-return targets in a first-pass audit are almost always fee schedule version mismatches and downcoding. These two patterns tend to be systemic — affecting dozens or hundreds of claims at a time — and they are directly provable from the contract documents you already hold.

What to Do When You Find an Underpayment

Finding an underpayment is only half the work. Recovery requires a deliberate process, and the window to file a dispute is finite.

Immediate steps after confirming an underpayment:

  • Verify the finding before submitting a dispute. Double-check the contracted rate against the actual fee schedule document, confirm the date of service falls within the contract's effective period, and make sure the variance isn't explained by a valid adjustment code. A dispute submitted with faulty data damages your credibility with the payer and makes future disputes harder to win.
  • Check your appeal window immediately. Log the date of the original payment and verify the appeal deadline under your contract. Do not wait. If the deadline is approaching, submit a placeholder dispute that preserves your right to appeal while you gather documentation.
  • Write a clear, specific dispute letter. Reference the claim number, DOS, procedure code, contracted rate, amount paid, and variance. Cite the specific section of your fee schedule or contract that establishes the rate. Avoid vague language like "we believe we were underpaid" — payers are more likely to expedite disputes that include precise, documented calculations.
  • Batch systemic disputes whenever possible. If you identify a fee schedule loading error that affected 35 claims over 90 days, one dispute letter citing all 35 claim numbers is far more effective than 35 separate submissions. It also signals to the payer that the error is systemic, which typically triggers an internal review that can recover even more than you filed for.
  • Track every submission. Keep a log with submission date, payer contact, method (portal, fax, mail), expected response date, and follow-up dates. Disputes without tracking get lost — on both sides.

Know your leverage. Your fee schedule and provider contract are legally binding agreements. Payers are required to pay contracted rates. If a payer repeatedly denies valid disputes or fails to respond within the timeframes specified in your contract, you have grounds to escalate through your state insurance commissioner or, in some cases, pursue arbitration. Documenting a pattern of systematic underpayment — not just individual disputes — significantly strengthens any escalation.

One important note on recovery expectations: the older the claim, the harder the recovery. Payers become less cooperative as claims age, even when the dispute is contractually valid. The most recoverable claims are those filed within 60 days of the original payment. Build your process so that auditing happens on a rolling basis — not as an annual project.

Building a Continuous Payment Integrity System

A one-time audit is valuable, but it captures only a snapshot. Practices that consistently recover what they're owed treat payment integrity as an ongoing operational process, not a periodic cleanup project.

A continuous payment integrity system has four components:

  1. Real-time ERA monitoring. Every ERA that comes in from a payer should be checked against contracted rates at the line-item level before it is posted to the patient account. If the payment doesn't match the contracted rate and the variance isn't explained by a valid adjustment code, the claim should be flagged for review before it gets marked as paid and closed in your PMS. Most practices post ERAs in bulk without this review step — which is exactly why underpayments accumulate.
  2. Fee schedule version control. Treat your fee schedules as living documents. Assign someone in your organization to request updated fee schedules from each payer every January (when most annual updates take effect) and any time a payer sends a rate change notice. Date-stamp every version, archive the old versions, and update your audit reference data whenever a new version is loaded. Many payers will also provide a "fee schedule effective date" on the EOB — if yours do, cross-check it against the version in your records.
  3. Monthly underpayment reporting. Set a recurring calendar item once a month to pull 30 days of ERA data, run the variance calculation, and review any claims where payment was less than contracted. At this cadence, your audit queue stays manageable, your dispute submissions stay within timely appeal windows, and you never face the multi-month backlog that makes a retrospective audit feel overwhelming.
  4. Payer performance tracking. Over time, your underpayment data becomes intelligence. Track underpayment rate, recovery rate, and average resolution time by payer. Payers with persistently high underpayment rates or low recovery rates are the ones to prioritize in your next contract renegotiation — or to escalate to state oversight if systematic violations continue. This data is also valuable when evaluating whether to accept a new payer's participation terms.

Practices that implement these four components typically reduce their ongoing underpayment rate by 70–85% within the first year — not because payers change their behavior, but because the practice stops letting errors go undetected.

How EDiFi Automates the Payment Audit Process

Doing all of this manually is possible, but it is time-consuming, error-prone, and dependent on staff availability and attention to detail. At scale — 300 claims per month, 12 payer contracts, quarterly fee schedule updates — manual auditing breaks down. That's why we built the EDiFi Payment Audit Module as a core component of the EDiFi platform.

EDiFi automates the payment audit workflow end to end:

  • Fee schedule ingestion and version management: EDiFi loads your contracted fee schedules for every payer and maintains version history. When a new fee schedule is uploaded, it is automatically applied to claims with matching effective dates — old and new rate tables are never mixed.
  • ERA parsing and line-item matching: Every 835 ERA transaction is parsed at the procedure code level. Each line item is matched to the contracted rate in real time, and the variance is calculated before the payment is posted.
  • Automated underpayment detection with reason code analysis: EDiFi's five detection engines cross-reference the variance against the payer's adjustment reason codes. Valid write-offs are separated from recoverable underpayments automatically, reducing manual review to exception cases rather than full claim reviews.
  • Underpayment dashboard and dispute queue: All findings are surfaced in a prioritized dashboard, sorted by dollar value and urgency. Disputes can be initiated directly from the platform, with auto-populated dispute letters referencing the specific contract provisions and claim data.
  • Trend reporting by payer: EDiFi tracks underpayment patterns over time, giving you payer-level performance data to use in contract negotiations and compliance escalations.

In our beta validation — 2,399 claims across real dental practice data — EDiFi identified $59,000 in underpayments that had been processed and closed in the practice's PMS without any flag. The 27% underpayment rate was consistent with patterns we've seen in other practice audits. The money was there. No one had looked.

If you've never run a dental payment audit before, start with the manual process described in this guide. Understand what you're looking for, build familiarity with your payer contracts and ERA data, and work through one payer's claims completely before expanding. Once you understand the logic, you'll see clearly why automation is the only way to run payment integrity at full practice scale.

When you're ready to move beyond manual, book a free dental payment audit with the EDiFi team. We'll run an initial validation on your actual claim data and show you exactly what we find — no commitment, no guesswork, just your real numbers.

Ready to Find Out How Much You're Owed?

Join practices on the EDiFi waitlist. We'll run your claims through our payment audit engine and show you exactly what EDiFi finds before you commit to anything.