- Brand
- Finom
- Category
- Finance
- Primary Subcategory
- Accounting & Bookkeeping
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
- 16
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Finom
Get updates when Finom’s Discoverability Score or category rank changes.
Competing in ChatGPT Accounting & Bookkeeping
View Category16 tools agents can invoke
Use when the user asks about the cashback of ONE specific card purchase: why no cashback was credited, why it is smaller than expected, when it will be credited, whether it was withdrawn, refunded or expired, or why a cashback limit or minimum-spend threshold applied. Takes the id of the purchase (the transaction id from listTransactions; find the purchase there first when the user describes it by merchant, date or amount). Returns the cashback status, amounts, percent, programme, the threshold/limit that applied, a stable reasonCode and a neutral explanation. found=false means no cashback record exists for that transaction — cashback is created only when a card payment completes, so a payment that is still processing has none yet (reasonCode TransactionNotCompleted); the other reasons are in reasonCode. Available to the account owner only — for other team members the call fails with InsufficientPermissions. Single purchase only: the company's total accumulated cashback balance is getCashback; moving the balance to the wallet is withdrawCashback; the purchase's own details (merchant, status, card) are getTransactionDetails. A transaction of type CashBack in listTransactions is a payout of withdrawn cashback, not a purchase — this tool recognises such an id but cannot explain it as a purchase. Totals over a month or year and per-period cashback history are NOT available here. Read-only: does NOT change cashback, balances or transactions.
reward__explainTransactionCashback
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 from the listed item's onlinePayments / paymentsAbroad when the card was just listed, otherwise 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`, which says the PIN is missing but not whether it can be set right now), 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. For anything PIN-related — whether the PIN can be set or changed, why not, and when it will be possible — do NOT answer from this tool's `changePinAvailable` (it ignores the 24-hour cooldown); a PIN is set or changed only in the Finom app. A card whose cardStatus is ToActivate or PreActivated is not broken, it is waiting to be activated in the Finom app (this tool has no `statusMessage` for it). 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). Why one specific purchase did or did not earn cashback is a separate tool: explainTransactionCashback. 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 — though onlinePayments and paymentsAbroad are already on every item here, so 'are online / abroad payments on?' is answered from THIS data. 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, or a 'TransactionNotFound' error when no such transaction is visible to the company — that error says nothing about the payment, not even that it failed. Returns every field of listTransactions plus the payment-investigation detail for that one payment: why it was declined or returned, its SEPA Direct Debit lifecycle, and the links to the payment it refunds, returns or resends. Use when the user asks about one specific transaction — where it is now (read 'status'), or why it failed. When it failed, read 'declineCategory' FIRST and obey it: only 'Explainable' permits explaining the reason to the customer, and every other value — 'ComplianceReview', 'AccountRestriction', 'NotPaymentInvestigation' and 'Unknown' alike — means hand the case to a human without naming a reason, however readable the text in 'declineReason' looks. Empty decline fields are never proof that a payment had no reason; when 'detailHint' is set, say what it tells you to say. A payment that is merely slow rather than declined carries no reason here: do not speculate about WHY it is delayed, that needs a compliance/AML investigation outside this tool. Covers payments only, so the id of an invoice that is still outstanding is not found. 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 feed date, descending — see dateFrom; not by execution date). Because of that ordering, pending 'ToPay' rows (including unsigned payments) and upcoming 'Scheduled' ones come first; for the most recent settled payment filter statuses:['Completed']. 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. Status of the candidates: this search returns EVERY status by default. When you enumerate to pick a card for an ACTION and the user named NO card, OFFER only cards in the statuses that action accepts (its own description names them; when it names none, offer Active cards only), so an already-blocked or expired card is never put in front of the user as something they could choose. Filter what you OFFER, not the query: search WITHOUT cardStatuses so you can still see a card in the wrong state and explain it. ("show all my cards", "which of my cards are blocked"), do NOT filter by status: a named card must be found and its real state explained rather than reported as missing, and for a plain listing the full list is the answer. 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. Every item carries onlinePayments and paymentsAbroad, so 'are online / abroad payments on?' about a card already listed here is answered from THIS data — no bank.getCardDetails call for those two. For any other 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
Finom ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Finom's ChatGPT Plugin 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-10-27, Finom competes with Accountable, AgentCollect, Aikount, Akaunting, AuntBird Practice Management, B2B.nu, Bankstatemently, BeanHub and 69 more 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.