ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

ClaimResponse — Response to a Claim

The insurer's decision on a reimbursement request: outcome, adjudication, line-level amounts, payment. FHIR successor of X12 835.

Purpose of the resource

ClaimResponse carries the insurer's decision in response to a received Claim. It contains:

  • the overall outcome (success, error, partial);
  • the line-by-line decision (adjudication): submitted, eligible, copay, deductible, final benefit amounts;
  • the associated payment (amount, date, transfer identifier);
  • any errors or denial reasons.

ClaimResponse is the EOB on the provider side. The patient receives in parallel a human-readable ExplanationOfBenefit. For pre-authorisations, ClaimResponse carries the preAuthRef to be reused in the future final Claim.

Key fields

FieldTypeCardinalityRole
identifierIdentifier[]0..*Response identifier.
statuscode1..1active, cancelled, draft, entered-in-error.
typeCodeableConcept1..1Category (matching the Claim).
usecode1..1claim, preauthorization, predetermination.
patientReference(Patient)1..1Beneficiary patient.
createddateTime1..1Response date.
insurerReference(Organization)1..1Issuing insurer.
requestorReference(Practitioner | PractitionerRole | Organization)0..1Provider who had submitted the Claim.
requestReference(Claim)0..1Original Claim.
outcomecode1..1queued, complete, error, partial.
decisionCodeableConcept0..1denied, granted, partial, pending — overall decision.
dispositionstring0..1Human-readable disposition message.
preAuthRefstring0..1Pre-authorisation reference (for use=preauthorization).
itemBackboneElement[]0..*Line-by-line detail (refers to Claim items + adjudication).
addItemBackboneElement[]0..*Lines added by the insurer (rare, e.g. adjustments).
adjudicationBackboneElement[]0..*Adjudication at the whole-Claim level.
totalBackboneElement[]0..*Totals per adjudication category.
paymentBackboneElement0..1Payment details.
errorBackboneElement[]0..*Structural or business errors (line pointing to Claim item).

Line-by-line adjudication

Each item.adjudication[] describes an amount category for the corresponding Claim line. Standard categories (CodeSystem adjudication):

  • submitted — amount billed by the provider.
  • copay — patient co-pay.
  • eligible — eligible amount (after negotiated rates).
  • deductible — share applied to the annual deductible.
  • unallocdeduct — unallocated deductible.
  • eligpercent — coverage percentage.
  • tax — applicable taxes.
  • benefit — final amount paid by the insurer (critical figure).

JSON example

Positive ClaimResponse to Claim professional-2026-001: Aetna accepts USD 100 eligible, applies USD 20 co-pay, pays USD 80 to the provider on May 20:

json claimresponse-paid.json
{
  "resourceType": "ClaimResponse",
  "id": "response-2026-001",
  "status": "active",
  "type": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/claim-type",
      "code": "professional"
    }]
  },
  "use": "claim",
  "patient": { "reference": "Patient/example" },
  "created": "2026-05-16T09:00:00+01:00",
  "insurer": { "reference": "Organization/aetna" },
  "requestor": { "reference": "Practitioner/dr-jones" },
  "request": { "reference": "Claim/professional-2026-001" },
  "outcome": "complete",
  "disposition": "Claim settled as per contract.",
  "preAuthRef": "PA-2026-04-15-998",
  "payeeType": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/payeetype",
      "code": "provider"
    }]
  },
  "item": [{
    "itemSequence": 1,
    "adjudication": [{
      "category": {
        "coding": [{
          "system": "http://terminology.hl7.org/CodeSystem/adjudication",
          "code": "submitted"
        }]
      },
      "amount": { "value": 120.00, "currency": "USD" }
    }, {
      "category": {
        "coding": [{
          "system": "http://terminology.hl7.org/CodeSystem/adjudication",
          "code": "eligible"
        }]
      },
      "amount": { "value": 100.00, "currency": "USD" }
    }, {
      "category": {
        "coding": [{
          "system": "http://terminology.hl7.org/CodeSystem/adjudication",
          "code": "copay"
        }]
      },
      "amount": { "value": 20.00, "currency": "USD" }
    }, {
      "category": {
        "coding": [{
          "system": "http://terminology.hl7.org/CodeSystem/adjudication",
          "code": "benefit"
        }]
      },
      "amount": { "value": 80.00, "currency": "USD" }
    }]
  }],
  "total": [{
    "category": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/adjudication",
        "code": "submitted"
      }]
    },
    "amount": { "value": 120.00, "currency": "USD" }
  }, {
    "category": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/adjudication",
        "code": "benefit"
      }]
    },
    "amount": { "value": 80.00, "currency": "USD" }
  }],
  "payment": {
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/ex-paymenttype",
        "code": "complete"
      }]
    },
    "date": "2026-05-20",
    "amount": { "value": 80.00, "currency": "USD" },
    "identifier": {
      "system": "http://aetna.com/payments",
      "value": "PMT-2026-05-20-123"
    }
  }
}
  • outcome=complete + human-readable disposition.
  • item[0].adjudication: 120 billed → 100 eligible → 20 copay → 80 benefit.
  • total echoes Claim-level totals.
  • payment: USD 80 to provider via transfer PMT-2026-05-20-123 on 20 May 2026.

REST API

  • GET /ClaimResponse?request=Claim/professional-2026-001 — response to a specific Claim.
  • GET /ClaimResponse?patient=Patient/example&outcome=complete — patient processed responses.
  • POST /ClaimResponse — create a response on the insurer side.
  • GET /ClaimResponse?_include=ClaimResponse:request — response + source Claim.
  • POST /ClaimResponse/$resubmit — composite operation to resubmit (per profile).
  • GET /ClaimResponse?preAuthRef=PA-2026-04-15-998 — search by pre-auth reference.

Profiles

ProfileRegulatorSpecifics
Da Vinci PAS ClaimResponseHL7 Da Vinci ProjectPrior Authorization Support — carries mandatory preAuthRef.
Da Vinci CRD ClaimResponseHL7 Da Vinci ProjectCoverage Requirements Discovery.
CARIN BB ClaimResponseHL7 CARIN AllianceFor Blue Button 2.0 / CMS Patient Access API.
NCPDP Pharmacy ClaimResponseNCPDPUS pharmacy format.

Common pitfalls

  • outcome=queued never finalised — a workflow must handle the transition queuedcomplete. A ClaimResponse stuck in queued blocks EOB creation.
  • Inconsistent adjudicationsubmitted - copay - deductible = benefit must add up (per contract). Otherwise provider-side accounting reconciliation fails.
  • No request — without a reference to the source Claim, reconciliation cannot be rebuilt. Always carry request.
  • preAuthRef missing for use=preauthorization — the insurer must provide a pre-auth identifier that the provider will carry in the final Claim. Otherwise, the future Claim is processed without pre-auth.
  • Payment without identifier — the transfer number (ACH trace or SWIFT reference) is essential for provider-side bank reconciliation.
  • Claim — request being responded to.
  • ExplanationOfBenefit — patient-readable version.
  • Coverage — applied coverage.
  • PaymentNotice / PaymentReconciliation — payment flow.
  • X12 835 — legacy equivalent.
  • Patient — subject.