> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flinks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Categorization Guide

> Understand the difference between Broad Categorization and Transaction Categorization, income detection, and merchant normalization.

Flinks offers multiple categorization capabilities that transform raw transaction data into structured, actionable insights. This guide explains the different categorization types and how they work together.

## Broad Categorization vs Transaction Categorization

Flinks provides two levels of categorization:

### Broad Categorization

Assigns a **Category** and **SubCategory** to every transaction. This is included as part of the Enrich product and provides a standardized view of spending and income patterns.

* Covers all transaction types (debits and credits)
* Assigns one of 15+ primary categories (e.g., Food & Dining, Income, Utilities)
* Available for both Canadian and US transactions
* For the full list, see [Transaction Categorization](/guides/enrich/transaction-categorization)

### Transaction Categorization (Attributes)

Goes deeper than broad categorization by extracting specific financial signals used in lending, underwriting, and risk assessment. Available through Enrich [Attributes packages](/guides/enrich/attributes-packages), this includes:

* Income detection and classification
* Recurring payment identification
* NSF (non-sufficient funds) and overdraft tracking
* Loan and cash advance detection
* Custom attribute packages tailored to specific use cases

## Income detection

Flinks identifies and classifies income transactions, distinguishing between:

* **Employment income** — Regular salary and wage deposits
* **Government benefits** — Social assistance, tax refunds, pension payments
* **Freelance / gig income** — Irregular income from multiple sources
* **Other income** — Interest, dividends, rental income

### Use cases

| Use case                      | How income detection helps                                                |
| :---------------------------- | :------------------------------------------------------------------------ |
| **Lending**                   | Verify stated income against actual deposits for affordability assessment |
| **BNPL (Buy Now, Pay Later)** | Assess repayment capacity in real time before approving a purchase        |
| **Account opening**           | Understand a customer's income profile during onboarding                  |

## Categorization accuracy

Flinks categorization models achieve **>85% accuracy** across transaction types, with continuous improvement as models are retrained on new data.

Factors that affect accuracy:

* **Transaction string quality** — Banks format transaction descriptions differently. Some include merchant names, while others use abbreviated codes.
* **Region and language** — Models perform best on English and French transactions in Canada and the US.
* **Transaction type** — Common merchants (major retailers, utilities) have higher accuracy than niche or local businesses.

## Merchant normalization

Raw transaction descriptions from banks are often cryptic:

```text theme={null}
CHECKCARD 0315 STARBUCKS STORE 12345 TORONTO ON
```

Flinks normalizes these into clean, readable merchant names:

```text theme={null}
Starbucks
```

Merchant normalization:

* Strips transaction codes, dates, and location suffixes
* Maps variations of the same merchant to a single canonical name
* Works across different banks and transaction formats

This makes it possible to aggregate spending by merchant across accounts and institutions.

## Custom rules

Clients can layer their own categorization rules on top of Flinks attributes. This is useful for:

* Reclassifying transactions based on your business logic
* Adding industry-specific categories not in the standard taxonomy
* Flagging specific merchants or transaction patterns

Custom rules are applied after Flinks categorization, so you always receive the base categorization plus your custom overrides.

## Coverage

| Region        | Broad Categorization | Transaction Categorization (Attributes) |
| :------------ | :------------------- | :-------------------------------------- |
| Canada        | Supported            | Supported                               |
| United States | Supported            | Supported                               |

<Note>
  Accuracy varies by region and language. Transaction string quality depends on the financial institution — some banks provide detailed descriptions while others use abbreviated codes.
</Note>

## Related resources

* [Transaction Categorization](/guides/enrich/transaction-categorization)
* [Attributes](/guides/enrich/attributes)
* [Attributes Packages](/guides/enrich/attributes-packages)
* [Categories API](/api/enrich/endpoints/attributes-libraries/categories)
