← Back to Articles

Knowledgebase Article

Controlling How ERA Denial Codes Post

Category: Configuration | Module: BillPro | Created: 9/23/2026 | Last Updated: 10/19/2026

Every adjustment on an ERA carries a reason code - a group such as CO or PR, and a number. CO-45 is the usual contractual adjustment; CO-29 means the time limit for filing has expired; CO-129 means the payer thinks the prior processing information is wrong.

By default, when you process an ERA, every adjustment except patient responsibility (PR) is written off as an insurance adjustment. That is right for a contractual adjustment. It is wrong for a denial you intend to fight: the write-off makes the charge disappear from the books, and nobody is prompted to look at it.

Reason code rules let you decide, code by code and payer by payer, what happens instead. With no rules at all, ERAs post exactly as they always have.

Open the settings

  1. Open BillPro - the BillPro Billing Center, the ERA list, or any of the main BillPro pages.
  2. Click Settings in the left-hand column. The BillPro Settings window opens.

The Settings button is only shown to users with administrator access.

Choose who is told

Under Billing message user, pick the person who works your denials and click Save. Alerts sent to the billing user are assigned to them. If you leave it at (Front desk - shared list), those alerts go to the shared front-desk messages instead - they are never discarded, but they are easier to miss.

What a rule can do

SettingChoicesWhat it means
PostYes / Hold for reviewYes writes the amount off as an insurance adjustment. Hold for review does not - the charge stays open on the visit.
AlertNo alert / Billing user / Provider / Billing user + providerRaises an internal message so somebody looks at it. It works whether or not the amount was posted.
Skip lineNo / YesIgnores the whole charge line: no payment, no adjustment, nothing recorded against the service.

For most denials, Hold for review with an Alert is the combination you want: the money stays owed, and someone is told why. Skip line is a much bigger step - it refuses the payment on that line as well as the adjustment - so use it only when you are sure.

Add a rule

  1. Look at Reason codes seen on your ERAs at the bottom. It lists every code your payers have actually used, with Times posted, Total and Last seen. Click a code to fill it into Add a rule - or type the Code yourself.
  2. Choose the Group: Any, or one of CO, OA, PI, PR, CR.
  3. Choose the Payer: All payers (practice default), or one insurance company.
  4. Set Post, Alert and Skip line, and add a Note saying why - the next person to read the list will want to know.
  5. Click Add rule.

The rule appears under Reason code rules. A held code shows Held in the Post column. To change a rule, click Remove and add it again; once removed, that code posts normally again.

Which rule wins

When more than one rule could apply, the most specific one is used, in this order:

  1. this payer and this group
  2. this payer, any group
  3. all payers, this group
  4. all payers, any group

The winning rule is used whole. A payer rule that only sets an alert does not inherit Hold for review from the practice default - set every column on it the way you want it.

Rules you cannot change

What happens to a held line

Work held amounts promptly. Until someone posts or writes them off, they are part of what the patient appears to owe, and can reach a patient statement.

Rules act when an ERA is processed. Adding a rule does not change adjustments that have already posted. But ReProcess on an older ERA afterwards applies the new rule - it will reverse those adjustments, raise the balances on those visits, and may put the amounts on patient statements. Check before reprocessing anything old.

For posting ERAs day to day, see Receiving and Posting ERAs.

Back to Articles