Skip to content

Commit 4d53beb

Browse files
committed
docs: improve formatting and clarity in README features section
1 parent 22d2240 commit 4d53beb

1 file changed

Lines changed: 34 additions & 75 deletions

File tree

README.md

Lines changed: 34 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,29 @@ This project provides an importer from Israeli banks (via [israeli-bank-scrapers
99

1010
## Features
1111

12-
1. **Multi Bank Support**: Supports all of the institutions that the [israeli-bank-scrapers](https://github.com/eshaham/israeli-bank-scrapers) library covers (Bank Hapoalim, Cal, Leumi, Discount, etc.).
12+
1. **Multi Bank Support**
13+
Supports all of the institutions that the [israeli-bank-scrapers](https://github.com/eshaham/israeli-bank-scrapers) library covers (Bank Hapoalim, Cal, Leumi, Discount, etc.).
1314

14-
2. **Prevents duplicate transactions** using Actual’s [`imported_id`](https://actualbudget.org/docs/api/reference/#transactions) logic.
15+
2. **Prevents duplicate transactions**
16+
Uses Actual’s [`imported_id`](https://actualbudget.org/docs/api/reference/#transactions) logic.
1517

16-
3. **Automatic Account Creation**: If the bank account does not exist in Actual, it will be created automatically.
18+
3. **Automatic Account Creation**
19+
If the bank account does not exist in Actual, it will be created automatically.
1720

18-
4. **Reconciliation:** Optional reconciliation to adjust account balances automatically.
21+
4. **Reconciliation**
22+
Optional reconciliation to adjust account balances automatically.
1923

20-
5. **Credit Card / Multi-Account Mapping (Targets):** Supports mapping multiple scraped accounts/cards into one Actual account, or mapping each scraped card into its own Actual account (via `targets` and `accounts`).
24+
5. **Credit Card / Multi-Account Mapping (Targets)**
25+
Supports mapping multiple scraped accounts/cards into one Actual account, or mapping each scraped card into its own Actual account (via `targets` and `accounts`).
2126

22-
6. **Concurrent Processing:** Uses a queue (via [p-queue](https://www.npmjs.com/package/p-queue)) to manage scraping tasks concurrently.
27+
6. **Concurrent Processing**
28+
Uses a queue (via [p-queue](https://www.npmjs.com/package/p-queue)) to manage scraping tasks concurrently.
2329

2430
## Installation
2531

2632
### Docker
2733
https://hub.docker.com/r/tomerh2001/israeli-banks-actual-budget-importer
34+
2835
#### Example
2936
```yml
3037
services:
@@ -44,18 +51,18 @@ services:
4451
4552
## Configuration
4653
47-
The application configuration is defined using JSON and validated against a schema.
54+
The application configuration is defined using JSON and validated against a schema.
4855
The main configuration file is `config.json`.
4956

5057
The configuration has **two independent top-level sections**:
51-
1. `actual`: Configures the Actual Budget connection.
52-
2. `banks`: Configures bank scrapers and account mappings.
58+
1. `actual` Configures the Actual Budget connection.
59+
2. `banks` Configures bank scrapers and account mappings.
5360

5461
---
5562

5663
### 1) `actual` section
5764

58-
This section configures the connection to your Actual Budget server and budget.
65+
This section configures the connection to your Actual Budget server and budget.
5966
It is **always required**, regardless of how you configure banks or targets.
6067

6168
```json
@@ -86,11 +93,13 @@ The `banks` section defines:
8693
- How scraped accounts/cards are mapped into Actual accounts
8794

8895
Each bank entry includes the credentials required by `israeli-bank-scrapers`
89-
(e.g. `userCode`, `username`, `password`, etc.) and supports **multiple mapping modes**.
96+
(e.g. `userCode`, `username`, `password`, etc.).
97+
98+
---
9099

91-
#### `targets` sub-section
100+
### `targets` sub-section
92101

93-
A single bank scrape (for example `visaCal`) may return **multiple accounts/cards**.
102+
A single bank scrape (for example `visaCal`) may return **multiple accounts/cards**.
94103
Different users model these differently in Actual, so the importer supports `targets`.
95104

96105
Each **target** represents:
@@ -99,27 +108,21 @@ Each **target** represents:
99108

100109
For each target:
101110
- Imported transactions = concatenation of transactions from selected cards
102-
- Reconciliation (if enabled) = sum of balances of selected cards
111+
- Reconciliation (if enabled) = sum of balances of selected cards
103112
(only cards with a valid numeric balance are included)
104113

105114
---
106115

107-
#### Reconciliation modes
116+
### Reconciliation behavior
108117

109-
The `reconcile` field can be configured per bank (legacy mapping) or per target.
110-
111-
Supported values:
112-
- `false` (or omitted): no reconciliation transaction is created/updated.
113-
- `true`: reconciliation is created/updated **per target** (recommended when multiple targets share the same `actualAccountId`).
114-
- `"consolidate"`: reconciliation is created/updated **consolidated per Actual account** (one reconciliation transaction per `actualAccountId`).
115-
116-
Notes:
117-
- In **legacy** (single-account) configs, `reconcile: true` behaves like `"consolidate"` for backward compatibility.
118-
- In `targets` configs, `reconcile: true` is per-target and does not collide across multiple targets that map into the same Actual account.
118+
- Reconciliation is controlled by the `reconcile` boolean.
119+
- When `reconcile: true`, **a new reconciliation transaction is created on every run** (no updates, no reconciliation).
120+
- Existing reconciliation transactions are never modified or reused.
121+
- If `reconcile` is omitted or set to `false`, no reconciliation transaction is created.
119122

120123
---
121124

122-
#### Example A: One Actual account for all VisaCal cards (consolidated)
125+
### Example A: One Actual account for all VisaCal cards
123126

124127
```json
125128
{
@@ -141,7 +144,7 @@ Notes:
141144
"targets": [
142145
{
143146
"actualAccountId": "actual-creditcards-all",
144-
"reconcile": "consolidate",
147+
"reconcile": true,
145148
"accounts": "all"
146149
}
147150
]
@@ -152,7 +155,7 @@ Notes:
152155

153156
---
154157

155-
#### Example B: One Actual account per VisaCal card (separate accounts)
158+
### Example B: One Actual account per VisaCal card
156159

157160
```json
158161
{
@@ -190,7 +193,7 @@ Notes:
190193

191194
---
192195

193-
#### Example C: Grouped cards into a single Actual account (subset)
196+
### Example C: Grouped cards into a single Actual account (subset)
194197

195198
```json
196199
{
@@ -223,56 +226,13 @@ Notes:
223226

224227
---
225228

226-
#### Example D: Multiple targets importing into the same Actual account (safe per-target reconciliation)
227-
228-
Use `reconcile: true` so each target maintains its own reconciliation transaction (no overwrites).
229-
230-
```json
231-
{
232-
"actual": {
233-
"init": {
234-
"dataDir": "./data",
235-
"password": "your_actual_password",
236-
"serverURL": "https://your-actual-server.com"
237-
},
238-
"budget": {
239-
"syncId": "your_sync_id",
240-
"password": "your_budget_password"
241-
}
242-
},
243-
"banks": {
244-
"visaCal": {
245-
"username": "bank_username",
246-
"password": "bank_password",
247-
"targets": [
248-
{
249-
"actualAccountId": "actual-cal-all",
250-
"reconcile": true,
251-
"accounts": ["8538"]
252-
},
253-
{
254-
"actualAccountId": "actual-cal-all",
255-
"reconcile": true,
256-
"accounts": ["7697"]
257-
}
258-
]
259-
}
260-
}
261-
}
262-
```
263-
264-
---
265-
266229
## Legacy configuration (single Actual account per bank)
267230

268-
This configuration style is **fully supported for backward compatibility**,
231+
This configuration style is **fully supported for backward compatibility**,
269232
but does **not** allow fine-grained control over multiple cards/accounts.
270233

271234
It maps all scraped accounts from the bank into a single Actual account.
272235

273-
Important:
274-
- `reconcile: true` in legacy configs behaves like `reconcile: "consolidate"`.
275-
276236
```json
277237
{
278238
"actual": {
@@ -319,5 +279,4 @@ This project is open-source. Please see the [LICENSE](./LICENSE) file for licens
319279

320280
- **israeli-bank-scrapers:** Thanks to the contributors of the bank scraper libraries.
321281
- **Actual App:** For providing a powerful budgeting API.
322-
- **Open-source Community:** Your support and contributions are appreciated.
323-
-
282+
- **Open-source Community:** Your support and contributions are appreciated.

0 commit comments

Comments
 (0)