Skip to main content

Official websites use .gov
A .gov website belongs to an official government organization in the United States.

Secure .gov websites use HTTPS
A lock ( ) or https:// means you've safely connected to the .gov website. Share sensitive information only on official, secure websites.

Working with claims

What’s in an EOB

Each EOB represents one claim and contains:

  • Who: The patient, provider, and care team
  • What: Diagnoses, procedures, and items/services provided
  • When: The service period (billable period)
  • How much: What was billed, what Medicare allowed, and what was paid
  • Type: Whether it’s inpatient, outpatient, carrier, pharmacy, etc.

Anatomy of an EOB response

When you request /ExplanationOfBenefit, you get a Bundle of claims:

{
"resourceType": "Bundle",
"type": "searchset",
"total": 89,
"link": [
{ "relation": "next", "url": "...?startIndex=10&_count=10" }
],
"entry": [
{
"resource": {
"resourceType": "ExplanationOfBenefit",
"id": "carrier--10045426206",
"type": { ... },
"patient": { "reference": "Patient/-20140000000001" },
"billablePeriod": {
"start": "2025-01-15",
"end": "2025-01-15"
},
"provider": { "reference": "#provider-org" },
"contained": [ ... ],
"careTeam": [ ... ],
"diagnosis": [ ... ],
"item": [ ... ],
"payment": { ... },
"benefitBalance": [ ... ]
}
}
]
}

The response is paginated: 10 claims per page by default. See Handling Pagination.

Reading line items

Each claim has an item array: one entry per service or product. A doctor visit might have one item; a hospital stay could have dozens.

{
"item": [
{
"sequence": 1,
"diagnosisSequence": [1],
"careTeamSequence": [3],
"category": {
"coding": [
{
"code": "1",
"display": "Medical care",
"system": "https://bluebutton.cms.gov/resources/variables/line_cms_type_srvc_cd"
}
]
},
"servicedPeriod": {
"start": "2025-01-15",
"end": "2025-01-15"
},
"adjudication": [ ... ]
}
]
}

Linking items to diagnoses and providers

Items reference other parts of the EOB using sequence numbers:

  • item.diagnosisSequence: [1] links to diagnosis[].sequence: 1
  • item.careTeamSequence: [3] links to careTeam[].sequence: 3
{
"diagnosis": [
{
"sequence": 1,
"diagnosisCodeableConcept": {
"coding": [
{
"code": "Z0000",
"display": "ENCNTR FOR GENERAL ADULT MEDICAL EXAM W/O ABNORMAL FINDINGS"
}
]
}
}
],
"careTeam": [
{
"sequence": 3,
"provider": {
"identifier": {
"value": "1234567890"
}
},
"role": {
"coding": [
{
"code": "performing",
"display": "Performing provider"
}
]
}
}
]
}

This tells you: item 1 was for diagnosis Z0000 (general medical exam), performed by provider 1234567890.

Understanding adjudication

Every line item has adjudication data showing the financial breakdown of the claim:

{
"adjudication": [
{
"category": {
"coding": [
{
"code": "https://bluebutton.cms.gov/resources/variables/line_sbmtd_chrg_amt",
"display": "Line Submitted Charge Amount"
}
]
},
"amount": {
"value": 150.00,
"currency": "USD"
}
},
{
"category": {
"coding": [
{
"code": "https://bluebutton.cms.gov/resources/variables/line_alowd_chrg_amt",
"display": "Line Allowed Charge Amount"
}
]
},
"amount": {
"value": 120.00,
"currency": "USD"
}
},
{
"category": {
"coding": [
{
"code": "https://bluebutton.cms.gov/resources/variables/line_bene_pmt_amt",
"display": "Line Payment Amount to Beneficiary"
}
]
},
"amount": {
"value": 96.00,
"currency": "USD"
}
}
]
}

Key amounts to look for:

Adjudication codeWhat it means
line_sbmtd_chrg_amtWhat the provider billed
line_alowd_chrg_amtWhat Medicare approved
line_bene_pmt_amtWhat was paid to the beneficiary
line_nch_pmt_amtWhat Medicare paid the provider
line_coinsrnc_amtBeneficiary’s coinsurance

Look up all adjudication codes in the Code Systems page.

Claim types

Every EOB has a type field that tells you what kind of claim it is:

TypeDescriptionTypical content
CARRIERPhysician/supplierOffice visits, lab work, outpatient procedures
INPATIENTHospital inpatientHospital stays, surgeries
OUTPATIENTHospital outpatientER visits, same-day procedures
PDEPrescription Drug EventPharmacy fills
DMEDurable Medical EquipmentWheelchairs, oxygen, prosthetics
HHAHome Health AgencyHome health visits
HOSPICEHospiceEnd-of-life care
SNFSkilled Nursing FacilityNursing home care

Check the eob-type coding system in EOB.type for these values:

{
"type": {
"coding": [
{
"code": "CARRIER",
"system": "https://bluebutton.cms.gov/resources/codesystem/eob-type"
}
]
}
}

Different claim types have different fields populated. Carrier claims emphasize line items and provider info. Inpatient claims have DRG codes and length-of-stay data. PDE claims have drug codes and pharmacy info.

Common fields you’ll actually see

Here are the fields most apps care about:

FieldPathWhat it tells you
Claim typetype.coding[system=eob-type].codeWhat kind of claim
Service datebillablePeriod.startWhen the service happened
ProvidercareTeam[].providerWho provided the service
Diagnosisdiagnosis[].diagnosisCodeableConceptICD-10 diagnosis codes
Amount billeditem[].adjudication[submitted].amountWhat was charged
Amount paiditem[].adjudication[benefit].amountWhat Medicare paid
Drug codeitem[].productOrService (PDE claims)NDC code for prescriptions
FacilityfacilityWhere the service was provided

For the complete field reference, see the ExplanationOfBenefit endpoint page (LINK: TBD).

Looking for U.S. government information and services?
Visit USA.gov