Skip to main content

Extract data from Explanation of Benefits statements

An Explanation of Benefits is the statement a health insurer sends after processing a claim, and it is the document that decides how much a patient actually owes. It is not a bill, but a medical billing team, a patient advocate, and a revenue-cycle analyst all read it as one: it lists each service the provider billed, what the plan allowed, what it paid, and what falls to the patient. A billing office reconciling against a payer might process EOBs from Aetna, UnitedHealthcare, Cigna, and a Blue Cross plan in a single afternoon, each in a different layout, each tied to a claim number and a member ID, and each carrying a service-line grid: a CPT or HCPCS procedure code, the billed charge, the allowed amount, the plan paid amount, and the patient responsibility split into deductible, copay, and coinsurance. The hard part is the service-line table and the adjustment codes. A single claim can have eight service lines, and each line carries Claim Adjustment Reason Codes (CARC) such as CO-45 for a charge exceeding the fee schedule, that explain why the allowed amount differs from the billed charge. The math has to tie out per line: billed minus the contractual adjustment equals allowed, and allowed minus plan paid equals patient responsibility. Member identifiers, the claim number, and the date of service connect the EOB back to the original claim. A denied line carries a reason code and a zero paid amount that a biller has to act on. Talonic reads the EOB and returns the claim header plus a service-line array, each line with its procedure code, billed, allowed, paid, adjustment codes, and patient responsibility broken into deductible, copay, and coinsurance, so a billing team can post payments and chase denials from structured data. A claim with a date of service 2026-04-18, billed at $320.00 in USD, routes the CPT line, the EOB total, and the patient responsibility into the practice EHR.

What gets extracted from Explanation of Benefits statements

PayerUnitedHealthcare
Member IDUHC0094213
Claim NumberCLM-2026-558102
Date of Service2026-04-18
Procedure CodeCPT 99214
Billed Amount$320.00
Allowed Amount$182.40
Plan Paid$145.92
Adjustment CodeCO-45Charge exceeds fee schedule
Patient Responsibility$36.4820% coinsurance

How extraction works for Explanation of Benefits statements

EOBs are generated by payer claims systems at Aetna, Cigna, UnitedHealthcare, and the Blue Cross plans, so the service-line grid and the placement of adjustment codes differ by payer. Talonic classifies the statement and maps it to the remittance schema in the Field Registry, which separates the claim header from the per-service-line detail. Each line keeps its CPT or HCPCS procedure code, billed, allowed, and paid amounts, and its Claim Adjustment Reason Codes such as CO-45. The arithmetic is checked per line: billed minus contractual adjustment equals allowed, and allowed minus plan paid equals patient responsibility, which is itself split into deductible, copay, and coinsurance. Every value returns with a confidence score and pixel-region provenance under DIN SPEC 91491 conformity, so a billing team can verify a line against the source EOB before posting a payment or appealing a denial.

Sample extraction

A multi-line Explanation of Benefits from a commercial payer

{
  "payer_name": "UnitedHealthcare",
  "member_id": "UHC0094213",
  "claim_number": "CLM-2026-558102",
  "provider_name": "Riverside Internal Medicine",
  "service_lines": [
    {
      "date_of_service": "2026-04-18",
      "procedure_code": "CPT 99214",
      "billed": 320,
      "allowed": 182.4,
      "plan_paid": 145.92,
      "adjustment_codes": [
        "CO-45"
      ],
      "patient_responsibility": {
        "deductible": 0,
        "copay": 0,
        "coinsurance": 36.48
      }
    }
  ],
  "total_patient_responsibility": 36.48
}

Frequently asked

Does it capture the per-line adjustment codes?

Yes. Claim Adjustment Reason Codes such as CO-45, which signals a charge above the contracted fee schedule, are captured per service line, because they are what a biller needs to understand and appeal a reduced allowed amount.

How is patient responsibility broken down?

Patient responsibility is split into deductible, copay, and coinsurance per line rather than returned as a single number, so a revenue-cycle team can post the correct adjustment and bill the patient the right amount.

Does the line math get checked?

Yes. Billed minus the contractual adjustment is reconciled to the allowed amount, and allowed minus plan paid is reconciled to patient responsibility, so a line that does not tie out is flagged for review.

Ready to extract from your own Explanation of Benefits statements?

Author note

Reviewed by Talonic engineering, schema review · last reviewed 2026-06-14