
Israeli Bank Connector
- 60 installs
- 29 repo stars
- Updated August 3, 2026
- skills-il/tax-and-finance
Connect to Israeli bank accounts to pull transactions/balances.
About
A skill that connects to Israeli banks to retrieve account data such as balances and transactions. Builders use it to pull financial data into fintech or accounting workflows.
- Israeli banks
- Account connector
- Transaction sync
Israeli Bank Connector by the numbers
- 60 all-time installs (skills.sh)
- Ranked #3,161 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/skills-il/tax-and-finance --skill israeli-bank-connectorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 60 |
|---|---|
| repo stars | ★ 29 |
| Security audit | 2 / 3 scanners passed |
| Last updated | August 3, 2026 |
| Repository | skills-il/tax-and-finance ↗ |
What it does
Connect to Israeli bank accounts to pull transactions/balances.
Files
Israeli Bank Connector
Instructions
Step 1: Identify Connected Banks
Check which MCP server is available and what accounts are connected:
- israeli-bank-mcp: Direct scraper integration
- il-bank-mcp: Docker-based with persistent analysis
- If no MCP: Guide user through CSV/Excel import from bank website
Step 2: Retrieve Transactions
Fetch transaction data for the requested period:
- Default: Current month
- Supported: Up to 12 months history (bank-dependent)
- Include: Bank accounts AND credit card transactions
Step 3: Categorize and Analyze
Apply Israeli-specific categorization:
| Category | Hebrew | Examples |
|---|---|---|
| Housing | דיור (diur) | Rent, arnona, vaad bayit |
| Groceries | מזון (mazon) | Shufersal, Rami Levy, Victory |
| Transportation | תחבורה (tahaburah) | Rav-Kav, fuel, Gett |
| Utilities | שירותים (shartuim) | Electric Company, Mekorot, Bezeq |
| Healthcare | בריאות (briut) | Kupat Cholim, pharmacy |
| Education | חינוך (chinuch) | Gan, school, courses |
| Entertainment | בילוי (bilui) | Restaurants, cinema, streaming |
| Insurance | ביטוח (bituach) | Health, car, home insurance |
| Savings | חיסכון (chisachon) | Pension, keren hishtalmut |
Step 4: Present Insights
Provide: 1. Monthly spending summary by category 2. Top 10 merchants by spending 3. Month-over-month trends 4. Recurring charges identified 5. Unusual transactions flagged
Step 5: Export for Tax (if requested)
Format transactions for Israeli tax purposes:
- Separate business vs personal expenses
- Flag VAT-deductible purchases
- Export in format compatible with Israeli accounting software
Examples
Example 1: Monthly Spending Summary
User says: "Show me my spending breakdown for January" Result: Categorized breakdown with NIS amounts per category, top merchants, and comparison to December.
Example 2: Subscription Audit
User says: "What recurring payments am I making?" Result: List of detected recurring charges with amounts, frequency, and suggestion for potential savings.
Example 3: Tax Expense Export
User says: "Export my business expenses for my accountant" Result: Filtered and categorized business transactions with VAT amounts, ready for import into accounting software.
Bundled Resources
Scripts
scripts/categorize_transactions.py— Categorizes Israeli bank transactions by spending category using Israeli-specific merchant pattern matching (Shufersal, Rami Levy, Rav-Kav, etc.). Accepts transaction JSON and outputs categorized spending summaries. Run:python scripts/categorize_transactions.py --examplefor a demo, orpython scripts/categorize_transactions.py --json transactions.jsonfor real data. Add--output-jsonfor machine-readable output.
References
references/spending-categories.md— Israeli spending category definitions with Hebrew terms and common merchant examples for each category (housing/diur, groceries/mazon, transportation/tahaburah, utilities/shartuim, etc.). Consult when customizing categorization rules or explaining categories to users.references/supported-banks.md— Full list of 14 banks (Hapoalim, Leumi, Discount, Mercantile, Mizrahi-Tefahot, FIBI, Otsar HaHayal, Pagi, Union, Yahav, Massad, OneZero, Behatsdaa, Beyahad Bishvilha) and 4 credit card companies (Visa Cal, Max, Isracard, Amex) from theisraeli-bank-scrapersCompanyTypesenum, with BOI bank codes, library scraper IDs, and MCP server coverage notes. Consult when setting up bank connections or troubleshooting missing accounts.
Reference Links
| Source | URL | What to Check |
|---|---|---|
| israeli-bank-scrapers (npm library) | https://github.com/eshaham/israeli-bank-scrapers | Authoritative list of supported banks, breaking changes, scraper limitations |
| israeli-bank-mcp (Motti Bechhofer) | https://github.com/mottibec/israeli-bank-mcp | Most comprehensive MCP wrapper; install/config and tool reference |
| il-bank-mcp (Gilad Lekner) | https://github.com/glekner/il-bank-mcp | Docker-based MCP with built-in spending analysis and SQLite storage |
| Bank of Israel: Consumer Enquiries | https://www.boi.org.il/en/information-and-service-to-the-public/consumer-enquiries-and-inspections/ | Official BOI Public Inquiries Unit, banking customer service, complaint workflow |
| Bank of Israel: Bank identification codes | https://www.boi.org.il/en/economic-roles/supervision-and-regulation/payment-systems-oversight/access-to-payment-systems/identification-codes/ | Canonical BOI bank identification-code list |
Gotchas
- Israel's Open Banking regulation is based on the Berlin Group NextGenPSD2 framework but adapted for Israel with its own timeline and implementation. Full rollout across all banks is still ongoing (as of 2026). Agents may reference UK Open Banking or generic PSD2 endpoints that do not exist in Israel. In practice, israeli-bank-scrapers uses headless browser scraping, not official Open Banking APIs.
- Bank Leumi, Hapoalim, Discount, Mizrahi-Tefahot, and First International each have different API implementations. There is no single unified API across all Israeli banks.
- Mercantile and Otsar HaHayal are SEPARATE scrapers in the upstream library even though they are subsidiaries of Discount and FIBI respectively. Treat them as their own connection (each has its own loginFields shape). Do not assume Discount credentials cover Mercantile or that FIBI credentials cover Otsar HaHayal.
- Transaction history depth is bank-specific. Hapoalim and Leumi typically expose less than 12 months via scraping; FIBI-group banks (FIBI, Otsar HaHayal, Pagi) often expose 12+ months. Treat "up to 12 months" as a ceiling, not a promise.
- Israeli bank account numbers include a branch number (snif) prefix. Agents may validate account numbers using international IBAN format, but Israeli domestic transfers use the local branch+account format.
- Credit card statements in Israel are issued by separate companies (Isracard, Max, CAL) and not directly by the banks. Agents may try to fetch credit card data from the bank API instead of the card company.
Troubleshooting
Error: "2FA required"
Cause: Israeli banks require two-factor authentication Solution: Complete 2FA through your bank's app/SMS when prompted by the MCP server. This is a one-time setup per session.
Error: "Scraper timeout"
Cause: Bank website slow or blocking automated access Solution: Retry after a few minutes. If persistent, check israeli-bank-scrapers GitHub issues for known bank-specific issues.
Error: "Missing credit card transactions"
Cause: Credit card company is separate from bank in Israel Solution: Add credit card company (Visa Cal, Max, Isracard) as a separate connection in the MCP server configuration.
{
"schemaVersion": "1.0",
"skill": "israeli-bank-connector",
"generated_at": "2026-05-18T01:20:00Z",
"claims": [
{
"claim_id": "library-version-2026-04",
"claim": "israeli-bank-scrapers latest version is 6.7.4 (published 2026-04-20), library-only (no CLI, bin: null)",
"source_url": "https://registry.npmjs.org/israeli-bank-scrapers/latest",
"raw_snippet": "version: 6.7.4",
"fetched_at": "2026-05-18T01:20:00Z",
"appears_in": ["references/supported-banks.md"]
},
{
"claim_id": "scrapers-all-14",
"claim": "Upstream israeli-bank-scrapers CompanyTypes enum contains 14 bank scrapers (hapoalim, leumi, mizrahi, discount, mercantile, otsarHahayal, beinleumi, pagi, union, yahav, massad, oneZero, behatsdaa, beyahadBishvilha) and 4 card scrapers (visaCal, max, isracard, amex). Mercantile and Otsar Hahayal are SEPARATE scrapers with their own loginFields, not subsumed under Discount/FIBI.",
"source_url": "https://raw.githubusercontent.com/eshaham/israeli-bank-scrapers/master/src/definitions.ts",
"raw_snippet": "name: 'Bank Hapoalim' name: 'Bank Leumi' name: 'Mizrahi Bank' name: 'Discount Bank' name: 'Mercantile Bank' name: 'Bank Otsar Hahayal' name: 'Beinleumi' name: 'Pagi' name: 'Union' name: 'Bank Yahav' name: 'Massad' name: 'One Zero' name: 'Behatsdaa' name: 'Beyahad Bishvilha' name: 'Visa Cal' name: 'Max' name: 'Isracard' name: 'Amex'",
"fetched_at": "2026-05-18T01:20:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md", "references/supported-banks.md", "metadata.json"]
},
{
"claim_id": "bank-codes-bankisrael",
"claim": "BOI identification codes per Bank of Israel Payment Systems Oversight: Leumi=10, Discount=11, Hapoalim=12, Union=13, Otsar Hahayal=14, OneZero=18, Mizrahi-Tefahot=20, FIBI (First International)=31, Massad=46",
"source_url": "https://www.boi.org.il/en/economic-roles/supervision-and-regulation/payment-systems-oversight/access-to-payment-systems/identification-codes/",
"raw_snippet": "Bank Leumi Le-Israel Ltd | 10 | Israel Discount Bank Ltd | 11 | Bank Hapoalim Ltd | 12 | Union Bank of Israel Ltd | 13 | Bank Otsar Hahayal Ltd | 14 | Bank Mizrahi-Tefahot Ltd | 20 | First International Bank of Israel Ltd | 31 | Bank Massad Ltd | 46 | One Zero Digital Bank ltd | 18",
"fetched_at": "2026-05-18T01:20:00Z",
"appears_in": ["references/supported-banks.md"]
},
{
"claim_id": "boi-en-consumer-enquiries",
"claim": "BOI English Consumer Enquiries and Inspections page (banking complaints and consumer info, verified 200 OK via WebFetch)",
"source_url": "https://www.boi.org.il/en/information-and-service-to-the-public/consumer-enquiries-and-inspections/",
"raw_snippet": "Consumer Enquiries and Inspections Unit handles complaints from bank and credit card customers",
"fetched_at": "2026-05-18T01:20:00Z",
"appears_in": ["SKILL.md"]
},
{
"claim_id": "boi-he-bank-paymnts",
"claim": "BOI Hebrew Banking and Payments consumer information page (verified 200 OK via WebFetch, title: בנקאות ותשלומים - מידע ושירות לצרכן)",
"source_url": "https://www.boi.org.il/information/bank-paymnts/",
"raw_snippet": "בנקאות ותשלומים - מידע ושירות לצרכן",
"fetched_at": "2026-05-18T01:20:00Z",
"appears_in": ["SKILL_HE.md"]
},
{
"claim_id": "repo-eshaham-scrapers",
"claim": "israeli-bank-scrapers GitHub repository (Eshaham), authoritative source of supported banks and scraper definitions",
"source_url": "https://github.com/eshaham/israeli-bank-scrapers",
"raw_snippet": "eshaham/israeli-bank-scrapers GitHub repository",
"fetched_at": "2026-05-18T01:20:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md", "references/supported-banks.md"]
},
{
"claim_id": "repo-eshaham-definitions-source",
"claim": "Direct link to definitions.ts source file containing CompanyTypes enum and SCRAPERS map",
"source_url": "https://github.com/eshaham/israeli-bank-scrapers/blob/master/src/definitions.ts",
"raw_snippet": "definitions.ts source file with CompanyTypes enum",
"fetched_at": "2026-05-18T01:20:00Z",
"appears_in": ["references/supported-banks.md"]
},
{
"claim_id": "repo-mottibec-mcp",
"claim": "israeli-bank-mcp GitHub repository (Motti Bechhofer), MCP server wrapping israeli-bank-scrapers",
"source_url": "https://github.com/mottibec/israeli-bank-mcp",
"raw_snippet": "mottibec/israeli-bank-mcp GitHub repository",
"fetched_at": "2026-05-18T01:20:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md", "references/supported-banks.md"]
},
{
"claim_id": "repo-glekner-mcp",
"claim": "il-bank-mcp GitHub repository (Gilad Lekner), Docker-based MCP with SQLite analysis",
"source_url": "https://github.com/glekner/il-bank-mcp",
"raw_snippet": "glekner/il-bank-mcp GitHub repository",
"fetched_at": "2026-05-18T01:20:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md", "references/supported-banks.md"]
}
]
}
{
"author": "skills-il",
"version": "1.2.1",
"category": "tax-and-finance",
"tags": {
"he": [
"בנקאות",
"עסקאות",
"פיננסים",
"הוצאות",
"ישראל"
],
"en": [
"banking",
"transactions",
"finance",
"spending",
"israel"
]
},
"mcp-server": "israeli-bank-mcp",
"display_name": {
"he": "מחבר בנקאות ישראלי",
"en": "Israeli Bank Connector"
},
"display_description": {
"he": "ניתוח תנועות בנק, דפוסי הוצאות ונתונים פיננסיים מול הבנקים וחברות האשראי בישראל. השתמשו כשהמשתמש שואל על תנועות בנק, ניתוח הוצאות, מעקב תקציב, או צריך לסווג נתונים בנקאיים ישראליים. משלים את שרתי israeli-bank-mcp ו-il-bank-mcp (העוטפים את ספריית israeli-bank-scrapers) עם תהליכי ניתוח פיננסי. תומך בהפועלים, לאומי, דיסקונט, מרכנתיל, מזרחי-טפחות, הבינלאומי, אוצר החייל, פאג\"י, איגוד, יהב, מסד, OneZero, כאל, מקס, ישראכרט ואמקס. אל תשתמשו ליצירת תשלומים, להעברות כספים או לייעוץ השקעות.",
"en": "Analyze Israeli bank transactions, spending patterns, and financial data across Israeli banks and credit card companies. Use when user asks about bank transactions, spending analysis, \"cheshbon bank\", budget tracking, or needs to categorize Israeli banking data. Enhances israeli-bank-mcp and il-bank-mcp servers with financial analysis workflows. Supports Hapoalim, Leumi, Discount, Mercantile, Mizrahi-Tefahot, First International (FIBI), Otsar HaHayal, Pagi, Union, Yahav, Massad, OneZero, Visa Cal, Max, Isracard, and Amex. Do NOT use for payment initiation, money transfers, or investment advice."
},
"supported_agents": [
"claude-code",
"cursor",
"github-copilot",
"windsurf",
"opencode",
"codex",
"antigravity",
"gemini-cli"
]
}
Israeli Spending Categories
Category Definitions
Housing (Diur)
- Rent (schirut)
- Arnona (municipal tax)
- Vaad Bayit (building committee fees)
- Mortgage payments
- Home repairs and maintenance
- Home insurance
Groceries (Mazon)
Major Israeli supermarket chains:
- Shufersal (Deal, Express, Online)
- Rami Levy
- Victory
- Yochananof
- Osher Ad
- Tiv Taam
- Mega / Mega Bool
Transportation (Tahaburah)
- Rav-Kav (public transit card)
- Fuel (Sonol, Paz, Delek, Ten)
- Gett / Yango (ride-hailing)
- Car insurance
- Vehicle registration (rechev)
- Parking
Utilities (Shartuim)
- Israel Electric Company (chevrat hashmal)
- Water (Mekorot / local water corporation)
- Bezeq (landline)
- Cellcom / Partner / Pelephone / HOT Mobile
- Internet (Bezeq, Partner, HOT, Cellcom)
- Gas (Supergas, Amerigas)
Healthcare (Briut)
- Kupat Cholim (Clalit, Maccabi, Meuhedet, Leumit)
- Supplementary insurance (mushlam/meshulam)
- Pharmacy (Super-Pharm, New-Pharm)
- Dental, optical
- Private medical services
Education (Chinuch)
- Kindergarten (gan)
- School fees
- After-school programs (tzaharon)
- University / college tuition
- Courses and training
Entertainment (Bilui)
- Restaurants and cafes
- Cinema (Yes Planet, Cinema City)
- Streaming (Netflix, Disney+, Spotify)
- Sports and fitness
- Cultural events
Insurance (Bituach)
- Health insurance (supplementary)
- Car insurance (chovah + makif)
- Home insurance
- Life insurance
- Travel insurance
Savings (Chisachon)
- Pension contributions
- Keren Hishtalmut
- Investment deposits
- Kupat Gemel
Categorization Tips
- Israeli banks often abbreviate merchant names
- Credit card charges may show the card company name, not merchant
- Standing orders (horaot keva) should be categorized by destination
- ATM withdrawals cannot be auto-categorized (mark as "cash")
Supported Israeli Banks and Credit Card Companies
Authoritative list reflects the CompanyTypes enum in eshaham/israeli-bank-scrapers. The library is the foundation for both israeli-bank-mcp and il-bank-mcp. Library version pin: israeli-bank-scrapers >=6.7.x (current release 6.7.4, 2026-04-20).
BOI Code column shows Bank of Israel identification codes from the BOI Payment Systems Oversight list. — means no separately-assigned BOI code (the entity shares a parent's code or is not listed as an independent payment-system participant).
Banks
| Bank | Hebrew | BOI Code | israeli-bank-scrapers ID | Notes |
|---|---|---|---|---|
| Bank Hapoalim | bank hapoalim | 12 | hapoalim | Largest bank |
| Bank Leumi | bank leumi | 10 | leumi | Second largest |
| Israel Discount Bank | bank discount | 11 | discount | Separate scraper from Mercantile |
| Mercantile Bank | bank mercantile | — | mercantile | Separate scraper (own loginFields: id, password, num); subsidiary of Discount but not subsumed |
| Mizrahi-Tefahot | mizrahi tefahot | 20 | mizrahi | Fourth largest |
| FIBI (First International) | benleumi rishon | 31 | beinleumi | Separate scraper from Otsar HaHayal |
| Bank Otsar Hahayal | bank otsar hahayal | 14 | otsarHahayal | Separate scraper (own loginFields: username, password); part of FIBI group but not subsumed |
| Pagi Bank | bank pagi | — | pagi | Charedi-focused, part of FIBI group, separate scraper |
| Union Bank | bank igud | 13 | union | Acquired by Mizrahi-Tefahot in 2020 but still listed as separate BOI participant and separate scraper |
| Bank Yahav | bank yahav | — | yahav | Public-sector employees, owned by Hapoalim |
| Bank Massad | bank masad | 46 | massad | Teachers/education sector |
| OneZero Digital Bank | onezero | 18 | oneZero | Israel's first all-digital bank (launched 2022) |
| Behatsdaa | bank behatsdaa | — | behatsdaa | Smaller institutional scraper |
| Beyahad Bishvilha | beyahad bishvilha | — | beyahadBishvilha | Smaller institutional scraper |
Credit Card Companies
| Company | Hebrew | israeli-bank-scrapers ID | Notes |
|---|---|---|---|
| Visa Cal (CAL) | visa cal | visaCal | Visa/Mastercard/Diners. Verify current ownership against Bank of Israel filings; card-issuer ownership has been shifting under BOI competition rulings |
| Max (formerly Leumi Card) | max | max | Mastercard/Visa |
| Isracard | isracard | isracard | Isracard/Mastercard |
| American Express Israel | amex | amex | Amex cards (issued via Isracard) |
MCP Server Coverage
Not every scraper in the upstream library is exposed by every MCP wrapper. Check the specific MCP's tool list before assuming an account is reachable.
israeli-bank-mcp (Motti Bechhofer)
- Most comprehensive coverage of upstream library
- Directly wraps
israeli-bank-scrapers - Supports 2FA
- Active maintenance
- Repo: <https://github.com/mottibec/israeli-bank-mcp>
il-bank-mcp (Gilad Lekner)
- Docker-based deployment
- Adds transaction analysis features (spending breakdowns, recurring charge detection)
- Uses SQLite for local data storage
- Best when running headless / serverless via the puppeteer-core variant
- Repo: <https://github.com/glekner/il-bank-mcp>
Authentication Notes
- All Israeli banks require 2FA (two-factor authentication)
- Bank scrapers use headless browser automation
- Sessions expire after ~15-30 minutes
- Some banks may temporarily block automated access
- Rate limiting varies by bank
Data Available
- Account balances
- Transaction history (bank-dependent window; Hapoalim and Leumi typically expose shorter than 12 months, FIBI group exposes 12+ months)
- Credit card transactions
- Standing orders
- Loan information (limited)
#!/usr/bin/env python3
"""Categorize Israeli bank transactions by spending category.
Applies Israeli-specific merchant categorization to bank transaction data,
supporting common Israeli merchants, supermarkets, and service providers.
Usage:
python scripts/categorize_transactions.py --json transactions.json
python scripts/categorize_transactions.py --example
"""
import sys
import json
import argparse
import re
from collections import defaultdict
from dataclasses import dataclass
from typing import Optional
# Israeli merchant patterns mapped to categories
MERCHANT_PATTERNS = {
# Groceries (mazon)
r"(?i)(shufersal|שופרסל)": "groceries",
r"(?i)(rami.?levy|רמי לוי)": "groceries",
r"(?i)(victory|ויקטורי)": "groceries",
r"(?i)(yochananof|יוחננוף)": "groceries",
r"(?i)(osher.?ad|אושר עד)": "groceries",
r"(?i)(mega|מגה)": "groceries",
r"(?i)(tiv.?taam|טיב טעם)": "groceries",
r"(?i)(am.?pm|עם:פם)": "groceries",
# Transportation (tahaburah)
r"(?i)(rav.?kav|רב קו)": "transportation",
r"(?i)(sonol|סונול)": "transportation",
r"(?i)(paz|פז)": "transportation",
r"(?i)(delek|דלק)": "transportation",
r"(?i)(gett|גט)": "transportation",
r"(?i)(yango|יאנגו)": "transportation",
# Utilities (shartuim)
r"(?i)(israel.?electric|חברת.?חשמל)": "utilities",
r"(?i)(mekorot|מקורות)": "utilities",
r"(?i)(bezeq|בזק)": "utilities",
r"(?i)(partner|פרטנר)": "utilities",
r"(?i)(cellcom|סלקום)": "utilities",
r"(?i)(hot|הוט)": "utilities",
r"(?i)(pelephone|פלאפון)": "utilities",
# Healthcare (briut)
r"(?i)(clalit|כללית)": "healthcare",
r"(?i)(maccabi|מכבי)": "healthcare",
r"(?i)(meuhedet|מאוחדת)": "healthcare",
r"(?i)(leumit|לאומית)": "healthcare",
r"(?i)(super.?pharm|סופר פארם)": "healthcare",
# Housing (diur)
r"(?i)(arnona|ארנונה)": "housing",
r"(?i)(vaad.?bayit|ועד.?בית)": "housing",
r"(?i)(rent|שכירות)": "housing",
# Education (chinuch)
r"(?i)(university|אוניברסיט)": "education",
r"(?i)(college|מכללה)": "education",
# Entertainment (bilui)
r"(?i)(cinema|סינמה|yes.?planet)": "entertainment",
r"(?i)(netflix)": "entertainment",
r"(?i)(spotify)": "entertainment",
r"(?i)(apple.*music|itunes)": "entertainment",
# Insurance (bituach)
r"(?i)(harel|הראל)": "insurance",
r"(?i)(migdal|מגדל)": "insurance",
r"(?i)(menora|מנורה)": "insurance",
r"(?i)(clal.?bituach|כלל.?ביטוח)": "insurance",
# Savings (chisachon)
r"(?i)(pension|פנסי)": "savings",
r"(?i)(hishtalmut|השתלמות)": "savings",
r"(?i)(gemel|גמל)": "savings",
}
CATEGORY_NAMES = {
"groceries": ("Groceries", "mazon"),
"transportation": ("Transportation", "tahaburah"),
"utilities": ("Utilities", "shartuim"),
"healthcare": ("Healthcare", "briut"),
"housing": ("Housing", "diur"),
"education": ("Education", "chinuch"),
"entertainment": ("Entertainment", "bilui"),
"insurance": ("Insurance", "bituach"),
"savings": ("Savings", "chisachon"),
"restaurants": ("Restaurants", "misadot"),
"shopping": ("Shopping", "kniyot"),
"other": ("Other", "acher"),
}
def categorize_transaction(description: str) -> str:
"""Categorize a transaction based on merchant description.
Args:
description: Transaction merchant description text.
Returns:
Category string.
"""
for pattern, category in MERCHANT_PATTERNS.items():
if re.search(pattern, description):
return category
return "other"
def analyze_transactions(transactions: list[dict]) -> dict:
"""Analyze and categorize a list of transactions.
Args:
transactions: List of transaction dicts with 'description' and 'amount' keys.
Returns:
Analysis dictionary with category totals, top merchants, etc.
"""
categories = defaultdict(float)
category_count = defaultdict(int)
merchants = defaultdict(float)
categorized = []
for txn in transactions:
desc = txn.get("description", "Unknown")
amount = abs(txn.get("amount", 0))
category = categorize_transaction(desc)
categories[category] += amount
category_count[category] += amount and 1
merchants[desc] += amount
categorized.append({**txn, "category": category})
total = sum(categories.values())
# Sort merchants by spending
top_merchants = sorted(merchants.items(), key=lambda x: x[1], reverse=True)[:10]
return {
"total_spending": round(total, 2),
"by_category": {k: round(v, 2) for k, v in sorted(categories.items(), key=lambda x: x[1], reverse=True)},
"category_counts": dict(category_count),
"top_merchants": [(m, round(a, 2)) for m, a in top_merchants],
"transactions": categorized,
}
def format_analysis(analysis: dict, period: str = "Current") -> str:
"""Format spending analysis for display."""
lines = [
f"=== Spending Analysis ({period}) ===",
"",
f" Total Spending: {analysis['total_spending']:>10,.2f} NIS",
"",
" By Category:",
f" {'Category':<25} {'Amount':>10} {'%':>5}",
f" {'─' * 45}",
]
total = analysis["total_spending"] or 1
for category, amount in analysis["by_category"].items():
en_name, he_name = CATEGORY_NAMES.get(category, (category, ""))
pct = amount / total * 100
label = f"{en_name} ({he_name})"
lines.append(f" {label:<25} {amount:>10,.2f} {pct:>4.1f}%")
lines.extend([
"",
" Top Merchants:",
f" {'Merchant':<30} {'Amount':>10}",
f" {'─' * 42}",
])
for merchant, amount in analysis["top_merchants"]:
lines.append(f" {merchant[:30]:<30} {amount:>10,.2f}")
return "\n".join(lines)
def generate_example_transactions() -> list[dict]:
"""Generate example Israeli transactions for testing."""
return [
{"date": "2026-01-03", "description": "Shufersal Deal", "amount": -450.00},
{"date": "2026-01-05", "description": "Rav-Kav Charge", "amount": -220.00},
{"date": "2026-01-06", "description": "Israel Electric Company", "amount": -380.00},
{"date": "2026-01-08", "description": "Rami Levy", "amount": -320.00},
{"date": "2026-01-10", "description": "Partner Communications", "amount": -99.00},
{"date": "2026-01-12", "description": "Arnona Payment", "amount": -850.00},
{"date": "2026-01-14", "description": "Netflix", "amount": -49.90},
{"date": "2026-01-15", "description": "Clalit Health Services", "amount": -120.00},
{"date": "2026-01-18", "description": "Sonol Fuel", "amount": -280.00},
{"date": "2026-01-20", "description": "Super Pharm", "amount": -95.00},
{"date": "2026-01-22", "description": "Shufersal Online", "amount": -510.00},
{"date": "2026-01-25", "description": "Harel Insurance", "amount": -450.00},
{"date": "2026-01-27", "description": "Pension Contribution", "amount": -1200.00},
{"date": "2026-01-28", "description": "Random Store", "amount": -150.00},
{"date": "2026-01-30", "description": "Yes Planet Cinema", "amount": -85.00},
]
def main():
"""Main entry point."""
parser = argparse.ArgumentParser(
description="Categorize Israeli bank transactions"
)
parser.add_argument("--json", type=str, help="JSON file with transactions")
parser.add_argument("--period", type=str, default="Current", help="Period label")
parser.add_argument(
"--example", action="store_true", help="Run with example transactions"
)
parser.add_argument(
"--output-json", action="store_true",
help="Output categorized transactions as JSON"
)
args = parser.parse_args()
if args.example:
transactions = generate_example_transactions()
analysis = analyze_transactions(transactions)
print(format_analysis(analysis, "January 2026 (Example)"))
return
if args.json:
try:
with open(args.json) as f:
transactions = json.load(f)
except FileNotFoundError:
print(f"Error: File not found: {args.json}")
sys.exit(1)
except json.JSONDecodeError as e:
print(f"Error: Invalid JSON: {e}")
sys.exit(1)
analysis = analyze_transactions(transactions)
if args.output_json:
print(json.dumps(analysis, indent=2, ensure_ascii=False))
else:
print(format_analysis(analysis, args.period))
return
parser.print_help()
if __name__ == "__main__":
main()
מחבר בנקאות ישראלי
הוראות
שלב 1: זיהוי בנקים מחוברים
תבדקו איזה שרת MCP זמין ואילו חשבונות מחוברים:
- israeli-bank-mcp: אינטגרציה ישירה עם scraper
- il-bank-mcp: מבוסס Docker עם ניתוח מתמשך
- אם אין MCP: הנחו את המשתמש לייבא CSV/Excel מאתר הבנק
שלב 2: שליפת תנועות
שליפת נתוני תנועות לתקופה המבוקשת:
- ברירת מחדל: החודש הנוכחי
- נתמך: עד 12 חודשים אחורה (תלוי בנק)
- כולל: חשבונות בנק וגם תנועות כרטיסי אשראי
שלב 3: סיווג וניתוח
יישום קטגוריות ייחודיות לישראל:
| קטגוריה | תרגום | דוגמאות |
|---|---|---|
| דיור | diur | שכירות, ארנונה, ועד בית |
| מזון | mazon | שופרסל, רמי לוי, ויקטורי |
| תחבורה | tahaburah | רב-קו, דלק, Gett |
| שירותים | shartuim | חברת חשמל, מקורות, בזק |
| בריאות | briut | קופת חולים, בית מרקחת |
| חינוך | chinuch | גן, בית ספר, קורסים |
| בילוי | bilui | מסעדות, קולנוע, סטרימינג |
| ביטוח | bituach | בריאות, רכב, דירה |
| חיסכון | chisachon | פנסיה, קרן השתלמות |
שלב 4: הצגת תובנות
הציגו: 1. סיכום הוצאות חודשי לפי קטגוריה 2. 10 בתי העסק המובילים לפי הוצאה 3. מגמות חודש מול חודש 4. חיובים חוזרים שזוהו 5. תנועות חריגות שסומנו
שלב 5: ייצוא למס (לפי בקשה)
עיצוב תנועות לצרכי מס ישראליים:
- הפרדה בין הוצאות עסקיות לפרטיות
- סימון רכישות שניתן לנכות מהן מע"מ
- ייצוא בפורמט תואם לתוכנות הנהלת חשבונות ישראליות
דוגמאות
דוגמה 1: סיכום הוצאות חודשי
המשתמש אומר: "הראה לי פירוט הוצאות לינואר" תוצאה: פירוט מסווג עם סכומים בשקלים לכל קטגוריה, בתי עסק מובילים, והשוואה לדצמבר.
דוגמה 2: ביקורת מנויים
המשתמש אומר: "אילו תשלומים חוזרים יש לי?" תוצאה: רשימת חיובים חוזרים שזוהו עם סכומים, תדירות, והצעות לחיסכון אפשרי.
דוגמה 3: ייצוא הוצאות למס
המשתמש אומר: "ייצא את ההוצאות העסקיות שלי לרואה חשבון" תוצאה: תנועות עסקיות מסוננות ומסווגות עם סכומי מע"מ, מוכנות לייבוא לתוכנת הנהלת חשבונות.
משאבים מצורפים
סקריפטים
scripts/categorize_transactions.py— מסווג תנועות בנקאיות ישראליות לפי קטגוריות הוצאה באמצעות התאמת דפוסי בתי עסק ישראליים (שופרסל, רמי לוי, רב-קו ועוד). מקבל JSON של תנועות ומפיק סיכומי הוצאות מסווגים. הרצה:python scripts/categorize_transactions.py --exampleלדוגמה, אוpython scripts/categorize_transactions.py --json transactions.jsonלנתונים אמיתיים. הוסיפו--output-jsonלפלט בפורמט JSON.
חומרי עזר
references/spending-categories.md— הגדרות קטגוריות הוצאה ישראליות עם מונחים בעברית ודוגמאות לבתי עסק נפוצים בכל קטגוריה (דיור, מזון, תחבורה, שירותים ועוד). היעזרו בקובץ זה בעת התאמת כללי סיווג או הסבר קטגוריות למשתמשים.references/supported-banks.md— רשימה מלאה של 14 בנקים (הפועלים, לאומי, דיסקונט, מרכנתיל, מזרחי-טפחות, הבינלאומי, אוצר החייל, פאג"י, איגוד, יהב, מסד, OneZero, בהצדעה, ביחד בשבילה) ו-4 חברות כרטיסי אשראי (ויזה כאל, מקס, ישראכרט, אמקס) על פי ה-CompanyTypesשל ספרייתisraeli-bank-scrapers, עם קודי בנק (בנק ישראל), מזהי scraper בספרייה, והערות כיסוי של שרתי MCP. היעזרו בקובץ בעת הגדרת חיבורים או טיפול בחשבונות חסרים.
קישורי עזר
| מקור | קישור | מה לבדוק |
|---|---|---|
| ספריית israeli-bank-scrapers | https://github.com/eshaham/israeli-bank-scrapers | רשימת הבנקים הנתמכים, שינויי שבירה, מגבלות הסקרייפר |
| israeli-bank-mcp (Motti Bechhofer) | https://github.com/mottibec/israeli-bank-mcp | עטיפת MCP מקיפה ביותר, התקנה והגדרות |
| il-bank-mcp (Gilad Lekner) | https://github.com/glekner/il-bank-mcp | MCP מבוסס Docker עם ניתוח הוצאות מובנה ואחסון SQLite |
| בנק ישראל: בנקאות ותשלומים לצרכן | https://www.boi.org.il/information/bank-paymnts/ | מידע צרכני, פניות ותלונות לפיקוח על הבנקים |
| בנק ישראל: קודי זיהוי בנקים | https://www.boi.org.il/en/economic-roles/supervision-and-regulation/payment-systems-oversight/access-to-payment-systems/identification-codes/ | רשימת קודי הזיהוי הקאנונית של בנק ישראל (באנגלית) |
מלכודות נפוצות
- רגולציית הבנקאות הפתוחה בישראל מבוססת על מסגרת Berlin Group NextGenPSD2 אך מותאמת לישראל עם לוח זמנים ויישום ייחודיים. הפריסה המלאה בכל הבנקים עדיין בתהליך (נכון ל-2026). סוכנים עלולים להפנות ל-endpoints של UK Open Banking או PSD2 גנרי שלא קיימים בישראל. בפועל, israeli-bank-scrapers משתמש בגרידת דפדפן ולא ב-APIs רשמיים של בנקאות פתוחה.
- לאומי, הפועלים, דיסקונט, מזרחי-טפחות ובינלאומי ראשון, לכל אחד מימוש API שונה. אין API אחיד אחד לכל הבנקים הישראליים.
- מרכנתיל ואוצר החייל הם סקרייפרים נפרדים בספריית upstream גם שהם בנות-חברה של דיסקונט והבינלאומי בהתאמה. תתייחסו אליהם כחיבור עצמאי (לכל אחד שדות התחברות משלו). אל תניחו שהאישורים של דיסקונט תקפים למרכנתיל, או שהאישורים של הבינלאומי תקפים לאוצר החייל.
- עומק היסטוריית התנועות תלוי בנק. הפועלים ולאומי לרוב חושפים פחות מ-12 חודשים דרך scraping; בנקים מקבוצת הבינלאומי (הבינלאומי, אוצר החייל, פאג"י) לרוב חושפים 12+ חודשים. "עד 12 חודשים" הוא תקרה, לא הבטחה.
- מספרי חשבון בנק ישראליים כוללים מספר סניף (סניף) כתחילית. סוכנים עלולים לאמת מספרי חשבון בפורמט IBAN בינלאומי, אבל העברות מקומיות בישראל משתמשות בפורמט סניף+חשבון.
- דפי כרטיס אשראי בישראל מופקים על ידי חברות נפרדות (ישראכרט, מקס, כאל) ולא ישירות על ידי הבנקים. סוכנים עלולים לנסות למשוך נתוני אשראי מה-API של הבנק במקום מחברת הכרטיסים.
פתרון בעיות
שגיאה: "2FA required"
סיבה: בנקים ישראליים דורשים אימות דו-שלבי פתרון: השלימו את האימות הדו-שלבי דרך האפליקציה/SMS של הבנק כששרת ה-MCP מבקש זאת. מדובר בהגדרה חד-פעמית לכל סשן.
שגיאה: "Scraper timeout"
סיבה: אתר הבנק איטי או חוסם גישה אוטומטית פתרון: נסו שוב אחרי כמה דקות. אם הבעיה נמשכת, תבדקו את ה-issues ב-GitHub של israeli-bank-scrapers לבעיות ידועות ספציפיות לבנק.
שגיאה: "Missing credit card transactions"
סיבה: חברת כרטיסי האשראי נפרדת מהבנק בישראל פתרון: הוסיפו את חברת כרטיסי האשראי (ויזה כאל, מקס, ישראכרט) כחיבור נפרד בהגדרות שרת ה-MCP.
Related skills
FAQ
Is Israeli Bank Connector safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.