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 & claims12 min readUpdated

Fee schedules are managed in Settings → Billing → Fee Schedule. In the left sidebar, click Settings (at the bottom). In the settings menu, under Billing, 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 a default percent or cash rates instead of global rates. Pricing levels set what clinicians bill, and memberships set self-pay discounts.

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 Billing, click Fee Schedule to decide what Ona bills for CPT codes when claims and superbills are priced automatically. Use Settings (1) in the left sidebar to open settings, then Fee Schedule (2) under Billing to reach this page.

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-payA default percent of the charge for codes without a self-pay row, plus cash rates when you set them.
Pricing levelsA rate or percent for clinicians in that level. The level can use its own code rates instead of the standard fee.
MembershipsDiscounts for self-pay visits and products. They do not apply to insurance claims.

The left side of the Fee Schedule page lists Global rates, Self-pay, Pricing levels, Memberships, 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

Use CPT code (1) to choose the procedure you want to price, Fee (2) to set the amount, Description (3) if you want a note to show with it, Active (4) to keep it pricing automatically, and Add code (5) to save it.

  1. In the left sidebar, click Settings (at the bottom). In the settings menu, under Billing, 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

Use Add payer (1) to open the payer picker, Payer (2) to choose the payer whose schedule you want to work on, and Cancel (3) to close the panel without picking one.

  1. In the left sidebar, click Settings (at the bottom). In the settings menu, under Billing, 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 Set codes 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.

1Code2Self-pay price3Description4Active5Save

Use Code (1) to choose the CPT code, Self-pay price (2) to set the cash amount, Description (3) if you need a note, Active (4) to keep the price in use, and Save (5) to store it.

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

Self-pay rates are separate from global rates. The Default self-pay price section sets a percent of the charge for codes without a self-pay row. 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.

1Hide inactive2Edit 908373Remove 90837

Use Hide inactive (1) to show only active rates in the current scope, Edit 90837 (2) to open that code for changes, and Remove 90837 (3) to delete it from the schedule.

  1. On the same page, open Global rates or the payer you want to update.
  2. Find the code in the table.
  3. Select the row's edit button.
  4. Change the Fee, Description, or Active setting.
  5. 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.

1Remove2Cancel

Use Remove (1) to confirm deleting the code or payer rate, or Cancel (2) to leave it in place.

  1. On the same page, open Global rates or the payer schedule.
  2. Find the code in the table.
  3. Select the row's remove button.
  4. Review the confirmation message.
  5. 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.

1Reset to global rates2Remove3Cancel

Use Reset to global rates (1) to clear the payer’s fee schedule back to global rates, Remove (2) to confirm, and Cancel (3) to keep the payer schedule as it is.

  1. On the same page, select the payer on the left.
  2. Select Reset to global rates. For self-pay, select Remove all rates.
  3. Review how many rates will be removed.
  4. 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, or when you want to target a pricing level or a membership plan.

1Upload a CSV or XLSX file2Close the import dialog

Use Upload a CSV or XLSX file (1) to add a spreadsheet, then Close the import dialog (2) to back out before importing.

  1. On the same page, open Global charges, Pricing levels, or Memberships, then select Import a spreadsheet.
  2. Upload a CSV or XLSX file.
  3. Review the preview, including codes to create, fees to update, unchanged rows, skipped rows, and warnings.
  4. 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 Billing, click Fee Schedule. Access and actions are limited in these ways:

  • Staff and doctors 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 the selected scope: Global charges, a pricing level, or a membership plan.
  • 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 use a default percent?

The Default self-pay price is what a code bills when you have not set a self-pay row for it. If you add a self-pay row, that row replaces the default for that code.

Can I import a spreadsheet into a pricing level or membership?

Yes. Open that pricing level or membership, then choose Import a spreadsheet there. The import targets that scope instead of global charges.

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.

What do pricing levels do?

Pricing levels set what a group of clinicians bills. A level can use a percent of the standard fee, or its own code rates for specific CPT codes.

What do memberships do?

Memberships set discounts for self-pay visits and products. Their rows can override the membership's default percent for a specific code, service, or product.

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.