Webhooks: your system learns at once what happened here
Anyone running a second system does not want to ask every ten minutes whether something happened. A webhook reports by itself, at the moment it happens.
- Seven events
- Secured with a signature
- Included from Business
- Invoice created
- Quote accepted
- New expense
- Payment failed
- Invoice paid
- New customer
- Payment received
- 7Events that trigger a notification
- 1Endpoint, which you provide yourself
- SignatureOn every message, to verify the origin
- BusinessThe plan from which they are included
- At onceNo polling every few minutes
Which events trigger a webhook
Volk Accountant notifies other programs through webhooks as soon as something happens in your account. Seven events trigger one: invoice created, invoice paid, quote accepted, new expense, new client, payment received and payment failed. The notification goes to an endpoint you provide, and it carries a signature your system can use to confirm that it really came from us and was not altered on the way. Webhooks are included from the Business plan. They do not replace querying data: the webhook says what happened, and what your system does with that is up to it.
What a webhook actually is
The term sounds more technical than the thing is. Once you have heard it, you recognise it everywhere.
A webhook is a message a program sends out by itself as soon as something has happened inside it. You provide an address once, and from then on Volk Accountant sends a short message there whenever one of the seven events occurs in your books.
The event triggers it, not a question. Your system does nothing but listen.
What differs from the usual route is the direction. Without a webhook your system would have to keep asking: is there a new invoice? And now? And now? That costs requests, and between two of them there is always a gap. With a webhook your system finds out at the moment it happens, without having asked.
If you want a comparison: a webhook is the call you receive. An API is the number you dial when you want to know something.
Which seven events trigger one
A webhook is only as useful as the list of what it reports on. So here is the whole list.
The last two come from the Stripe integration. Payment failed in particular is the event a second system should hook into, because otherwise nobody notices a failed payment until somebody reviews the outstanding items.
Custom triggers cannot be defined. It is these seven, and what your system makes of them is your decision.
- Invoice createdon finalising
- Invoice paidafter the payment is matched
- Quote acceptedwhen the client agrees
- New expensewhen a receipt is posted
- New clienton creation
- Payment receivedfrom the payment integration
- Payment failedso you can follow up
How your system verifies the message came from us
An endpoint that accepts messages from outside accepts them from anybody. So every notification carries a signature.
- 1
Something happens
An invoice is finalised, a quote is accepted, a payment arrives.
- 2
We send
The notification goes to the endpoint you provided, together with a signature.
- 3
You verify
Your system recomputes the signature. If it does not match, the message was not from us or was altered on the way.
That third step is not a suggestion. An open endpoint without verification is an invitation to anybody who knows it, and it becomes known sooner than you would like.
When you need which of the two
Both connect your system to your books, but they answer different questions. Confusing them usually costs half a day.
An event occurs and we send a short notice. Your system learns THAT something happened.
You ask whenever you want and get data back. Your system learns WHAT exactly happened.
The whole distinction sits in the direction of the first arrow. With a webhook it points towards you, with the API it points away from you.
In practice the two work together: the webhook says an invoice was paid, and the API hands over that invoice when asked. Both are included from the Business plan.
What this feature does not do
We put this in writing because it affects the decision. Finding out after you have paid means you bought the wrong tool.
- From the Business plan. There are no webhooks on Starter.
- Seven fixed events. Custom triggers cannot be defined.
- A webhook reports; it does not deliver a report. Anyone who needs data fetches it through the API.
Questions that come up before you start
Which events trigger a webhook?
Seven: invoice created, invoice paid, quote accepted, new expense, new client, payment received and payment failed. Custom triggers cannot be defined, it is exactly these seven.
How do I check that a message really came from you?
Every notification carries a signature. Your system recomputes it; if it does not match, the message was not from us or was altered on the way. That step is not a suggestion: an open endpoint without verification accepts messages from anybody.
Do webhooks need a server of my own?
You need an internet address that can accept messages. That can be your own server, but equally a service that turns an incoming notice into an action. Volk Accountant sends there, and assumes nothing beyond that.
From which plan are webhooks available?
From Business, together with the public API. Starter has neither. A webhook reports that something happened; the data behind it is fetched through the API.
What goes with this
Point it at a test endpoint and write an invoice
Start free for 14 daysChecked 5 October 2026


