Resources

A guided reading of the most used routes. Every field, parameter and response code is in the OpenAPI schema (GET /openapi.json); this page says what each family is for and shows an example.

All routes are prefixed with /companies/{companyId}.

Sales and invoices

Method and path Role
GET /sales Sales list. Filters: from, to, partnerId, paymentStatus, channel, businessUnitId, q; limit or page+size.
GET /sales/{saleId} One sale with its lines, payments and deliveries.
GET /sales/{saleId}/invoice.pdf The PDF as the app prints it.
GET /sales/{saleId}/invoice.xml The invoice as UBL 2.1 (EN 16931 / Peppol BIS 3.0).
GET /sales/{saleId}/invoice.cii.xml The same as CII (Factur-X, XRechnung).
POST /sales Creates a sale. Lines, customer, location, wallet if paid.
POST /sales/{saleId}/payments Records a payment.
POST /sales/{saleId}/deliveries Records a delivery, full or partial.
POST /sales/{saleId}/reminder Sends a reminder to the customer (e-mail).
POST /sales/{saleId}/refund Refunds, in full or in part.
POST /sales/{saleId}/cancel Cancels an unpaid sale.

Creating a sale:

POST /companies/{companyId}/sales
{
  "businessUnitId": "…",
  "partnerId": "…",
  "lines": [
    { "itemId": "…", "quantity": 2, "unitPrice": 12.5 },
    { "label": "Delivery", "quantity": 1, "unitPrice": 5, "service": true }
  ],
  "paidInFull": false,
  "note": "Web order #1042"
}

Prices are given in major units in request bodies; the response returns them in minor units. A sale without paidInFull or a payment becomes a receivable and emits invoice.issued.

Quotes

GET /quotes, GET /quotes/{quoteId} List and detail.
POST /quotes Creates a quote — same shape as a sale, plus validUntil.
POST /quotes/{quoteId}/convert Turns the accepted quote into a sale.

Purchases

GET /purchases, GET /purchases/{purchaseId} Supplier orders and invoices.
POST /purchases Creates an order; receiveNow updates stock at once.
POST /purchases/{purchaseId}/receipts Receives, in full or in part.
POST /purchases/{purchaseId}/payments Pays the supplier.
POST /purchases/{purchaseId}/cancel Cancels.

Catalogue and stock

GET /items, POST /items, PATCH /items/{itemId} Items and services, prices, costs, alert thresholds.
GET /stock Quantities per item and location.
GET /stock/movements In and out history.
GET /stock/transfers, POST /stock/transfers Transfers between locations.
GET /stock/counts, POST /stock/counts Physical counts.

Partners

GET /partners, POST /partners, PATCH /partners/{partnerId} Customers and suppliers. kind is customer, supplier or both.
GET /reports/reconciliation/partner/{partnerId} A partner's statement: what they owe, what they paid.

For e-invoicing, fill in country (two-letter code), vatNumber and, in Europe, peppolId (0208:0123456789).

Treasury

GET /wallets Tills, bank accounts, mobile money accounts, with balances.
GET /transactions, POST /transactions Movements. A free in or out, outside a sale.
POST /wallets/transfer A transfer between two wallets.
GET /budgets, PUT /budgets Expense budgets by category.
GET /cash-sessions Open and closed till sessions.
POST /wallets/{walletId}/statements Imports a statement (CAMT.053, MT940, CSV) into an account.
GET /bank-transactions?walletId&status Bank lines and their reconciliation state.
GET /bank-transactions/{id}/suggestions, POST …/match, POST …/transaction, POST …/ignore, POST …/reopen A line's reconciliation.

Hours

GET /time-entries Entries, filtered by from, to, partnerId, billed.
GET /time-entries/summary Hours and unbilled amounts per client.
PUT /time-entries Creates or updates an entry (externalId for those from Clockify or Toggl).
DELETE /time-entries/{id} Deletes an unbilled entry.
POST /time-entries/bill Creates an invoice from entries.

Reports and exports

GET /reports/summary?period=… The dashboard: sales, margin, receivables, stock.
GET /reports/exports/charts Available charts of accounts (SYSCOHADA, PCMN, PCG).
GET /reports/exports/ledger?from&to&chart= The ledger, as CSV.
GET /reports/exports/ledger.fec The French FEC file.
GET /reports/exports/ledger.datev.csv The DATEV format (Germany).
GET /reports/ohada/ledger.csv, GET /reports/ohada/balance.csv?period&chart= The OHADA ledger and trial balance.
GET /reports/receivables Receivables, by customer.

Details: Accounting exports.

Compliance

GET /fiscal Regimes applicable to the company's country and their state.
PUT /fiscal/{regime} Enables or edits a regime.
POST /fiscal/submit/sale/{saleId} Submits an invoice now.
GET /fiscal/submissions/{kind}/{id} A document's submissions.
GET /fiscal/journal, GET /fiscal/journal/verify The sealed journal and its chain check.

Details: How Hela handles regimes.

Integrations

GET /integrations Available connectors and their state for this company.
POST /integrations/{provider}/connect Connects an API-key partner.
GET /integrations/{provider}/authorize Starts an OAuth connection; returns the address to send the user to.
PATCH /integrations/{provider}/settings Edits the settings.
POST /integrations/{provider}/test, /sync Tests, syncs.
DELETE /integrations/{provider} Disconnects.
POST /integrations/documents/{kind}/{id}/payment-link Creates a payment link for a sale or quote.
POST /integrations/documents/sale/{id}/push-to-phone Requests a mobile money payment.
POST /integrations/documents/{kind}/{id}/signature Sends for signature.
POST /integrations/documents/{kind}/{id}/archive Archives the PDF.

Developers

GET /api-keys, POST /api-keys, DELETE /api-keys/{keyId} Keys. Needs a human session, never a key.
GET /webhooks, POST /webhooks, PATCH /webhooks/{id}, DELETE /webhooks/{id} Endpoints.
POST /webhooks/{id}/test, /rotate Ping, secret rotation.
GET /webhooks/{id}/deliveries, POST …/deliveries/{deliveryId}/replay Deliveries and their replay.
DELETE /webhooks?url= Deletes by address — what Zapier's REST hooks use.
GET /events?cursor&limit&type The event journal.
GET /events/catalogue The catalogue, with descriptions.

Something wrong or missing? Write to us.