---
updatedAt: 2026-07-28T12:56:18.000Z
agentTools:
  projectIndex: https://docs.neonomics.io/llms.txt
---

# /ics/v3/accounts/{iban}/transactions/categorized

**Beta:** This endpoint is currently in beta. Its request and response contract may change without notice.

Returns categorized transactions for the provided account IBAN.

This endpoint enriches account transactions with categorization metadata:
- `reason`: latest categorization reason text.
- `transactionCategories`: category labels assigned by the categorization profile

Pagination is page-based and controlled through the `page` and `pageSize` query parameters.

Results can be filtered by a value-date window (`dateFrom`/`dateTo`), amount range (`minAmount`/`maxAmount`), direction (`creditDebitIndicator`) and category (`categoryIds`). The value-date window is mandatory and bounded: omitted it defaults to the last 30 days, and the span may not exceed 90 days.

**Transaction categories.** The default categorization profile assigns transactions to the categories below, organised into three groups. Categories are profile-scoped, so a customised profile may add, remove, or rename them.

Income:
- Salary & Wages
- Self-Employment & Freelance Income
- Benefits & Allowances
- Investment & Interest Income
- Rental Income
- Refunds & Reimbursements
- Gifts & Transfers Received

Expenses:
- Rent & Mortgage
- Electricity, Water & Heating
- Home Internet & TV
- Supermarket & Groceries
- Convenience Stores & Kiosks
- Pharmacy & Medication
- Medical, Dental & Clinical Services
- Beauty & Personal Grooming
- Health & Life Insurance
- Vehicle & Property Insurance
- Other Insurance & Health Plans
- Public Transport
- Fuel & EV Charging
- Taxi & Ride-Hailing
- Parking & Tolls
- Vehicle Maintenance & Repair
- Streaming & Digital Content
- Mobile & Internet Plans
- Software & Digital Subscriptions
- Restaurants & Dining
- Bars, Cafés & Nightlife
- Entertainment & Events
- Travel & Accommodation
- Clothing, Footwear & Accessories
- Electronics & Appliances
- General & Online Retail
- Donations & Charity
- Betting, Gambling & Lottery
- Physical Activities & Sports
- Home & Household Items
- Education
- Children
- Cash & Withdrawals
- Pets & Veterinary
- Extraordinary
- Loan & Credit Repayments
- Taxes & Government Fees
- Fines & Penalties
- Bank Fees & Charges

Accounting:
- Savings & Emergency Fund
- Investments & Securities


# OpenAPI definition

```json
{
  "openapi": "3.0.1",
  "info": {
    "title": "Welcome to Open API",
    "description": "Discover APIs that enable you to create great user experiences and start integrating with our Payments and Accounts APIs.\nTo start with our APIs first create a Neonomics application on the [developer portal](https://developer.neonomics.io/login) to get a Neonomics application Client ID and Secret ID. Links for developer portal are mentioned below.\nAuthenticate with the Neonomics API, to obtain an access_token so Neonomics can allow you to make requests to the Neonomics API. Use Authorization API to Get\naccess token which will be used in all APIs.\n\nReference Links :\n\n[Neonomics API Documentation](https://docs.neonomics.io/documentation/development/quickstart)\n\n[Sandbox Developer Portal](https://developer.neonomics.io/login)\n\n[Production Developer Portal](https://portal.neonomics.io)\n",
    "version": "3.0"
  },
  "servers": [
    {
      "url": "https://sandbox.neonomics.io",
      "description": "Test env which connects banks Sandbox env"
    },
    {
      "url": "https://api.neonomics.io",
      "description": "Production env which connects live banks"
    }
  ],
  "paths": {
    "/ics/v3/accounts/{iban}/transactions/categorized": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "operationId": "getCategorizedTransactionsByAccount",
        "description": "**Beta:** This endpoint is currently in beta. Its request and response contract may change without notice.\n\nReturns categorized transactions for the provided account IBAN.\n\nThis endpoint enriches account transactions with categorization metadata:\n- `reason`: latest categorization reason text\n- `transactionCategories`: category labels assigned by the categorization profile\n\nPagination is page-based and controlled through the `page` and `pageSize` query parameters.\n\nResults can be narrowed (AND-combined) by a value-date window, amount range, direction and category. The value-date window is mandatory and bounded: when omitted it defaults to the last 30 days, and the requested span may not exceed 90 days.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/Authorization"
          },
          {
            "$ref": "#/components/parameters/x-session-id"
          },
          {
            "$ref": "#/components/parameters/x-device-id"
          },
          {
            "$ref": "#/components/parameters/x-psu-ip-address"
          },
          {
            "$ref": "#/components/parameters/x-psu-id"
          },
          {
            "$ref": "#/components/parameters/x-originating-host"
          },
          {
            "$ref": "#/components/parameters/x-originating-date"
          },
          {
            "$ref": "#/components/parameters/Signature"
          },
          {
            "name": "iban",
            "in": "path",
            "required": true,
            "description": "IBAN of the account for which categorized transactions should be fetched.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Zero-based page index. Default is 0.",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Number of transactions per page. Default is 20.",
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1,
              "maximum": 50
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "required": false,
            "description": "Inclusive lower bound on the transaction value date (ISO 8601 `yyyy-MM-dd`). The value-date window is mandatory and bounded: when omitted it defaults to 30 days before `dateTo` (or today), and the requested span may not exceed 90 days (otherwise 400). The window is resolved against the current UTC date. Transactions without a value date fall outside every window and are not returned.\n",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "required": false,
            "description": "Inclusive upper bound on the transaction value date (ISO 8601 `yyyy-MM-dd`). Defaults to today (UTC) when omitted. The window (`dateFrom`..`dateTo`) may not exceed 90 days.\n",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "required": false,
            "description": "Inclusive lower bound on the transaction amount.",
            "schema": {
              "type": "number",
              "minimum": 0
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "required": false,
            "description": "Inclusive upper bound on the transaction amount.",
            "schema": {
              "type": "number",
              "minimum": 0
            }
          },
          {
            "name": "creditDebitIndicator",
            "in": "query",
            "required": false,
            "description": "Filter by ISO 20022 direction, matched case-insensitively. Values: \"CRDT\" (credit) or \"DBIT\" (debit).\n",
            "schema": {
              "type": "string",
              "enum": [
                "CRDT",
                "DBIT"
              ]
            }
          },
          {
            "name": "categoryIds",
            "in": "query",
            "required": false,
            "description": "Comma-separated category ids (max 20). Matches transactions categorized (by the requesting profile) in ANY of the given categories.\n",
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedCategorizedTransactionResponse"
                },
                "examples": {
                  "categorizedTransactions": {
                    "summary": "Categorized transactions response",
                    "value": {
                      "transactions": [
                        {
                          "id": "enc!!b1SEkuc7IrTrSqTRO3wmshJpiaQESFi0nf5yAMZhvdOvNHTYng3geuyl8yUCn6er",
                          "transactionReference": "neo-test-evry",
                          "transactionAmount": {
                            "currency": "EUR",
                            "value": "49.90"
                          },
                          "creditDebitIndicator": "DBIT",
                          "bookingDate": "2025-10-07T00:00:00.000Z",
                          "valueDate": "2025-10-07T00:00:00.000Z",
                          "counterpartyName": "REMA 1000",
                          "counterpartyAgent": "DNBANOKKXXX",
                          "counterpartyAccount": "NO9386011117947",
                          "merchantCategoryCode": "5411",
                          "merchantName": "REMA 1000",
                          "status": "BOOKED",
                          "transactionType": "PURCHASE",
                          "typeDescription": "Retail purchase",
                          "reason": "Groceries",
                          "transactionCategories": [
                            {
                              "id": "cat-1",
                              "name": "Food",
                              "description": "Food purchases"
                            }
                          ]
                        },
                        {
                          "id": "enc!!gZsvHUKGsZv8cNVUb21aHcKh_T4z83AjjPTE_ggqjD5kL0OS7z6qDsXZUbElaegs",
                          "transactionReference": "MoneySaver",
                          "transactionAmount": {
                            "currency": "EUR",
                            "value": "23.08"
                          },
                          "creditDebitIndicator": "DBIT",
                          "bookingDate": "2025-07-04T00:00:00.000Z",
                          "valueDate": "2025-07-04T00:00:00.000Z",
                          "counterpartyName": "Customer 2",
                          "counterpartyAgent": "",
                          "counterpartyAccount": "NO8499960529223",
                          "status": "PENDING",
                          "reason": "Subscription",
                          "transactionCategories": [
                            {
                              "id": "cat-2",
                              "name": "Subscriptions",
                              "description": "Recurring subscription payments"
                            }
                          ]
                        }
                      ],
                      "pageNumber": 0,
                      "pageSize": 20,
                      "totalElements": 2,
                      "totalPages": 1,
                      "first": true,
                      "last": true,
                      "empty": false
                    }
                  }
                }
              }
            }
          },
          "510": {
            "$ref": "#/components/responses/510"
          },
          "520": {
            "$ref": "#/components/responses/520"
          },
          "530": {
            "$ref": "#/components/responses/530"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "parameters": {
      "x-device-id": {
        "name": "x-device-id",
        "required": true,
        "in": "header",
        "description": "String that uniquely identifies a single end-user or device.",
        "schema": {
          "type": "string"
        }
      },
      "Authorization": {
        "name": "Authorization",
        "in": "header",
        "required": false,
        "description": "Authentication scheme used to transmit the access token. Valid value is \"Bearer {access token}\".",
        "schema": {
          "type": "string"
        }
      },
      "x-originating-host": {
        "name": "x-originating-host",
        "in": "header",
        "required": false,
        "description": "The host where the request is originating from.\nIf you are using end to end encryption from our developer portal then this header is mandatory.\n",
        "schema": {
          "type": "string"
        }
      },
      "x-originating-date": {
        "name": "x-originating-date",
        "in": "header",
        "required": false,
        "description": "The request originating date.\nIf you are using end to end encryption from our developer portal then this header is mandatory.\n",
        "schema": {
          "type": "string"
        }
      },
      "Signature": {
        "name": "Signature",
        "in": "header",
        "required": false,
        "description": "The signature header consisting of the signature string\nIf you are using end to end encryption from our developer portal then this header is mandatory.\n",
        "schema": {
          "type": "string"
        }
      },
      "x-session-id": {
        "name": "x-session-id",
        "in": "header",
        "required": true,
        "description": "The session Id returned in the response body when this session was created.",
        "schema": {
          "type": "string"
        }
      },
      "x-psu-ip-address": {
        "name": "x-psu-ip-address",
        "in": "header",
        "required": true,
        "description": "The IP Address of the end-user (PSU), which must be provided if the PSU actively requests information.\nIf this value is not provided, then the call will count towards the number of TPP calls without PSU interaction.\nLeave it empty if the end user is not actively requesting account information, such as during automatic background updates.\nProvided in either IPv4 or IPv6 format.\n",
        "schema": {
          "type": "string"
        }
      },
      "x-psu-id": {
        "name": "x-psu-id",
        "in": "header",
        "required": false,
        "description": "Identifier of the end-user, passed as the base64-encoded value of an encrypted string following\nthe guidelines given in Documentation > Development > Sensitive end-user data.\nThis parameter is required if the value of 'personalIdentificationRequired' returned from the /banks endpoint is \"true\".\n",
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "CardAcceptorAddress": {
        "type": "object",
        "description": "Postal address of the card acceptor (merchant).",
        "properties": {
          "streetName": {
            "type": "string",
            "description": "Street name of the merchant."
          },
          "buildingNumber": {
            "type": "string",
            "description": "Building number of the merchant."
          },
          "postCode": {
            "type": "string",
            "description": "Post code of the merchant."
          },
          "townName": {
            "type": "string",
            "description": "Town or city name of the merchant."
          },
          "countrySubDivision": {
            "type": "string",
            "description": "State or province of the merchant."
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code of the merchant."
          },
          "unstructured": {
            "type": "string",
            "description": "Unstructured address line when structured components are unavailable."
          }
        }
      },
      "TransactionAmount": {
        "type": "object",
        "properties": {
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "PagedCategorizedTransactionResponse": {
        "type": "object",
        "properties": {
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CategorizedTransaction"
            }
          },
          "pageNumber": {
            "type": "integer",
            "description": "Zero-based page index."
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of elements in the page."
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of matching elements."
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages."
          },
          "first": {
            "type": "boolean",
            "description": "True when this is the first page."
          },
          "last": {
            "type": "boolean",
            "description": "True when this is the last page."
          },
          "empty": {
            "type": "boolean",
            "description": "True when the page has no transactions."
          }
        }
      },
      "CategorizedTransaction": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for a transaction. If the field is empty, it was not provided by the bank."
          },
          "transactionReference": {
            "type": "string",
            "description": "Transaction reference from the bank. If the field is empty, it was not provided by the bank."
          },
          "transactionAmount": {
            "description": "Amount for a transaction.",
            "$ref": "#/components/schemas/TransactionAmount"
          },
          "creditDebitIndicator": {
            "type": "string",
            "description": "Debit or credit code following ISO 20022. Values: \"CRDT\" (credit transaction) or \"DBIT\" (debit transaction).\n",
            "enum": [
              "CRDT",
              "DBIT"
            ]
          },
          "bookingDate": {
            "type": "string",
            "description": "Timestamp showing when the transaction was booked on the account, formatted following ISO8601.\nIf the timestamp has a NULL value, it signifies that the transaction represents a pending payment.\n",
            "format": "date-time"
          },
          "valueDate": {
            "type": "string",
            "description": "Timestamp showing when the amount became available to the account owner (credit) or ceased to be available to the account owner (debit), formatted following ISO8601.",
            "format": "date-time"
          },
          "counterpartyName": {
            "description": "The name of the other party that participated in the transaction. If the field is empty, it was not provided by the bank.",
            "type": "string"
          },
          "counterpartyAgent": {
            "type": "string",
            "description": "8 or 11-character long BIC code of agent/intermediary bank. If the field is empty, it was not provided by the bank."
          },
          "counterpartyAccount": {
            "description": "The account number of the other party that participated in the transaction. If the field is empty, it was not provided by the bank.",
            "type": "string"
          },
          "currencyExchange": {
            "type": "object",
            "description": "Details of currency conversion applied to the transaction. Only present when the transaction involved a currency conversion.",
            "properties": {
              "sourceCurrency": {
                "type": "string",
                "description": "Currency of the original transaction following ISO 4217."
              },
              "targetCurrency": {
                "type": "string",
                "description": "Currency after conversion, typically the account currency, following ISO 4217."
              },
              "unitCurrency": {
                "type": "string",
                "description": "Currency in which the exchange rate is expressed (e.g. in \"1 GBP = X EUR\", GBP is the unit currency), following ISO 4217."
              },
              "quotationDate": {
                "type": "string",
                "format": "date",
                "description": "Date the exchange rate was quoted, formatted following ISO8601."
              },
              "sourceCurrencyAmount": {
                "type": "string",
                "description": "Transaction amount in the source currency."
              },
              "exchangeRate": {
                "type": "string",
                "description": "Rate used to convert source currency to target currency."
              }
            }
          },
          "referenceNumber": {
            "type": "string",
            "description": "KID or OCR number — Remittance Information Structured. If empty, it was not provided by the bank."
          },
          "remittanceInformationUnstructuredArray": {
            "type": "array",
            "description": "Free-form remittance information as provided by the originating party.",
            "items": {
              "type": "string"
            }
          },
          "merchantCategoryCode": {
            "type": "string",
            "description": "4-digit Merchant Category Code (MCC) identifying the type of business. If empty, it was not provided by the bank."
          },
          "merchantName": {
            "type": "string",
            "description": "Merchant name as returned by the bank. If empty, it was not provided by the bank."
          },
          "status": {
            "type": "string",
            "description": "Status of the transaction.",
            "enum": [
              "BOOKED",
              "PENDING",
              "CANCELLED",
              "BILLED",
              "UNAVAILABLE"
            ]
          },
          "proprietaryBankTransactionCode": {
            "type": "string",
            "description": "Bank-specific transaction code. If empty, it was not provided by the bank."
          },
          "transactionType": {
            "type": "string",
            "description": "Transaction type metadata as provided by the bank."
          },
          "typeDescription": {
            "type": "string",
            "description": "Human-readable description of the transaction type as provided by the bank."
          },
          "bankResponse": {
            "type": "string",
            "description": "Raw bank response metadata associated with the transaction."
          },
          "bankTransactionCode": {
            "type": "string",
            "description": "ISO 20022 bank transaction code (e.g. PMNT-RCDT-ESCT)."
          },
          "mandateId": {
            "type": "string",
            "description": "Mandate identifier for direct debit or standing order transactions."
          },
          "cardTransactionTypeCode": {
            "type": "string",
            "description": "Card transaction type code as provided by the bank."
          },
          "cardTransactionDetails": {
            "type": "object",
            "description": "Detailed card transaction information. Only populated for card transactions; all fields are optional and depend on what the bank makes available.",
            "properties": {
              "cardAcceptorAddress": {
                "$ref": "#/components/schemas/CardAcceptorAddress"
              },
              "cardEntryMode": {
                "type": "string",
                "description": "How the card was entered (e.g. chip, swipe, contactless, manual)."
              },
              "posEntryMode": {
                "type": "string",
                "description": "Point-of-sale entry mode at the terminal."
              },
              "posEnvironment": {
                "type": "string",
                "description": "Point-of-sale environment (e.g. attended, unattended, e-commerce)."
              },
              "terminalType": {
                "type": "string",
                "description": "Type of terminal used for the transaction."
              },
              "authenticationMethod": {
                "type": "string",
                "description": "Authentication method used (e.g. PIN, signature, biometric)."
              },
              "scaOutcome": {
                "type": "string",
                "description": "Outcome of strong customer authentication."
              },
              "cardholderVerificationMethod": {
                "type": "string",
                "description": "Method used to verify the cardholder."
              },
              "credentialOnFile": {
                "type": "boolean",
                "description": "Whether the card credentials are stored on file by the merchant."
              },
              "initiationType": {
                "type": "string",
                "description": "How the transaction was initiated (e.g. cardholder, merchant)."
              },
              "acquirerCountryCode": {
                "type": "string",
                "description": "ISO 3166-1 alpha-2 country code of the acquiring bank."
              },
              "crossBorderIndicator": {
                "type": "boolean",
                "description": "Whether the transaction crossed country borders."
              }
            }
          },
          "reason": {
            "type": "string",
            "description": "Latest categorization reason for this transaction."
          },
          "transactionCategories": {
            "type": "array",
            "description": "Categories assigned by categorization.",
            "items": {
              "$ref": "#/components/schemas/TransactionCategoryResponse"
            }
          }
        }
      },
      "TransactionCategoryResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique category identifier."
          },
          "name": {
            "type": "string",
            "description": "Category display name."
          },
          "description": {
            "type": "string",
            "description": "Category description."
          }
        }
      },
      "currency": {
        "type": "string",
        "description": "3 letter currency code for the account following ISO 4217.",
        "enum": [
          "NOK",
          "EUR",
          "SEK",
          "DKK"
        ]
      },
      "ApiException": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for an error, used for debugging purposes. In connection with error reporting to Neonomics, it is called correlation ID.\n"
          },
          "errorCode": {
            "type": "string",
            "description": "Error code that identifies the error scenario. Description of error codes is available at Documentation > Development > Error Codes."
          },
          "message": {
            "type": "string",
            "description": "Text description of an error."
          },
          "source": {
            "type": "string",
            "description": "Identifies the source of an error. \"example\": \"C\" indicates a client error.\n"
          },
          "type": {
            "type": "string",
            "description": "Categorization of an error as either 'FATAL', 'NETWORK', 'BAD_REQUEST', 'AUTH' or 'CONSENT'.\nThe error types are described in Documentation > Development > Error Codes.\n"
          },
          "timestamp": {
            "type": "string"
          },
          "links": {
            "type": "array",
            "description": "Array of link objects related to the error. The meta object contains the sessionId.",
            "items": {
              "$ref": "#/components/schemas/links"
            }
          }
        }
      },
      "links": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "HTTP Method type of the link."
          },
          "rel": {
            "type": "string",
            "description": "API Operation related to the link."
          },
          "href": {
            "type": "string",
            "description": "Use this URL to call the consent endpoint, which will return the bank's authentication URL."
          },
          "meta": {
            "type": "object",
            "description": "This object contains an id which is the current sessionId."
          }
        }
      }
    },
    "responses": {
      "510": {
        "description": "Returned when the request is invalid due to client-side issues, such as missing or incorrect parameters. Check your request and refer to the [Client Error Codes](https://docs.neonomics.io/docs/error-codes#client-errors-10001999) for details.\n",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiException"
            }
          }
        }
      },
      "520": {
        "description": "Indicates a problem within the Neonomics platform. This error is not caused by your request. See [Neonomics Error Codes](https://docs.neonomics.io/docs/error-codes#neonomics-errors-30003999) for troubleshooting steps.\n",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiException"
            }
          }
        }
      },
      "530": {
        "description": "Returned when the bank encounters an error processing your request. Review the [Bank Error Codes](https://docs.neonomics.io/docs/error-codes#bank-errors-40005999) for more information and possible solutions.\n",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiException"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ]
}
```