Skip to main content
One row per payment recorded in Elation Billing, from both insurance payers and patients. Each payment carries its amount, dates, type and method, and how much has been applied to charges. Insurance payments have no EHR equivalent, so patient_id is often empty. This table’s columns and relationships are shown in the Hosted Database schema.
claim_id is populated on patient payments only, and is always empty on payer payments. This is by design rather than a gap in the data: one payer payment routinely settles many claims at once, so Elation Billing attributes payer payments to claims through financial_transaction instead. Joining payment to claim on claim_id therefore returns patient payments alone. Use financial_transaction to attribute payer payments to claims.claimmd_era_id is populated on payer payments only, and reaches era_matched_adjustment one-to-many. A single ERA covers every charge the payer adjudicated, so one payment matches an average of roughly 26 adjustment rows and several thousand in the worst case. Aggregate era_matched_adjustment first and join the result, rather than joining row for row, or the payment amounts repeat once per adjustment line and any total built on them is inflated.
For reporting on but not limited to:
  • Total payments received by practice or date
  • Insurance vs patient payments (pay_type)
  • Applied vs unapplied payment amounts
  • Co-pays (is_copay)
  • Claim-level attribution of payer payments, through financial_transaction
  • The notes recorded against a payment, and who wrote them, by joining payment_note on payment_id

Payments by practice and month

Unapplied payment balances

Payments with their ERA adjustment totals

Summarizes the ERA behind each payer payment. The adjustment detail is rolled up to one row per ERA and practice before the join, which keeps the result at one row per payment and leaves amount safe to total. Only adjustment_amount is summed, because it is the one money column that is genuinely per-adjustment-line.

Payer payments attributed to claims

Splits each payer payment across the claims it settled, using financial_transaction as the bridge. This is the route to claim-level attribution for payer payments, since their claim_id is always empty. Note the type = 'payment' filter. financial_transaction also carries adjustment, allowed, and balance_transfer rows against the same claim, so totaling amount without filtering on type mixes write-offs and contracted-rate entries in with the money actually received, and the result can exceed the payment itself. patient_name is null wherever financial_transaction.patient_id has no matching patient record. A filter on patient_name excludes those rows.
If you have any questions about this topic please reach out to Elation Support Portal with the subject line HDB - <your_question>