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.

PaymentReconciliation — Payment reconciliation

14,500 USD received in the bank for 12 Claims from May 2026, broken down line by line: the FHIR equivalent of X12 835 (Healthcare Claim Payment / Advice).

Purpose

PaymentReconciliation is the detailed breakdown of a received payment: typically a consolidated bank transfer for multiple Claims submitted over a period. Each allocation[] identifies a target Claim, the allocated amount, and any adjustment. It is the FHIR equivalent of the X12 835 transaction in HIPAA.

Key fields

FieldTypeCardinalityRole
identifierIdentifier[]0..*External identifiers.
typeCodeableConcept1..1Mandatory. payment, adjustment, advance.
statuscode1..1Mandatory. active, cancelled, draft, entered-in-error.
kindCodeableConcept0..1deposit, periodic-payment, online, kiosk.
periodPeriod0..1Covered period.
createddateTime1..1Mandatory. Creation date.
entererReference(...)0..1Enterer.
issuerTypeCodeableConcept0..1Issuer type.
paymentIssuerReference(Organization | Patient | RelatedPerson)0..1Payment issuer.
requestReference(Task)0..1Originating request.
requestorReference(...)0..1Request author.
outcomecode0..1queued, complete, error, partial.
dispositionstring0..1Description.
paymentDatedate1..1Mandatory. Effective date.
amountMoney1..1Mandatory. Total amount.
methodCodeableConcept0..1Method (check, EFT, card).
cardBrandstring0..1Card brand if applicable.
accountNumberstring0..1Account (masked).
processorstring0..1Payment processor.
referenceNumberstring0..1External reference.
allocationBackboneElement[]0..*Line-by-line breakdown: target Claim/Account, amount, adjustment.
formCodeCodeableConcept0..1Transmission form code.
processNoteBackboneElement[]0..*Process notes.

JSON example

Reconciliation of 14,500 USD for 12 Claims, period May 2026:

json paymentreconciliation-005.json
{
  "resourceType": "PaymentReconciliation",
  "id": "pr-2026-005",
  "identifier": [{
    "system": "urn:oid:1.2.34",
    "value": "PR-2026-005"
  }],
  "type": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/payment-type",
      "code": "payment"
    }]
  },
  "status": "active",
  "kind": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/payment-kind",
      "code": "deposit"
    }]
  },
  "period": {
    "start": "2026-05-01",
    "end": "2026-05-14"
  },
  "created": "2026-05-15T11:00:00+02:00",
  "issuerType": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/payment-issuertype",
      "code": "insurer"
    }]
  },
  "paymentIssuer": { "reference": "Organization/insurer-x" },
  "request": { "reference": "Task/task-payment-batch-001" },
  "paymentDate": "2026-05-14",
  "amount": {
    "value": 14500.00,
    "currency": "USD"
  },
  "outcome": "complete",
  "disposition": "Consolidated reimbursement for 12 Claims, May 2026",
  "method": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/v3-paymentTerms",
      "code": "EFT"
    }]
  },
  "allocation": [{
    "identifier": { "system": "urn:oid:1.2.34", "value": "ALLOC-001" },
    "target": { "reference": "Claim/claim-2026-001" },
    "submitter": { "reference": "Organization/hospital-1" },
    "response": { "reference": "ClaimResponse/claimresponse-2026-001" },
    "date": "2026-05-14",
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/payment-type",
        "code": "payment"
      }]
    },
    "amount": { "value": 1250.00, "currency": "USD" }
  }]
}

Common pitfalls

  • Empty allocation — without breakdown, reconciliation is unusable for accounting allocation.
  • Sum of allocations ≠ amount — the spec doesn't require consistency, but in practice it is mandatory for audit.
  • No paymentIssuer — where does the money come from? Required for traceability.
  • Confusing with EOB — ExplanationOfBenefit explains why a reimbursement, PaymentReconciliation explains how a transfer was broken down.
  • No encryption of accountNumber — a clear-text IBAN in FHIR is a data leak.