Dimensions

Dimensions are accounting classification categories that your entity needs for reporting and ERP integration. They represent the analytical tags that are not printed on the document but are required for proper accounting — such as cost centers, VAT codes, posting accounts, and project codes.

How dimensions work

Each dimension contains a list of values. For example:

  • Dimension: "Cost Center"
  • Values: "Administration," "Sales & Marketing," "Infrastructure Services," "Office," "Tools," "Travel," etc.

When the AI processes a document, it reads each line item and assigns the most appropriate value from each configured dimension. It uses the line item description, partner context, and document content to make these assignments.

Each AI assignment comes with a plain-language explanation of the reasoning, plus what your own validated documents say about that value: whether your records agree, how many times you have recorded it before, and what your records hold instead when they disagree. Hover over the assigned value in the Document View to see it.

When the AI leaves a dimension empty, it explains that too. An icon appears on the empty field in the Document View — hover over it to see why no value was assigned, for example because none of the dimension's values apply to this document, or because the extracted code is not one of the dimension's values.

Partners

Every entity is given one dimension named Partners. It holds the companies you do business with — suppliers, vendors, customers — and it works exactly like every other dimension. Its values are managed the same way, imported the same way, and appear on documents the same way.

Alongside a value's name and reference id, the Partners dimension carries four columns:

  • Registration number
  • VAT number
  • Legal address
  • Bank accounts

You can add your own columns to it, or remove ones you do not use, exactly as you can with any dimension. Columns are set up on the dimension's Fields tab (see A dimension's own fields below), and the app shows them on each value.

What a column can be used for

A column is not just something to look at. Once a dimension declares one, you can:

  • Search by it. Typing a registration number into the document search finds the documents coded to that partner, because a dimension's columns are searched along with its names. The search on the dimension's own Values tab finds it the same way.
  • Automate on it. A lifecycle or workflow condition can read a column of the value a document is coded to, not only its name — "hold this document if the partner has no VAT number", for example. The value is read as it is now, so correcting a partner immediately corrects what the automation decides.

A column you never want searched can be turned off individually through the AI assistant (MCP), which is worth doing for an internal reference nobody would type.

How a document is linked to a partner

When Finpilo processes a document, it reads the counterparty's details and looks for the matching value in your Partners dimension. Out of the box it matches on registration number or VAT number — either one is enough.

Name and address are deliberately not used. They match poorly in practice: spelling, punctuation, word order and company-type abbreviations differ between what is printed on a document and what is in your list, so a name comparison finds the wrong company as often as the right one.

Matching on registration number or VAT number is what every entity starts with. The Partners field's settings show the rule; to change it, ask an AI assistant to set it up (see AI Assistants).

Name, address and bank accounts are compared but never matched on. On a document you see whether each of them agrees with the partner record you are linked to — a tick, a cross, or nothing to compare against — and bank accounts are checked one account at a time. They are shown so you can spot a mismatch before you pay; they never decide which partner is chosen.

Matching on each line item

A matching rule can read a line item instead of the document. It then runs on every line on its own and acts on that line only, using what is on that line and on the document, never another line. For example, a rule on the Product dimension that compares a product's supplier code with the code read on the line gives every line its own product. The same kind of rule shows the tick or cross in that line's cell, and when you add a new value from a line's cell, the form is filled from that line. If a line finds no value or more than one, its value stays as it was and the document says why. This is not set up on a screen: ask an AI assistant to set it up (see AI Assistants).

When no partner is found

If nothing matches, the document's partner is left empty. That is the ordinary case for a company you have not traded with before — add them to the Partners dimension and the next document finds them.

If two values match the same document, Finpilo does not guess. It leaves the partner empty and tells you the match was ambiguous, so you can correct the duplicate.

Re-processing a document

Re-processing reads the document again from scratch. If the partner it finds has changed, the link changes; if it now finds nothing, the link is cleared. The partner behaves like every other field the AI fills.

Viewing dimensions

  1. Navigate to Entity Management and click on an entity.
  2. Select the Dimensions tab.

The dimensions list shows all dimensions for this entity with the following columns:

  • Dimension Name — the name of the dimension category.
  • Values — how many values it holds (deleted values are not counted).
  • Last Changed — when the dimension was last changed. The list shows the latest changes first.
  • Changed By — who made that change.
  • Status — Active or Deleted.

The list shows the dimensions in use. Choose Deleted in Status to see the deleted ones.

Creating a new dimension

Requires permission to add dimensions.

  1. Click the Add Dimension button in the top-right corner.
  2. Fill in the dimension details:
    • Dimension Name (required) — a descriptive name (e.g., "Cost Center," "Department," "VAT Rate").
    • Description — an optional description explaining how this dimension should be used. This description is provided to the AI to help it make better assignments.
    • Reference ID — an internal reference. If left empty, it is auto-generated (format: DL-00001).
  3. Click Create in the bar at the bottom of the page.

After creating the dimension, you will be taken to the dimension detail page where you can add values.

Writing effective descriptions

The dimension description is provided to the AI when it assigns values. A clear, specific description improves assignment accuracy. For example:

  • Good: "Classifies each expense line item into the functional area of the business that incurred the cost. Used for internal cost tracking and P&L analysis across operations, delivery, sales, and infrastructure."
  • Poor: "Cost center" (too vague — the AI already knows the name).

A dimension's own fields

A dimension can carry fields of its own beside a value's name, description, code and reference ID: an owner for a cost centre, a unit and a price for a product. Open the dimension and select the Fields tab.

Adding a field

Requires permission to edit dimensions.

  1. Click Add Field. A panel opens on the right.
  2. Give it a Name, choose its Type (Text, Number, Date or Yes or no) and whether it holds Several values, such as a partner's bank accounts. The type and several values cannot change after Create.
  3. Set how people meet it:
    • Required — a value cannot be saved in Finpilo without it: not in the value panel, not when adding a value from a document, and not in an import row. Values written by your accounting system's sync or through the API are still accepted.
    • Show in list and Position in list — whether it is a column of the Values list, and where. Positions count from the left among all columns, so 2 puts it straight after Name.
    • Show in card and Position in card — the same for the value panel and the add-from-document dialog, counted from the top. A required field always shows in the card.
  4. Click Create. The field appears on every value straight away.

Changing or retiring a field

Click a field to open it. You can rename it and change its settings, then click Save; renaming keeps every value's data.

Click Retire to take a field out of use. It leaves the Values list, the value panel, the rule editors, the required check and the document search at once, and every value keeps its data. A field that a workflow, a lifecycle, another field's rule or a view still reads cannot be retired. The message tells you where it is used, so you can change that first. Choose Status: Retired above the list to find it again, open it and click Restore to bring it back exactly as it was.

Managing dimension values

Click on a dimension in the list to open the dimension detail page. Select the Values tab to see all values.

Adding a value

Requires permission to add dimensions.

  1. Click the Add Value button in the top-right corner. A panel opens on the right, beside the list.
  2. Fill in:
    • Name (required) — the display name (e.g., "Marketing").
    • Description — an optional description that helps the AI understand when to assign this value. Be specific about what types of expenses belong here.
    • Code — your own short code for this value, such as the account or cost centre code it has in your accounting system. It is optional, and two values may share one. This is what people see when they choose the value on a document, which reads "Marketing (5310)".
    • Reference ID — an internal reference. If left empty, it is auto-generated (format: DIM-00001).
  3. Click Create.

Code and Reference ID are not the same thing. The Reference ID identifies the value for imports and for your accounting system's sync, so it is unique within the dimension and cannot be left blank once the value exists. The Code is yours to choose, change and repeat, and it is the one shown to people.

Importing values from a file

If you have many values to add, you can import them from a file instead of adding them one at a time.

  1. On the dimension detail page, open the Values tab and click the Import button.
  2. In the import dialog, click Download Template to get a CSV file with the correct columns.
  3. Fill the template with your values. Each row is one value, with these columns:
    • referenceId (required) — the internal reference for the value. Unlike adding a value manually, the Reference ID must be filled in when importing.
    • name (required) — the display name.
    • description — an optional description that helps the AI.
    • code — your own short code for the value. Leave the column out, or a cell empty, and the value keeps whatever code it already has.
  4. Save the file as CSV and select it in the import dialog. You can import up to 10,000 values per file.
  5. Click Import. When it finishes, the dialog shows how many values were created, how many were updated, and how many rows failed.

Updating with import: if a row's referenceId already exists in this dimension, the import updates that value instead of creating a duplicate. This means you can re-import a corrected file to update values in bulk.

If the dimension has a required field, it must be filled in every row.

If some rows fail (for example, a missing name or a required field left empty), the valid rows are still imported — only the failed rows are skipped, and they are listed so you can fix and re-import them.

Editing a value

Click on any value in the list to open it in the panel on the right; the list stays in view. Use the arrows at the top of the panel to go to the previous or next value. Modify the name, description, code or reference ID, then click Save. If you move to another value or leave the page with unsaved changes, Finpilo asks first. Changing a code updates it on the documents already coded to this value, so they never show an old code.

Deleting a value

Requires permission to delete dimensions.

Open the value you want to remove, then click Delete at the bottom-left of the panel and confirm.

A deleted value leaves the Values list and the dropdowns, stops being matched automatically, and is removed from what the AI is offered. Documents already classified with it keep showing it exactly as before. Nothing is erased: a cost centre you closed last year still makes sense on last year's invoices.

To bring a deleted value back, choose Deleted in the Values list's Status filter and open the value. It opens read-only. Click Restore. Adding it again with the same reference ID, from the register screen or from your accounting system's sync, also brings it back, with what was sent. Either way the documents that referenced it stay untouched throughout.

Writing effective value descriptions

Value descriptions tell the AI what kinds of expenses or transactions should receive this value. Specific descriptions significantly improve AI accuracy. For example, for a "Cost Center" dimension:

Value Good description Poor description
Administration Accounting, legal, management fees and related services. Admin stuff.
Infrastructure Services Hosting, compute, and API services that run company products — Azure, Hetzner, Google Cloud. IT costs.
Transportation Local travel: buses, Bolt rides, short-term car rentals. Excludes fuel (fuel → Benefits). Getting around.

Deleting a dimension

Requires permission to delete dimensions.

On the dimension's page, choose Delete Dimension, the last item of the ⋮ at the top. Type DELETE and confirm. The dimension and its values leave the lists and the dropdowns. Documents that use them keep showing them. Nothing is erased.

To bring it back, choose Deleted in the Status filter of the entity's Dimensions tab and open it. It opens read-only. Click Restore Dimension. The AI reads it again on every document type that read it before the delete. A deleted dimension keeps its name, so a new dimension cannot use it.

Member role access

Members can view the dimensions list and values but cannot add, edit, or delete dimensions or values. When a Member clicks a value, it opens in a read-only "Value Details" view.