Workspace Settings

Workspace Settings provide administrative controls for your workspace. This page is accessible only to users with Admin or Owner roles.

Navigate to Workspace Settings in the sidebar. The page has up to seven tabs: General, People, Usage, Fields, Lifecycles, Workflows and Integrations. Some depend on what your workspace has switched on or what your roles allow, so you may see fewer.

General tab

Shows the workspace name. It cannot be changed here.

People tab

The People tab has three parts: Users, Groups and Roles (see Roles and Permissions). You see the parts your roles allow.

Viewing users

The user list shows each person's Name, Email, Status (Active, or Invited until they join), Access (where they hold which roles, for example SIA Alfa · Approver, SIA Beta · Viewer +1) and Last changed.

Use the search field to filter users by email or name, and the Status filter to see only Active or only Invited people.

Inviting a person

  1. Click Invite at the right end of the search row.
  2. Enter their Email Address.
  3. Under Access, give roles where they apply:
    • Whole workspace gives a role in every entity and in workspace settings.
    • Add entity adds one entity. It starts with Member. Use Add role to add more, and × to take one off.
    • Only the roles you may give are offered. Owner is offered only to an Owner, and only for the whole workspace.
  4. Under Groups, click Add to Group and pick their groups. You can pick several at once.
  5. Click Invite.

An invitation needs at least one role, for the whole workspace or for an entity. Without one, Finpilo says Add a role and sends nothing. An entity left with no role also stops the invitation and names the entity. The invited person receives an email with instructions to set up their account.

A person's page

Click a person in the list to open their page.

  • Access shows the same table. Change their roles and add or remove entities. Under Groups, the search finds a group, Add to Group adds them to more, and ticking groups then Remove from Group takes them out. Click Save.
  • What they can do shows, for one entity at a time, every permission their roles give there, their own and their groups'. The From column says which role gives it, and through which group.

Your own page and an Owner's page (unless you are an Owner) can only be looked at. When Finpilo refuses a change, for example a role you do not hold yourself or leaving the workspace with no administrator, it says why and saves nothing.

Removing a person

On their page, open ⋮ and click Remove User. They lose access to all entities and documents. This cannot be undone. While they have not joined, ⋮ also has Resend Invitation.

You cannot remove yourself. Only an Owner can change or remove another Owner. If the person still has approvals to answer, Finpilo lists those documents first. Cancel to deal with them, or click Remove Anyway. The approvals then show the person as removed, and you can move those documents on.

Usage tab

The Usage tab shows how many credits your workspace uses and what it costs.

Current billing period

The card at the top always shows this month. Months and days are counted in Riga time, so a document processed just after midnight on the 1st belongs to the new month:

  • Credits used out of the credits your plan includes, with a bar. The words under it say how many are left, or how many are over the included amount.
  • When you use more than is included, the bar is full and the part over it is striped. On a paid plan, documents keep being processed and the extra credits are billed at your plan's rate. A free trial stops taking new documents when its credits run out (see Free trial).
  • Plan, Base fee, Overage (the cost of the credits over the included amount, with the rate per 100 credits) and Current total.

Before the month's first document is processed, the card shows your plan with nothing used yet.

Usage analysis

Pick Current month, Previous month or Custom range. The period applies to the chart and the table below it. The billing card stays on this month.

  • Usage over time shows the credits used each day. Point at a bar to see that day's credits and transactions.
  • Usage by entity lists each entity's credits used, transactions and share of the total. Search by entity name, and click a column header to sort. The expand button shows the table at full height.

Fields tab

The Fields tab lists your workspace's fields and tables. A table, such as Line items, holds the rows of a document, and each of its columns is a field. A column's field shows its table after its name, for example Quantity · Line items. Use Status to see retired fields and tables too.

Click a field to open its settings (see Field Settings). Click a table to open its page. General shows its name and key, and its Columns in order with each one's type. Drag a column by its handle to move it, or use the arrow keys on the handle. × takes a column out. Add Column lists the fields the table does not hold yet. Your changes wait in the bar at the bottom until you click Save. A column that documents already hold values in cannot be taken out, and Save tells you how many documents hold them. Used In lists what reads the table, and History lists its changes. The ⋮ at the top holds Retire Table, which is refused while something still reads the table. A retired table or field opens read-only, with Restore Table or Restore Field at the top.

To make a table, click Add Field, choose Table as the type, give it a name, add its columns and click Create. If the table cannot be made, nothing is made and the reason is shown.

You need the right to edit fields to change a field or a table, and the right to add fields to make one.

Lifecycles tab

The Lifecycles tab is where you manage Document Lifecycles — the statuses your documents move through and the steps between them. Documents keep the lifecycle they started on, so changes here apply to newly uploaded documents (see Document View).

The list shows every lifecycle of your workspace with its Type and Status. Default is a lifecycle Finpilo provides. Customized Default is a Finpilo lifecycle your workspace has changed. Custom is one your workspace made. One lifecycle is Active for the workspace: new documents start on it. A lifecycle that entities chose as their own reads Active · 2 entities (with their number), and its page names them. Until someone presses Make Active, new documents follow Finpilo's Standard lifecycle, or your workspace's copy of it. Creating or copying another lifecycle does not change that. The ⋮ at the end of a row holds Duplicate, which makes an inactive copy named "Copy of …" and opens it. To make a new lifecycle, click Add Lifecycle, give it a name and an optional description, and click Create. It starts with one status, Uploaded.

A lifecycle's page

Click a lifecycle to open its page. It has three tabs.

  • Statuses lists each status with the moves that start from it: the move's name (or Automatic), where it goes, and when it happens. Click a status or a move to open it in the side panel on the right. The list stays in view, so you can click another row to switch, or step through them with the arrows at the top of the panel. Add Status and Add Move open an empty panel; click Create to add it. Use Search moves and Tags to find moves, and Show this branch (the button at the end of a status or a move) to keep in view only what leads into it and on from it. Focused on … beside Tags shows what you focused on; its ✕ ends it.
  • General holds the name and description. They are saved with Save at once and need no publishing.
  • History lists the published versions, newest first: what each one changed, who published it and when.

A status has a name, a colour and an icon, its Lock and its Who Sees It rules. A status keeps the key it got from its first name, so renaming it later only changes the name people see. The first status, Uploaded, cannot be deleted. Deleting a status also removes its moves and its rules.

A move has where it starts (From), where it goes (Goes To), whether a person clicks it or it happens on its own, Who May Make This Move, its conditions, its actions, the fields it asks for, the fields it needs filled in, its tags and a confirmation message.

Saving and publishing

Changing a lifecycle needs permission to edit lifecycles.

Save in the side panel saves your change as a draft. A draft changes nothing for documents. While a lifecycle has a draft, a banner says Unpublished changes, with who saved it and when. Click Publish in the banner to check the whole lifecycle and make the draft its new version. If it is the active lifecycle, documents uploaded from then on follow it. If Finpilo cannot publish it, the banner says Could not publish and lists every problem, so you can fix them and publish again.

To drop a draft, choose Discard Draft in the ⋮ at the top right of the page. Removing a status, a move or an action asks nothing, because it only changes the draft: Discard Draft brings it back.

If someone else saved the same lifecycle after you opened it, your save stops and the banner says Changed by someone else, with their name and the time. The open side panel says it too, at its top. Your change stays in the panel until you click Reload, which shows their version.

In History, open an older version and click Restore Version to make it the draft. Publish it to put it back in use. On a Customized Default, Restore Default in the ⋮ makes the Finpilo lifecycle it came from the draft. Both ask first.

The first change you save on a Finpilo Default makes your workspace's own copy, a Customized Default with the same name, which takes its place in the list and stays active if it was.

Making a lifecycle active, and deleting one

Make Active in a lifecycle's ⋮ makes it the one new documents start on, at once, in every entity that has no lifecycle of its own. An entity chooses its own in Lifecycle on its General tab (see Entity Management). Delete Lifecycle, the last item of the ⋮, deletes an inactive Custom or Customized Default lifecycle after a question. Documents already on it keep their statuses. A lifecycle that is active, for the workspace or for an entity, cannot be deleted, and a Finpilo Default has no Delete.

A deleted lifecycle is kept. Choose Deleted in the list's Status filter to find it. It opens read-only, its history too, and Restore Lifecycle at the top brings it back inactive, with its versions, draft and history. Your copy of a Finpilo lifecycle waits while that Finpilo lifecycle is the active one, because it would take its place. Activate another lifecycle first.

A person who may only view lifecycles sees all of this read-only: no Add Lifecycle, no ⋮, no Publish and no Add Status.

A step's conditions can read the document's fields (partner, totals, line items) and its metadata — including how long the document has been at its current status. Pick Days in current status as a condition source to move a document on after a set time, for example "after 3 days here, move to Escalated". Timed moves happen on their own. Nobody has to open the document.

The Source list is the same on a status flow and in a workflow, under four headings:

  • Metadata — what Finpilo knows about the document: its type, its status, how long it has been there, how it arrived.
  • Header — what the document says on its face: partner, dates, totals, and your dimensions.
  • Grid — the document's lines.
  • Outcomes — what an approval, an AI read or a workflow reported on the document.

Type in the box to find a source instead of scrolling. A dimension appears once, under its own name; type that name to also get its reference id, its code and any columns you declared on it.

The operators you are offered depend on the source. Text can be tested with starts with, ends with or contains, and text is compared without regard to capitals, so "invoice" matches "Invoice". is one of and is not one of work on text, numbers and lists; where the source has no fixed list, type or paste the values, separated by commas or new lines, and each becomes a chip. A number or a date can be between two values, both included. A number can also be tested with differs by more than: type how much it may differ, then the value or another field it is compared with, for example "VAT · differs by more than · 0.02 · from · Field · Expected VAT". It matches when the gap is larger than that amount, so a small rounding difference does not count. A date can also be compared with Days ago, for example "Issue date · is before · Days ago · 30" for documents issued more than 30 days ago; that is worked out when the condition runs. A yes/no source offers only is true and is false. The same operators work inside a grid's lines.

Text, numbers and lists can also be checked against one of your registers with is in register or is not in register. Pick the register, then the column to look in: its reference id, its code, its name, or one of its own columns. For example "Supplier · is in register · Vendors · by · Reg no" matches when the supplier's value is in that column of the Vendors register. Finpilo looks in the register of the document's own entity at the moment the condition is checked, so a value you add to the register counts straight away. When the value is empty, or the document's entity has no such register, the condition cannot be decided. A field's calculation or setting that uses it, such as a field that is required only when the supplier is in a register, is worked out when you open or save the document and when a new document is read, not while you type. When it cannot be decided, Finpilo says why, and a field whose being required cannot be decided is asked for. A field's matching rules and its maximum decimals cannot use a register check, and Finpilo does not save one there.

Pick a source under Grid and the condition becomes one sentence about the document's lines: which grid, then what you are asking of it (Any Line, All Lines, Sum of, Average of, Smallest, Largest or Number of), then the column, then the operator and the value — for example "Line items · Sum of · Total (incl. tax) · is at least · 1000". The column list holds only that grid's own columns, and only its number columns when you are summing, averaging or taking the smallest or largest. Beneath the sentence you can add only lines where to narrow it to the lines that matter, for example only the lines of one cost center.

To compare with another field rather than a typed value, choose Field beside the operator and type @. The list is the one the source picker shows, under the same headings; on a workflow step it also holds the data the trigger received and the results of earlier steps. Only fields of the same kind are offered, so an amount is compared with amounts. A grid's totals are in the list too, under Grid, so "Total (incl. tax) · is not · Field · Sum of Total (incl. tax) (Line items)" is one condition that catches a document whose lines do not add up to its total. A grid sentence can end the same way: "Line items · Sum of · Total (incl. tax) · is not · Field · Total (incl. tax)".

To check a condition before you save it, choose Test on a Document, pick an entity and one of its documents. Each condition then shows Matches, Does not match or Cannot be decided, with the reason, worked out the way Finpilo works it out for that document. A condition reading a field that no longer exists cannot be decided. A condition reading what only a running workflow has, such as the result of an earlier step, cannot be decided in a test either. Change a condition and the answers clear; choose Test Again to see them for the new version.

A condition that reads a field, a step result or a workflow your workspace does not have is refused. This holds for a lifecycle (publishing, copying or making it active) and for a workflow (saving or publishing it). The message names what the condition reads and where it sits, so you can pick a source that exists. The same goes for a step's setting that copies a field with @ when that field is not in your workspace.

Workflows tab

The Workflows tab has two sub-tabs. Workflows lists the workflows in your workspace — automations that run on your documents — with each one's Status, Version and when it was last Updated. A status is one of Live, Unpublished changes (it runs, and a newer draft is waiting), Not published (it runs nothing yet) or Paused. A new workspace has none. Click a workflow to open it. The ⋮ on a row holds Duplicate; everything else is inside the workflow. See Integrations for how a send workflow works and how to edit what it sends.

Runs lists everything that has run in the workspace: workflow runs and the actions a status flow fired (an approval, an AI read, a send). Each row shows its name, the document it ran over, its result, when it started, how long it took and who started it. A run nobody started by hand says System. Filter by Name, Started by or Result. Click a run to see it in a panel beside the list: each step, who answered and when, what is still to come, and for a failed run the step that failed and why. A run the system could not finish because it restarted (for example during an update) is marked failed and says it was interrupted. It is never started again by itself, and Retry Run does not send it again: check the other system, then start it again. Steps it never reached say Not run. A read from another system that stopped early (at its cap, on a later page that failed, or at its time limit) keeps what it read, and its step says Cut short: and why. From the panel you can Cancel Run a running one (you are asked first, and its open approvals close) or Retry Run a failed one. Runs on a document also appear on that document's Activity tab.

Someone who may see workflows but not change them sees both lists and every workflow, with nothing they can change.

Creating a workflow

Admin or Owner role required.

  1. On the Workflows sub-tab, click New Workflow.
  2. Give it a name.
  3. Choose how it starts. A workflow can be started by hand, by a document meeting a condition, on a schedule, or by another system calling in (see "Starting a workflow from an outside system" below). A workflow can also be started by a step in a status flow. One that starts on a schedule or from another system runs over no document, so it asks which entities it Runs for.
  4. Click Create. The workflow opens on its own page.
  5. Add the steps it should take: click + after a step or on a line, and choose from Add Action, grouped by what you are doing — Ask someone, Talk to another system, Change this document, Control the flow, and Anything else. Each step does one thing — send a request to another system, write a value onto the document, ask someone to approve it, read or write records, read the document with AI, wait, notify someone, or start another workflow. What is available depends on what your workspace has switched on. At the end of a chain, Continue with an existing action joins a later step or goes back to an earlier one.
  6. Click a line between two steps to give it a condition, so the next step runs only after a given result or only when the document matches.
  7. Save, then Publish when it is ready.

A new workflow shows as Not published until you publish it the first time, and it runs nothing until then.

A workflow's page

The page shows the workflow's name (click the pencil to rename it) and whether it runs: Version N is running, is paused, or Not published. It has two tabs, Steps and History.

On Steps, the diagram is on the left and one card on the right. Click a step to open its card, a line to set when the line is followed (Which result, And only when), Starts to change how it starts, or a group's name to open the group (Name, Finished when: all of them, any one, or a number of them, and Only when). Drag the divider between the diagram and the card to give either more room; your choice is remembered. On a narrower screen a Diagram | Card switch shows one at a time, and a phone shows Needs a larger screen.

A group runs several steps side by side and is finished when the rule you set says so. Add one from Control the flow; it asks for its first step, and its own + adds another beside it.

The ⋮ at the top holds Discard Draft (when a draft sits over a running version), Pause Workflow or Resume Workflow, and Delete Workflow last. Deleting asks first; approvals already running on it finish. A workflow that a lifecycle still starts is not deleted, and Finpilo names the lifecycle. A deleted workflow is kept. Choose Deleted in the list's Status filter to find it. It opens read-only, and Restore Workflow at the top brings it back paused. Resume Workflow starts it again.

Removing a step or a line asks nothing: it changes only the draft.

Saving and publishing

Changing a workflow takes two steps, so that a workflow already in use keeps working while you rebuild it.

Any change shows the Save Bar at the bottom: Unsaved changes, Discard, Save. Save keeps your changes as a draft. Nothing about the running workflow changes — the version that was live stays live, and documents keep going through it exactly as before. While a draft is waiting, a banner says Unpublished changes, when it was saved and by whom.

Publish in that banner makes your draft the version that runs from then on. Save first: Publish waits while unsaved changes are on screen. Publishing is also when Finpilo checks the workflow over, so a half-finished draft saves without complaint. If something is wrong, the banner says Could not publish and lists each problem with the step it is on.

If someone else saved the workflow while you were editing, the banner says Changed by someone else, with who and when. Your edits stay on screen until you click Reload. Leaving the page with unsaved changes asks Discard Changes? first.

A few things that follow from this:

  • You can leave a draft sitting for as long as you like. Discard Draft throws it away and leaves the running version untouched.
  • A brand new workflow runs nothing until you publish it the first time. The list shows it as Not published.
  • A copy made with Duplicate also arrives as a draft, so duplicating a workflow that runs on a schedule never quietly starts a second one.
  • Documents already going through the workflow finish on the version they started on. Publishing never changes anything mid-flight.

History lists the published versions, newest first, with what changed in each step. Restore Version on an older one asks first and makes it your draft; Publish makes it live again.

Pausing a workflow

A workflow on a schedule runs at the times you set. If Finpilo is unavailable when one is due, the run is not made up afterwards: when it comes back, the workflow runs once and carries on. A nightly sync that missed three nights syncs once, not three times, so anything that must not miss a day should ask for everything changed since it last succeeded rather than just yesterday.

Some workflows start on their own — on a schedule, when a document matches a condition, or when another system calls in. If one of those is misbehaving, open it and choose Pause Workflow in its ⋮.

While a workflow is paused, nothing new starts: its schedule stops, matching documents no longer set it off, and a system calling its address is told it is unavailable so it can try again later. Runs that were already going finish normally. Resume Workflow puts it back.

Pausing keeps the workflow and its history — it is the alternative to deleting one to make it stop.

How it starts

The Starts card at the top says what sets the workflow off.

  • When a Document Matches a Condition runs once for each document whose data matches. It needs at least one condition: without one it would start on every document, so Save takes you back to the card instead.
  • On a Schedule asks how often: Every … minutes, Every … hours, Every day or Every week, then On these days and At these times. The times you set are in UTC, which is the clock Finpilo schedules on. Next Runs lists the next five runs in your own clock.
  • A workflow that starts on a schedule or from another system runs over no document, and the card says so: its steps cannot use document fields.

What steps can do

  • Approval asks people to decide. Who approves takes people, groups and roles; How many must approve says how many of them. What they see is the message and the tables on their request. In a message, type @ and choose under This decision: Total of the lines it covers (the total of the table on the request, over the rows it shows), Lines it covers, or Who decides. A table shows the rows you choose under Which rows: all of them, The rows this step runs for (worked out from the step's own condition when the request is made), or only the rows you pick. Row reference adds a first column that traces each row back to its source. Click Preview to see the request exactly as an approver will, on one of your documents.
  • Update Field writes values when the step runs. Pick the destination — Document or Dimension Value (that is how you write a partner: it is a dimension value like any other). For a document, choose The one this run is about, or The one where… to find it by a field, for example its accounting reference. A dimension value is always found by a field, and you choose which Dimension it is in. Then add the fields to write. Any document field can be written — texts, amounts and dates alike. The status is the one exception: it only changes through a lifecycle move.
  • Read Record reads one document, dimension value or your entity, found the same way, so later steps can use its fields with @. It reads the record when the step runs, so a run that waits afterwards keeps using what it read then.
  • Send HTTP Request can also carry the document's file — as a normal file attachment, or embedded in the JSON body as Base64 text, whichever the receiving system expects. Files up to 25 MB are sent. Under more settings: Safe to send twice sends a key the receiver uses to recognise a repeat, built from a value you choose; Requests per Minute slows the step down for a receiver that limits how fast it is called; Send in Batches splits a long list into several requests of the size you set.
  • Write Records writes many dimension values at once from a list, updating the existing one when the field you choose is the same and adding the rest.
  • Start Workflow can start a different workflow for each group, with a rule per group and one for any other group.
  • Delay waits a length of time, or until a date: a date you pick, a date from the document such as its due date, or a number of days before or after one.
  • The data a step sends is edited in a code editor, with colors, matching brackets and a Format button that tidies the text. Type @ anywhere — in it, in a URL, in a field value or in a condition's value — to insert a document field, a field from data another system sent in, or an earlier step's result.
  • Test This Step on a Send HTTP Request step runs it for real and shows the reply — the response code and the body — right in the editor. Choose the entity; a document is needed only when the step uses document fields. For a workflow started by another system, the example of what they send is what the test starts with.

Sending a value the document does not hold

Most of the time a step sends what the document already has, picked with @. Sometimes the receiving system wants something else: your total for one cost centre only, the amount in cents, its own code instead of yours, or a date written its way.

A step can work these out itself, so nothing has to sit between Finpilo and the other system. It can add, subtract and multiply amounts, round them, join text together, pad a reference to a fixed width, write a date in the format the receiver expects, choose between two values, translate your code to theirs from a list you give, total up only the lines matching a condition, and fall back to a second value when the first is empty.

You do not have to write these by hand. Tell your AI assistant what the receiving system wants. It builds the mapping, shows you exactly what would be sent, and applies it only after you approve — see AI Assistants. Or write to help@finpilo.com and we will set it up with you.

Two things to know either way:

  • Rounding is always spelled out. Anything that divides or rounds has to say how — nearest, up, or down. Finpilo will not guess, because a rounding rule chosen for you is a wrong amount posted to your accounts.
  • If a value cannot be worked out, the step stops. A date it cannot read, a translation with no match, or a field name that does not exist stops the step and says so, rather than quietly sending a zero or an empty value. The one exception is a total over lines that match a condition: if no line matches, the honest answer is zero and zero is what gets sent — so check the number on a real document before publishing.
  • Some systems refuse an empty value. Turn on Leave Out Empty Values on the send step and anything that comes out empty is not sent at all, rather than sent blank. Zero and "no" still go. With it on, a choice can also send nothing: "send the currency only when it is EUR" leaves the currency out of every other invoice. A value that cannot be worked out still stops the step.

The written form is documented for whoever configures it in External API.

Starting a workflow from an outside system

Choose When an HTTP Request Is Received as the workflow's start. After saving, the card shows the workflow's Address and Hook key, each with a copy button — give both to the external system, and it calls the address with the key in the X-Hook-Key header. To use what they send in your steps, ask them to make one test call and click Check for a Call — what arrived is kept as the Request body example, and its fields appear in the @ picker.

The sending system can add an X-Idempotency-Key header. If it does, sending the same call twice returns the same result instead of doing the work again — so a system that retries because it did not see your reply cannot double up.

One call can carry a whole list — for example your accounting system's full partner register, up to 10 MB, which fits about ten thousand records. A Write Records step brings your partner list to that state: it creates what is missing, updates what changed, and leaves the rest alone — so sending the same list again is always safe. A row it cannot write (one the database refuses, or one missing a value it needs) is listed with the reason, and every other row is written. The run then ends failed and names those rows, and the next run carries on from where this one read to. For bigger registers, send the list in several pages.

Integrations tab

The Integrations tab is where you connect Finpilo to external products such as your accounting software. It has four sub-tabs: Connect (the API & AI access switch, and the addresses an AI assistant or another system connects to), Send To (the addresses documents go to), API Keys (the keys external systems call Finpilo with), and Logs (every call in and out).

See Integrations for full details on destinations, API keys, reading the logs, and how sending uses them.

API & AI access

The Connect sub-tab of Integrations controls whether AI assistants (such as Claude) and system integrations can work in your workspace. What a person may do through them is what their role allows in the app.

Admin or Owner role required.

Turning API & AI access on

The sub-tab starts with one switch, Connected AI agents and API integrations. It is off by default. Turn it on to let connected AI assistants and API integrations reach your workspace, and off to shut them out again at any time. Nothing outside Finpilo can reach your workspace while it is off. If your role lets you see the switch but not change it, it is shown greyed out.

Below it, Connect lists two addresses, each with a Copy button: AI assistant (MCP), the address you paste into an assistant, and API, the address a system integration calls.

See AI Assistants for connecting an assistant, and External API for system integrations.

What each person may do

There is no separate list of API permissions. An assistant or integration acting for a person can do exactly what that person's role allows in the app, and nothing more. A person connecting a tool can also agree to fewer permissions for it, and the tool then stays within those. To change what someone may do, change their role on the People tab.