Skip to main content

Expenses

Track what your stack costs without leaving your project management tool. Almirant's expense module allows you to record, categorize, and analyze all costs associated with your projects: from SaaS subscriptions and hosting services to AI API costs and vendor invoices.

Why manage expenses in a PM tool

Tech teams handle multiple costs that directly impact projects:

  • AI costs: OpenAI, Anthropic APIs, ML models in production
  • Infrastructure: AWS, GCP, Vercel, hosting, managed databases
  • SaaS subscriptions: GitHub, Figma, Slack, development tools
  • External services: CDNs, email services, analytics
  • Vendors: freelancers, consultants, professional services

Having visibility into these costs alongside the team's work enables better product decisions and prioritization with complete information.

What is an expense

An expense is a record of a cost associated with your organization or project. Each expense has the following fields:

FieldRequiredDescriptionExample
TitleYesDescriptive name of the expense"OpenAI API - March 2024"
AmountYesExpense amount450.00
CurrencyYesISO currency codeEUR, USD, GBP
CategoryNoExpense category"Infrastructure > Cloud"
DateYesExpense date2024-03-15
VendorNoVendor or service name"OpenAI"
DescriptionNoAdditional expense details"GPT-4 API usage for feature X"
ProjectNoProject to charge"Mobile App v2"
Paid byNoUser who made the payment"John Smith"

Expense statuses

Expenses go through different statuses according to your organization's approval flow:

StatusDescription
draftDraft pending completion
pending_approvalSubmitted for approval
approvedApproved, pending payment
rejectedRejected by approver
paidPaid and completed
voidVoided (not counted)

Creating an expense

  1. Access Expenses from the main menu
  2. Click New expense
  3. Complete the required fields (title, amount, currency, date)
  4. Optionally, select category, project, and attach the invoice
  5. Save as draft or submit for approval

Hierarchical categories

Expenses are organized in tree-structured categories, allowing for as granular detail as you need:

Expenses
├── Infrastructure
│ ├── Cloud (AWS, GCP, Azure)
│ ├── Hosting (Vercel, Railway)
│ └── Databases
├── SaaS
│ ├── Development (GitHub, GitLab)
│ ├── Design (Figma, Adobe)
│ └── Communication (Slack, Notion)
├── AI and ML
│ ├── APIs (OpenAI, Anthropic)
│ └── Custom models
├── Marketing
│ ├── Advertising
│ └── Tools
└── Professional services
├── Consulting
└── Freelancers

Creating a category

  1. In expense settings, access Categories
  2. Click New category
  3. Enter name, icon, and color
  4. Optionally, select a parent category

Categories have an order field to control their position and can be deactivated with isActive = false without deleting associated expenses.

Recurring expenses

For costs that repeat periodically (subscriptions, monthly services), you can configure recurring expenses:

FieldDescriptionExample
TitleRecurring expense name"Vercel Pro"
VendorService or company"Vercel"
AmountAmount per period20.00
CurrencyExpense currencyUSD
RecurrenceExpense frequencymonthly
Anchor dateReference date2024-01-01
Next renewalAutomatically calculated2024-04-01
Alert days beforeDays in advance to notify7

Available recurrences

RecurrenceDescription
weeklyWeekly
monthlyMonthly
quarterlyQuarterly
yearlyYearly

Active recurring expenses automatically show the next renewal date and can generate configurable alerts.

Multi-currency support

Almirant supports multiple currencies with automatic conversion to EUR for aggregations:

CurrencyCode
EuroEUR
US DollarUSD
British PoundGBP
Swiss FrancCHF
Japanese YenJPY
Canadian DollarCAD
Australian DollarAUD
Mexican PesoMXN
Brazilian RealBRL
Chilean PesoCLP
Colombian PesoCOP
Argentine PesoARS

Each expense stores:

  • amount: Amount in original currency
  • currency: ISO currency code
  • amountEur: Amount converted to EUR
  • exchangeRate: Applied exchange rate

Aggregations and reports are calculated on amountEur to compare expenses in different currencies.

Invoices and attachments

Each expense can have an attached invoice. Almirant stores:

FieldDescription
invoiceFileNameFile name
invoiceUrlS3 document URL
invoiceFileSizeSize in bytes
invoiceMimeTypeMIME type (application/pdf, image/png, etc.)
invoiceProcessingStatusProcessing status

Invoice processing statuses

StatusDescription
pendingPending processing
processingBeing processed (OCR/AI)
processedSuccessfully processed
failedProcessing error

Automatic processing can extract data from the invoice via OCR to auto-fill expense fields.

Dashboard and aggregations

The main expense view includes a dashboard with key metrics:

Available metrics

MetricDescription
TotalTotal sum of expenses (in EUR)
By personBreakdown by paying user
By categoryDistribution by categories
By monthTime evolution
RecentLatest recorded expenses

Filters

You can filter expenses by:

  • Date range
  • Category (including subcategories)
  • Project
  • Status
  • Vendor
  • Paying user

For developers

For Developers

MCP tools

ToolDescriptionMain parameters
create_expenseCreates a new expensetitle, amount, currency, expenseDate, categoryId, projectId
get_expenseGets an expense by IDexpenseId
list_expensesLists expenses with filtersprojectId, categoryId, status, dateFrom, dateTo
get_expense_summaryGets aggregationsprojectId, dateFrom, dateTo
list_expense_categoriesLists categoriesincludeInactive
list_recurring_expensesLists recurring expensesisActive

Example: Create an expense

Tool: create_expense
Parameters:
title: "AWS EC2 - March 2024"
amount: 234.50
currency: "USD"
expenseDate: "2024-03-31"
categoryId: "category-uuid-cloud"
projectId: "project-uuid"
vendor: "Amazon Web Services"

Example: Get expense summary

Tool: get_expense_summary
Parameters:
projectId: "project-uuid"
dateFrom: "2024-01-01"
dateTo: "2024-03-31"

Returns:

  • Total expenses in the period (in EUR)
  • Breakdown by category
  • Breakdown by person
  • Monthly evolution
  • Recent expenses

Related: Projects | Knowledge base