BankConv MCP server
Converts PDF bank and credit card statements on your computer into transactions or accounting files via BankConv, and manages those conversions.
Convert a statement PDF (
convert_statement): uploads a PDF (optionally password-protected) and waits for conversion; returns transactions as JSON (ISO date, description, signed amount, running balance) or saves a file.Output formats: CSV, OFX (Xero, Sage, MYOB, QuickBooks Online), QFX (Quicken), QBO (QuickBooks Desktop Web Connect) and Xero CSV, saved next to the PDF or to a chosen path.
Get transactions later (
get_transactions): retrieve rows from an earlier conversion by its id, read-only and uses no pages.Download a conversion (
download_statement): save an earlier conversion as any supported file format, defaulting to Downloads.List conversions (
list_conversions): see recent conversions newest first with id, status, file name, page count and upload time; filter by status.Check page balance (
get_credits): see how many pages remain this billing period (one page per PDF page).Error reporting: clear codes like
not_found,gone,unreadable_statementandinsufficient_credits.
Provides export of converted bank statements as OFX files for import into MYOB.
Provides export of converted bank statements as QBO files for QuickBooks Desktop Web Connect and OFX files for QuickBooks Online, including the bank's QuickBooks ID.
Provides export of converted bank statements as OFX files for import into Sage.
Provides export of converted bank statements as OFX and Xero CSV files compatible with Xero's import columns.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BankConv MCP serverConvert ~/Downloads/chase-september.pdf to QBO for QuickBooks."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
BankConv MCP server
Convert PDF bank statements into transactions, CSV, OFX, QFX, QBO or Xero CSV from Claude, Cursor, VS Code and other AI assistants.
Point your assistant at a statement on your computer and ask for what you need: the transactions to analyse, a CSV, or a file your accounting software imports. The server uploads the PDF to BankConv, waits for the conversion and either returns the transactions or saves the file next to the PDF.
You: Convert ~/Downloads/chase-september.pdf to QBO for QuickBooks Desktop.
Assistant: Saved QBO to ~/Downloads/chase-september.qbo.What you get
Transactions with real dates, one signed amount (money in positive, money out negative) and the running balance. Opening balance and total lines are left out.
Files: CSV, OFX (Xero, Sage, MYOB, QuickBooks Online), QFX (Quicken), QBO (QuickBooks Desktop Web Connect, with your bank's QuickBooks ID) and Xero CSV (Xero's own columns).
Password-protected PDFs, scanned statements and multi-page statements.
Related MCP server: CapyParse MCP Server
Setup
Create an API key in BankConv under Team → API keys (https://app.bankconv.com/teams/api-keys). Conversions use pages from your BankConv plan.
Add the server to your assistant with the key in
BANKCONV_API_KEY.
Claude Code
claude mcp add bankconv -e BANKCONV_API_KEY=sk_live_your_key -- npx -y bankconv-mcpClaude Desktop
One click: download bankconv.mcpb and open it. Claude Desktop installs the server and asks for your API key.
Or add this to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"bankconv": {
"command": "npx",
"args": ["-y", "bankconv-mcp"],
"env": { "BANKCONV_API_KEY": "sk_live_your_key" }
}
}
}Cursor, Windsurf and other clients
Use the same command, args and env in the client's MCP settings (for Cursor, ~/.cursor/mcp.json).
VS Code
{
"servers": {
"bankconv": {
"command": "npx",
"args": ["-y", "bankconv-mcp"],
"env": { "BANKCONV_API_KEY": "sk_live_your_key" }
}
}
}Requires Node.js 20 or later.
Tools
Tool | What it does |
| Convert a PDF on this computer. Returns the transactions, or saves CSV, OFX, QFX, QBO or Xero CSV (next to the PDF unless you give |
| Get the transactions of an earlier conversion. |
| Save an earlier conversion as CSV, OFX, QFX, QBO or Xero CSV (in Downloads unless you say where). |
| List recent conversions with their status. |
| Check how many pages are left this billing period. |
Example prompts
"Convert
statement.pdfand tell me my five biggest expenses.""Turn every PDF in
~/Statements/2026into OFX files for Xero.""Convert
amex-march.pdfto QBO for QuickBooks Desktop. The PDF password is 4821.""Total my September spending by category from
chase-sep.pdf."
Agent skill
For agents without MCP support, skills/bankconv/SKILL.md teaches the same workflow through the REST API with curl.
Privacy
The PDF is uploaded to BankConv over HTTPS and processed there. The PDF and its converted files are deleted automatically after 24 hours, or 48 or 72 hours if your team chose a longer window; see security and data handling. The server only reads the files you name and only writes the files you ask for.
Configuration
Variable | Default | |
| (required) | Your BankConv API key |
|
| API base URL |
Links
License
MIT
Available Tools
5 toolsconvert_statementConvert a bank statement PDFA
Convert a PDF bank or credit card statement on this computer with BankConv. Use this for a new PDF; for a statement converted earlier, use get_transactions or download_statement with its conversion id (list_conversions finds it). With output "transactions" (the default) it returns a summary and every transaction as JSON: ISO date, description, signed amount (money in positive), running balance; opening balances and totals are left out. Any other output saves that file and returns only its path and any warnings. csv: the statement as a spreadsheet; ofx: Xero, Sage, MYOB, QuickBooks Online; qfx: Quicken; qbo: QuickBooks Desktop (Web Connect); xero: Xero CSV with Xero's own columns. Uploading uses one BankConv page per PDF page. Waits until the conversion finishes. Errors say what went wrong: not_found for an unknown conversion id, gone once a conversion was deleted under data retention (24 hours by default), unreadable_statement when the tables can't be read as transactions (the message names the row), insufficient_credits when the account has too few pages.
| Name | Required | Description | Default |
|---|---|---|---|
| output | No | "transactions" returns the rows to you; any other value saves that file. csv: the statement as a spreadsheet; ofx: Xero, Sage, MYOB, QuickBooks Online; qfx: Quicken; qbo: QuickBooks Desktop (Web Connect); xero: Xero CSV with Xero's own columns. | transactions |
| save_to | No | For file outputs: a file path or folder. Defaults to the PDF's folder, named after the PDF. An existing file at that path is overwritten. | |
| password | No | The PDF password, if the statement is password-protected. | |
| file_path | Yes | Path to the PDF statement on this computer. | |
| timeout_seconds | No | How long to wait for the conversion. On timeout the conversion keeps running; fetch it later with its conversion id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, but the description does not mention that save_to overwrites an existing file — that destructive side effect is disclosed only in the input schema, and nothing in the description acknowledges it. On the other hand, the description does add genuinely behavioral context the annotations cannot convey: it blocks until the conversion finishes, and it bills one BankConv page per PDF page. The pagination cost is useful, but the gap on the overwrite risk against a false destructiveHint keeps this at 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with purpose and sibling routing before the output-mode list, and there is no filler. It is a long, dense block of comma-spliced clauses, but each sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values — and it does, naming the returned fields and the saved-file path plus warnings for file outputs. But it never says what the returned 'summary' contains, and it omits the overwrite behavior of save_to. Good coverage of errors and timing, with a real gap in the default-return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description's recap of output modes largely restates what the enum description already says. What it does add — that output="transactions" returns structured JSON, that every other value saves a file — is real semantics, but the save_to, password and timeout_seconds parameters are left entirely to the schema. With the schema doing the heavy lifting, a 3 is fair.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Convert a PDF bank or credit card statement on this computer with BankConv') and immediately distinguishes itself from the siblings that handle already-converted statements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this tool for a new PDF and to use get_transactions or download_statement with a conversion id for one converted earlier, naming list_conversions as the way to find that id. The when-not path and the alternatives are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_statementSave a conversion as a fileA
Save an earlier BankConv conversion as a file on this computer, by its conversion id (from convert_statement or list_conversions). Returns the saved path and any warnings (for example a bank QuickBooks doesn't list), not the file contents. Uses no pages. csv: the statement as a spreadsheet; ofx: Xero, Sage, MYOB, QuickBooks Online; qfx: Quicken; qbo: QuickBooks Desktop (Web Connect); xero: Xero CSV with Xero's own columns. Errors say what went wrong: not_found for an unknown conversion id, gone once a conversion was deleted under data retention (24 hours by default), unreadable_statement when the tables can't be read as transactions (the message names the row), insufficient_credits when the account has too few pages.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | csv: the statement as a spreadsheet; ofx: Xero, Sage, MYOB, QuickBooks Online; qfx: Quicken; qbo: QuickBooks Desktop (Web Connect); xero: Xero CSV with Xero's own columns. | |
| tables | No | Advanced: which tables to read, as page:table indexes from 0 ("0:1,1:0"). Leave out and BankConv picks the transaction tables. | |
| save_to | No | A file path or folder. Defaults to the Downloads folder (or the home folder), named after the original PDF. An existing file at that path is overwritten. | |
| conversion_id | Yes | The conversion id, as returned by convert_statement or list_conversions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses the return shape (saved path plus warnings, NOT file contents), that no pages/credits are consumed, the 24-hour data-retention expiry, and four named error codes with the condition that triggers each. That is exactly the mutation/extension context the readOnlyHint=false / openWorldHint=true annotations leave unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and id source, then return shape, then formats, then errors — a sensible order. It is somewhat dense and duplicates the format enum strings already present in the schema, which is the one wasted block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in to describe the return value (path plus warnings, not contents) and enumerates the failure modes an agent must handle. For a 4-param file-writing tool that is sufficient to invoke and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters, including the format enum and save_to's overwrite behavior. The description's format list is a near-verbatim restatement of the schema enum text and adds no syntax or defaults beyond it — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opening clause states a specific verb and resource — 'Save an earlier BankConv conversion as a file on this computer' — and immediately disambiguates from convert_statement (which produces the conversion) and list_conversions (which supplies ids). An agent can tell exactly which sibling this is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames this as a second step ('an earlier conversion', id from convert_statement or list_conversions), so the workflow position is explicit. It stops short of stating exclusions, e.g. that this cannot reproduce an expired conversion except via the 'gone' error note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_creditsCheck the page balanceARead-only
Check how many BankConv pages the account has left in the current period, as JSON. Each PDF page uses one page, so check before converting a large batch. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the trailing 'Read-only' is redundant with structured data. The description does add one genuinely useful behavioral fact — that each PDF page consumes one credit and the balance is scoped to the current period — but says nothing about what happens when the balance hits zero, when the period resets, or the response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information (what it returns, how credits are consumed, why it matters). The purpose is front-loaded and there is no filler beyond the redundant 'Read-only'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read with no output schema, the description covers what is being measured, the units, and the reason to call it. Only the JSON shape and exhausted-quota behavior are left implicit, which is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate; baseline 4 applies. The description cannot and need not add parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (check remaining BankConv pages), the quota unit (one PDF page = one page), and the period scope (current period). It is clearly distinguishable from the sibling conversion/download tools, though it does not name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage trigger: check before converting a large batch, which implicitly routes the agent from convert_statement to this tool first. There are no explicit exclusions or named alternatives, but the decision context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionsGet the transactions of a conversionARead-only
Get the transactions of an earlier BankConv conversion by its conversion id (from convert_statement or list_conversions): ISO date, description, signed amount (money in positive) and running balance, with the bank, account, period and currency. Read-only; uses no pages. To save a file instead, use download_statement. Errors say what went wrong: not_found for an unknown conversion id, gone once a conversion was deleted under data retention (24 hours by default), unreadable_statement when the tables can't be read as transactions (the message names the row), insufficient_credits when the account has too few pages.
| Name | Required | Description | Default |
|---|---|---|---|
| tables | No | Advanced: which tables to read, as page:table indexes from 0 ("0:1,1:0"). Leave out and BankConv picks the transaction tables. | |
| conversion_id | Yes | The conversion id, as returned by convert_statement or list_conversions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint and openWorldHint, but the description adds real value beyond them: no page consumption, the 24-hour retention window that makes a conversion 'gone', and four named error codes including insufficient_credits. This is strong disclosure; only minor gap is no note on result size or ordering guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, followed by return shape, the alternative, and errors. The error enumeration runs long in a single sentence, but every item is actionable, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must describe the return payload, and it does: date, description, signed amount, running balance, plus bank, account, period and currency. Combined with error codes and retention behavior, an agent has enough to call and interpret results; only edge cases like empty conversions or pagination are unaddressed (and pagination is stated as not applicable).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, and the description only repeats the conversion_id provenance. It adds nothing about the advanced 'tables' parameter's page:table syntax or when to override the default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get the transactions of a conversion) plus the identifier used to locate it, and names the sibling tools that produce that id (convert_statement or list_conversions). An agent can distinguish this from list_conversions and download_statement without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says where conversion_id comes from and names the alternative for a different goal: 'To save a file instead, use download_statement.' That is a clear positive routing instruction with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversionsList recent conversionsARead-only
List the BankConv account's recent conversions, newest first, one line each: conversion id, status, file name, page count and upload time. Use it to find the id of an earlier conversion for get_transactions or download_statement, or to check on one still processing. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many conversions to list, 1 to 100. | |
| status | No | Only list conversions with this status. no_credits means it waits for pages; failed means the PDF couldn't be converted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses ordering (newest first), the one-line-per-item return shape and the specific fields returned, which is real value since there is no output schema. 'Read-only' merely restates readOnlyHint and the 'recent' window is never quantified, so it falls just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, then the use cases. Every clause carries information; nothing is redundant except the short 'Read-only' tag.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully spells out the returned fields and ordering, which covers the main completeness gap. Minor omissions remain: how 'recent' is bounded and what happens past the 100-item cap, though the limit parameter largely addresses the latter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters fully described (including the enum semantics for status), so the schema does the heavy lifting. The description does not mention limit or status filtering at all, leaving no added meaning beyond the structured fields — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the BankConv account's recent conversions') plus sorting ('newest first') and per-item fields returned. That scope makes it clearly distinct from convert_statement, get_transactions and download_statement without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases — find a conversion id to feed get_transactions or download_statement, or check on a still-processing conversion — and names the sibling tools it precedes. The agent knows exactly when to reach for it rather than a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.1- Changed
convert_statement2 fields changed- changed
Input schema / properties / save_to / descriptionPrevious value: -"For file outputs: a file path or folder. Defaults to the PDF's folder."New value: +"For file outputs: a file path or folder. Defaults to the PDF's folder, named after the PDF. An existing file at that path is overwritten." - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"How long to wait for the conversion."New value: +"How long to wait for the conversion. On timeout the conversion keeps running; fetch it later with its conversion id."
- Changed
download_statement2 fields changed- changed
Input schema / properties / conversion_id / descriptionPrevious value: -"The conversion id."New value: +"The conversion id, as returned by convert_statement or list_conversions." - changed
Input schema / properties / save_to / descriptionPrevious value: -"A file path or folder. Defaults to the current folder."New value: +"A file path or folder. Defaults to the Downloads folder (or the home folder), named after the original PDF. An existing file at that path is overwritten."
- Changed
get_transactions1 field changed- changed
Input schema / properties / conversion_id / descriptionPrevious value: -"The conversion id."New value: +"The conversion id, as returned by convert_statement or list_conversions."
- Changed
list_conversions2 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"How many conversions to list, 1 to 100." - added
Input schema / properties / status / descriptionAdded value: +"Only list conversions with this status. no_credits means it waits for pages; failed means the PDF couldn't be converted."
5 tool updates
v0.1.0- First observed
convert_statement - First observed
download_statement - First observed
get_credits - First observed
get_transactions - First observed
list_conversions
TDQS
Scored across 5 tools
The five tools mostly target distinct actions: convert a new PDF, retrieve transactions from an earlier conversion, download an earlier conversion, list conversions, and check credits. The main overlap is that convert_statement can also return transactions or save files, which could be confused with get_transactions/download_statement, but the descriptions clearly separate new versus earlier conversions.
All tool names follow a consistent snake_case verb_noun pattern: convert_statement, get_transactions, download_statement, list_conversions, get_credits. There are no mixed styles or ambiguous naming conventions.
Five tools is a well-scoped set for a bank statement conversion service. Each tool earns its place by covering a distinct part of the workflow: conversion, transaction retrieval, file download, conversion listing, and credit checking.
The surface covers the full core lifecycle: checking credits, converting a new statement, listing past conversions, retrieving transactions from them, and downloading saved outputs. No obvious operational gaps remain for the stated purpose, and automatic retention deletion means an explicit delete tool is not necessary.
Maintenance
Related MCP Connectors
Convert PDF bank statements into structured transactions, accounts, and balances.
Turn bank statement PDFs, CSVs, XLSX and OFX into categorised transactions plus a summary.
Bank statement PDFs become CSV or JSON transactions with dates, amounts and balances.
Convert PDF bank statements to checked Excel, CSV or JSON with balance validation.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides PDF analysis, data extraction, form filling, and comparison capabilities for Claude and Cursor, supporting both text and scanned documents with OCR.4 npm1MIT
- AlicenseAqualityDmaintenanceConverts PDF bank statements into structured data (Markdown, JSON, CSV, JSONL) with verified transactions and balance checks, enabling agents to audit numbers.510 npmMIT

bankstatementlyofficial
AlicenseAqualityBmaintenanceParse and query bank statements — turn PDF statements into structured transactions, accounts, and balances, with balance-reconciliation checks. A deterministic financial memory for AI agents, served as a hosted streamable-HTTP endpoint (API key or OAuth).181MIT- AlicenseAqualityCmaintenanceConverts customer-supplied PDF bank statements into checked Excel, CSV, or JSON with balance validation. Runs locally with your own MainBook API key or against MainBook's hosted endpoint, and it never connects to bank accounts.5MIT