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
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.
What fields are extracted from Explanation of Benefits statements?
Talonic returns Explanation of Benefits statements as schema-validated, typed fields. Common fields include Payer, Member ID, Claim Number, Date of Service, and more, each normalized (dates to ISO 8601, amounts as numbers) and mapped to a stable key so the output shape stays the same across layouts.
How accurate is extraction from Explanation of Benefits statements, and how is confidence reported?
Every extracted cell carries a confidence score from 0.0 to 1.0 and a provenance pointer back to the source page and region, so low-confidence values can be reviewed against the original before the data is trusted downstream. There is no single accuracy number: confidence is reported per field so you can gate on it.
Can I use Explanation of Benefits statements extraction in production?
Yes. The same engine behind this guide is available as a production REST API and Node SDK with sync, async, and streaming modes, schema versioning, signed webhooks, and EU-resident processing. Start free with an API key, then scale on usage-based pricing.
What does it cost to extract data from Explanation of Benefits statements?
There is a free tier for prototyping and agent evaluation with no credit card. Paid usage is credit-based at 1,000 credits per euro: page ingestion is 100 credits per page and registry-resolved queries are free. See talonic.com/pricing for current rates.
Ready to extract from your own Explanation of Benefits statements?
Author note
Reviewed by Talonic engineering, schema review · last reviewed 2026-06-14