canonical: https://jentic.com/apis/e-conomic.com/e-conomic

# E Conomic Visma e-conomic OpenAPI

Visma e-conomic is a Nordic cloud accounting platform whose v20 REST API exposes activities, activity groups, cost types, employees and employee groups, mileage entries and prices, project activities, and project customers. Built for ISVs integrating expense, project costing, and time-tracking flows into e-conomic books, the API is paginated by /paged endpoints and authenticated with a per-agreement grant token plus an app secret token. Visma publishes its own OpenAPI document for this Projects surface and that document is canonical; it is linked in the FAQ below. This page describes a curated, agent-optimized Jentic specification of the same 98 operations, kept validated so agents can discover and execute them through the Jentic API Directory.

## For AI agents

Read and write activities, employees, mileage entries, project activities, and project customers in a Visma e-conomic agreement so apps can sync expenses, time, and costing data into the books.

## Scope

Does not handle invoicing, payment processing, or VAT filing - use for activity, employee, mileage, and project costing data inside an e-conomic agreement only.

## Capabilities

- List, retrieve, create, and update activities used to categorise project work
- Query allowed activities for a context and count or page through activities
- Retrieve cost types and cost type groups for use on time and expense entries
- Manage employees and employee groups, including create, update, delete, count, and paged list
- Create, update, delete, approve, count, and page through mileage entries
- Look up mileage entry prices and individual mileage price records
- Manage project activities and read project customers with paged retrieval

## Use cases

### Mileage Expense Sync from a Mobile App

A field-services mobile app captures driver trips and posts them to e-conomic via POST /mileages with the employee number, date, and distance. Once a manager reviews the batch, POST `/mileages/approve` marks them approved so the postings flow into the agreement's books without manual re-entry.

Example prompt: POST /mileages with employee number, distance, and date for each captured trip, then POST `/mileages/approve` with the list of mileage IDs

### Employee Master Data Sync from HR

An HR system pushes new hires and group changes into e-conomic via POST /employees and PUT /employees, and uses /employeegroups to keep the group taxonomy aligned. `/employees/paged` gives the HR sync job a stable cursor for the reverse direction so pulled records can reconcile against the source.

Example prompt: POST /employees with the new hire's number, name, and employee group, then GET `/employees/paged` on the next sync to verify the record exists

### Project Cost Tracking

A project management app creates project activities via POST /project-activities and reads project customers via `/project-customers/paged` so timesheets in the source app map onto e-conomic's project structure. Activity groups and cost types pulled from /activitygroups and /costtypes drive the dropdowns the user sees when classifying time entries.

Example prompt: GET /activitygroups and /costtypes to build the classification list, then POST /project-activities to register new billable activities for a project

### Agent-Driven Bookkeeping via Jentic

An AI assistant for a Nordic SMB asks Jentic to 'create a mileage entry in e-conomic' and gets the POST /mileages operation. It supplies the driver's employee number and distance, and the entry lands in the agreement's books - the agreement grant token and app secret token never enter the agent context.

Example prompt: Use Jentic to search 'create a mileage entry in e-conomic', load the POST /mileages operation, and execute it with the employee number and trip distance

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/mileages` | Create a single mileage entry |
| POST | `/mileages/approve` | Approve a list of mileage entries |
| POST | `/employees` | Create an employee |
| POST | `/employeegroups` | Create an employee group |
| POST | `/project-activities` | Create a project activity |
| GET | `/activities/allowed` | Retrieve allowed activities |
| GET | `/employees/paged` | Retrieve a page of employees |
| GET | `/project-customers/paged` | Retrieve a page of project customers |

## Key resources

- **Activities** — List, retrieve, create, update, count, page, and read allowed activities
- **Activity Groups** — List, retrieve, create, count, and page activity groups
- **Cost Types and Cost Type Groups** — List, retrieve, count, and page cost types and their groups
- **Employees** — List, retrieve, create, update, delete, count, and page employees
- **Employee Groups** — List, retrieve, create, update, delete, count, and page employee groups
- **Mileages** — Create, retrieve, update, delete, approve, count, and page mileage entries
- **Mileage Prices** — List, retrieve, and page mileage entry prices
- **Project Activities** — List, retrieve, create, update, delete, count, and page project activities
- **Project Customers** — List, retrieve, count, and page project customers

## Why Jentic

- **Setup:** Wiring Visma e-conomic by hand means sending both the X-AppSecretToken and X-AgreementGrantToken headers on every call and coding its paged reads yourself. Through Jentic you install once, import e-conomic from the API Directory, store both tokens once, and your agent calls it.
- **Permission scoping:** e-conomic carries the agreement and record targets in headers and request bodies rather than the URL path, so scope your agent to the operations it needs, such as listing paged employees or creating a mileage entry. Actions like approving a mileage or creating an employee group stay out of the allowed set unless you add them.
- **Credential handling:** Your e-conomic X-AppSecretToken and X-AgreementGrantToken are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a mileage entry' or 'list project customers', and Jentic returns the matching e-conomic operation with its input schema and pagination shape so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Dynosend API** — Email customers transactional invoice or receipt notifications driven by e-conomic events
- **dYdX Indexer API** — Bring trading PnL data alongside e-conomic accounting for crypto-trading businesses
- **E-goi Marketing API** — Multi-channel marketing campaigns pointed at customer segments synced from e-conomic project customers

## FAQ

### Which OpenAPI specification does this Visma e-conomic OpenAPI page describe?

A curated, agent-optimized Jentic specification covering 98 Visma e-conomic operations across 70 paths. Visma publishes its own OpenAPI document for the same Projects surface in the e-conomic API documentation index at https://apis.e-conomic.com/, which serves the Projects document at https://apis.e-conomic.com/projectsapi/openapi-projects.json. That official document is version 1.1.0, dated November 2024 in its own changelog, adds an optional booking-date property to the time-entry approval operation, and points at a newer per-API base path, so treat it as canonical. The Jentic variant tracks the earlier v20.0.0 publication of the same 70 paths and 98 operations, normalized for agent tooling, and lower-cases the path segments the official document capitalizes. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Visma e-conomic OpenAPI use?

Every request requires two API keys passed as headers: 'X-AppSecretToken' identifies the integration and 'X-AgreementGrantToken' identifies the e-conomic agreement (tenant) the call acts on. Through Jentic, both are stored encrypted in the vault and injected per-call rather than handed to the agent.

### Can I create mileage entries with the Visma e-conomic API?

Yes. POST /mileages creates a mileage entry, PUT /mileages updates one, DELETE `/mileages/{number}` removes it, and POST `/mileages/approve` marks a batch approved. Pricing for the entries is read from /mileageprices and `/mileageprices/{number}.`

### What are the rate limits for the Visma e-conomic OpenAPI?

The OpenAPI spec does not declare numeric rate limits. Visma e-conomic applies tenant-level fair-use throttling - high-volume integrations should use the /paged endpoints (e.g. `/employees/paged`, `/mileages/paged`) rather than repeatedly calling the unpaged list.

### How do I post a mileage entry through Jentic?

Run pip install jentic, search for 'create a mileage entry in e-conomic', load the operation for POST /mileages, then execute it with the employee number, date, and distance. Jentic injects both the X-AppSecretToken and X-AgreementGrantToken headers automatically.

### Can I page through employees instead of pulling them all at once?

Yes. GET `/employees/paged` returns a page-based response and GET `/employees/count` returns the total count, so a sync job can iterate pages rather than fetching the unpaged /employees list. The same paged + count pattern applies to mileages, activities, project activities, and project customers.

### Can I limit what my agent is allowed to do with the Visma e-conomic API?

Yes. Because you run Jentic One yourself, your own rules decide exactly which e-conomic operations the agent may call, so you can allow read-only work like GET `/employees/paged` or GET `/project-customers/paged` while withholding write actions. If the agent only needs to create mileage entries, grant POST /mileages and leave riskier operations such as POST `/mileages/approve`, POST /employees, or POST /employeegroups out of the allowed set. Since the API targets the agreement and records through the X-AppSecretToken and X-AgreementGrantToken headers and request bodies rather than the URL path, you scope by choosing operations rather than by editing paths. The two tokens are stored by your own instance and injected at execution time, so the agent never sees them.
