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.

Sage for billing

An AI revenue-cycle analyst that explains, but never touches your claims.

Sage — the one AI brain across Carelytic — works both sides of the claim. Before you transmit, it scrubs. After a denial lands, it analyzes. It's advisory only: Sage never edits a claim, never changes a code, and never submits. A biller reviews every recommendation and decides.

Pre-bill claim scrub

On a not-yet-billed claim, Sage reviews it against the visit, authorization, and payer rules and explains in plain English what would reject — missing modifier, auth mismatch, incomplete patient identity — before it costs you a rejection cycle. The scrub is grounded in the real claim data, so a drifted claim can never scrub clean.

Denial analyst

When a claim comes back denied or rejected, Sage reads the CARC reasons and the claim history and recommends the next move — appeal, correct & resubmit, or write-off — with the reasoning laid out. It turns a cryptic denial code into a decision your biller can act on in seconds.

Same standard as the rest of Sage: grounded in your real data, gated by the same permissions as your staff, and OIG-safe by design. Meet Sage →

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 & ERA posting

The money lands on the claim — not in a spreadsheet.

An 835 isn't a document to file; it's the answer to "did we get paid, and why not." Carelytic posts ERAs claim-centrically — the payment, the adjustments, and the patient responsibility land on the claim itself — and every denial code reads in plain English.

Claim-centric 835 posting

Inbound ERAs post the money onto the originating claim — paid, contractual, and patient-responsibility amounts split out per service line, reconciled to CLP02. Idempotent: re-posting an 835 never double-counts a payment.

Full CO / PR / OA capture

The complete 835 detail is captured — the CO / PR / OA group split, the patient-responsibility breakdown, and the RARC remark codes, not just the top-line CARC. Nothing about why a payer paid what it did gets dropped.

Plain-English CARC / RARC library

The full CARC and RARC libraries ship with human-readable reasons — a biller sees "the service isn't covered under the plan," not just "CARC 96." Faster triage, less code-lookup.

Patient-responsibility worklist

When the 835 assigns balance to the patient, it flows to a patient-responsibility worklist — deductible, coinsurance, and non-covered amounts surfaced for follow-up instead of quietly aging out.

Secondary (COB) claims staged

After a primary pays, Carelytic stages the secondary/coordination-of-benefits claim as a review draft with the primary's adjustments carried over — so the crossover is a review, not a re-key.

EFT–ERA reassociation

Deposits reconcile against their ERAs so "the payer says they paid — where is it?" has an answer. Exception queue with an owner, due date, and resolution path (rebill / appeal / write-off), plus bulk write-off for denial cleanup with the two-person rule.

Once a claim is live at the payer it's immutable — you can't quietly edit a submitted claim (or re-point its patient). Corrections go through a proper replacement or void, and acceptance / rejection is set from the clearinghouse's inline 277CA at transmit. That's the guardrail that keeps a "fixed" claim from becoming a duplicate denial.

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