First-party app
e-conomic

e-conomic

Read and write customers, products, draft and booked invoices, and read orders, suppliers, accounts and bookkeeping entries in Visma e-conomic accounting.

stable Finance & Accounting

About

e-conomic ships in the w6w first-party pack. It declares 29 actions, 3 health checks, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.economic
Version
0.1.0
Author
w6w
Licence
MIT
Categories
Finance & Accounting

Overview

e-conomic (Visma e-conomic) is a cloud accounting system for small and mid-sized businesses, used mostly in Denmark and the Nordics. This app connects a workflow to an agreement’s books through the e-conomic REST API, with the two tokens e-conomic issues: the App Secret Token that identifies the integration and the Agreement Grant Token granted by the customer.

A workflow can list and read customers and create or delete them, and do the same for products; list customer groups, product groups, payment terms, VAT zones, layouts, units and employees (the reference data a new customer, product or invoice needs); create a draft invoice with its lines, delete a draft, book it (optionally sending it by email or EAN e-invoice), and list or read draft and booked invoices. It can also list draft orders, suppliers, the chart of accounts, accounting years and the bookkeeping entries of a year, and read the connected agreement.

Every list takes e-conomic’s filter and sort expressions and returns the page with a total and the page to ask for next. Health checks read e-conomic’s status page for its dedicated REST API component, probe the API’s reachability, and verify the tokens against the agreement.

Build with e-conomic

Three routes to the same 29 actions. The Workflow tab is generated from e-conomic's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

List Accounts

account-list

List the chart of accounts.

List Accounting Years

accounting-year-list

List accounting years; the year is the key for entries.

Create Customer

customer-create

Create a customer. Name, currency, customer group, payment terms and VAT zone are required by e-conomic; list them with the matching List actions.

Delete Customer

customer-delete

Delete a customer (HTTP 204). e-conomic refuses it while the customer has booked documents.

Get Customer

customer-get

Fetch one customer by its customer number.

List Customer Groups

customer-group-list

List customer groups; a customer's group number is required to create one.

List Customers

customer-list

List customers, with e-conomic filter and sort expressions.

List Employees

employee-list

List employees (sales persons).

List Account Entries

entry-list

List the finance entries (bookkeeping lines) of one accounting year.

Book Invoice

invoice-book

Book a draft invoice, making it a booked (final, numbered) invoice, and optionally send it to the recipient. Not reversible through the API.

Get Booked Invoice

invoice-booked-get

Fetch one booked invoice, including its lines and remainder.

List Booked Invoices

invoice-booked-list

List booked invoices; filter by date, customer or remainder.

Create Draft Invoice

invoice-draft-create

Create a draft invoice (it is not booked; use Book Invoice for that). e-conomic requires customer, date, currency, payment terms, layout and the recipient's name and VAT zone; Get Customer Invoice Template returns a pre-filled draft for a customer to copy those from.

Delete Draft Invoice

invoice-draft-delete

Delete a draft invoice. Booked invoices cannot be deleted.

Get Draft Invoice

invoice-draft-get

Fetch one draft invoice, including its lines.

List Draft Invoices

invoice-draft-list

List draft (not yet booked) invoices.

Get Customer Invoice Template

invoice-template-get

Return a draft-invoice body pre-filled from a customer's defaults (payment terms, layout, recipient, VAT zone, currency). Read-only; nothing is created.

List Layouts

layout-list

List invoice layouts; one is required on a draft invoice.

List Draft Orders

order-draft-list

List draft sales orders.

List Payment Terms

payment-terms-list

List payment terms; one is required on customers and invoices.

Create Product

product-create

Create a product. Product number (your own string), name and product group are required by e-conomic.

Delete Product

product-delete

Delete a product by its product number.

Get Product

product-get

Fetch one product by its product number (a string).

List Product Groups

product-group-list

List product groups; a product's group number is required to create one.

List Products

product-list

List products, with filter and sort.

Get Agreement

self-get

Read the connected e-conomic agreement: company, base currency, default payment term and enabled modules. Returns a curated subset (the raw response also names the integration's app).

List Suppliers

supplier-list

List suppliers.

List Units

unit-list

List product units (pieces, hours, ...).

List VAT Zones

vat-zone-list

List VAT zones; one is required on customers and invoice recipients.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying e-conomic's real ids.

{
  "manifestVersion": "2",
  "name": "economic-example",
  "steps": [
    {
      "id": "customer-create",
      "uses": {
        "app": "io.w6w.economic",
        "action": "customer-create",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "name": "<name>",
        "currency": "<currency>",
        "customerGroupNumber": "<customerGroupNumber>"
      }
    }
  ]
}

Here are some of the things you can do

  • Create Customer

    perform
    customer-create
  • List Accounts

    read
    account-list
  • List Accounting Years

    read
    accounting-year-list
  • Get Customer

    read
    customer-get
  • List Customer Groups

    read
    customer-group-list

+24 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for e-conomic, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to e-conomic. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "customer-create",
  payload: {
    name: "<value>",
    currency: "<value>",
    customerGroupNumber: "<value>",
    paymentTermsNumber: "<value>",
    vatZoneNumber: "<value>",
    // customerNumber: "<value>",
    // address: "<value>",
    // zip: "<value>",
    // city: "<value>",
    // country: "<value>",
    // email: "<value>",
    // telephoneAndFaxNumber: "<value>",
    // website: "<value>",
    // corporateIdentificationNumber: "<value>",
    // vatNumber: "<value>",
    // ean: "<value>",
    // publicEntryNumber: "<value>",
    // creditLimit: "<value>",
    // salesPersonNumber: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action customer-create --payload '{"name":"<value>","currency":"<value>","customerGroupNumber":"<value>","paymentTermsNumber":"<value>","vatZoneNumber":"<value>"}'

Give an AI agent e-conomic — without giving it e-conomic's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.economic#customer-create",
    "input": {
      "name": "<name>",
      "currency": "<currency>",
      "customerGroupNumber": "<customerGroupNumber>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's e-conomic connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

e-conomic's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. e-conomic itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

e-conomic declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

e-conomic REST API status

Atlassian Statuspage component 'REST API' at status.e-conomic.com. Unauthenticated and unsigned; the page's whole-product indicator is deliberately ignored.

dependency

API reachability

Unauthenticated GET of /self. e-conomic's documented 401 JSON error is the expected healthy answer; token validity is the `auth:api-key` check's job.

quota

Quota headroom