Event catalogue
Everything Hela announces to the outside. A type missing from this list cannot be emitted — the code refuses — and the list is served as is by GET /companies/{companyId}/events/catalogue, with descriptions in each language.
An event always carries id, type, createdAt, companyId, object, objectId and data (see Webhooks). The content of data is described, type by type, in the OpenAPI schema.
Sales and invoices
| Type | When |
|---|---|
sale.created |
A sale or receipt is recorded, at the counter, online or through the API. |
sale.cancelled |
A sale is cancelled. |
invoice.issued |
A sale becomes an invoice: addressed to a partner or leaving a balance due. |
invoice.partially_paid |
A payment is recorded but the balance is not zero. |
invoice.paid |
The balance reaches zero. |
invoice.refunded |
A refund is recorded. |
delivery.created |
A delivery note is issued. |
Quotes
| Type | When |
|---|---|
quote.created |
A quote is created. |
quote.accepted |
The customer accepts it (from their client space or by hand). |
quote.declined |
The customer declines it. |
quote.signed |
It comes back signed from a signature provider. |
quote.converted |
It becomes a sale. |
Purchases
| Type | When |
|---|---|
purchase.created |
A supplier order is created. |
purchase.received |
It is received, in full or in part. |
purchase.paid |
It is paid. |
purchase.cancelled |
It is cancelled. |
expense.created |
An expense is recorded. |
Treasury
| Type | When |
|---|---|
payment.received |
Money comes in, whatever the origin (sale, payment link, mobile money). |
payment.failed |
An online payment fails or expires. |
transaction.created |
A free movement is recorded in a wallet. |
transaction.voided |
A movement is voided. |
transfer.completed |
A transfer between wallets is done. |
cash_session.opened |
A till is opened. |
cash_session.closed |
A till is closed; data carries the count and the differences. |
bank_transaction.imported |
A bank statement line enters reconciliation, from a file or a feed (GoCardless, Ponto, Plaid). |
Stock
| Type | When |
|---|---|
stock.low |
An item falls under its alert threshold. |
Partners and orders
| Type | When |
|---|---|
partner.created, partner.updated |
A customer or supplier is created or edited. |
order_request.received |
An order arrives from the public menu or the online shop. |
Hotel
| Type | When |
|---|---|
stay.checked_in, stay.checked_out |
A stay begins, ends. |
Time
| Type | When |
|---|---|
time_entry.created |
Hours are logged or imported. |
Compliance
| Type | When |
|---|---|
fiscal.accepted |
An invoice is accepted by the authority; data carries its reference and, where applicable, the QR code. |
fiscal.rejected |
It is refused; data.error says why. |
Integrations and system
| Type | When |
|---|---|
integration.connected, integration.disconnected |
A partner is plugged in, unplugged. |
integration.failed |
A partner or a webhook fails repeatedly. |
rate.updated |
An exchange rate is updated (by hand or by a feed). |
| invoice.overdue | An invoice's due date has passed without full payment. Emitted once per invoice, by an hourly sweep, for companies where a webhook or a connector listens. |
| stock.movement | An adjustment, a loss, a return or a validated count changed stock. Shopify and WooCommerce use it to rewrite quantities in the shop. |
Reserved
These types are in the catalogue — a webhook can subscribe to them now — but no code emits them yet. They will arrive without a version change.
| Type | When it will be emitted |
|---|---|
supplier_invoice.received |
A supplier invoice arrives through a connector. |
fiscal.submitted |
An invoice leaves for the authority (today only accepted and rejected are emitted). |
export.ready |
A requested export is ready. |
Conventions
- Names are
<aggregate>.<past participle>: the thing, then what happened to it. datais a stable view: fields may be added, none disappears or changes meaning within one API version.- Amounts in
dataare{ amount, currency }objects in minor units. data.actorsays who caused the event:{ "kind": "user", "id": "…" }or{ "kind": "api_key", "id": "…" }.