Finance workflow automation: 14 triggers, any API operation as an action
Guliel is accounting and finance-operations software that runs invoicing, expenses, purchasing, payroll, reporting and a double-entry general ledger on one engine. Automations run the routine steps on that engine. An automation is a trigger (one of 14 events, such as an invoice paid, an expense approved, stock below its threshold, or a daily, weekly or monthly schedule), optional filters and conditions, and one or more actions. An action is any operation in Guliel's API, or an outbound webhook. The engine, the visual editor, run history and replay are live. The free plan includes 5 active automations.
Why one engine matters for automation
In a stack of separate tools, every automated step is a connector between two apps, and each connector is a place where a record gets missed or copied twice. In Guliel, invoices, receipts, expenses, purchase orders and payslips are one document object, and the general ledger is computed from the same document lines. A trigger and its action work on the same records, with no connector between them.
Actions go through the same API a person uses. Numbering at issue, totals from line items, country document rules, balanced double entries and the books lock date apply to an automation as they apply to a person.
You can adopt it in steps. Connect first: run Guliel beside your current tool and export the ledger as CSV. Then let automations take over routine steps, and migrate when you're ready.
How it works
You build automations on a canvas in the app, as blocks joined by arrows.
- Triggers. The 14 events below. Later blocks read the trigger's payload with bindings such as
{{trigger.total}}. - Filters. Query invoices, expenses and purchase orders by status, dates, amounts, vendor or category, then count or sum by group. The editor previews the match count.
- Conditions. Any arrow can carry a condition (equals, greater than, in a list, contains, exists), so an automation can branch.
- For each. An arrow can run the next action once per row a filter returned.
- Actions. Any operation in Guliel's API: create a purchase order, record a payment, change an expense's status, adjust stock, create a document, read a report. It is the same catalog an AI assistant sees through the MCP server. Plus
webhook.postto any public URL, such as Slack, Teams, Zapier, Make or your own endpoint.
The 14 triggers
| Area | Trigger | Fires when |
|---|---|---|
| Invoices | invoice.created, invoice.sent, invoice.paid, invoice.cancelled |
A document is created, sent to at least one recipient, marked paid or cancelled |
| Invoices | invoice.overdue |
Once per invoice, at the first daily check (08:00 UTC) after its due date has passed |
| Payments | payment.received |
A document you issued is marked paid (carries the payment method and receipt number) |
| Expenses | expense.created, expense.approved |
An expense is captured (by hand, by scan or from an inbox), or approved |
| Purchasing | supplier.order.created, supplier.order.invoiced |
A purchase order is created, or a supplier invoice is linked to it |
| Stock | logistics.item.stock_below_threshold |
An item's stock drops below its low-stock threshold |
| Schedule | schedule.daily, schedule.weekly, schedule.monthly |
08:00 UTC every day, every Monday, and on the 1st of each month |
Three examples
1. Reorder when stock runs low
Trigger: logistics.item.stock_below_threshold
Condition: the item's SKU is in the list of SKUs you buy from one supplier
Action: create a purchase order to that supplier for the item, at a quantity you set
The order is numbered and stored like one made by hand. A supplier with its own Guliel organisation sees it in its incoming orders and can invoice against it, which fires supplier.order.invoiced. You book the received stock in logistics. Reordering by an AI agent is planned.
2. Weekly review reminder
Trigger: schedule.weekly (Mondays, 08:00 UTC)
Filter: incoming documents with status Pending review, grouped by vendor, with a count and the sum of totals
Action: webhook.post to the manager's Slack or Teams channel
Captured expenses wait for a person's approval before they reach the ledger. This automation approves nothing. It reminds the person who does.
3. Overdue invoice follow-up
Trigger: invoice.overdue (payload: total, currency, customer, due date, days overdue)
Action: webhook.post to the channel or collections tool your team works from
It fires once per invoice. Repeated reminders (after 7 days, then 21) are planned.
The scheduled inbox scan in Expenses is also an automation, and counts toward your active ones.
Runs, history and replay
Every run keeps the trigger payload and each step's input, output or error, attempt count and latency.
- A network error or rate limit gets up to 3 attempts. A business error gets one, because the first attempt may already have changed something.
- Replay re-runs a failed run from the failed step with the same input. Earlier steps are neither repeated nor rolled back.
- One event starts a given automation at most once. A run is capped at 500 steps.
- A test run uses a sample payload, but its actions execute for real — it is not a dry run — before you enable anything.
Who an automation acts as
An automation runs as its owner, with the owner's current role in the organisation. If the owner loses access, the automation pauses itself. Contributors create, edit and enable automations; managers delete them; viewers can read them and their runs. For your accountant, that means automations follow the same roles and the same books lock date as everyone else. A sign-off queue where an accountant approves AI work is planned.
Pricing
The Free plan includes 5 active automations per organisation. Standard ($20 per organisation per month) and Premium ($99) list unlimited automations. These are published prices: billing is not live and paid plans are not on sale yet, so today every organisation has the 5-automation limit. Runs are not metered: an automation that fires 10,000 times a month counts as one. Full table on /pricing.
What automations don't do today
- Send email. The
email.sendblock records the message in the run history but does not deliver it; delivery is planned. Notify people through a webhook. - Run on local time. Schedules fire at 08:00 UTC; schedules in your organisation's time zone are planned.
- Accept inbound webhooks. An outside system starts an automation by calling the REST API: an invoice created through the API fires
invoice.createdlike any other. - Install as a Zapier or Make app, or keep a version history (see the FAQ).
FAQ
What counts as an active automation on the free plan?
An enabled automation waiting for its trigger. Drafts and disabled automations don't count, so you can keep any number of drafts and switch 5 on. Each organisation has its own limit.
Can one trigger run several actions?
Yes. One trigger can lead to several actions in order, branch on conditions, and run an action once per row a filter returns. Each run shows every step's status.
What happens if an action fails?
The run stops at the failed step, and the steps before it stay done; nothing is rolled back. A network error gets up to 3 attempts first. After you fix the cause, Replay re-runs the failed step and the steps after it with the same input.
How is this different from Zapier or Make?
Zapier and Make connect separate apps. Guliel's automations run inside Guliel, where invoices, expenses, purchase orders, stock and the ledger share one engine, so no connector sits between a trigger and its action. There is no Zapier or Make app today: point a webhook at their catch hook to reach them, and have them call Guliel's REST API with an API key to start from their side.
Can an AI assistant build automations?
Yes. Any MCP client, such as Claude, ChatGPT or Copilot, connects through OAuth 2.1 and can read the trigger and action catalog, create and edit automations, and read run history, within the user's role and scopes.
Can I see who changed an automation, or roll back an edit?
Guliel records who last edited an automation and when. There is no version history yet. To change a working automation safely, build the new version as a separate draft, test it, enable it, then disable the old one.
Start free at /pricing.
Last updated: