Skip to main content
POST
/
v1
/
businesses
/
{businessId}
/
bank-transactions
/
bulk-match-or-categorize
Bulk match or categorize
curl --request POST \
  --url https://sandbox.layerfi.com/v1/businesses/{businessId}/bank-transactions/bulk-match-or-categorize \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "transactions": {
    "7c77e464-2a55-4e48-8d71-4f8d2a30c205": {
      "type": "match",
      "suggested_match_id": "8a6fb574-915d-459a-9f5d-2e0a5cf4d3e0"
    },
    "2fe323fc-2f0a-41bf-8f67-768ec955dc59": {
      "type": "categorize",
      "categorization": {
        "type": "Category",
        "category": {
          "type": "StableName",
          "stable_name": "MEALS"
        }
      }
    }
  },
  "categorization_source": "<string>"
}
'
{
  "data": [
    {
      "type": "Bank_Transaction",
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "business_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "source_transaction_id": "g4DlKyjXqGH3Kp5XlaWMtwLRrE4Z9AiE8B4Ko",
      "source_account_id": "Aaoy8G7VXZHVeqNoL1GvcmkPdqpLRWi9NArdG",
      "external_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "imported_at": "2023-11-07T05:31:56Z",
      "date": "2023-11-07T05:31:56Z",
      "amount": 123,
      "counterparty_name": "WeWork",
      "description": "WeWork monthly rent payment",
      "account_name": "Plaid Checking",
      "category": {
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "category": "RENT",
        "display_name": "Rent",
        "stable_name": "RENT"
      },
      "suggested_matches": [
        {
          "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "details": {
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
            "amount": 123,
            "date": "2023-11-07T05:31:56Z",
            "description": "Transfer from SavingsAccount to CheckingAccount"
          }
        }
      ],
      "match": {
        "type": "Match",
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "bank_transaction": {
          "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "date": "2023-11-07T05:31:56Z",
          "amount": 123,
          "business_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "source_transaction_id": "g4DlKyjXqGH3Kp5XlaWMtwLRrE4Z9AiE8B4Ko",
          "source_account_id": "Aaoy8G7VXZHVeqNoL1GvcmkPdqpLRWi9NArdG",
          "external_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "imported_at": "2023-11-07T05:31:56Z",
          "counterparty_name": "WeWork",
          "description": "WeWork monthly rent payment",
          "account_name": "Plaid Checking",
          "memo": "<string>",
          "metadata": {
            "custom_field": "value",
            "any valid json": "below 1kb",
            "nested": {
              "meaning of life": 42,
              "array": []
            }
          },
          "reference_number": "<string>"
        },
        "details": {
          "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "amount": 123,
          "date": "2023-11-07T05:31:56Z",
          "description": "Transfer from SavingsAccount to CheckingAccount"
        }
      },
      "transaction_tags": [
        {
          "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "key": "ExampleTagKey",
          "value": "ExampleTagValue",
          "dimension_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "definition_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "dimension_display_name": "<string>",
          "value_display_name": "<string>",
          "archived_at": "2023-11-07T05:31:56Z"
        }
      ],
      "memo": "<string>",
      "metadata": {
        "custom_field": "value",
        "any valid json": "below 1kb",
        "nested": {
          "meaning of life": 42,
          "array": []
        }
      },
      "reference_number": "<string>",
      "update_categorization_rules_suggestion": {
        "type": "Create_Categorization_Rule_For_Counterparty",
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "created_at": "2023-11-07T05:31:56Z",
        "new_rule": {
          "name": "<string>",
          "category": {
            "type": "AccountId",
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
          },
          "suggestion_1": {
            "type": "AccountId",
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
          },
          "suggestion_2": {
            "type": "AccountId",
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
          },
          "suggestion_3": {
            "type": "AccountId",
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
          },
          "apply_retroactively": false,
          "external_id": "<string>",
          "created_by_suggestion_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "merchant_type_filter": "<string>",
          "transaction_description_filter": "<string>",
          "counterparty_filter": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
          "amount_min_filter": 123,
          "amount_max_filter": 123
        },
        "suggestion_prompt": "<string>",
        "transactions_that_will_be_affected": [
          {
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
            "business_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
            "source_transaction_id": "g4DlKyjXqGH3Kp5XlaWMtwLRrE4Z9AiE8B4Ko",
            "source_account_id": "Aaoy8G7VXZHVeqNoL1GvcmkPdqpLRWi9NArdG",
            "external_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
            "imported_at": "2023-11-07T05:31:56Z",
            "date": "2023-11-07T05:31:56Z",
            "amount": 123,
            "counterparty_name": "WeWork",
            "description": "WeWork monthly rent payment",
            "account_name": "Plaid Checking",
            "memo": "<string>",
            "metadata": {
              "custom_field": "value",
              "any valid json": "below 1kb",
              "nested": {
                "meaning of life": 42,
                "array": []
              }
            },
            "reference_number": "<string>"
          }
        ],
        "business_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "business_name": "<string>",
        "counterparty": {},
        "accepted_at": "2023-11-07T05:31:56Z",
        "dismissed_at": "2023-11-07T05:31:56Z"
      }
    }
  ]
}
A single request can apply match actions, categorize actions, or both. You specify the action type per transaction in the transactions object.

Request Body

Each key in transactions is a transaction id, and each value is either a Match or a Categorize action.

Match

Use suggested_match_id to confirm a suggested match for that transaction.
{
    "transactions": {
        "transaction_uuid": {
            "type": "match",
            "suggested_match_id": "suggested_match_uuid"
        },
        "next_transaction_uuid": {
            "type": "match",
            "suggested_match_id": "suggested_match_uuid"
        },
        // ...
    }
}

Categorize

Use categorization to categorize that transaction (single category or split).
{
    "transactions": {
        "transaction_uuid": {
            "type": "categorize",
            "categorization": {
                "type": "Category",
                "category": {
                    "type": "StableName",
                    "stable_name": "MEALS"
                }
            }
        },
        "next_transaction_uuid": {
            // ...
        },
        // ...
    }
}
For more variations for categorization payloads, see Category payload.

Response

Returns the updated Bank Transactions for all processed transactions with the additional fields for rules suggestions.

Rule Suggestions

Transactions that have been categorized (i.e. taken a category payload) may include update_categorization_rules_suggestion. Transactions processed with a match action do not return rule suggestions. For full behavior and integration guidance, see Categorization Rule Suggestions.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

Content-Type
string

Content-Type must be set to application/json.

Path Parameters

businessId
string<uuid>
required

The UUID of the business.

Body

application/json
transactions
object
required

Map of transaction IDs to either a match action or a categorize action.

Example:
{
"7c77e464-2a55-4e48-8d71-4f8d2a30c205": {
"type": "match",
"suggested_match_id": "8a6fb574-915d-459a-9f5d-2e0a5cf4d3e0"
},
"2fe323fc-2f0a-41bf-8f67-768ec955dc59": {
"type": "categorize",
"categorization": {
"type": "Category",
"category": {
"type": "StableName",
"stable_name": "MEALS"
}
}
}
}
categorization_source
string

Optional source to attribute the request to. Accepted values for this endpoint are API_DIRECT, API_FROM_COMPONENT, LAYER_BOOKKEEPING, API_CONFIRM_MATCH_DIRECT, API_CONFIRM_MATCH_FROM_COMPONENT, and LAYER_BOOKKEEPING_CONFIRM_MATCH.

Response

Matched and categorized transactions.

data
object[]
required