Skip to the page
Chapters

ERAs

Get an ERA

GET/api/v1/eras/{id}

One remittance as JSON: the payment (method, trace number, date, total), whether it adds up, and every claim payment with its lines, each matched to its claim or shown unmatched (with the patient's name as the payer wrote it, to match it by hand). Adjustment codes come with plain words. An ERA of another organization or mode is not found.

Needs a key with read permission.

Request

Path parameters

Path parameters
NameTypeRequiredDescription
idstringrequiredAn ERA ID (era_...).

Response

The ERA. Status 200.

Response fields
NameTypeDescription
idstringAn ID that starts with era_.
objectstringAlways `era`.
statestringneeds_review: received, not yet posted; posted: you posted it.One of: `needs_review`, `posted`.
payerobject or nullThe payer in the directory, when the remittance names one we know.
payer.idstringAn ID that starts with pyr_.
payer.payer_idstringThe payer's own payer ID.
payer.namestring
payer_namestringThe payer's name as the remittance gives it.
office_idstring or nullThe office the payment was made to (the payee), when exactly one office of yours matches it.
paymentobject
payment.methodstringACH (an electronic transfer), CHK (a check), NON (no payment) or another code as sent.
payment.trace_numberstringThe EFT trace or check number: matches the deposit in your bank account.
payment.datestring (date) or null
payment.totalstringThe amount paid.Matches `^-?\d+\.\d{2}$`.
payment.provider_adjustments_totalstringAdjustments at provider level (a recoupment, a forward balance): a positive one reduced the payment.Matches `^-?\d+\.\d{2}$`.
balancedbooleanWhether the remittance adds up (the payment, each claim and each line). One that does not is flagged for review: only the claims that add up on their own were applied.
countsobject
counts.claimsintegerAt least -9007199254740991.
counts.matchedintegerAt least -9007199254740991.
counts.unmatchedintegerAt least -9007199254740991.
received_atstring (date-time)
posted_atstring (date-time) or null
findingsarray of objectWhat does not add up, if anything: each with where (payment, a claim or a line) and the two figures.
findings[].scopestring
findings[].pathstring
findings[].messagestring
findings[].expectedstring or nullAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
findings[].actualstring or nullAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
provider_adjustmentsarray of object
provider_adjustments[].reason_codestring
provider_adjustments[].referencestring
provider_adjustments[].amountstringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claimsarray of object
claims[].idstringAn ID that starts with erc_.
claims[].objectstringAlways `era_claim`.
claims[].claim_idstring or nullThe claim this payment is for; null while it is unmatched.
claims[].matchstringmatched: by the patient control number or the payer claim number; manual: matched by hand; unmatched: no claim with certainty (match it by hand).One of: `matched`, `unmatched`, `manual`.
claims[].unmatched_reasonstring or nullWhy a payment naming one of your claims was left unmatched: payer_differs (the ERA's payer is not the claim's), claim_not_payable (the claim could not take a payment in its state, such as while it is being corrected), estimate_for_claim (an estimate naming a claim), payment_for_predetermination (a payment naming a predetermination). Match it by hand once you have checked. Null otherwise.One of: `payer_differs`, `claim_not_payable`, `estimate_for_claim`, `payment_for_predetermination`.
claims[].patient_control_numberstringThe patient control number as the payer echoed it.
claims[].payer_claim_numberstring
claims[].statusobject
claims[].status.codestringThe payer's claim status (CLP02).
claims[].status.descriptionstring
claims[].outcomestringWhat the payment does to the claim: paid, denied, reversal (an earlier payment taken back), estimate (the answer to a predetermination, never a payment), or status (reported only).One of: `paid`, `denied`, `reversal`, `status`, `estimate`.
claims[].chargestringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claims[].paidstringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claims[].allowedstring or nullAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claims[].patient_responsibilitystringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claims[].adjustmentsarray of objectAdjustments at claim level (each line has its own).
claims[].adjustments[].groupstringThe adjustment group: CO (contractual), PR (patient responsibility), OA (other), PI (payer initiated) or CR (correction).
claims[].adjustments[].group_descriptionstringThe group in plain words.
claims[].adjustments[].reasonstringThe claim adjustment reason code, as sent (such as 45, 2 or 119).
claims[].adjustments[].descriptionstringThe reason in our own plain words, for the common codes; the code itself for any other.
claims[].adjustments[].amountstringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claims[].patient_namevalueThe patient as the payer wrote it, shown only while the payment is unmatched, to find its claim; null once matched.
claims[].balancedbooleanWhether its charge less its payment is its adjustments: one that is not was not applied to its claim.
claims[].appliedbooleanWhether it moved its claim (paid, denied or reversed).
claims[].postablebooleanWhether posting the ERA marks its claim reconciled: applied, the ERA not posted yet, and the claim paid or denied with this ERA's payment as its current one.
claims[].linesarray of object
claims[].lines[].procedure_codestringThe CDT code the payer paid.
claims[].lines[].modifiersarray of string
claims[].lines[].service_datestring (date) or null
claims[].lines[].chargestringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claims[].lines[].paidstringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claims[].lines[].allowedstring or nullAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claims[].lines[].unitsvalue
claims[].lines[].adjustmentsarray of object
claims[].lines[].adjustments[].groupstringThe adjustment group: CO (contractual), PR (patient responsibility), OA (other), PI (payer initiated) or CR (correction).
claims[].lines[].adjustments[].group_descriptionstringThe group in plain words.
claims[].lines[].adjustments[].reasonstringThe claim adjustment reason code, as sent (such as 45, 2 or 119).
claims[].lines[].adjustments[].descriptionstringThe reason in our own plain words, for the common codes; the code itself for any other.
claims[].lines[].adjustments[].amountstringAn amount in dollars, as a decimal string with two places (such as "113.60").Matches `^-?\d+\.\d{2}$`.
claims[].lines[].remarksarray of stringRemark codes, as sent.
claims[].lines[].line_control_numbervalueThe line control number the payer returned (ours is <patient control number>-<line>).
claims[].lines[].claim_line_numberinteger or nullThe line of the matched claim this pays; null when no line matched with certainty.At least -9007199254740991.
postable_countintegerHow many claims posting this ERA marks reconciled now (each claim once); 0 when it was posted, or has nothing to reconcile (posting it then marks it reviewed).At least -9007199254740991.

Errors

Errors
HTTP statusCodeWhat it means
401UNAUTHORIZEDA valid API key is required. Send it as "Authorization: Bearer <key>".
403PERMISSION_DENIEDThis API key is not allowed to do that.
404NOT_FOUNDNot found.
422INVALID_REQUESTThe request is not valid.
504TIMEOUTThe request took too long to finish. It may still have taken effect: look it up before sending it again with a new Idempotency-Key. What it made is found with GET /api/v1/eligibility?request_id=<this request_id>, and the same filter on /api/v1/claims and /api/v1/attachments (a key with read permission).
500INTERNALSomething went wrong on our side. Quote the request ID if you contact us.

Example

Example request

Shell
curl "https://sandbox.myclaimhouse.com/api/v1/eras/era_01JM000000E00800000000003G" \
  -H "Authorization: Bearer $CLAIMHOUSE_KEY"

Example response: 200

JSON
{
  "id": "era_01JM000000E00800000000003G",
  "object": "era",
  "state": "needs_review",
  "payer": {
    "id": "pyr_01JM000000E008000000000004",
    "payer_id": "00000",
    "name": "Example Dental Plan"
  },
  "payer_name": "EXAMPLE DENTAL PLAN",
  "office_id": "off_01JM000000E008000000000003",
  "payment": {
    "method": "ACH",
    "trace_number": "SBXEFT000001042",
    "date": "2026-09-24",
    "total": "820.80",
    "provider_adjustments_total": "0.00"
  },
  "balanced": true,
  "counts": {
    "claims": 2,
    "matched": 1,
    "unmatched": 1
  },
  "received_at": "2026-09-24T21:03:30.000000+00:00",
  "posted_at": null,
  "findings": [],
  "provider_adjustments": [],
  "claims": [
    {
      "id": "erc_01JM000000E00800000000003H",
      "object": "era_claim",
      "claim_id": "clm_01JM000000E00800000000002G",
      "match": "matched",
      "unmatched_reason": null,
      "patient_control_number": "CH4Q7M2K9TRB",
      "payer_claim_number": "990000001042",
      "status": {
        "code": "1",
        "description": "Processed as primary."
      },
      "outcome": "paid",
      "charge": "1140.00",
      "paid": "820.80",
      "allowed": "1026.00",
      "patient_responsibility": "205.20",
      "adjustments": [],
      "patient_name": null,
      "balanced": true,
      "applied": true,
      "postable": true,
      "lines": [
        {
          "procedure_code": "D2740",
          "modifiers": [],
          "service_date": "2026-09-24",
          "charge": "1140.00",
          "paid": "820.80",
          "allowed": "1026.00",
          "units": 1,
          "adjustments": [
            {
              "group": "CO",
              "group_description": "The provider writes this off under its contract with the payer. The patient is not billed.",
              "reason": "45",
              "description": "The charge is more than the payer fee schedule allows.",
              "amount": "114.00"
            },
            {
              "group": "PR",
              "group_description": "The patient owes this.",
              "reason": "2",
              "description": "The patient coinsurance share.",
              "amount": "205.20"
            }
          ],
          "remarks": [],
          "line_control_number": "CH4Q7M2K9TRB-1",
          "claim_line_number": 1
        }
      ]
    },
    {
      "id": "erc_01JM000000E00800000000003J",
      "object": "era_claim",
      "claim_id": null,
      "match": "unmatched",
      "unmatched_reason": null,
      "patient_control_number": "PMS-77812",
      "payer_claim_number": "990000001077",
      "status": {
        "code": "4",
        "description": "Denied."
      },
      "outcome": "denied",
      "charge": "310.00",
      "paid": "0.00",
      "allowed": null,
      "patient_responsibility": "0.00",
      "adjustments": [],
      "patient_name": "SAMPLE, MIA",
      "balanced": true,
      "applied": false,
      "postable": false,
      "lines": [
        {
          "procedure_code": "D4341",
          "modifiers": [],
          "service_date": "2026-09-24",
          "charge": "310.00",
          "paid": "0.00",
          "allowed": null,
          "units": 1,
          "adjustments": [
            {
              "group": "CO",
              "group_description": "The provider writes this off under its contract with the payer. The patient is not billed.",
              "reason": "119",
              "description": "The benefit maximum for the period has been reached.",
              "amount": "310.00"
            }
          ],
          "remarks": [
            "N130"
          ],
          "line_control_number": "1",
          "claim_line_number": null
        }
      ]
    }
  ],
  "postable_count": 1
}