Banking statement categorization

Developed by Phacet

Automatically clean, classify, and tag bank transactions from a raw export, turning bank descriptions into structured, analysis-ready records with expense categories, cost centers, and Opex/Capex splits.

The problem solved by this workflow

You manage company bank transactions that arrive as raw export files: dozens or hundreds of rows per month with cryptic descriptions like OPENAI*CHATGPTSUBSCR, LinkedInSNP575569573, or SC-REST.TESORO.

Before anyone can analyze spend, build a budget report, or prepare an accounting import, someone on your team has to go through each row: identify the vendor, assign an expense category, determine if it's recurring, tag a cost center.

For a typical month, this adds up to several hours of repetitive work, and the results vary depending on who does it.

This workflow replaces that entire manual step. Every transaction is cleaned, normalized, categorized, and tagged consistently, every time.

Use this template if:

  • You export bank statements as CSV or enter transactions manually
  • Your team spends time each month decoding bank descriptions and categorizing expenses
  • You need expense breakdowns by category, type (Opex/Capex), or cost center
  • You want pre-classified data ready for import into your accounting system

Acces the Banking categorization template via the Template Gallery


The impact

Reclaim several hours of manual categorization each month. Every transaction is automatically classified in seconds across five dimensions: expense category, flow direction, Opex/Capex, recurrence, and cost center.

Get consistent results. The agent applies the same classification rules every time. No more inconsistencies between team members or across months.

See your spend structure immediately. With normalized vendor names and analytical tags, you can group, filter, and pivot your transaction data without any cleanup.

Protect sensitive payroll data by default. Employee salary transfers are automatically masked as CONFIDENTIAL - EXCLUDE, preventing salary figures from appearing in shared reports or exports.

How your agent processes every transaction

Every bank transaction that enters the workflow goes through eight stages:

Raw description → Cleaning → Normalize vendor → Categorize expense → Detect flow → Classify Opex/Capex → Detect recurrence → Extract amount → Tag cost centers

Inputs

For each transaction, the template needs two fields

  • the transaction date
  • the original description string as exported from your bank.

These can be uploaded as a CSV batch or entered manually for testing.

An optional third column (Internal Control Process) lets your finance team flag each record after processing.

Processing stages

1. Description cleaning. The agent strips banking artifacts from the raw description (card codes, IBAN fragments, transaction IDs) and produces a human-readable label. ex : OPENAI*CHATGPTSUBSCR becomes "OpenAI ChatGPT Subscription."

2. Vendor normalization. The agent extracts the merchant name and collapses all format variations into a single canonical form. ex STRIPE 29831, Stripe FR_SAS, and Stripe Technology Europe Ltd all become "Stripe."

ℹ️ Employee salary transfers are replaced with CONFIDENTIAL - EXCLUDE to protect payroll data.

3. Expense categorization. Using both the original description and the normalized vendor name, the agent assigns each transaction to one of 15 predefined categories.

💡 You can personalize the categories to fit your accounting standards.

4. Flow type detection. The agent reads the raw description to determine whether money is coming in (Credit) or going out (Debit), using banking language signals.

5. Expense type classification. Each transaction is classified as Opex (operating expense), Capex (capital expenditure), or N/A (revenue, transfers, unclassifiable). SaaS subscriptions, meals, and salaries are Opex.

6. Recurrence detection. The agent determines whether each transaction is a recurring charge or a one-time spend.

7. Amount extraction. A code-based extraction step parses the transaction amount directly from the description string and returns a standardized decimal value.

8. Analytical tagging. Each transaction receives one or more cost center tags from eight available dimensions: Sales & Marketing, Design, Marketing, Product Marketing, Product, Engineering, AI Engineering, and G&A. A single transaction can carry multiple tags when a tool is shared across teams.

Each transaction is automatically analyzed and tagged


Where your team steps in

After the agent processes a batch, your work concentrates on validation.

  • An internal control column tags "To verify" the items that need a human decision on categorization.
  • Your team can either validate the categorization or modify the classification, before marking the record as Validated
  • Everything item is then cleaned, normalized, categorized, tagged, and ready for reporting or accounting import

Example results

Standard SaaS subscription

FieldValue
Original DescriptionOPENAI*CHATGPTSUBSCR
Cleaned DescriptionOpenAI ChatGPT Subscription
Normalized VendorOpenAI
Expense CategoryAI & ML Tools
Flow TypeDebit
Expense TypeOpex
NatureRecurring
Amount (€)-20.00
Analytical TagAI Engineering

Incoming revenue

FieldValue
Original DescriptionVirement entrant Stripe
Cleaned DescriptionIncoming Transfer — Stripe
Normalized VendorStripe
Expense CategoryRevenue/Income
Flow TypeCredit
Expense TypeN/A
NatureRecurring
Amount (€)5200.00
Analytical Tag
🖱️

Learn how to set up your personalized Invoice extraction worklow in the Set Up Guide