Therapy estimates

Timed units and practice-expense reductions.

POST/api/v1/therapy/estimate

Estimate a therapy visit

POST /api/v1/therapy/estimate allocates timed units when requested and applies the same therapy MPPR calculation as the site. It returns an estimate without creating a stored resource.

Required attributes

  • Name
    lines
    Type
    object[]
    Description

    1–20 lines with distinct codes. Every line must use the same minutes or units mode.

  • Name
    lines[].code
    Type
    string
    Description

    Five-character code. Combine repeated codes into one line.

Optional attributes

  • Name
    date
    Type
    string
    Description

    Service date in YYYY-MM-DD format. Defaults to today in UTC.

  • Name
    qp_status
    Type
    string
    Description

    non_qp (default) or qp. Selects the payment schedule; does not establish eligibility.

  • Name
    locality
    Type
    string
    Description

    Contractor-locality ID. Supply exactly one of locality or zip.

  • Name
    zip
    Type
    string
    Description

    Five-digit ZIP or hyphenated ZIP+4. Cannot be combined with locality.

  • Name
    lines[].minutes
    Type
    integer
    Description

    0–1500 timed minutes. Required in minutes mode; cannot be combined with units.

  • Name
    lines[].units
    Type
    integer
    Description

    1–100 billable units. Required in units mode; cannot be combined with minutes.

Parameter usage notes

Supply exactly one location: locality in contractor-locality format or zip as ZIP/ZIP+4. National estimates are not supported. date defaults to today UTC; the supported rule window is 2025–2026. qp_status is non_qp (default) or qp.

lines accepts 1–20 distinct codes. Every line must use either integer units (1–100) or integer minutes (0–1500). Do not mix the two modes or supply both fields. Combine repeated codes into one line.

Minute allocation supports 97110, 97112, 97113, 97116, 97140, 97530, 97535, 97542, 97750, 97760, 97761, 97763, 97032, 97033, and 97035. For other codes, supply units; MPPR eligibility is checked against the selected release. No patient data is needed or accepted.

Response

  • Name
    date
    Type
    string
    Description

    Resolved service date.

  • Name
    qp_status
    Type
    string
    Description

    Selected payment schedule.

  • Name
    location
    Type
    object
    Description

    Resolved locality type and ID.

  • Name
    release
    Type
    integer
    Description

    Accepted PFS release ID.

  • Name
    geography_release
    Type
    integer | null
    Description

    ZIP release, when ZIP resolution was requested.

  • Name
    currency
    Type
    string
    Description

    Always usd.

  • Name
    complete
    Type
    boolean
    Description

    False when any billable line cannot be priced or is ineligible.

  • Name
    lines
    Type
    object[]
    Description

    Visit lines in request order.

  • Name
    lines[].code
    Type
    string
    Description

    Procedure code.

  • Name
    lines[].units
    Type
    integer
    Description

    Allocated or supplied billable units.

  • Name
    lines[].minutes
    Type
    integer · minutes mode
    Description

    Input timed minutes.

  • Name
    lines[].per_code_units
    Type
    integer · minutes mode
    Description

    Separate per-code unit calculation for comparison.

  • Name
    lines[].status
    Type
    string
    Description

    Pricing status, or no_billable_units.

  • Name
    lines[].full_units
    Type
    integer | null
    Description

    Units paid without a practice-expense reduction.

  • Name
    lines[].reduced_units
    Type
    integer | null
    Description

    Units subject to the practice-expense reduction.

  • Name
    lines[].base_amount
    Type
    integer | null
    Description

    Line amount before MPPR, in cents.

  • Name
    lines[].amount
    Type
    integer | null
    Description

    Line amount after MPPR, in cents.

  • Name
    total_units
    Type
    integer
    Description

    Total billable units.

  • Name
    base_amount
    Type
    integer | null
    Description

    base amount in USD cents. Null when the estimate is incomplete.

  • Name
    amount
    Type
    integer | null
    Description

    amount in USD cents. Null when the estimate is incomplete.

  • Name
    reduction
    Type
    integer | null
    Description

    reduction in USD cents. Null when the estimate is incomplete.

  • Name
    rules
    Type
    object
    Description

    Allocation mode, reduction rule, version, and source_url.

  • Name
    explanation
    Type
    string
    Description

    Explanation of the applied reduction and scope.

Response behavior and edge cases

The response includes date, qp_status, location, release, nullable geography_release, currency, complete, lines, total_units, base_amount, amount, reduction, rules, and explanation.

Each line returns code, allocated units, status, full_units, reduced_units, base_amount, and amount. Minutes mode also echoes minutes and per_code_units for comparison. Final monetary values are integer cents. rules identifies allocation mode, reduction rule, version and source URL.

If any billable line cannot be priced or is ineligible, complete is false and monetary totals are null. No partial visit total is presented as complete. Below the minimum timed-unit threshold, the result has zero billable units and a real zero amount.

Rules and limitations

Timed minutes are pooled under the CMS 8-minute rule; remaining units go to the largest minute remainders, with input order breaking ties. per_code_units shows a separate per-code calculation for comparison, not a payer coverage determination.

For eligible therapy units, one unit with the highest practice expense is paid in full. Other units keep half of practice expense; work and malpractice remain unchanged. Ties use input order. This estimates non-facility allowed amounts before assistant reductions, coinsurance and other claim-level adjustments. ZIP resolution requires exact-period geography; no older mapping is silently substituted.

Request

POST
/api/v1/therapy/estimate
curl -X POST 'https://feebase.co/api/v1/therapy/estimate' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "locality": "06102-16",
  "lines": [
    {
      "code": "97110",
      "minutes": 24
    },
    {
      "code": "97530",
      "minutes": 23
    }
  ]
}'

Response

{
  "date": "2026-10-06",
  "qp_status": "non_qp",
  "location": {
    "type": "locality",
    "id": "06102-16"
  },
  "release": 1,
  "geography_release": null,
  "currency": "usd",
  "complete": true,
  "lines": [
    {
      "code": "97110",
      "minutes": 24,
      "per_code_units": 2,
      "units": 2,
      "status": "priced",
      "full_units": 1,
      "reduced_units": 1,
      "base_amount": 6000,
      "amount": 5500
    },
    {
      "code": "97530",
      "minutes": 23,
      "per_code_units": 2,
      "units": 1,
      "status": "priced",
      "full_units": 0,
      "reduced_units": 1,
      "base_amount": 3000,
      "amount": 2500
    }
  ],
  "total_units": 3,
  "base_amount": 9000,
  "amount": 8000,
  "reduction": 1000,
  "rules": {
    "allocation": "cms_8_minute",
    "reduction": "therapy_mppr",
    "version": "1",
    "source_url": "https://www.cms.gov/medicare/coding-billing/therapy-services"
  },
  "explanation": "One unit with the highest practice expense is paid in full; other eligible units retain half their practice expense. Work and malpractice are unchanged. This estimates allowed amounts before assistant and other claim-level adjustments."
}

Illustrative response. Values and release IDs are examples.

© 2026 Textual, LLC. FeeBase is a Textual product.

Medicare payment data is published by the Centers for Medicare & Medicaid Services (CMS). FeeBase is an independent service, not affiliated with or endorsed by CMS or the American Medical Association (AMA).

Government-produced CMS materials are in the public domain; third-party code sets retain their copyright protections. CPT® is a registered trademark of the AMA. CPT codes and descriptions are copyrighted by the AMA. HCPCS Level II is maintained by CMS; dental codes (CDT®) are copyrighted by the American Dental Association.