Skip to the page
Chapters

Usage and statements

Get a statement

GET/api/v1/statements/{id}

One statement with its lines: the products with their counts, reasons, rates and amounts, the fees, the minimum and the amount due, as they were when the month was closed. A statement of another organization is not found.

Needs a key with read permission.

Request

Path parameters

Path parameters
NameTypeRequiredDescription
idstringrequiredA statement ID (stm_...).

Response

The statement. Status 200.

Response fields
NameTypeDescription
idstringAn ID that starts with stm_.
objectstringAlways `statement`.
numberstring
issue_datestring (date)
due_datestring (date)15 days after the issue date.
monthstringThe billing month, YYYY-MM.Matches `^\d{4}-\d{2}$`.
time_zonestringThe time zone months are counted in.
modestringOne of: `test`, `live`.
livebooleantrue when this month is billed: live mode, in a month the organization was live. false for test activity and for a pre-production organization.
billingstringbilled; pre_production (live usage of an organization not yet live: not billed); test_activity (test mode: never billed).One of: `billed`, `pre_production`, `test_activity`.
notevalueIn words, why the month is not billed; null when it is billed.
statestringopen: computed from the usage records as of now; issued: read from the stored statement, which never changes.One of: `open`, `issued`.
productsarray of object
products[].productstringOne of: `eligibility`, `claims`, `attachments`, `eras`.
products[].billableintegerBillable transactions of the month.At least -9007199254740991.
products[].not_billedobjectTransactions of the month that are not billed, with the reason for each kind.
products[].not_billed.totalintegerAt least -9007199254740991.
products[].not_billed.reasonsarray of object
products[].not_billed.reasons[].reasonstring
products[].not_billed.reasons[].labelstring
products[].not_billed.reasons[].countintegerAt least -9007199254740991.
products[].ratestringThe rate in words, from the price table in force.
products[].amountstringThe product's fees for the month; 0.00 when the month is not billed.Matches `^\d+\.\d{2}$`.
products[].tiersarray of object or nullEligibility only, when the month is billed: the checks and amount of each tier.
products[].tiers[].fromintegerThe first check of the month this tier covers.At least -9007199254740991.
products[].tiers[].tointeger or nullThe last check of the month this tier covers; null for the last tier.At least -9007199254740991.
products[].tiers[].ratestringThe price of one check in this tier, in dollars.Matches `^\d+\.\d{2,6}$`.
products[].tiers[].checksintegerHow many of the month's billable checks fell in this tier.At least -9007199254740991.
products[].tiers[].amountstringMatches `^\d+\.\d{2}$`.
adjustmentsarray of objectUsage of an earlier, closed month that arrived after its statement was issued, added to this month.
adjustments[].usage_monthstringMatches `^\d{4}-\d{2}$`.
adjustments[].descriptionstring
adjustments[].productsarray of object
adjustments[].products[].productstringOne of: `eligibility`, `claims`, `attachments`, `eras`.
adjustments[].products[].billableintegerAt least -9007199254740991.
adjustments[].products[].not_billedobject
adjustments[].products[].not_billed.totalintegerAt least -9007199254740991.
adjustments[].products[].not_billed.reasonsarray of object
adjustments[].products[].not_billed.reasons[].reasonstring
adjustments[].products[].not_billed.reasons[].labelstring
adjustments[].products[].not_billed.reasons[].countintegerAt least -9007199254740991.
adjustments[].amountstringMatches `^\d+\.\d{2}$`.
feesstringThe sum of the products' fees.Matches `^\d+\.\d{2}$`.
adjustments_amountstringMatches `^\d+\.\d{2}$`.
minimumobject or nullThe monthly minimum that applies; null when the month is not billed.
minimum.amountstringMatches `^\d+\.\d{2}$`.
minimum.introductorybooleantrue for the lower minimum of an organization's first live months.
minimum_appliedbooleantrue when the minimum, not the fees, set the amount due.
amount_duestringThe greater of the fees and the minimum, plus adjustments; 0.00 when the month is not billed.Matches `^\d+\.\d{2}$`.

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/statements/stm_01JM000000E008000000000030" \
  -H "Authorization: Bearer $CLAIMHOUSE_KEY"

Example response: 200

JSON
{
  "id": "stm_01JM000000E008000000000030",
  "object": "statement",
  "number": "ST-202609-0195000000A1",
  "issue_date": "2026-10-01",
  "due_date": "2026-10-16",
  "month": "2026-09",
  "time_zone": "America/Denver",
  "mode": "live",
  "live": true,
  "billing": "billed",
  "note": null,
  "state": "issued",
  "products": [
    {
      "product": "eligibility",
      "billable": 4000,
      "not_billed": {
        "total": 118,
        "reasons": [
          {
            "reason": "cache_hit",
            "label": "answer reused from a recent check",
            "count": 118
          }
        ]
      },
      "rate": "$0.30 for checks 1-250, $0.15 for 251-3,500, $0.10 for 3,501-10,000, $0.08 after",
      "amount": "612.50",
      "tiers": [
        {
          "from": 1,
          "to": 250,
          "rate": "0.30",
          "checks": 250,
          "amount": "75.00"
        },
        {
          "from": 251,
          "to": 3500,
          "rate": "0.15",
          "checks": 3250,
          "amount": "487.50"
        },
        {
          "from": 3501,
          "to": 10000,
          "rate": "0.10",
          "checks": 500,
          "amount": "50.00"
        },
        {
          "from": 10001,
          "to": null,
          "rate": "0.08",
          "checks": 0,
          "amount": "0.00"
        }
      ]
    },
    {
      "product": "claims",
      "billable": 1240,
      "not_billed": {
        "total": 0,
        "reasons": []
      },
      "rate": "$0.20 per claim",
      "amount": "248.00",
      "tiers": null
    },
    {
      "product": "attachments",
      "billable": 410,
      "not_billed": {
        "total": 0,
        "reasons": []
      },
      "rate": "$0.30 per attachment",
      "amount": "123.00",
      "tiers": null
    },
    {
      "product": "eras",
      "billable": 900,
      "not_billed": {
        "total": 3,
        "reasons": [
          {
            "reason": "estimate_only",
            "label": "estimate only",
            "count": 3
          }
        ]
      },
      "rate": "$0.05 per ERA",
      "amount": "45.00",
      "tiers": null
    }
  ],
  "adjustments": [],
  "fees": "1028.50",
  "adjustments_amount": "0.00",
  "minimum": {
    "amount": "500.00",
    "introductory": true
  },
  "minimum_applied": false,
  "amount_due": "1028.50"
}

A statement of another organization: 404

JSON
{
  "error": "NOT_FOUND",
  "message": "Statement not found.",
  "errors": [],
  "request_id": "req_01JM000000E008000000000010"
}