Hela documentation

Hela is management software for small and medium businesses: sales, till, stock, purchases, treasury, quotes, invoices, bookings. Version 3.0 opens it to the outside. This documentation covers everything that connects Hela to something else: the public API, webhooks, automation apps, every partner in the catalogue and every e-invoicing regime.

What you can do

You want to… Read
Call Hela from your code, a script, a website The API at a glance, then First key, first call
Be told when something happens (an invoice paid, stock running low) Webhooks and the event catalogue
Plug Hela in without writing code Zapier, Make, n8n, Power Automate
Let an AI assistant read your sales or draft a quote MCP server
Send your entries to your accountant Odoo, QuickBooks, Xero, Yuki, Exact, Pennylane or the exports
Get paid by card or mobile money Stripe, Mollie, PayPal, Square, SumUp, Mobile money
Reconcile the bank statement Banking
Sell on Shopify or WooCommerce Shopify, WooCommerce
Archive, get signatures, notify Drive, OneDrive, Dropbox, Yousign, DocuSign, WhatsApp, Slack, SMS
Comply with your country's e-invoicing rules How Hela handles regimes, then your country's page

Three ideas to keep in mind

One company, one space. Everything in Hela belongs to a company (companyId). An API key belongs to a company, so does a webhook, so does an Odoo connection. An account running three companies creates three sets of keys.

One event, many recipients. When an invoice is issued, Hela writes an invoice.issued event into its journal. That same event feeds your webhooks, the row in Google Sheets, the entry in Odoo, the PDF in Drive, the submission to the tax authority. Nothing to wire: connecting a partner is enough.

Money is integers. An amount is always an integer in minor units (cents, or the unit itself for the Congolese franc, which has no decimals), with its currency. { "amount": 12500, "currency": "USD" } is 125.00 USD. The API never returns a floating-point number for money.

Where it runs

Hela is hosted by us or by you. The API, the webhooks and the connectors are identical either way; only the base address and the OAuth partner keys, supplied by whoever runs the server, differ. Keys and environment variables is for the person hosting.

Conventions in this documentation

  • Addresses are relative to the API base, e.g. GET /companies/{companyId}/sales. The base is https://<your-server>/v1.
  • Examples use curl and a little JavaScript. The TypeScript SDK does the same in one line.
  • Words in angle brackets <…> are to be replaced. {…} in an address is a path parameter.

Something wrong or missing? Write to us.