Billing & Revenue Engine
Vantrexia's billing engine automates the entire RPM revenue cycle — from identifying billable activities to generating claims, tracking submissions, and producing analytics reports. The system supports all CMS-recognized RPM CPT codes and handles multiple billing sources including device transmissions, clinical escalations, and manual time entries.
A typical practice monitoring 500 patients can generate $45,000–$65,000 per month in RPM revenue when billing is fully optimized. Vantrexia's automated billing engine captures claims that manual workflows often miss, particularly for device-based billing (CPT 99454) and additional clinical time (CPT 99458).
RPM CPT Codes & Reimbursement Rates
Vantrexia supports the full range of CMS RPM and CCM billing codes. Reimbursement rates shown are 2026 Medicare national averages — actual rates vary by payer and locality.
| CPT Code | Description | Rate | Frequency | Requirements |
|---|---|---|---|---|
| 99453 | Initial setup & patient education for RPM device | $19.73 | Once per patient | Device provided; patient educated on usage |
| 99454 | Device supply with daily recording/transmission (30-day period) | $43.02 | Monthly | ≥16 days of data transmission per 30-day period |
| 99445 | Remote therapeutic monitoring treatment management | $47.00 | Monthly | New for 2026; requires clinical assessment of RTM data |
| 99457 | RPM treatment management — first 20 min/month | $47.87 | Monthly | ≥20 min of interactive communication with patient/caregiver |
| 99458 | RPM treatment management — each additional 20 min | $38.49 | Monthly (addl.) | Each additional 20-min block after 99457 is met |
| 99470 | Remote patient monitoring management (new 2026 codes) | $26–$38.31 | Monthly | Varies by tier; clinical staff time monitoring data |
| 99490 | Chronic care management — first 20 min/month | $42.00 | Monthly | ≥20 min of CCM services; requires consent |
| 99091 | Collection & interpretation of physiologic data (30+ min) | $56.00 | Monthly | ≥30 min of data interpretation by qualified provider |
CPT 99457 and 99458 require interactive communication — this means real-time interaction with the patient or caregiver (phone call, video, or live chat). Reviewing data without patient interaction does not qualify. Vantrexia tracks communication time separately from data review time to ensure accurate billing.
Billing Sources
Vantrexia captures billable activities from four distinct sources, each generating billing records automatically:
1. Automatic Device Billing
A Celery task runs daily at 2:00 AM to evaluate device transmission compliance. For each patient who has met the 16-day transmission requirement during their current 30-day billing period, the system automatically generates a CPT 99454 billing record.
@shared_task(name='billing.generate_device_billing')
def generate_device_billing():
"""
Runs daily at 2:00 AM via Celery Beat.
Generates CPT 99454 records for patients meeting
the 16-day transmission threshold.
"""
today = timezone.now().date()
active_patients = Patient.objects.filter(
active=True,
devices__isnull=False
).distinct()
created_count = 0
for patient in active_patients:
period_start = patient.current_billing_period_start
period_end = period_start + timedelta(days=30)
if today < period_end:
continue # Period not yet complete
transmission_days = Observation.objects.filter(
patient=patient,
effective_datetime__date__gte=period_start,
effective_datetime__date__lt=period_end
).values('effective_datetime__date').distinct().count()
if transmission_days >= 16:
BillingRecord.objects.get_or_create(
patient=patient,
cpt_code='99454',
service_date=period_end,
billing_period_start=period_start,
billing_period_end=period_end,
defaults={
'amount': Decimal('43.02'),
'source': 'automatic_device',
'status': 'pending_review',
'transmission_days': transmission_days,
}
)
created_count += 1
logger.info(f"Device billing complete: {created_count} records created")
2. Escalation-Based Billing
When clinicians resolve escalation events, the system automatically logs the interaction time and generates billing records for CPT 99457 (first 20 minutes) and CPT 99458 (each additional 20 minutes). Time is tracked from escalation assignment to resolution.
3. MA Triage Billing
Medical Assistants who perform triage review and patient outreach generate billable time entries. The system tracks triage session duration and associates it with the appropriate CPT code based on cumulative monthly time per patient.
4. Manual Billing
For activities not captured automatically (e.g., CPT 99453 initial setup, CPT 99091 data interpretation), authorized users can create manual billing records through the billing interface or API. Manual records follow the same review and submission workflow as automatic records.
Smart Billing Engine
The smart billing engine runs every 4 hours via Celery Beat to identify and generate billing records for activities that may not be captured by the daily device billing task. It performs the following checks:
- Time accumulation: Aggregates clinical interaction time per patient per month from escalation events, triage sessions, and manual time entries. When cumulative time crosses a 20-minute threshold, a new CPT 99457 or 99458 record is generated.
- Missed device billing: Catches any patients whose billing period ended but were missed by the 2:00 AM task (e.g., due to task failure or late-arriving data).
- Duplicate detection: Prevents double-billing by checking for existing records with the same patient, CPT code, and billing period before creating new records.
- Eligibility validation: Verifies that patients meet CMS requirements for each CPT code before generating claims (active enrollment, valid consent, proper documentation).
Billing Claim Lifecycle
Every billing record progresses through a defined state machine. The lifecycle ensures proper review and documentation before claims are submitted to payers.
Pending Review
Initial state for all newly generated billing records. The record contains the patient, CPT code, service date, amount, and supporting data (transmission days, interaction time, escalation details). A billing staff member must review and approve the record.
Reviewed
A billing staff member has verified the record's accuracy, confirmed eligibility requirements are met, and approved it for submission. The reviewer's identity and timestamp are recorded.
Submitted
The claim has been submitted to the payer (insurance company or CMS). A submission reference number and date are recorded. The claim enters the payer's adjudication process.
Paid / Denied
Paid: The payer has processed and reimbursed the claim. Payment amount, date, and check/EFT reference are recorded.
Denied: The payer has rejected the claim. Denial reason code, description, and date are recorded. Denied claims can be resubmitted after correction.
Report Endpoints
Vantrexia provides 13 built-in report endpoints that cover every aspect of billing analytics. All reports support date range filtering, CSV/PDF export, and role-based access control.
| # | Endpoint | Description |
|---|---|---|
| 1 | GET /api/v1/billing/reports/executive-dashboard/ |
High-level revenue summary with month-over-month trends, collection rates, and top-line KPIs |
| 2 | GET /api/v1/billing/reports/revenue/ |
Detailed revenue breakdown by CPT code, payer, provider, and date range |
| 3 | GET /api/v1/billing/reports/claims-status/ |
Current status of all claims with filtering by state (pending, submitted, paid, denied) |
| 4 | GET /api/v1/billing/reports/unbilled/ |
Patients with billable activities that have not yet been converted to claims |
| 5 | GET /api/v1/billing/reports/aging/ |
Claims aging report: 0–30, 31–60, 61–90, and 90+ day buckets |
| 6 | GET /api/v1/billing/reports/payer-performance/ |
Per-payer metrics: average days to payment, approval rate, denial rate, common denial reasons |
| 7 | GET /api/v1/billing/reports/patient-summary/ |
Per-patient billing history with lifetime revenue, active claims, and billing eligibility status |
| 8 | GET /api/v1/billing/reports/cpt-utilization/ |
CPT code usage statistics: volume, revenue, average reimbursement, denial rate per code |
| 9 | GET /api/v1/billing/reports/monthly-trend/ |
12-month revenue trend with month-over-month growth rate and seasonal patterns |
| 10 | GET /api/v1/billing/reports/provider-productivity/ |
Per-provider billing metrics: patients managed, claims generated, revenue per patient |
| 11 | GET /api/v1/billing/reports/tasks-summary/ |
Billing task queue status: pending reviews, submission backlog, denied claims awaiting resubmission |
| 12 | GET /api/v1/billing/reports/quick-stats/ |
Lightweight KPI endpoint for dashboard widgets: total revenue, claims count, collection rate |
| 13 | GET /api/v1/billing/reports/export/ |
Full data export in CSV or PDF format with configurable date range and field selection |
Reports with computationally expensive queries (executive dashboard, monthly trend, payer performance) are cached in Redis with a 15-minute TTL. Passing ?refresh=true as a query parameter forces a fresh calculation. Real-time reports (quick stats, claims status) are always live.
Revenue Calculator Example
Here is a sample calculation for a practice monitoring 500 patients, assuming typical compliance and utilization rates:
| CPT Code | Rate | Eligible Patients | Monthly Revenue |
|---|---|---|---|
| 99454 (Device supply) | $43.02 | 425 (85% compliance) | $18,283.50 |
| 99457 (First 20 min) | $47.87 | 350 (70% utilization) | $16,754.50 |
| 99458 (Additional 20 min) | $38.49 | 150 (30% utilization) | $5,773.50 |
| 99453 (Initial setup) | $19.73 | 25 (new enrollments) | $493.25 |
| Estimated Monthly Total | $41,304.75 | ||
| Estimated Annual Revenue | $495,657.00 | ||
The two biggest levers for increasing RPM revenue are: (1) improving device transmission compliance above 85% to maximize CPT 99454 eligibility, and (2) ensuring clinician time is documented for CPT 99457/99458. See the Billing Setup Tutorial for optimization strategies.