In autumn 2024, the finance operations team at Halden B.V. closed the books with 31 cron jobs, four reconciliation spreadsheets and a shared inbox for approvals. Month-end took six working days. Today the same team of five closes in two, a 66 percent drop, and every journal entry it posts can be traced back to the Stripe event that caused it. I spoke with Ingrid Valk, Head of Finance Operations, about how they got there.
Where they started
Halden bills customers through Stripe and keeps its ledger in NetSuite. Between the two sat years of scripts. One job pulled paid invoices every hour, another matched them overnight, a third emailed a CSV of mismatches to whoever was on rota. When a job failed, it failed quietly. Ingrid's team usually found out on day three of close, when the numbers did not tie.
"Nobody owned the scripts," she told me. "The person who wrote half of them left in 2022. We were afraid to touch them."
One workspace instead of 31 jobs
The move took eleven weeks. Halden rebuilt the close as four workflows in one Tessel workspace, using the Stripe, NetSuite and Slack connectors. The old cron jobs ran in parallel for one full month so the team could compare results line by line, and were switched off in December 2024.
One invoice, end to end
Here is a real run from August. A customer pays a Stripe invoice. The workflow fetches the matching NetSuite invoice, 14 lines, and matches each line against the payment. An agent block checks the variance: anything under 2 percent is approved automatically. This one was 3.1 percent, so the run asked for an approval in Slack. The primary approver was on leave, and after 30 minutes the request moved to the backup, i.valk@halden.example. Ingrid approved it from her phone, the workflow posted the journal entry in NetSuite and notified #finance. The whole run, including the wait, took 34 minutes.
Agents for the dull checks
Halden uses agents narrowly. They do not post entries and they cannot change master data. Each one has a short tool list, a monthly spend cap and a named approver. Ingrid described the split like this:
Agents check variances, explain why two amounts differ and draft the note that goes with an approval.
People approve anything above the 2 percent threshold, any credit note and any entry that touches a closed period.
Workflows do the rest: fetching, matching, posting and telling the right channel what happened.
Approvals moved into Slack when Tessel 4.0 shipped them earlier this year. Halden's median response time is now under five minutes, close to the platform median of four.
What the auditors see
The change Ingrid did not expect was in the audit. Every run leaves a trace with the inputs, outputs and timing of each block, plus who approved what and when. Halden is on Enterprise, so those traces are kept for a year.
Month-end close went from six days to two. The trace view is the first thing our auditors ask for now.
That is how Ingrid put it when I asked what she would tell another finance team. Last spring, Halden's auditors sampled 60 journal entries. For each one, the team sent a trace link instead of assembling a folder of screenshots and exports. The sampling took an afternoon.
What they would do differently
Two things. First, they would name backup approvers from day one. In the first close on Tessel, three runs waited overnight because the only approver was asleep in another time zone. Second, they would have used replay earlier. Halden now replays every change to the matching logic against the previous seven days of real invoices before it goes live, and reads the diff before anyone presses publish.
If your close runs on Stripe and NetSuite too, the NetSuite integration page lists the objects and events Halden's workflows use.
LH
Leila Haddad
Head of Customer Success
Leila leads customer success and works with the finance and operations teams moving their first workflows onto Tessel. Before joining she ran ERP implementations for a consultancy in Lisbon, mostly NetSuite migrations for mid-sized European companies.