> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nectarclimate.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rules

> Configure routing and GL coding rules that automatically process incoming bills.

<Tip>Need help in this area? See [Bill Pay FAQ](/platform/bill-pay/faq).</Tip>

Rules are the logic engine behind Bill Pay. Each rule defines **conditions** (when should this rule fire?) and **actions** (what should happen?). When a bill is evaluated, every active rule is checked in priority order — all matching rules fire, and their actions execute.

## Rule types

Bill Pay has two types of rules, evaluated in sequence:

| Type                | Purpose                      | Example                                                       |
| ------------------- | ---------------------------- | ------------------------------------------------------------- |
| **Routing rules**   | Determine where a bill goes  | "Forward all electricity bills over \$5,000 to the CFO inbox" |
| **GL coding rules** | Assign a general ledger code | "Tag all water bills at the Chicago site with GL code 6200"   |

GL coding rules are evaluated first, then routing rules. This means a bill can receive a GL code and be forwarded in the same evaluation pass.

## Creating a rule

<Steps>
  <Step title="Choose a rule type">
    Go to **Bill Pay > Rules** and click **New rule**. Select either **Add GL coding rule** or **Add routing rule**.
  </Step>

  <Step title="Name your rule">
    Give the rule a descriptive name (e.g., "Northeast electricity to AP team") and optionally add a description explaining its purpose.
  </Step>

  <Step title="Build conditions">
    Drag condition blocks from the palette onto the canvas. Each condition tests a specific field against a value — for example, "Commodity equals Electricity" or "Total charges is greater than 1000."
  </Step>

  <Step title="Add logic groups">
    Combine conditions with **AND** (all must match), **OR** (any can match), or **NOT** (inverts a condition). Drag group blocks from the palette to create complex logic.
  </Step>

  <Step title="Configure actions">
    Drag action blocks onto the canvas. For routing rules, choose where the bill should go. For GL coding rules, specify the GL code to assign.
  </Step>

  <Step title="Preview and save">
    Use the dry-run preview to test your rule against recent bills before activating. When ready, click **Save & enable** to activate the rule immediately, or **Save** to keep it inactive.
  </Step>
</Steps>

## Condition fields

You can build conditions using any of these bill, site, and account attributes:

| Category       | Field            | Description                                                              |
| -------------- | ---------------- | ------------------------------------------------------------------------ |
| **Bill**       | Commodity        | The utility type (Electricity, Gas, Water, Waste, Fuel, Solar, District) |
| **Bill**       | Total charges    | The total dollar amount on the bill                                      |
| **Bill**       | Flagged status   | Whether the bill has been manually flagged                               |
| **Bill**       | Utility provider | The specific datasource or provider                                      |
| **Bill**       | Currency         | The billing currency (USD, CAD, EUR, etc.)                               |
| **Site**       | Site             | A specific site or set of sites                                          |
| **Site**       | Site tag         | Tags assigned to the bill's site                                         |
| **Site**       | Site location    | The geographic location of the site                                      |
| **Account**    | Account          | A specific utility account                                               |
| **Connection** | Connection       | The connection that collected the bill                                   |

## Operators

Each condition uses an operator to compare the field against a value:

| Operator                      | Meaning                         |
| ----------------------------- | ------------------------------- |
| equals / does not equal       | Exact match                     |
| is one of / is not one of     | Match against a list            |
| contains / does not contain   | Partial text match              |
| is greater than / is at least | Numeric comparison              |
| is less than / is at most     | Numeric comparison              |
| is between                    | Numeric range                   |
| is empty / is not empty       | Checks if the field has a value |

## Action types

### Routing rule actions

| Action                      | Effect                                                                   |
| --------------------------- | ------------------------------------------------------------------------ |
| **Forward to email**        | Sends the bill to an email [destination](/platform/glossary#destination) |
| **Route to AP integration** | Pushes the bill to a connected ERP system                                |
| **Request funds**           | Enters the centralized payment path where Nectar handles payment         |
| **Notify user**             | Sends a notification email to specified team members                     |

### GL coding rule actions

| Action             | Effect                                           |
| ------------------ | ------------------------------------------------ |
| **Assign GL code** | Tags the bill with a general ledger account code |

## Priority and evaluation order

Rules are evaluated in the order shown in the rules table. If multiple routing rules match the same bill, **all matching actions fire** — but delivery is deduplicated so each destination only receives the bill once.

You can reorder rules by dragging them in the rules list.

## Dry-run preview

Before activating a rule, click **Preview** to test it against your recent bills. The preview shows:

* How many bills would have matched this rule
* Which specific bills matched and which didn't
* What actions would have fired

This lets you verify your conditions are targeting the right bills without affecting live routing.

## Version history

Every time you save changes to a rule, a new version is created. You can view the full edit history by clicking **Edit history** when viewing a rule. This audit trail shows who changed what and when, making it easy to understand why routing behavior changed.

## Catch-all destination

If a bill doesn't match any routing rule, it enters a **Pending routing** state and waits for manual assignment. To avoid this, you can designate a **catch-all destination** — a fallback that receives any unmatched bills. Set this from the rules page using the catch-all configuration option.

## Related pages

* [Destinations](/platform/bill-pay/destinations) — set up the email addresses and ERP systems your rules route to
* [Routing history](/platform/bill-pay/decisions) — see how rules evaluated against actual bills
* [Glossary — Routing rule](/platform/glossary#routing-rule) — definition
