The Rejections page on the Trading party specific tab: the expanded PO 2 rule group shows the information icon next to its title because only one of its two rules is enabled, and the PO group below it is fully disabled and shown in grey text
Rejection Rules are conditional guardrails that automatically block documents from progressing through the approval workflow when they violate defined criteria. They form the third layer of Docupath's business rules system - operating after Instruction Builds (which guide extraction) and Transformations (which reshape data).
Rejection Rules are deterministic: if a condition evaluates to true, the document is rejected with a logged reason. They do not correct data or infer intent - they simply enforce compliance boundaries by preventing non-conforming documents from reaching approval.
How It Works
Processing Position
Rejection Rules evaluate documents after AI extraction and after Transformation Rules have been applied. This means rejection conditions are evaluated against the final, transformed values - not the raw extraction output. If a rejection condition is triggered, the document is immediately moved to Rejected status with a required reason, and it exits the approval flow.
Creating a Rejection Rule
To create a rejection rule:
Click the dropdown arrow (▾) next to your user avatar in the top-right corner of the screen to open the main navigation menu
Click "Rejection Rules" in the main menu
Select the appropriate scope tab (Trading Party Specific, Organization Specific, Country Specific, or Global)
Click "+ Add New" to open the creation form
Enter a Title and select a Document Type
Select the relevant scope options (sub-organization, trading parties, or countries - depending on the tab)
Write your rejection logic in plain English in the Rules text area. For example: "If the purchase_order_number field is missing or empty, reject the document"
Optionally, click "Link Supporting File" to attach a supporting file already uploaded to your tenant instance
Click "Refine with AI" (pencil ✏️ icon) to get AI feedback on your instruction
Click "Generate with AI" (lightning ⚡ icon) to have the AI programmatically generate the rejection rule from your plain-English description
Click "Save" to save the rejection rule
Editing a Rejection Rule
On the Rejections page, select the scope tab that contains the rule (Trading party specific, Organization specific, Country specific, or Global).
Click the edit (pencil) icon on the rule's row in the Actions column. The Edit rejection rule screen opens.
Update any of the rule's details, including its Title, Document type, Organization, Party A, Party B, or the rejection logic in the natural-language text area. You can also use Link supporting file, Refine with AI, or Generate with AI, just as when creating a rule.
Click Save to apply your changes, or Cancel to discard them.
Deleting a Rejection Rule
On the Rejections page, select the scope tab that contains the rule.
Click the delete (trash) icon on the rule's row in the Actions column.
A confirmation dialog asks if you are sure you want to delete the rule.
Click Delete to remove it, or Cancel to keep it.
Once deleted, the rule no longer applies to documents processed under that scope.
Enabling and Disabling Rejection Rules
A rejection rule group can be disabled without being deleted, either as a whole or one sub-rule at a time. Only enabled rules are evaluated when a document is processed; a disabled rule stays configured but is skipped entirely, so it cannot reject a document while it is off.
On the Rejections list:
Each rule group's row has a switch. It is on when at least one rule in the group is enabled. Turning it off disables every rule in the group; turning it on enables them all
A group whose rules are only partly enabled shows an information icon next to its title. Hovering it reveals how many are on, for example "2 of 3 rules currently enabled"
A fully disabled group is shown in grey text, making inactive rules easy to spot while scanning the list
Expand a group with the dropdown (⌄) to see its individual rules, each with its own switch
The Title column is the first column in the list and can be sorted, so groups can be found by name before toggling them.
Each rule also carries its own switch on the create and edit screens, so a rule can be saved in a disabled state and switched on later once it has been reviewed. This is useful for staging a strict rejection rule before it starts blocking documents.
Switch changes take effect in the interface immediately and are saved after you stop toggling. If a save fails, the group reverts to its last saved state and an error message appears.
Rules created before this capability existed are enabled by default, so existing rejection behavior is unchanged until a rule is explicitly switched off.
Generated Rule Structure
When the AI generates a rejection rule, the output is composed of:
Conditions: Field-value comparisons using supported operators that determine when a document should be rejected
Logic connector: Either AND (all conditions must be true to reject) or OR (any one condition triggers rejection). AND and OR cannot be mixed in a single rule.
Rejection reason: A mandatory message logged against the document explaining why it was rejected
Users do not typically need to edit the generated rules manually, but they can be modified directly if needed.
Condition Operators (in Generated Rules)
Operator | Meaning | Common Use |
| Equal to |
|
| Less than |
|
| Less than or equal to |
|
| Not equal to |
|
| Field missing or empty |
|
| Field present and non-empty |
|
| Field contains the value, or any value from a linked supporting file (case-insensitive) |
|
| Field does not contain the value, or any value from a linked supporting file - the inverse of CONTAINS |
|
Scope Precedence
Rejection Rules can be configured at multiple scopes. When multiple rules could apply, the most specific scope takes precedence:
Trading Party specific (Party A + Party B) - highest priority
Trading Party specific (only Party A or only Party B)
Organization specific
Country specific
Global - lowest priority
Supporting Files
Rejection Rules can reference supporting files (such as CSV lookup tables) to validate field values against approved lists. For example, a rule can reject documents where the cost centre is not found in an approved cost centre list. Supporting files are uploaded to the tenant instance separately and can be linked to a rule during creation by clicking the "Link Supporting File" link. Use the NOT_CONTAINS ("Does not contain") operator for this: it rejects or flags only when the field genuinely does not contain any value from the linked list, while its counterpart CONTAINS matches when the field does contain a listed value.
Deterministic Behaviour
Rejection Rules are strictly deterministic - they evaluate conditions and either reject or pass the document. They do not modify data, infer corrections, or apply partial rejections. This predictability is a design choice that ensures rejection outcomes are auditable and unambiguous.
Rule Titles
Each generated rule shows a short, automatically generated title in its header, next to its position number - for example, Rule 1 : PO Number is empty. The title is derived from the rule's own content, so you can identify a rule at a glance instead of reading it by position alone. It is separate from the Title you enter for the rule group as a whole.
A rejection rule's title is built from its first condition, read as a plain-language phrase (<Field> <operator> <value>) with the operator spelled out in words:
Operator | Reads as |
| is |
| is not |
| is less than |
| is at most |
| is greater than |
| is at least |
| contains |
| does not contain |
| is empty |
| is not empty |
The IS_NULL and IS_NOT_NULL operators take no value, so their titles end at the operator (for example, PO Number is empty). A value that references a supporting-file column reads as column "<Column>", and field paths are shown as plain text (for example, Buyer Name).
When a rule has more than one condition, the title describes the first condition and appends +N more to stand for the rest. If the first condition cannot be phrased, the title falls back to the rule's rejection reason (which is required), so a title is normally always available. The header falls back to just the position number (with no title) only in the rare case of an incomplete rule with neither a usable condition nor a reason.
Supported Configurations and Options
Configuration | Detail |
Scope levels | Trading Party specific, Organization specific, Country specific, Global |
Logic connectors | AND (all conditions true to reject), OR (any condition triggers rejection) - cannot mix |
Condition operators |
|
CSV reference files | Upload approved/blocked value lists for dynamic validation |
Document type scoping | Rules are assigned to a specific document type |
Rejection reason | Mandatory text logged with every rejection |
Enable/disable | Per rule, or per rule group (cascades to every rule in the group) |
Technical Specifications
Parameter | Limit |
Maximum rule groups per organization | 100 |
Maximum rules per rule group | 500 |
Maximum rule groups per tenant | 1,000 |
Maximum CSV file size | 50 MB |
Maximum CSV rows | 150,000 (or line items) |
Maximum CSV columns | 10 |
Rejection notification |
Note: a rule group simply refers to a single Rejection Rule, as a Rejection Rule can be composed of multiple sub-rules.
Notes
AND and OR logic cannot be mixed within a single rule
Rejection Rules are deterministic - they do not correct data or apply partial actions
Overly broad conditions can cause false rejections; scope rules as narrowly as possible
CSV reference files must use comma-separated format; other delimiters are not supported
If the extraction is inaccurate (e.g., a field is wrongly empty), the rejection rule will still fire - always pair with accurate Instruction Builds
Complex multi-field validation logic may be better handled through multiple separate rules rather than compound conditions, for clearer triage
Once rejected, documents cannot be re-approved without reprocessing through the full lifecycle
Existing rules keep working as before. To use the NOT_CONTAINS ("Does not contain") operator on a rule you built earlier, regenerate the rule so it picks up the operator, then reprocess the affected documents
Each rule's header title is generated automatically from the rule's first condition (or its rejection reason as a fallback) and is for identification only. It is not separately editable and reflects the rule's current content
Disabling is not the same as deleting. A disabled rule keeps its conditions and actions and can be switched back on at any time
