Skip to content

Writing rules

Many decisions in RefinePoint are made by rules: which rows to leave out, how to work out a field, which breaks are bank charges, which journal to raise, who gets a break. A rule is a short sentence that reads like English:

narration contains 'SMS' and amount is less than 500

You do not need to know any programming to write one. You can build it by picking from lists, and RefinePoint writes the sentence for you, or type it yourself.

Where The rule decides Example
Leave out rows Which rows to ignore column "Narration" contains 'OPENING'
Preparation steps Which rows a step applies to, or a new column’s value [upper case] [trim] column "Ref No"
Fields A field worked out from columns column "Credit" - column "Debit"
Checks Which records are flagged, or a figure from totals amount is greater than 500000 and party is not present
Reason codes Which breaks get the code narration contains any of 'SMS', 'CHG'
Workflow rules Who gets a break, its due date, its label party is 'Tata Steel'
Journal rules Which records raise which journal reason is 'BANK_CHARGES'
Calculated results A value per group A_igst - B_igst

There are two kinds of rule: a condition is true or false (is this a bank charge?); a value works something out (what is the clean reference?). The editor knows which one each place needs.

A condition built as three sentences joined by AND, read back in English underneath.

The sentence builder is the easiest way in.

  1. When all / any / none of these are true: choose whether every sentence must be true (all), at least one (any), or none of them (none).
  2. Each line is one sentence: a field, a comparison, and what it is compared with. For example Amount — is less than — 500.
  3. + Condition adds a sentence. + Group of conditions adds a group with its own all/any/none, for sentences like A and (B or C).
  4. Under the sentences, Reads: shows the whole rule in plain English, using your own field names, so you can check it says what you mean.
Comparison True when Example
is / is not Equal / different (text ignores case and extra spaces) Status is Open
is one of / is not one of Equal to any of a list Currency is one of USD, EUR
is greater than, is at least, is less than, is at most Bigger / smaller (also later / earlier for dates) Amount is at least 1000
is between Within a range, ends included Date is between 1 Oct and 31 Oct
contains / does not contain The text has the value inside it Narration contains SMS
starts with / ends with The text begins / ends with the value Reference starts with INV
matches The text fits a pattern (for experts) —
is present / is not present Has a value / is empty Party is not present
is in / is not in The value is in a lookup table Account is in Blocked accounts
is true / is false For yes-or-no fields —

What a field is compared with is usually a value you type. Select it to choose something else instead:

  • Field: another field of the record (Amount is greater than Credit limit).
  • Value: a value you type.
  • Look up: a value from a lookup table (the group of party in Vendor groups), with what to use when nothing is found.
  • Function: one of the functions, such as round, days between or similarity. Use puts in an example to adapt.
  • Calculate: a sum, difference, product or division of two values. Put a calculation inside another for more steps.

Where a rule works out a value, A different value when… adds cases: when Amount is more than 1,00,000 then LARGE, otherwise SMALL.

Switch from Sentences to Rule to see and edit the rule as text. Everything you can build from sentences can be typed, and more.

narration contains any of 'SMS', 'CHG'
and amount is less than 500
and the group of party in VENDORS is 'BANK'

A few things to know:

  • Text values go in single quotes: 'Tata Steel'.
  • Field names are written as they are (amount, party). A column of the file that is not a field is written column "Ref No".
  • Functions go in square brackets, then their values: [round] amount to 2.
  • Lookups read like a sentence: the group of party in VENDORS.

The rule language guide explains every part, and the function reference lists every function with an example.

RefinePoint checks a rule while you write it and tells you, in plain words, what is wrong and where:

A rule with a misspelt field name underlined and the message suggesting the right name.
  • A misspelt field: There is no field ‘amout’ here. Did you mean ‘amount’?
  • A table or column that does not exist.
  • A number compared with text, or a value where a condition is needed.

When it is right, you see Checked: no problems, and the rule is rewritten the one standard way.

Settings → Rule language has the full guide, every function, and Try a rule: type a rule and some values, then Run it to see the result, lookup tables included.

Settings, Rule language: the guide on the left, Try a rule on the right.

In reason codes, Test against a record tries rules on a real record. See Reason codes.

You want Write
Small SMS charges narration contains 'SMS' and amount is less than 500
Entries from October date is between '2026-10-01' and '2026-10-31'
A missing party party is not present
A clean reference [upper case] [remove spaces from] reference
Amount from debit and credit column "Credit" - column "Debit"
A vendor’s group, or OTHER the group of party in VENDORS default 'OTHER'
A priority band if amount is greater than 100000 then 'HIGH' otherwise 'NORMAL'
Names that are alike [similarity of] party and payee is at least 0.85
A weekend posting date is a weekend
A valid GSTIN gstin is a valid gstin