Banking
Reconciling what the bank says with what Hela knows: every statement line finds the movement that explains it, or becomes one.
Where it happens
Finance → Treasury → Bank reconciliation. Imported lines show by state — to match, matched, ignored — each with the Hela movements of the same amount around the same date.
A bank line is never edited: it keeps the date, the signed amount, the counterparty, the label and the reference the bank wrote. What changes is the pointer to what explains it.
Importing a statement
Three formats, recognised when the file is opened:
| Format | Who produces it | What is read |
|---|---|---|
| CAMT.053 (ISO 20022, XML) | European banks (SEPA) | Ntry: amount and direction, booking and value dates, counterparty name, remittance (Ustrd), end-to-end id, bank reference (AcctSvcrRef) |
| MT940 (SWIFT) | Most banks worldwide | :61: amount, dates, reference; :86: name and label in both common dialects (?20…?32… and /NAME/…/REMI/…) |
| CSV | All | Columns guessed from their header, in English, French, Dutch, German, Spanish: date, amount (or separate debit and credit), counterparty, label, reference, currency |
Import a statement, pick the account (a wallet of type bank, mobile money or card) and the file. Lines already known — same bank reference, or same date, amount and label — are skipped: importing the same statement twice imports nothing twice. Each new line emits bank_transaction.imported.
Through the API: POST /companies/{id}/wallets/{walletId}/statements with { "content": "<the file>", "filename": "statement.xml" }; format forces camt053, mt940 or csv.
Matching
Open a line: Hela suggests the movements of the same wallet, the same direction, the same amount, within three days, ranked by likelihood — a reference or a partner name found in the label raises the score. Match links the line to the movement.
Nothing fits? Create the movement: a treasury movement is recorded for the line's amount, in the chosen category (bank fees, rent, sale…), and the line is matched to it. Ignore files the lines that are not movements (opening balance, information lines). Reopen undoes either.
Through the API: GET /companies/{id}/bank-transactions?walletId&status, GET …/bank-transactions/{lineId}/suggestions, POST …/match { transactionId }, POST …/transaction { category, label }, POST …/ignore, POST …/reopen.
Bank feeds
Three connectors bring the lines without a file, into the same reconciliation, every six hours:
| Connector | Coverage | What you need |
|---|---|---|
| GoCardless Bank Account Data (ex-Nordigen) | 2,500 banks in Europe; free | A Bank Account Data portal account: secret id, secret key, and the account id the requisition returns once the bank has consented |
| Ponto (Isabel) | Belgium, Netherlands, Luxembourg, France | The integration's Client ID and secret (Ponto Dashboard), and the authorised account's id |
| Plaid | North America, United Kingdom, Europe | Client ID, secret, and the Item's access_token obtained after Plaid Link; production or sandbox environment |
Each connects in Integrations with its credentials and the Hela wallet it feeds — currencies must match. The first pass brings the last ninety days (Plaid: the Item's history); Sync runs a pass right away.
Mobile money
Payments received through the operator's connector (Mobile money) are recorded with the operator's reference: imported as CSV, the operator's statement matches itself by that reference.
For the accountant
The reconciled ledger exports as CSV, FEC or DATEV: see Accounting exports.