# Bank Rules

# Bank Rules

Bank Rules allow you to automate the coding of recurring bank transactions. Instead of manually creating Journal Entries or Payment Entries for each transaction, you can define rules that automatically match and process transactions based on conditions you specify.

This is particularly useful for transactions that occur regularly with predictable patterns, such as payroll, subscriptions, loan repayments, or recurring supplier payments.

## Overview

A Bank Rule consists of:

* **Conditions** — criteria that a bank transaction must meet (e.g. description contains "PAYROLL", deposit equals 500)
* **Action** — what to create when a transaction matches (a Journal Entry or Payment Entry)
* **Priority** — the order in which rules are evaluated (lower number = higher priority)

When you run Bank Rules, the system evaluates each unreconciled bank transaction against your rules in priority order. The first matching rule wins, and the corresponding entry is created and automatically reconciled against the transaction.

## Prerequisites

Before setting up Bank Rules:

* Your bank account must be configured in NexWave
* Bank transactions must be imported (via Bank Feeds or Import Bank Statement)
* The GL accounts you want to post to must exist
* For Payment Entry rules, the relevant parties (Customers, Suppliers, or Employees) must be set up

## Creating a Bank Rule

Navigate to the search bar and type **ABR Bank Rule**, then click **+ Add ABR Bank Rule**.

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC80ZDVlZTgyZC03MDA3LTRjZjUtOGZjNC1hNTI5NGVjZDUwYWUvU2NyZWVuc2hvdCAyMDI2LTAyLTE4IGF0IDIzLjM5LjEzLnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzkyNjIwOTAwLCJleHAiOjE3OTI3MDczMDB9.Bsx0wgK1NTTKuTYxK5K_FtD434y7BOdbkdNa5pl3aiE " =1305x1066")

### Basic Settings

| Field | Description |
|-------|-------------|
| **Title** | A descriptive name for the rule (e.g. "Monthly Payroll", "Office Rent") |
| **Enabled** | Toggle the rule on or off without deleting it |
| **Priority** | Numeric priority — rules with lower numbers are evaluated first |
| **Company** | The company this rule applies to |
| **Bank Account** | The specific bank account this rule applies to (only company bank accounts are shown) |

### Defining Conditions

Conditions determine which bank transactions this rule will match. You can add multiple conditions.

| Field Name | Description |
|------------|-------------|
| **Deposit** | The deposit (credit) amount on the transaction |
| **Withdrawal** | The withdrawal (debit) amount on the transaction |
| **Currency** | The transaction currency code (e.g. NZD, AUD) |
| **Description** | The bank transaction description/narrative |
| **Reference Number** | The bank reference or cheque number |
| **Particulars** | The particulars field from the bank statement |
| **Party Name** | The party/payee name from the bank |
| **Code**   | The transaction code from the bank |

Each condition uses an **operator** to compare the transaction field against a **value** you specify:

| Operator | Works With | Description |
|----------|------------|-------------|
| **Equals** | All fields | Exact match (case-insensitive for text fields) |
| **Not Equals** | All fields | Does not match the value |
| **Contains** | Text fields only | The field contains the specified text (case-insensitive) |
| **Not Contains** | Text fields only | The field does not contain the specified text |
| **Greater than** | Deposit, Withdrawal | Amount is greater than the value |
| **Greater than or Equals** | Deposit, Withdrawal | Amount is greater than or equal to the value |
| **Less Than** | Deposit, Withdrawal | Amount is less than the value |
| **Less Than or Equals** | Deposit, Withdrawal | Amount is less than or equal to the value |


:::info
By default, **all conditions must match** (AND logic). Tick **Match Any Condition** to use OR logic, where the rule matches if any single condition is met.

:::

### Configuring the Action

Choose what entry to create when a transaction matches:

**Journal Entry:**

| Field | Description |
|-------|-------------|
| **Entry Type** | Set to "Journal Entry" |
| **Account** | The second GL account for the journal entry (the bank account is filled automatically) |
| **Cost Centre** | Optional cost centre for the journal entry line |
| **Party Type / Party** | Optional — set if the journal entry needs a party |

**Payment Entry:**

| Field | Description |
|-------|-------------|
| **Entry Type** | Set to "Payment Entry" |
| **Party Type** | Customer, Supplier, or Employee |
| **Party** | The specific party to assign the payment to |
| **Cost Centre** | Optional cost centre for the payment |

## Running Bank Rules

Bank Rules are executed from the **Bank Reconciliation Tool**.


1. Navigate to **Accounting > Bank Reconciliation Tool**
2. Select your **Company**, **Bank Account**, and **Date Range**
3. Click **Validation > Run Bank Rules**

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC83NmQxY2JkYy1lMDI1LTRmNjAtOTJkNi0xNzQzOGI4NWFkMWEvU2NyZWVuc2hvdCAyMDI2LTAyLTE5IGF0IDAwLjAwLjUwLnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzkyNjIwOTAwLCJleHAiOjE3OTI3MDczMDB9.XB-GORZBd3nvr078dRl1jXpO70DKIeBh9Sf5WMy3SsQ " =1374x363")

The system will:


1. Fetch all unreconciled bank transactions for the selected period
2. Evaluate each transaction against your enabled rules (in priority order)
3. Create the corresponding Journal Entry or Payment Entry for each match
4. Automatically reconcile the created entry against the bank transaction

A summary message is shown when processing completes:

> **Bank Rules Result: 5 matched, 3 unmatched, 0 skipped, 0 errors**

| Counter | Meaning |
|---------|---------|
| **Matched** | Transactions that matched a rule and were processed |
| **Unmatched** | Transactions that did not match any rule |
| **Skipped** | Transactions that were already reconciled |
| **Errors** | Transactions where rule execution failed (check Error Log for details) |

## Examples

### Example 1: Monthly Payroll

Match all deposits with "PAYROLL" in the description and post them to a Salaries account:

| Setting | Value |
|---------|-------|
| Title   | Monthly Payroll |
| Priority | 1     |
| Entry Type | Journal Entry |
| Account | Salaries and Wages |
| Condition | Description — Contains — "PAYROLL" |

### Example 2: Customer Receipts

Match deposits from a specific customer based on their reference:

| Setting | Value |
|---------|-------|
| Title   | ACME Corp Payments |
| Priority | 5     |
| Entry Type | Payment Entry |
| Party Type | Customer |
| Party   | ACME Corp |
| Condition 1 | Party Name — Contains — "ACME" |
| Condition 2 | Deposit — Greater than — 0 |

### Example 3: Small Expense Auto-Coding

Match all withdrawals under $50 with a specific code and post to Office Expenses:

| Setting | Value |
|---------|-------|
| Title   | Small Office Expenses |
| Priority | 10    |
| Entry Type | Journal Entry |
| Account | Office Expenses |
| Condition 1 | Withdrawal — Greater than — 0 |
| Condition 2 | Withdrawal — Less Than or Equals — 50 |
| Condition 3 | Code — Equals — "TFR" |

## Tips and Best Practices


1. **Start with high-confidence rules** — Begin with rules that have very specific conditions (e.g. exact reference numbers) before adding broader rules
2. **Use priority carefully** — More specific rules should have lower priority numbers (higher priority) than general catch-all rules
3. **Test with a small date range first** — Run rules on a short period to verify they match correctly before processing a large batch
4. **Use multiple conditions** — Combine conditions to avoid false matches. For example, match both the description and an amount range
5. **Review unmatched transactions** — After running rules, review unmatched transactions to identify patterns for new rules
6. **Rules are idempotent** — Running rules twice on the same period is safe. Already-reconciled transactions are automatically skipped
7. **Check the Error Log** — If errors occur, navigate to **Settings > Error Log** and search for "ABR Bank Rule" to see detailed error information

## Troubleshooting

### Rule is not matching expected transactions

* Verify the rule is **Enabled**
* Check that the **Bank Account** on the rule matches the one selected in the reconciliation tool
* Review the conditions — use **Contains** for partial text matching rather than **Equals** for exact matching
* Remember that text matching is **case-insensitive**, so "payroll" matches "PAYROLL"

### A higher-priority rule is matching instead

* Rules are evaluated in priority order (lowest number first)
* If a broad rule is matching before a specific one, adjust the priority numbers so the specific rule has a lower number

### Entry creation fails with an error

* **"Reference No is mandatory"** — Ensure the bank transaction has a reference number set. Journal Entries and Payment Entries require a reference when created from bank transactions
* **Account or party errors** — Verify that the Account, Party Type, and Party on the rule are valid and not disabled
* Check the **Error Log** for the full error traceback

### Transaction already reconciled

* If a transaction was manually reconciled before running rules, it will be skipped automatically
* The "skipped" count in the result summary shows how many were skipped

## Related Documentation

* [Bank Reconciliation Tool user guide](/doc/df082da9-8898-4ffe-9a0c-56a0d7a36137) — Step-by-step walkthrough of reconciliation, including how Bank Rules fit in
* [Bank Reconciliation Tool](/doc/2869cb02-cb4f-42ad-938e-5f0abd973889) — Reconciling bank transactions with accounting entries
* [Import Bank Statement](/doc/950b3e14-e00e-4530-a248-e6ef61dbb420) — Importing bank statements into NexWave
* [Bank Feeds](/doc/af08c753-d3cb-489e-8202-9ea786645b85) — Automatic bank transaction synchronisation
* [Accounting](/doc/85b00666-859d-4e2b-9bac-6c1dd3848464) — Financial management overview