Purpose
Understand what a dental claim is, what parts compose it, and how it travels from the office to insurance payment. This is the base module for the entire Billing Junior track.
What is a claim
A claim is a formal payment request that the dental office sends to the patient's insurance, detailing the procedures performed, dates, teeth, costs, and clinical justification.
In standard X12 industry format terms, a dental claim is called 837D (Dental Claim Transaction).
The claim lifecycle
1Treatment completed
The dentist performs the procedure and marks it as "Complete" in Open Dental with the CDT code (D####), tooth, surface, fee.
2Claim generation
Open Dental automatically creates a claim when there are completed procedures with assigned insurance. The claim generates with:
- Patient info: name, DOB, address, subscriber ID
- Subscriber info: plan holder + relationship to patient
- Provider info: NPI, Tax ID, rendering + billing provider
- Procedures: D#### codes, tooth, surface, fee, date
- Diagnoses (if applicable)
- Patient Control Number (PCN): unique internal identifier (max 20 chars)
3Sent to carrier
Claim is sent via clearinghouse (BrandaCare uses Stedi) to the carrier:
- Clearinghouse translates the claim to X12 837D format
- Routes it to the correct payer based on Payer ID
- Returns a 277CA (acknowledgment) within minutes confirming receipt
4Carrier adjudication
The carrier processes the claim (takes 7-30 days typically):
- Verifies patient is active
- Applies coverage rules (deductible, %, frequency limits)
- Determines how much it pays vs. what goes to patient responsibility
5EOB (Explanation of Benefits)
The carrier issues the EOB explaining how it processed the claim. If it pays → issues check or ACH. If denies → specifies reason (denial code).
More detail: TRN-CL-002 — How to Read an EOB
6Post in Open Dental
Billing Jr posts the payment in OD: insurance payment + adjustments + write-offs.
Detailed anatomy — the 8 critical data points of every claim
| Data point | Why it matters |
|---|---|
| Subscriber ID | If wrong → immediate "patient not found" denial |
| Date of Birth (DOB) | If mismatched → "subscriber data mismatch" denial |
| Group Number | Identifies specific plan — affects coverage |
| Date of Service (DOS) | Determines which plan was active + frequency limits |
| CDT codes (D####) | Defines the procedure. Invalid = denial |
| Tooth + Surface | Required for fillings, crowns, RCT, extractions |
| Fee | What you charge. UCR vs. contracted |
| Provider NPI | If not in-network → processed as OON |
Claim types by timing
| Type | When sent | Notes |
|---|---|---|
| Primary claim | First time, to primary carrier | Most common |
| Secondary claim | After primary EOB, to secondary insurance | Include primary EOB as attachment |
| Corrected claim | After a correctable denial | Mark as "corrected" + original claim # |
| Predetermination | Before treatment, for estimate | Not a real claim — it's a query |
| Appeal | After non-correctable denial | Billing Expert track |
Attachments — when to add them
| Procedure | Recommended attachment | X12 PWK code |
|---|---|---|
| Crown | Pre-op X-ray of tooth | RB (Radiology) |
| SRP (D4341/D4342) | Perio chart | P6 (Perio) |
| Implant | X-ray + narrative | RB + OZ |
| Bone graft (D7953) | X-ray + narrative | RB + OZ |
| RCT (D3310-D3330) | Pre-op + post-op PA | RB |
| Secondary claim | Primary EOB | OZ (Support data) |
The BrandaCare tech stack
So you know where everything fits:
| Layer | System | Function |
|---|---|---|
| Practice software | Open Dental | Generates the claim, maintains patient records |
| API integration | OD REST API | Allows BrandaCare to read/write claims programmatically |
| Clearinghouse | Stedi | Translates to X12 and routes to carrier |
| Status tracking | Stedi 276/277 | Queries and receives claim status |
| Internal tracking | Google Sheet | Audit log + business A/R view |
