Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt

Use this file to discover all available pages before exploring further.

Version: 1.0.0
Last Updated: 2026-04-09
Spec: PM-15 Phase 2 Expansion

Overview

Phase 2 adds live clearinghouse connectivity via Waystar REST API, replacing Phase 1 stubs with operational transport for claims submission (837P), remittance retrieval (835), eligibility verification (270/271), and acknowledgment processing (999, 277CA). Architecture Decision: REST-only transport. SFTP is deferred due to Deno Deploy incompatibility with native SSH modules.

1. Credential Configuration

Edge Function Secrets

Clearinghouse credentials are stored as Edge Function Secrets (environment variables), not in the database.
Secret NamePurpose
WAYSTAR_CLIENT_IDOAuth2 client ID for Waystar REST API
WAYSTAR_CLIENT_SECRETOAuth2 client secret
WAYSTAR_API_ENDPOINTBase URL for Waystar API (e.g., https://api.waystar.com)
To configure: Supabase Dashboard → Settings → Edge Functions → Secrets

Vault Reference Resolution

The pm_clearinghouse_config.credentials_vault_ref column stores a logical reference (e.g., vault://waystar/api-key). At runtime, the edge function resolves this to the corresponding Edge Function Secret.

2. Health Monitoring

Health Check Endpoint

clearinghouse-health-check runs every 30 minutes (cron) and updates pm_clearinghouse_config:
ColumnDescription
health_statushealthy, degraded, unhealthy, unknown
last_health_check_atTimestamp of last check

Health Badge UI

The configuration list page displays a ClearinghouseHealthBadge next to each configuration. Colors use semantic tokens (text-success, text-warning, text-destructive).

3. Batch Submission Flow

Edge Function: clearinghouse-submit

  1. Reads batch from pm_transaction_batches
  2. Generates X12 837P envelope using envelope.ts + generate-837p.ts
  3. Acquires OAuth2 token via rest-transport.ts
  4. Submits to Waystar REST endpoint
  5. Updates batch with trace number and status
  6. Logs transaction to pm_transaction_log

Retry Logic

Failed submissions use exponential backoff:
  • Max retries: 3
  • Base delay: 1 second (doubles each retry)
  • Dead letter: After max retries, batch marked as error with transport_error

4. ERA Retrieval Flow

Edge Function: clearinghouse-retrieve

  1. Fetches pending 835 files from Waystar API
  2. Parses using parse-835.ts
  3. Creates inbound pm_transaction_batches record
  4. Logs each remittance to pm_transaction_log

5. X12 Transaction Types

TypeDirectionGenerator/ParserEdge Function
837POutboundgenerate-837p.tsclearinghouse-submit
835Inboundparse-835.tsclearinghouse-retrieve
270Outboundgenerate-270.ts(Future)
271Inboundparse-271.ts(Future)
999Inboundparse-999.tsclearinghouse-retrieve
277CAInboundparse-277ca.tsclearinghouse-retrieve

6. Permissions

Permission KeyDescription
pm.clearinghouse.viewView configurations, batches, transactions
pm.clearinghouse.adminCreate/edit configurations, trigger submissions

7. Troubleshooting

IssueSolution
Health badge shows “Unknown”Health check hasn’t run yet or config is new
Batch stuck in “submitted”Check transport_error column; verify secrets
OAuth2 token failureVerify WAYSTAR_CLIENT_ID and WAYSTAR_CLIENT_SECRET secrets
999 rejectionCheck pm_transaction_log for error codes; correct and resubmit

Edge Function Logs

  • Submit: Supabase Dashboard → Edge Functions → clearinghouse-submit → Logs
  • Retrieve: Supabase Dashboard → Edge Functions → clearinghouse-retrieve → Logs
  • Health: Supabase Dashboard → Edge Functions → clearinghouse-health-check → Logs

References