# Hidden Fee Finder > Paste a quote, contract or invoice and see every fee, tax, penalty and add-on. Paste the lines of a quote, rental contract, booking or invoice (English or German). Hidden Fee Finder extracts the amounts, classifies each line with transparent keyword rules (base price, fee, tax, surcharge, penalty, deposit, discount, insurance/add-on, recurring), flags conditional penalties and optional add-ons, and shows how much of the total is not the base price. Part of usefulweb.site (https://usefulweb.site/). Results are deterministic calculations from the inputs and the listed assumptions; the API returns exactly what the web page shows. ## Use it - Human interface: https://hiddenfeefinder.usefulweb.site/ (interactive tool at https://hiddenfeefinder.usefulweb.site/tool) - JSON API: POST https://hiddenfeefinder.usefulweb.site/api/v1/calculate with a JSON object of inputs (schema: https://hiddenfeefinder.usefulweb.site/api/v1/tool) - OpenAPI: https://hiddenfeefinder.usefulweb.site/openapi.json - MCP (Streamable HTTP): https://hiddenfeefinder.usefulweb.site/mcp - tool `hidden_fee_finder` ## Inputs - text (textarea): Quote / contract / invoice lines - One cost per line. Supported amount formats: 1,234.56 / 1.234,56 / €12 / 12 EUR / 12,50 € and percentages like 19% or 2.5 %. - items (table): Or: line items - Optional alternative to pasting text. Rows are appended after the pasted lines. - currency (text): Currency - numberFormat (select): Number format ## Method - Each non-empty line is scanned for amounts. A number counts as money if it has a currency marker (€, $, £, EUR, USD, GBP, CHF…), exactly two decimals, or ends the line; the last such amount on a line is used. A number followed by % is a percentage. - Number formats: with both separators the last one is the decimal mark; "1,234" (comma + 3 digits) is read as a thousands separator in auto mode, "12,50" as a decimal; choose a fixed format to override. - Categories are assigned by ordered keyword rules (total → penalty → deposit → discount → tax → insurance/add-on → surcharge → fee → recurring → base). The first matching keyword is shown. Lines without any keyword default to base price. - Flags: conditional (late, cancellation, early termination, if, per day, wenn, falls, Verzug, pro Tag…), recurring (monthly, per year, subscription, monatlich…), optional/hidden (optional, pre-selected, recommended, auto-renew, empfohlen, voreingestellt…), included tax (incl./inkl./included). - Payable total = base + fees + taxes + surcharges + insurance/add-ons + recurring + discounts. Excluded: deposits (refundable), conditional lines (only if triggered), total lines, and taxes marked as included. - Percent-only lines: taxes are applied to the sum of all other included lines; other percentages are applied to the base total. - Non-base share = (payable total − base − discounts) ÷ payable total.