Bank statement to spreadsheet
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user attaches a bank or credit card statement (text PDF, or the bank's CSV/Excel export) and wants it converted to Excel or CSV: "convert bank statement to excel", "bank statement pdf to csv", "import my statement into QuickBooks", "does my statement balance". Extracts each transaction (date, description, signed amount, running balance), reconciles opening + transactions = closing to the cent, points to missing or duplicated rows, suggests categories, and returns Excel, CSV and QuickBooks CSV downloads. Does not read scanned images (needs OCR first), does not connect to bank accounts, and is not for non-financial PDFs or general PDF editing.
The statement to convert: a text PDF downloaded from the bank or card website, or the bank's CSV or Excel (.xlsx) transaction export, e.g. september-statement.pdf.
Order of numeric dates in a CSV/Excel export: MDY (US, 09/02/2026, default) or DMY (02/09/2026). Detected automatically when a day is above 12.
Only for CSV/Excel exports that list purchases as positive and payments as negative (common in credit card exports): true flips each amount so money out is negative. Default false.
auto (default): a PDF is classified from its text; pasted rows and CSV/Excel exports count as bank unless the balances or the sign pattern show a credit card (the result says so). bank: checking or savings. credit_card: charges are money out and the statement shows a previous and new balance owed. Example: credit_card.
Closing year of the statement, used for dates printed without a year when the period is not on the file, e.g. 2026 (a December-January statement uses the January year).
Closing (ending or new) balance in dollars, e.g. 5034.47. Used with opening_balance to prove the total to the cent.
Opening (beginning or previous) balance in dollars, e.g. 4123.55. Only needed when the file has none, such as a CSV export without a balance column, or to override.
Use this when the user attaches a bank or credit card statement (text PDF, or the bank's CSV/Excel export) and wants it converted to Excel or CSV: "convert bank statement to excel", "bank statement pdf to csv", "import my statement into QuickBooks", "does my statement balance". Extracts each transaction (date, description, signed amount, running balance), reconciles opening + transactions = closing to the cent, points to missing or duplicated rows, suggests categories, and returns Excel, CSV and QuickBooks CSV downloads. Does not read scanned images (needs OCR first), does not connect to bank accounts, and is not for non-financial PDFs or general PDF editing.
| Argument | Type | Description |
|---|---|---|
| file* | object | The statement to convert: a text PDF downloaded from the bank or card website, or the bank's CSV or Excel (.xlsx) transaction export, e.g. september-statement.pdf. |
| date_order | string | Order of numeric dates in a CSV/Excel export: MDY (US, 09/02/2026, default) or DMY (02/09/2026). Detected automatically when a day is above 12. |
| flip_signs | boolean | Only for CSV/Excel exports that list purchases as positive and payments as negative (common in credit card exports): true flips each amount so money out is negative. Default false. |
| account_type | string | auto (default): a PDF is classified from its text; pasted rows and CSV/Excel exports count as bank unless the balances or the sign pattern show a credit card (the result says so). bank: checking or savings. credit_card: charges are money out and the statement shows a previous and new balance owed. Example: credit_card. |
| statement_year | integer | Closing year of the statement, used for dates printed without a year when the period is not on the file, e.g. 2026 (a December-January statement uses the January year). |
| closing_balance | number | Closing (ending or new) balance in dollars, e.g. 5034.47. Used with opening_balance to prove the total to the cent. |
| opening_balance | number | Opening (beginning or previous) balance in dollars, e.g. 4123.55. Only needed when the file has none, such as a CSV export without a balance column, or to override. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
},
"description": "The statement to convert: a text PDF downloaded from the bank or card website, or the bank's CSV or Excel (.xlsx) transaction export, e.g. september-statement.pdf."
},
"date_order": {
"enum": [
"MDY",
"DMY"
],
"type": "string",
"description": "Order of numeric dates in a CSV/Excel export: MDY (US, 09/02/2026, default) or DMY (02/09/2026). Detected automatically when a day is above 12."
},
"flip_signs": {
"type": "boolean",
"description": "Only for CSV/Excel exports that list purchases as positive and payments as negative (common in credit card exports): true flips each amount so money out is negative. Default false."
},
"account_type": {
"enum": [
"auto",
"bank",
"credit_card"
],
"type": "string",
"description": "auto (default): a PDF is classified from its text; pasted rows and CSV/Excel exports count as bank unless the balances or the sign pattern show a credit card (the result says so). bank: checking or savings. credit_card: charges are money out and the statement shows a previous and new balance owed. Example: credit_card."
},
"statement_year": {
"type": "integer",
"maximum": 2100,
"minimum": 1990,
"description": "Closing year of the statement, used for dates printed without a year when the period is not on the file, e.g. 2026 (a December-January statement uses the January year)."
},
"closing_balance": {
"type": "number",
"maximum": 10000000000,
"minimum": -10000000000,
"description": "Closing (ending or new) balance in dollars, e.g. 5034.47. Used with opening_balance to prove the total to the cent."
},
"opening_balance": {
"type": "number",
"maximum": 10000000000,
"minimum": -10000000000,
"description": "Opening (beginning or previous) balance in dollars, e.g. 4123.55. Only needed when the file has none, such as a CSV export without a balance column, or to override."
}
}
}Use this when the user pastes or lists bank or credit card transactions (date, description, amount) and wants them reconciled, totaled by month or category, or exported: "does my statement balance", "money in and out by month", "categorize these transactions", "make a QuickBooks CSV from these". Checks opening + transactions = closing to the cent and the running balance row by row, points to the rows that break it, suggests categories, and returns Excel, CSV and QuickBooks CSV downloads. Do not use when a statement file is attached (use convert_bank_statement); does not give tax or accounting advice.
| Argument | Type | Description |
|---|---|---|
| account_type | string | auto (default): a PDF is classified from its text; pasted rows and CSV/Excel exports count as bank unless the balances or the sign pattern show a credit card (the result says so). bank: checking or savings. credit_card: charges are money out and the statement shows a previous and new balance owed. Example: credit_card. |
| transactions* | array | The transactions in statement order, e.g. [{"date":"2026-09-02","description":"PAYROLL ACME INC","amount":2450}, {"date":"2026-09-03","description":"GREENLEAF MARKET","amount":-82.17}]. |
| statement_year | integer | Closing year of the statement, used for dates printed without a year when the period is not on the file, e.g. 2026 (a December-January statement uses the January year). |
| closing_balance | number | Closing (ending or new) balance in dollars, e.g. 5034.47. Used with opening_balance to prove the total to the cent. |
| opening_balance | number | Opening (beginning or previous) balance in dollars, e.g. 4123.55. Only needed when the file has none, such as a CSV export without a balance column, or to override. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"transactions"
],
"properties": {
"account_type": {
"enum": [
"auto",
"bank",
"credit_card"
],
"type": "string",
"description": "auto (default): a PDF is classified from its text; pasted rows and CSV/Excel exports count as bank unless the balances or the sign pattern show a credit card (the result says so). bank: checking or savings. credit_card: charges are money out and the statement shows a previous and new balance owed. Example: credit_card."
},
"transactions": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"description",
"amount"
],
"properties": {
"date": {
"type": "string",
"maxLength": 40,
"description": "Transaction date, e.g. 2026-09-02, 09/02/2026, or 09/02 with statement_year."
},
"amount": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Signed amount in dollars: money in positive, money out negative, e.g. -45.10. For credit cards, charges negative and payments positive."
},
"balance": {
"type": "number",
"maximum": 10000000000,
"minimum": -10000000000,
"description": "Running balance after this row if the statement shows one, e.g. 4078.45."
},
"description": {
"type": "string",
"maxLength": 300,
"description": "Payee or description as printed, e.g. PAYROLL DEPOSIT ACME INC."
}
}
},
"maxItems": 5000,
"minItems": 1,
"description": "The transactions in statement order, e.g. [{\"date\":\"2026-09-02\",\"description\":\"PAYROLL ACME INC\",\"amount\":2450}, {\"date\":\"2026-09-03\",\"description\":\"GREENLEAF MARKET\",\"amount\":-82.17}]."
},
"statement_year": {
"type": "integer",
"maximum": 2100,
"minimum": 1990,
"description": "Closing year of the statement, used for dates printed without a year when the period is not on the file, e.g. 2026 (a December-January statement uses the January year)."
},
"closing_balance": {
"type": "number",
"maximum": 10000000000,
"minimum": -10000000000,
"description": "Closing (ending or new) balance in dollars, e.g. 5034.47. Used with opening_balance to prove the total to the cent."
},
"opening_balance": {
"type": "number",
"maximum": 10000000000,
"minimum": -10000000000,
"description": "Opening (beginning or previous) balance in dollars, e.g. 4123.55. Only needed when the file has none, such as a CSV export without a balance column, or to override."
}
}
}