Integration details
Description
Finom is a business finance platform for SMEs and freelancers across Europe, combining a business account, invoicing, expense management, and accounting in one place. This connector gives ChatGPT access to your Finom business data. Ask about transactions and spending across your accounts, look up invoices and payment status, review card activity, and check bookkeeping records and tax deadlines. You need an active Finom account to use this connector. Access is limited to the companies your account is authorized for, and you approve access through Finom’s standard sign-in.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Accounting & Bookkeeping
- Secondary Subcategories
- None listed
- Brand
- Finom
- Access
- Account required
- First tracked
- 2026-09-13
- Tool count
- 15
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competing in ChatGPT Accounting & Bookkeeping
View Category15 tools agents can invoke
Returns the benefit plan and the included benefit codes for ONE specific card. Use when the user asks what benefits their card has — lounge access, eSIM, FastTrack, FX-fee discount, cashback tier — or to confirm plan membership for a card. Pick between same-MCP tools: for card status / limits / options / settings (anything that is NOT a benefit) use bank.getCardDetails — this tool only returns the benefit plan and benefit codes. To LIST cards use bank.searchCards or bank.getLastActiveCards. Read-only: does NOT modify card settings, upgrade plans, or grant benefits.
bank__getCardBenefits
Reads the full detail of ONE specific card identified by id. Use when the user asks about a single card's spending limit, whether ATM withdrawal / foreign payments / online payments are enabled, why a card is frozen, expiry, delivery, or any other single-card question. This is also the tool for VERIFY / reassurance checks about what a card can currently do — 'can I still withdraw cash / pay online / pay abroad?', 'make sure I can still ...', 'is X on?' — answer those by reading here, never by opening a change confirmation. Card-failure diagnostics belong here too, NOT the knowledge base: 'why can't I withdraw cash / pay / use my card?', 'my ATM withdrawal / payment was declined', 'it didn't work' — including when the user names the SURFACE rather than the card: Apple Pay / Google Pay reporting the card as unavailable, a subscription or recurring charge that stopped, a terminal or online merchant that refused it. A wallet, a subscription or a merchant failing is still a CARD symptom: read the card here BEFORE advising anything about the wallet, the merchant or the app. Answer from the cause the DATA proves: status (frozen, blocked, expired, not yet activated, or issuer-frozen — relay `statusMessage` when present), a capability switched off (ATM withdrawals, online, abroad), a virtual card with no PIN set (`needSetPin`), or the ATM withdrawal COUNT exhausted (`withdrawalsCount` vs `withdrawalsCountLimit`). This tool does NOT expose consumed spend/withdrawal amounts, so never assert an amount limit is 'reached' from here: if none of the provable causes fit and the question is about SPENDING, compare `paymentsAmount` vs the monthly limit via bank.searchCards WHEN that figure is populated; for a withdrawal-amount or daily / per-transaction cap (consumption not exposed) name the configured limit as a possible cause, don't claim it is hit. If the card is active, within its limits and fully enabled — i.e. its data does not explain the failure — say so and direct the user to the Finom app / support rather than inventing a reason. Do not hand the user generic help-article text. If no specific card id is known yet, enumerate with bank.searchCards and read the single match here, or ask which card if several — scope that search to the caller only while no card has been named; once the user names one (last four digits, card name, id), search unscoped, or a card they issued to a team member comes back as not found. Pick between same-MCP tools: for benefit-bundle inclusion (lounge / eSIM / FastTrack / cashback tier) use bank.getCardBenefits — it returns the plan and benefit codes, this tool does not. To LIST or FILTER cards (e.g. 'show all frozen cards') use bank.searchCards; for a recently-used overview use bank.getLastActiveCards — this tool is single-card lookup by id only. Read-only: does NOT modify settings, change PIN, block, freeze, unfreeze, or reissue — freezing, unfreezing and permanently blocking a card are separate write actions outside this tool; a permanent block is irreversible and is the wrong choice when the user may only want a temporary stop. PIN, reissue, and unrecognised-payment workflows are not available in chat — direct the user to the Finom app.
bank__getCardDetails
Read-only. Returns what card the authenticated user can order right now, for THEMSELVES: whether ordering is currently possible at all (canOrder) and, if blocked, the human-readable reason (blockReason); which card types are available (Virtual / Physical) with per-type availability; benefit plans (standard / prime / metal) with prices; delivery options (physical only); and the card-eligible wallets the card can be linked to — a company may have SEVERAL, so read `wallets` as a list (each with its name, currency and whether it is the main account) rather than assuming the card goes to the main one. Call this BEFORE placing a card order, to decide whether ordering is possible and with which parameters and to explain to the user what is or isn't available. Pick between same-MCP tools: to LIST or read EXISTING cards use bank.searchCards / bank.getLastActiveCards / bank.getCardDetails — this tool is about ordering a NEW card, not existing ones. Placing the order itself is a separate write action that takes the values returned here. Does NOT create, order, or change anything, and covers ordering for the caller only (not other team members).
bank__getCardOrderingOptions
Use when the user asks how much cashback their company has accumulated. Returns the current accumulated cashback balance for the WHOLE authenticated company (not per-card, not per-period). Available to the account owner only — for other team members the call fails with InsufficientPermissions. Company-wide aggregate only — per-card information (status / limits / benefit plan) is NOT available here (that belongs to the cards domain). Withdrawing the accumulated cashback to the company's main wallet is a separate write action outside this tool; the balance read here is the amount such a withdrawal would move. Read-only: does NOT modify cashback balances, redeem rewards, or create invoices.
reward__getCashback
Returns the company's most-recently-used cards, sorted by `lastTransactionDate` descending, plus a separate list of cards that are not yet usable (being produced or awaiting activation). Use for an overview widget — 'show my recently used cards', 'which cards have I used lately', or a default card-list home view. Pick between same-MCP tools: for a FILTERED or PAGINATED card list (by status, type, wallet, team member) use bank.searchCards. For one specific card's full details (balance, all limits, all options) use bank.getCardDetails. For a card's benefit plan use bank.getCardBenefits. Read-only: does NOT create, update, freeze, block, or delete cards.
bank__getLastActiveCards
Fetches full details for a batch of invoices by id. All ids must belong to the same Source (`Invoicing` OR `Reconciliation`) — group the rows returned by `search_invoices` by their `Source` and call this tool once per group. Every invoice has the same shape regardless of source; fields that don't apply to a given invoice are null, so don't expect every field on every row. The response may include a warning field. Limit: 25 ids per call — chunk larger inputs and re-issue. A requested id missing from the response means the invoice doesn't exist, is not accessible, or didn't match (e.g. a Reconciliation row that is not fully recognized). This is a keyed batch lookup, not a sorted list: rows come back in no guaranteed order and pagination does not apply — correlate each row to your requested ids by `InvoiceId`. Do NOT use this to search or list invoices — use `search_invoices`. It returns structured invoice fields, not document content: no PDF bytes and no rendered preview. Read-only.
invoicing__get_invoice_details
Returns one transaction of the user's current company looked up by its id; returns the same fields as listTransactions for that single transaction, or null when no such transaction is visible to the company. Use when the user asks about one specific transaction, including 'where is my transaction now' (read the 'status' field). Do not speculate about WHY a transaction is delayed — that needs compliance/AML investigation outside this tool. Covers payments only, so the id of an invoice that is still outstanding returns null. Not for listing or filtering multiple transactions — use listTransactions. Not for aggregated totals — use sumTransactions. Read-only: this tool does not change any data.
transactions__getTransactionDetails
Lists transactions of the user's current company, newest first (ordered by execution date, descending). Use when the user wants to see, find or filter transactions — e.g. 'last/most recent transaction' (set limit=1), 'last 3 transactions' (set limit=3), or transactions by date, recipient, status or direction. Returns a page of transaction items plus a 'limitReached' flag; when more match than the limit, refer the user to their web account for the full list. Covers payments only. An invoice appears here as the payment that settled it, so an invoice still outstanding is absent from every result. Not for one transaction's full details by id — use getTransactionDetails. Not for aggregated income/expense totals — use sumTransactions. Read-only: this tool does not change any data.
transactions__listTransactions
Lists all wallets of the user's current company (open and closed) with their requisites and balances, plus company details and EUR totals, in one call. Wallets are ordered with the default wallet first, then by name ascending. Use when the user asks about their accounts, wallet details, requisites (IBAN, BIC/SWIFT), balances or total money. Not for transaction history — use listTransactions. Not for spend/income totals over transactions — use sumTransactions. Read-only: this tool does not change any data.
transactions__listWallets
Searches and filters cards for the authenticated company with paginated output. Use to view, list, find, or filter cards — e.g. 'show my virtual cards', 'show frozen cards', 'show all team cards', 'show cards connected to wallet X', 'how many Prime/Metal cards do I have' (filter by benefitPlans and read totalCount). Results are sorted by usage relevance: cards pending activation (ToActivate / PreActivated) first, then most-recently-used (lastTransactionDate DESC, nulls last), then activated DESC, with frozen and blocked cards sorted last. Stable across pages. Pick between same-MCP tools: for a quick recently-used overview (no filters) prefer bank.getLastActiveCards. For one specific card's full details use bank.getCardDetails. For a card's benefit plan use bank.getCardBenefits. Disambiguation entry point: when a request or diagnostic concerns 'my card' but names no specific card — e.g. 'why can't I withdraw / pay / use my card?', or the user names the SURFACE instead of the card ('Apple Pay / Google Pay says the card is unavailable', 'my subscription / recurring charge stopped', 'the terminal or the online shop declined it'), or any single-card action with no card given — resolve it against the CALLER'S OWN cards: pass the caller's own id as teamMemberId so totalCount and results are the caller's cards, not the whole company's (a ManageAllCards caller otherwise also sees team members' cards). Then: exactly one OWN card → continue; more than one, or ownership unclear → ask which card before acting, naming the candidates by their masked number ("**NNNN") — never ask the user to classify the card (virtual or physical, which card type) instead of listing them here. That self-scoping applies ONLY while no card has been named. The moment the user NAMES a card — last four digits, card name, or id — search WITHOUT teamMemberId: the server already limits results to what the caller is allowed to see, and for a ManageAllCards caller "my card 1234" is often a card they issued to a team member. Tell own cards from team cards by comparing items[].userId with the caller's user id, and say plainly when the card belongs to a team member. Only if the named card is missing from that unscoped search is it genuinely not there. When the user NAMES a specific card — by last four digits, by card name, or by id — and no such card is among the cards this search returns, SAY SO explicitly, naming what was not found, and do NOT substitute another card for it. Do NOT offer the caller's other cards as candidates either — not as a list, not as "did you mean": ask which card they meant and stop there. A card the user did not name is never a resolved choice, and no write may be prepared for it. A card-failure symptom is answered from THIS data, not from the knowledge base: enumerate here first, read the match with bank.getCardDetails, and turn to general help content only once the card data has been checked and explains nothing. For a READ / diagnostic continue to bank.getCardDetails; for a CHANGE (toggle a capability, set / lower / remove a limit) pass the resolved cardId to the tool that applies that setting — bank.getCardDetails is read-only and will not apply the change. Use this (not bank.getLastActiveCards) to enumerate — getLastActiveCards is only a recent-use subset. Read-only: does NOT create, update, block, freeze, or reissue cards.
bank__searchCards
Searches invoices for the current company across two sources: the Invoicing service (issued revenue invoices and received expense invoices) and Reconciliation (recognized uploaded supplier documents not yet promoted to expenses). Filters are AND-composed; see each parameter for its meaning. Lifecycle defaults to Active (drafts and cancelled excluded). Results may span multiple currencies — do not sum amounts across different currencies without FX conversion. Results are cursor-paginated newest-first; pass the returned NextCursor to continue. If one source is temporarily unavailable the result is marked partial and pagination is suppressed — re-issue the search to recover. Excluded by design: quotes, delivery notes, credit notes, pro-forma. Use this when the user asks to list or find invoices matching criteria — by direction, payment status, lifecycle, customer, currency, number, issue/due/paid date range, or overdue status. Do NOT use this to look up an invoice by a known id — use `get_invoice_details`. Do NOT use it for customer balances or company-wide revenue/expense aggregates.
invoicing__search_invoices
Returns income, expenses and net amounts for the user's current company over the matching transactions, aggregated server-side and grouped by currency. Cancelled/Declined/Reversed transactions are excluded from amounts, and self-cancelling transfers between own wallets are excluded when accountIds are filtered. Accepts the same filters as listTransactions except 'limit'. Use when the user asks how much was spent, received or netted over a period or filter combination (e.g. 'how much did I spend last month', 'how much income this week from contact X'). By default the totals include pending transactions ('Processing', 'ToPay', 'Scheduled', 'OnHold'); only 'Cancelled', 'Declined' and 'Reversed' are excluded. For 'how much did I actually receive / spend' (settled money only), exclude the pending ones explicitly via excludedStatuses: ['ToPay', 'Scheduled', 'OnHold', 'Processing']. Without this, payments awaiting signature and scheduled payments are counted as settled cash. Totals cover payments only. An invoice counts as the payment that settled it, so an invoice still outstanding adds nothing to income or expenses. Not for listing individual transactions — use listTransactions. Not for one transaction's details — use getTransactionDetails. Read-only: this tool does not change any data.
transactions__sumTransactions
Check VAT/tax deadlines and verification progress for the authenticated company by retrieving a paginated list of tax reporting tasks (cards). Each card reports ReportType, Period, Year, DueDate, current Status, and progress metrics (VerifiedRecords out of TotalRecords). All filters are optional; valid pagination is required. Runtime notes: card id and companyId are UUID strings (RFC 4122). dueDate is an ISO 8601 / RFC 3339 date-time string (e.g. '2026-05-20T15:30:00Z'). Status uses the literal 'None' sentinel for "not set". Results are ordered by due date. Requires the company to have Finom Accounting activated or its accounting onboarding started; otherwise returns error 'AccountingProductNotEnabled'. Not for fetching the actual report documents/payloads — use "View tax reports" for the rendered report files.
accounting__getReportTasks
Use this to review and analyze bookkeeping (accounting) entries for the authenticated company — to analyze VAT, categorization, cash flow and counterparty data. Returns a paginated list of detailed accounting entries including gross Amount, VatAmount, Counterparty details, CashFlowType, Document details, TransactionDirection, and whether the entry was AI-categorized (IsAiCategorized). All filters are optional; only pagination is required (Page > 0, 1 <= PageSize <= 100). Runtime notes: identifier fields (groupId, transactionId, internalTransactionId, documentId, entry ids, entryCategoryId) are UUID strings (RFC 4122). Date fields (date, documentIssueDate) are ISO 8601 / RFC 3339 date-time strings with timezone. Enum/status fields use the literal string 'None' as a sentinel for "absent/not applicable" — this is distinct from JSON null. Results are ordered by entry date. Requires the company to have Finom Accounting activated or its accounting onboarding started; otherwise returns error 'AccountingProductNotEnabled'. Not for downloading invoice PDFs or single-document previews, and not for raw bank transactions.
accounting__getBookkeepingRecords
Retrieves specific German tax and financial reports for the authenticated company. Supported reportType values: VAT reports — UStE, UStVAMonthly, UStVAQuarterly; EC sales lists / recapitulative statements — ZusammenfassendeMeldungMonthly, ZusammenfassendeMeldungQuarterly; surplus income calculation — EUR. Any other reportType is rejected. Filter constraint: provide EITHER a 'reportType' OR a non-empty 'reportIds' list. Valid pagination (page > 0, 1 <= pageSize <= 100) is required. When fetching by 'reportIds' without a reportType, the response contains VatReports, ZMReports and EurReports lists; otherwise only the relevant list is populated. Runtime notes: report identifier fields are UUID strings (RFC 4122); date fields are ISO 8601 / RFC 3339 date-time strings. Results are ordered by report date. Requires the company to have Finom Accounting activated or its accounting onboarding started; otherwise returns error 'AccountingProductNotEnabled'. Not for raw invoice PDFs or non-tax reports.
accounting__getReports
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Finom alternatives on ChatGPT?
As of 2026-09-13, Finom competes with AgentCollect, Akaunting, AuntBird Practice Management, Cryptoworth, Digits, Double, Ekohesap, ExpenseBot, Fattura24, FinOpps, Fiscal Pro, Granatum Financeiro, HelpDol, inFakt, Inkle, Intuit QuickBooks, Jaz Accounting, Kick, MedFIN, MYOB, Never86'd Marketplace Audit, Norman, NP Ledger, QBO Connector by Meridian, tugesto, Validis (US) in ChatGPT Accounting & Bookkeeping, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.