Billing & RCM

One claim model. Your clearinghouse. AR aging that actually works.

Carelytic produces CMS-1500 (837P) and UB-04 (837I) from a single Claim model and submits through whichever clearinghouse your agency uses. Per-payer rate overrides and 4 unit rounding modes mean the same service bills correctly to Medicaid PCA, commercial, and private pay without code changes.

app.carelytic.ai/billing/queue
Billing queue — held claims with structured reason badges (missing_dx, missing_auth, missing_evv)

Clearinghouse pipeline

Bring your clearinghouse. We handle the X12 plumbing.

Carelytic submits 837P / 837I, parses 835 ERAs, runs 270/276 eligibility and claim-status checks, and tracks payer enrollment across the major US healthcare clearinghouses. Whichever one your agency runs today, we keep it. No "switch to ours or you can't bill" gating.

Major clearinghouses, pre-built

Pre-built integrations for the clearinghouses HHAs actually use:

  • Availity
  • Waystar
  • Change Healthcare (Optum)
  • Office Ally
  • Inovalon ABILITY
  • Stedi (modern JSON API)

Using one we don't list? Tell us during onboarding — adapter pattern means new integrations land without touching tenant data.

One claim model, every transaction

Carelytic produces 837P (CMS-1500), 837I (UB-04), reads 835 ERAs, runs 270/271 eligibility, 276/277 claim status, and 277CA acknowledgments. One Claim model, one credentials store, one enrollment dashboard — no matter which clearinghouse you run.

Raw X12 fallback for picky payers

For payers that need exact X12 instead of the clearinghouse's normalized format, we ship raw 837 files. JSON / structured submission is the default; X12 is the escape hatch.

Real-time status

Submitted → accepted → rejected → paid status flows back from your clearinghouse without manual SFTP polling. Visible per-claim on the billing queue and rolled up in AR aging.

Payer enrollment dashboard

Submit enrollments per transaction type (837P, 837I, 835, 270, 276), poll status, surface rejected / in-progress / enrolled. One dashboard for every payer relationship in your book.

835 ERA parsing

ERA files parse into batch postings with the CARC adjustment library, exception queue, and write-off workflow. CARC code library covers the full CMS reason set.

Real-time eligibility

One-click 270/271 on every patient. Included on every plan.

Click "Verify eligibility" on the patient's Payer & Eligibility tab. Carelytic builds the X12 270 from Client + Payer + Tenant data, sends it through your clearinghouse, parses the 271 into status / coverage dates / copay / deductible / out-of-pocket, and persists an EligibilityCheck row for the audit trail.

  • Medicaid, commercial, most Medicare Advantage — standard 270/271 through your clearinghouse (no separate enrollment)
  • Original Medicare (FFS) — uses the CMS HETS endpoint (requires HETS attestation, also in-platform)
  • Coverage dates, copay, deductible, OOP parsed and surfaced inline
  • Every check stored — historical record per patient, queryable
app.carelytic.ai/clients/<pk>/?tab=payer
Patient Payer & Eligibility tab — coverage from/to, copay, deductible YTD, OOP YTD, last-checked timestamp

Self-healing claim pipeline

Most billing systems lose claims when a webhook drops. Ours doesn't.

Webhook dropped during a deploy? Clearinghouse rejected an enrollment that already existed? A 277CA never came back? Carelytic's claim pipeline assumes all of these will happen and recovers automatically — no support ticket, no manual reconciliation spreadsheet.

Idempotent retries

"Provider already exists" / "enrollment already exists" responses from any clearinghouse are caught and treated as success — Carelytic fetches the existing record and continues. Submitting the same claim twice never creates a duplicate.

Daily polling backstop

Every claim status is reconciled against your clearinghouse nightly — 277CA acknowledgments and 835 ERAs that didn't fire a webhook are picked up automatically. Claims never silently stuck.

Pre-flight format validation

NPI digit count, EIN format, phone shape, address completeness — checked before the 837 leaves Carelytic. Fail-fast at submission instead of getting an obscure rejection back from the clearinghouse six hours later.

Per-payer rate overrides

Same service. Different rates per payer. Zero code changes.

Medicaid PCA bills at one rate, the same HCPCS to a commercial payer bills at another, private pay is a third. Carelytics handles this through ServiceHCPCSMapping — set the rate per (service line × HCPCS × payer) tuple and the billing pipeline picks the right one.

  • 4 rounding modes per payer: nearest, ceil, floor, CMS 8-minute
  • 6 unit types: 15-minute, 30-minute, hour, visit, day, episode
  • CMS 8-minute rule for Medicare PT/OT/SLP — verified against the Pub 100-04 Ch.5 §20.2 examples
  • Authorization-line override beats rate-mapping override (which beats HCPCS default)
app.carelytic.ai/settings/billing/payer-mappings
Per-payer rate mapping table — rate, rounding mode, unit type per (HCPCS × payer) combination

Reconciliation

835 → batch posting → exception queue → adjustment.

835 ERA parsing

Inbound ERAs parse into batch postings. Each ERA line links back to the originating claim. Mismatches surface in the exception queue immediately.

CARC adjustment library

Full CARC code library with reason categories. Adjustments routed by reason — denial vs underpayment vs contractual write-off.

Exception queue with ownership

Discrepancies route to a queue with an assignee, due date, and resolution path (rebill / appeal / write-off).

Write-off workflow

Two-person rule on write-offs above a tenant-configurable threshold. Reason category required. Audit-logged with full diff.

AR aging

Buckets you can actually act on.

0–30, 31–60, 61–90, 90+. Per payer. Per service line. Per branch. Click any bucket to see the underlying claims, sorted by amount. Click any claim to see the hold reason, the ERA history, the visit it came from, and the patient's authorization status.

  • 4 standard aging buckets, sliceable by payer / service line / branch
  • Drill from bucket → claim list → claim detail in one or two clicks
  • "Why isn't this paid?" answered without leaving the page (ERA history + payer status inline)
  • Aging snapshots logged daily so trend lines are real, not approximated
app.carelytic.ai/billing/ar-aging
AR aging dashboard — 0–30 / 31–60 / 61–90 / 90+ bucket totals, sliceable by payer, service line, branch