# An EOB is not a bill. It's data.

What the plan paid and what the member may owe, line by line, typed for your agent.



**An EOB reads like a bill, and it isn't one.** It is what the bill gets checked against. **Now an agent can check it.**

## The statement that explains the claim.

After a plan processes a claim, it reports the outcome line by line: billed, allowed, plan paid and what the member may owe.

The first thing an EOB says about itself is what it is not: **this is not a bill**. Any actual bill comes from the provider, and the EOB is the document to check it against. The plan's **allowed** amount is the negotiated rate, the contract number rather than the sticker number, and the gap between billed and allowed is the first thing worth reading on every line.

The provider receives the same outcome in machine form as an electronic remittance advice, the X12 835. Member EOB and provider 835 describe one processing outcome, which is what makes the EOB parseable in the first place: under the letterhead it is already structured data.

Every reduction or non-payment carries a remark code from the industry code sets (CARC and RARC): CO-45 for a charge over the fee schedule, CO-97 for a service bundled into another. When the plan does not cover a line, the member can appeal; most plans must allow at least 180 days from the notice of the decision for an internal appeal, and the plan's own notice states the deadline.

A register note, stated plainly: the EOB is a health coverage document, not property and casualty. This family serves both registers with one design system: P&C claim documents like the [loss run](https://lossruns.claims) and the [loss notice](https://acords.co), and health revenue-cycle documents like the EOB. Same typed-schema discipline, different vocabulary, never blurred.

- **Not a bill:** The provider sends the bill. The EOB is how you check it.
- **Who gets it:** The member gets the EOB. The provider gets it as an X12 835.
- **Remark codes:** A standard code on every reduction, explaining why.
- **Appeal window:** At least 180 days for most plans, from the decision notice.
- **Register:** A health document, not P&C, typed like the loss run.

## One statement, fourteen typed fields.

The shape an EOB resolves to, from a member PDF or an 835. Free, with no key.

| Field | Type | Meaning | Source |
|---|---|---|---|
| `payer` | string | The health plan that processed the claim. | Plan |
| `member_id` | string | The member it was processed for. | Plan |
| `claim_number` | string | The plan's claim ID. Appeals cite it. | Plan |
| `provider` | string | Who rendered and billed the services. | Provider bill |
| `date_processed` | date | When the plan finished processing. | Plan |
| `lines[].date_of_service` | date | When the service was rendered. | Provider bill |
| `lines[].procedure_code` | string | CPT or HCPCS code. | Provider bill |
| `lines[].billed` | money | What the provider charged. | Provider bill |
| `lines[].allowed` | money | The plan's contracted rate, not the sticker price. | Plan |
| `lines[].plan_paid` | money | What the plan paid on the line. | Plan |
| `lines[].patient_responsibility` | money | Copay, coinsurance or deductible the member may owe. | Plan |
| `lines[].remark_codes` | string[] | CARC and RARC codes for every reduction. | Plan |
| `totals` | object | Sums across the lines. | Derived |
| `appeal_window` | object | The appeal deadline, when the EOB states it. | Plan |

Schema: https://eobs.claims/schema.json · Example: https://eobs.claims/example.json

## What your agent does with it

- **Read the statement.** A PDF or 835 remittance in, typed service lines out. `POST /parse`
- **Check the bill.** The provider's bill against what the EOB says is owed. `reconcile_eob_bill`
- **Decode remark codes.** CO-45, PR-3 and the rest, in plain words a member can use. `explain_remark_code`
- **Draft the appeal.** A letter for a line the plan didn't cover, for a person to send. `draft_eob_appeal`

## Hand it to your agent

Point your agent at the MCP server. Remark codes, the bill check and the appeal draft become tools.

```json
{ "mcpServers": { "eobs.claims": { "url": "https://eobs.claims/mcp" } } }
```

Tools:

- `get_eob_schema`: The JSON Schema (2020-12) for the Explanation of Benefits: every field, its type and what it means. Also served at https://eobs.claims/schema.json.
- `get_eob_example`: A complete, valid example Eob record with fictional values. Also served at https://eobs.claims/example.json.
- `explain_eob_field`: What one field of the Explanation of Benefits means, its type, and where the value comes from. Accepts paths like totals.
- `validate_eob`: Check a Eob record against the schema, then run the document's own checks (sums, dates). Returns valid (the shape matches), consistent (every check passes too), errors (schema) and warnings (checks). Nothing is stored.
- `explain_remark_code`: Decode a Claim Adjustment Reason Code (e.g. CO-45, PR-1, 97) into plain language: what the group code means for the member and what the reason code says.
- `reconcile_eob_bill`: Compare a provider's bill with the EOB, line by line: what the member may owe on each line (patient responsibility) against what was billed, flagging anything above it and any bill line with no matching EOB line. It compares numbers; it is not billing advice.
- `draft_eob_appeal`: Draft an internal appeal letter for one service line of an EOB, for the member or their representative to review and send. It states the line, its remark codes in plain language and the member's reason. Nothing is sent.

## Built to be read by machines

- https://eobs.claims/llms.txt · https://eobs.claims/llms-full.txt · https://eobs.claims/index.md · https://eobs.claims/index.json
- https://eobs.claims/schema.json · https://eobs.claims/example.json · https://eobs.claims/openapi.json · https://eobs.claims/mcp
- https://eobs.claims/.well-known/agents.json · https://eobs.claims/sitemap.xml · https://eobs.claims/robots.txt

## Questions

### Is an EOB a bill?

No. It is the plan's statement after it processes a claim. Any bill comes from the provider; the EOB is what you check it against.

### What is the allowed amount?

The plan's contracted rate for the service. Plan paid plus the member's share normally adds up to it.

### What do codes like CO-45 mean?

CO is a contractual write-off the member doesn't owe; PR is the member's share. CO-45 is a charge above the fee schedule, CO-97 a bundled service, PR-3 a copay.

### How long do I have to appeal?

At least 180 days for most plans, from the notice of the decision. The plan's own notice states the deadline that applies.

## Check every bill against its EOB.

Request an access key for parsing statements. Request access: https://eobs.claims/#access

---

Nothing on this site is medical, legal or billing advice. The plan processes and decides claims. © 2026 eobs.claims
