Categories organize transactions into meaningful groups such as “Groceries”, “Salary”, or “Utilities”. Finper supports a one-level hierarchy: a category can have an optional parent category, but nesting is limited to a single level deep. Categories also carry aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/soker90/finper/llms.txt
Use this file to discover all available pages before exploring further.
type that must match the transactions they are assigned to. All endpoints require the token header.
Category Type Reference
| Type | Description |
|---|---|
expense | Used for outgoing transactions. |
income | Used for incoming transactions. |
not_computable | Used for neutral movements (e.g. transfers). |
POST /api/categories
Create a new category for the authenticated user.POST /api/categories
Request Body
Human-readable name for the category (e.g.
"Groceries", "Salary").Category type. One of:
income, expense, not_computable.Optional ID of an existing category to use as the parent. The parent must belong to the authenticated user. If provided, this category becomes a child of the specified parent.
Optional budget rule classification for the 50/30/20 rule. One of:
needs, wants, savings, none. Defaults to none.Response — 201 Created
Returns the newly created category object.Example
GET /api/categories
List all categories for the authenticated user as a flat array.GET /api/categories
Response — 200 OK
Returns a flat array of all category objects, including both root categories and their children. Each category includes itsparent ID if one exists.
Unique identifier.
Category name.
One of
income, expense, or not_computable.ID of the parent category, if this is a child category.
null for root categories.Budget rule class:
needs, wants, savings, or none.Example
GET /api/categories/grouped
List categories grouped by their parent category.GET /api/categories/grouped
Response — 200 OK
Returns categories structured hierarchically, with child categories nested under their respective parents. Root categories with no parent appear at the top level.Example
PATCH /api/categories/:id
Update an existing category’s fields.PATCH /api/categories/:id
Although PATCH semantically implies optional fields, the underlying edit schema marks
name and type as required — both fields must be present together whenever a body is sent. You cannot update name alone without also supplying type, and vice versa. The optional fields (parent, budgetRuleClass) may be omitted freely.Path Parameters
The unique identifier of the category to update.
Request Body
Updated category name. Must be provided alongside
type.Updated type. One of:
income, expense, not_computable. Must be provided alongside name.Updated parent category ID. The parent must exist and belong to the authenticated user.
Updated budget rule class. One of:
needs, wants, savings, none.Response — 200 OK
Returns the updated category object.Example
DELETE /api/categories/:id
Permanently delete a category.DELETE /api/categories/:id
Path Parameters
The unique identifier of the category to delete.