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.

¿Algo incorrecto o ausente? Escríbanos.