Search bank rules

Operation ID: searchBankRule

Group: Banking › Bank Rules

Open in the interactive reference

POST /banking/bank-rules/search

Read-only: A read that takes its filters in the body. Changes nothing, and ignores Idempotency-Key.

Searches bank rules. A bank rule must match every filter you send. Omit them all to return every bank rule. Each bank rule returned is the full record, including its criteria, bank accounts and action object.

Parameters

Name In Type Required Description
Api-Version header string · v1 yes The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1.

Request body

Required, application/json: searchBankRuleInput.

Field Type Required Description
filters object no The filters to apply. A bank rule must match every filter sent. Omit to return all bank rules. Example: {"status":"active"}.
filters.id string no Limits results to the bank rule with this identifier. The match is exact.
filters.rule string no Limits results to the bank rule with this name. The match is exact.
filters.action string no Limits results to bank rules with this action. Accepted values: 'createBankEntry', 'createCreditCardEntry'. Any other value matches nothing.
filters.status string no Limits results to bank rules with this status. Accepted values: 'active', 'inactive', 'draft'. Any other value matches nothing.
page object no The pagination controls. Omit for the first page. Example: {"size":25}.
page.cursor string no The cursor from the previous response's pagination.nextCursor. Omit on the first request.
page.size number no The number of bank rules per page, between 1 and 200. Defaults to 50. A value above 200 is treated as 200, not rejected.
{
  "filters": {
    "status": "active"
  },
  "page": {
    "size": 25
  }
}

Response

200 Success

Under data (searchBankRuleOutput):

Field Type Required Description
items array<object> yes The bank rules on this page, most recently created first. An empty array when nothing matches. Example: [{"id":"9f2c6a10-7d34-4c8e-9b21-5a0f3e6d81b7","bankRuleNumber":"BR-000014","rule":"Stripe payouts","action":"createBankEntry","status":"active","priority":10,"lastModifiedDate":"2026-08-27T09:15:22.000Z","criteria":[],"criteriaGroups":[],"accounts":[]}].
items[].id string yes The unique identifier for the bank rule.
items[].bankRuleNumber string no The bank rule number. Example: 'BR-000014'.
items[].rule string yes The name of the bank rule. Unique within the tenant.
items[].action string yes What the rule creates for each bank transaction that meets its criteria. Possible values: 'createBankEntry' (a bank entry), 'createCreditCardEntry' (a credit card entry).
items[].status string yes The status of the rule. Possible values: 'active' (the rule runs whenever bank rules run), 'inactive' (the rule is kept but does not run), 'draft' (a rule proposed by the Bank Rules Advisor, which does not run until it is activated).
items[].priority number yes The order in which this rule runs relative to other rules. Lower numbers run first.
items[].description string no A description of the rule.
items[].externalId string no The bank rule's identifier in an external system, if provided.
items[].lastModifiedDate date-time yes The date and time the bank rule last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ.
items[].criteria array<object> yes The conditions a bank transaction must meet, in the order they are evaluated. Rules created or updated through the API always have at least one.
items[].criteria[].id string yes The unique identifier for the criterion.
items[].criteria[].criteria string yes The bank transaction field this criterion tests. Possible values: 'amount' (the signed transaction amount, negative for money out), 'description' (the description as the bank supplied it), 'payeePayor' (the name of the counterparty).
items[].criteria[].operator string yes How the field is compared with value. When criteria is 'amount', it is 'equal', 'notEqual', 'greaterThan', 'greaterThanOrEqual', 'lessThan' or 'lessThanOrEqual'. When criteria is 'description' or 'payeePayor', it is 'is', 'isNot', 'contains' or 'doesNotContain', which are case-sensitive, or 'isCaseInsensitive', 'isNotCaseInsensitive', 'containsCaseInsensitive' or 'doesNotContainCaseInsensitive'.
items[].criteria[].logicalOperator string no How this criterion combines with the next one. Possible values: 'and', 'or'. When absent, 'and' applies. Consecutive criteria joined by the same operator form a group, and groups are always combined with 'and'. For example, A or B, and C matches (A or B) and C, while A and B, or C matches A and B and C. Not used when the rule has criteria groups.
items[].criteria[].value string yes The value the field is compared with. A number when criteria is 'amount', and text otherwise.
items[].criteria[].groupKey string no The key of the criteria group this criterion belongs to. See key on criteriaGroups. Absent when the rule has no criteria groups.
items[].criteriaGroups array<object> yes The nested AND/OR groups of the rule's criteria. Empty when the rule combines its criteria with logicalOperator on each criterion. When present, exactly one group has no parentKey and is the root.
items[].criteriaGroups[].key string yes The group's identifier, referenced by groupKey on criteria and by parentKey on child groups.
items[].criteriaGroups[].parentKey string no The key of the parent group. Absent on the root group.
items[].criteriaGroups[].logicalOperator string yes How the group combines its criteria and child groups. Possible values: 'and', 'or'.
items[].accounts array<object> yes The bank accounts or credit card accounts this rule applies to. Rules created or updated through the API always have at least one. They all belong to the same legal entity, and are all bank accounts or all credit card accounts.
items[].accounts[].id string yes The unique identifier for the bank account mapping.
items[].accounts[].bankAccountId string yes The unique identifier for the bank account. See id on GET banking/bank-accounts/:id.
items[].accounts[].accountName string no The name of the bank account.
items[].actionObject object no The values for the bank entry or credit card entry the rule creates for each bank transaction that meets its criteria. Absent when the rule has no action object, and such a rule is skipped when bank rules run.
items[].actionObject.id string yes The unique identifier for the action object.
items[].actionObject.accountId string no The account each bank entry or credit card entry posts to. See id on GET accounting/accounts/:id.
items[].actionObject.name string no The name given to each bank entry or credit card entry.
items[].actionObject.description string no The description set on each bank entry or credit card entry and on its line.
items[].actionObject.billableExpense string no Marks the line of each credit card entry as a billable expense when 'yes'. Possible values: 'yes', 'no'.
items[].actionObject.businessUnitId string no The business unit set on each bank entry or credit card entry.
items[].actionObject.departmentId string no The department set on each bank entry or credit card entry.
items[].actionObject.customerId string no The customer set on each credit card entry. Not applied to bank entries. See id on GET accounting/customers/:id.
items[].actionObject.vendorId string no The vendor saved on the rule. It is not applied to bank entries or credit card entries. See id on GET accounting/vendors/:id.
items[].actionObject.intercompanyPartnerId string no The intercompany partner set on each bank entry or credit card entry. Applied only when accountId is an elimination account. No endpoint returns intercompany partners.
items[].actionObject.valueAllocationTags array<string> no The value allocation tag codes set on each bank entry or credit card entry. A tag is applied only while value allocation tags are turned on and its dimension is enabled for that type of entry.
pagination object yes The pagination details for the next page. Example: {"hasMore":false}.
pagination.nextCursor string no The cursor for the next page. Pass it as page.cursor. Absent on the last page.
pagination.hasMore boolean yes Whether more matches remain beyond this page.
{
  "data": {
    "items": [
      {
        "id": "9f2c6a10-7d34-4c8e-9b21-5a0f3e6d81b7",
        "bankRuleNumber": "BR-000014",
        "rule": "Stripe payouts",
        "action": "createBankEntry",
        "status": "active",
        "priority": 10,
        "lastModifiedDate": "2026-08-27T09:15:22.000Z",
        "criteria": [],
        "criteriaGroups": [],
        "accounts": []
      }
    ],
    "pagination": {
      "hasMore": false
    }
  },
  "diagnostics": [
    {
      "code": "<code>",
      "message": "<message>",
      "severity": "error",
      "path": [
        "<path>"
      ],
      "details": "<details>"
    }
  ]
}

Statuses