Skip to main content

2.6 Payers, contracts, fee schedules, and program configs

Outcome

Every payer the customer bills is linked to the tenant with a contract, a fee schedule, filing rules, and (where applicable) a program config (auth workflow, EOB posting style).

Prerequisites

Building blocks

The payer registry lives in master and is shared across tenants. Each tenant then overlays:

  • A contract (billing.payer_contract): the rate book this customer negotiated.
  • A fee schedule (billing.fee_schedule + billing.fee_schedule_entry): the per-procedure-code dollar amounts.
  • A program config (billing.payer_program_config): auth workflow, EOB posting semantics, billing-entity preference per payer + program.

Steps

  1. Verify the payer exists in master

    Admin → Payers → search "Anthem Ohio".

    If missing, create it (platform-level, affects every tenant):

    Admin → Payers → Add payer

    FieldValue
    NameAnthem Blue Cross Blue Shield Ohio
    Short nameAnthem OH
    Payer codeANT-OH
    Payer typeCOMMERCIAL or MEDICAID_FFS or MEDICAID_MCO
    Electronic payer IDOH054
    StateOH
  2. Add submission capabilities (per transaction type the customer will exchange)

    Admin → Payers → <payer> → Capabilities → Add

    FieldExample
    Tx type837P
    Filing deadline (days)90
    Electronic supportedyes
    Companion guidelink to PDF
  3. Impersonate the tenant to add per-tenant overlay rows.

    Admin → Tenants → Acme → Switch to tenant. The remaining steps happen in the tenant-side admin UI.

  4. Add a payer contract (tenant-side)

    Admin → Payers → <payer> → Contracts → Add contract

    FieldValue
    Effective from2026-01-01
    Effective to(open)
    Contract NPI (group)matches the billing entity from 2.5
    Notes"Renewal expected 2027-01"
  5. Build a fee schedule

    Admin → Fee schedules → New fee schedule

    FieldValue
    NameAnthem OH 2026
    Contract(link to step 4)
    CurrencyUSD

    Then either:

    • Manual entry: add procedure codes one at a time.
    • CSV import: drag-drop a CSV with columns code, modifier, amount, effective_from. The importer dry-runs first and shows you a diff before commit.

    See Fee Schedules — UI-02 runbook chapter for the import format.

  6. Add a program config (drives auth workflow + EOB posting style)

    Admin → Payers → <payer> → Programs → Add program

    FieldExample
    Program codeOH_MEDICAID_FFS
    Display labelOH Medicaid FFS
    Auth workflowMANUAL_PENDING (manual entry) or EDI_278 (real-time)
    Institutional billing periodn/a for outpatient; WEEKLY/MONTHLY/SPAN for institutional
    EOB posting styleMEDICAID_DETAIL or COMMERCIAL_CONTRACT
    Default billing entity(link from 2.5)

    The choice between MEDICAID_DETAIL and COMMERCIAL_CONTRACT affects how Receivables splits PR vs CO adjustments — see the runbook chapter on Commercial EOB Posting.

  7. Repeat steps 1–6 for every payer in the panel

    For commercial payers (UHC, Anthem, Aetna, Cigna, Humana), there's a one-shot helper:

    pnpm tsx scripts/seed-commercial-payer.ts --tenant acme --payer UHC

    This seeds a contract + 90-day TFD fee schedule template + 3 most-common entries + program config in one transaction. Edit afterward in the UI.

Validation

CheckExpected
billing.payer_contract rows for tenantone per payer in panel
billing.fee_schedule rowsone per active contract
billing.fee_schedule_entry row countmatches imported CSV
billing.payer_program_config rowsone per (payer, program) the customer bills

Troubleshooting

SymptomLikely causeFix
Importing CSV: "duplicate (code, modifier)"Source CSV has dupesDedupe in spreadsheet, retry.
Cannot pick contract NPIBilling entity not linked to a facility yetComplete 2.5 first.
Auth workflow EDI_278 not selectableCapability for 278 not configured for this payerAdd the 278 capability in step 2.

Next

2.7 — Rules and modifiers