Fee schedules

Set global CPT fees, add payer-specific rates, manage self-pay cash rates, and import a fee schedule spreadsheet from Insurance settings.

Insurance & claims9 min readUpdated

Fee schedules are managed in Settings → Insurance → Fee Schedule. In the left sidebar, click Settings (at the bottom). In the settings menu, under Insurance, click Fee Schedule. Use Global rates for your default CPT pricing for insurance payers, then add payer rates where a payer needs its own billed amount. Self-pay uses cash rates or the service's cash price instead of global rates.

The Insurance settings area shows organization insurance setup options for managing claims configuration.

How do global rates, payer rates, and self-pay rates work?

In the left sidebar, click Settings (at the bottom). In the settings menu, under Insurance, click Fee Schedule to decide what Ona bills for CPT codes when claims and superbills are priced automatically.

1Settings2Fee Schedule
ScopeWhat it does
Global ratesOne billed amount per CPT code, used for every payer that does not have its own rate.
PayersRates for one payer. A payer can inherit the global rate, override it, or have a payer-only code.
Self-payCash rates for the configured self-pay payer. Self-pay does not inherit global rates; codes without a self-pay rate bill the service's cash price.

The left side of the Fee Schedule page lists Global rates, Self-pay, and individual payers. Payers show how many overrides they have. Select Add payer to choose a payer you want to price. Choosing a payer only opens that payer's schedule; nothing is saved until you set a rate.

If no self-pay payer is configured, the Self-pay section shows a link to set one up in Billing Rules.

How do I add a CPT code to global rates?

Add a global code when the same CPT fee should apply unless a payer overrides it.

1CPT code2Fee3Description4Active5Add code
  1. In the left sidebar, click Settings (at the bottom). In the settings menu, under Insurance, click Fee Schedule, then select Global rates.
  2. Select Add code.
  3. Choose a CPT code.
  4. Enter the Fee. The fee must be more than zero.
  5. Add a Description if needed.
  6. Leave Active on if the code should price claims automatically.
  7. Select Add code.

The code appears in Global rates and can be inherited by payer schedules. If you turn Active off later, the code stays on the schedule but does not price a claim automatically.

How do I set a payer-specific rate?

Set a payer rate when a payer should bill a different amount than the global rate, or when the payer needs a code that is not in global rates.

1Add payer2Payer3Cancel
  1. In the left sidebar, click Settings (at the bottom). In the settings menu, under Insurance, click Fee Schedule.
  2. Select the payer on the left, or select Add payer and choose a payer.
  3. Find the CPT code in the table, or select Add code.
  4. Select Set rate for an inherited global code, or choose a CPT code for a new payer-only code.
  5. Enter the payer's Fee.
  6. Add a Description if needed.
  7. Keep Active on if the rate should be used automatically.
  8. Select Set rate.

Codes without an override bill the global rate. Inactive payer overrides fall back to the global rate. If the global code is inactive, the code falls back to the service's cash price.

Use Overrides only to show only codes with payer-specific rates.

How do I set self-pay cash rates?

Set self-pay rates when the configured self-pay payer should use a cash rate instead of the service's cash price.

  1. In the left sidebar, click Settings (at the bottom). In the settings menu, under Insurance, click Fee Schedule, then select the payer listed under Self-pay.
  2. Select Add code.
  3. Choose the CPT code.
  4. Enter the cash Fee.
  5. Add a Description if needed.
  6. Select Set rate.

Self-pay rates are separate from global rates. If a self-pay code has no rate, or its rate is inactive, it bills the service's cash price.

How do I edit or deactivate a fee?

Edit a fee when the amount, description, or active status changes.

  1. In the left sidebar, click Settings (at the bottom). In the settings menu, under Insurance, click Fee Schedule.
  2. Open Global rates or the payer you want to update.
  3. Find the code in the table.
  4. Select the row's edit button.
  5. Change the Fee, Description, or Active setting.
  6. Select Save changes.

CPT codes cannot be renamed while editing. Remove the old code and add the new code instead.

Use Hide inactive when you want the table to show only rates that are active in the current scope.

How do I remove a code or payer rate?

Remove a rate when it should no longer be used in that scope.

  1. In the left sidebar, click Settings (at the bottom). In the settings menu, under Insurance, click Fee Schedule.
  2. Open Global rates or the payer schedule.
  3. Find the code in the table.
  4. Select the row's remove button.
  5. Review the confirmation message.
  6. Select Remove.

Removing a global code means it no longer prices new claims or superbills from the global schedule. Claims that were already generated keep their charge. If payers have their own rate for that code, those payer rates are kept.

Removing a payer rate makes that payer fall back to the global rate. If the payer is self-pay, or there is no active global rate to fall back to, the code bills the service's cash price. Claims that were already generated keep their charge.

How do I remove all rates for one payer?

Reset a payer when you no longer want to maintain any rates for that payer.

  1. In the left sidebar, click Settings (at the bottom). In the settings menu, under Insurance, click Fee Schedule.
  2. Select the payer on the left.
  3. Select Reset to global rates. For self-pay, select Remove all rates.
  4. Review how many rates will be removed.
  5. Select Remove.

The payer's rates are removed. A regular payer bills your global fee schedule again. A self-pay payer bills the service's cash price again. Claims that were already generated keep their charge.

How do I import a fee schedule spreadsheet?

Import a spreadsheet when you need to create or update many global CPT fees at once. Imports only write global rates; they do not create payer-specific overrides.

  1. In the left sidebar, click Settings (at the bottom). In the settings menu, under Insurance, click Fee Schedule, then select Global rates.
  2. In Bulk import, select Import a spreadsheet.
  3. Upload a CSV or XLSX file.
  4. Review the preview, including codes to create, fees to update, unchanged rows, skipped rows, and warnings.
  5. Select the import button, such as Import 1 code or Import 3 codes.

Importing merges with your existing schedule. Codes that are not in the spreadsheet are left untouched.

Columns are matched by name, case-insensitive, in any order. The code column can be named cptCode, cpt, code, or procedureCode. The fee column can be named fee, amount, price, charge, or rate. A description column is optional. Fees are read as dollars, so 150 imports as $150.00.

Rows with errors are skipped. Codes that are not in Ona's CPT reference data can still import; they appear as warnings in the preview.

What can't I do here?

In the left sidebar, click Settings (at the bottom). In the settings menu, under Insurance, click Fee Schedule. Access and actions are limited in these ways:

  • Staff and clinicians cannot manage fee schedules from Settings.
  • The Fee Schedule page is available only when insurance features are enabled. If insurance is not enabled, Ona sends you back to the main Insurance settings page.
  • You cannot rename a CPT code while editing it. Remove the code and add the correct one.
  • Fees must be more than zero.
  • Spreadsheet imports only update Global rates, not payer overrides.
  • Choosing Add payer does not create an empty payer schedule. Nothing is saved until you set a rate.

Common questions

What is the difference between inactive and removed?

Inactive keeps the code or override on the schedule but stops it from pricing automatically in that scope. Removed deletes it from that scope. Existing generated claims keep their charge when a code or payer rate is removed.

Can a payer have a code that is not in global rates?

Yes. A payer can have a payer-only code. The table marks it as Payer only.

What happens when I remove a global code that payers override?

The global code is removed, but payer-specific rates for that code are kept. The confirmation message tells you how many payers have their own rate.

Why does self-pay not inherit my global rate?

Self-pay uses cash pricing. If a self-pay rate is not set, or it is inactive, the code bills the service's cash price instead of the global fee schedule.

Why is the import button disabled after preview?

If the preview says nothing would change, the import button changes to Nothing to import and cannot be selected.

Related guides

Can’t find what you’re looking for?

Book a demo and we’ll walk you through it live — or email [email protected] and a human will help.