Overview
Subsweep is a web app that finds every software subscription a small business pays for. It flags the ones wasting money and reminds the owner before the next renewal. It pulls charges from bank feeds, email receipts, statement uploads or manual entry. It then builds one list, with estimated monthly savings as the headline number.
It is built for owners and operations leads at businesses of 1 to 50 people, and for bookkeepers who look after several clients. You get the full source code for a working multi-tenant SaaS with plans, Stripe billing, team roles, accountant workspaces and a Chrome extension. You can run it for your own business or sell it as a hosted product.
Features
Finding subscriptions
- Bank and card feeds. Read-only connections through Plaid (US and Canada), TrueLayer (UK) and Salt Edge (EU/EEA). The provider is picked from the workspace's country and all three sit behind one shared interface. It pulls 12 months of history on connect and syncs every hour after that.
- Reconnect handling. A source that fails to sync is marked as needing reconnection and shows a Reconnect button.
- Email receipt scanning. Read-only Gmail and Outlook access. It scans the last 12 months of receipts, invoices and renewal notices and reads the vendor, amount and billing cycle from each one.
- Statement upload. Accepts CSV, XLSX and text-layer PDF files up to 10 MB. A column mapper handles unknown layouts. Password-protected PDFs open in the app, and the password is never stored. Scanned image PDFs are not read.
- Bank formats. Recognizes HDFC, ICICI, SBI, Axis, Kotak and Yes Bank statements, and includes a dedicated parser for Relay PDF statements. Rows that were already uploaded are skipped.
- Manual add. Vendor autocomplete, amount, cycle (including custom day counts), next charge, owner, payment method and notes.
- Quick-add checklist. 48 common tools with default prices you can edit before adding.
- India support. A guided form for copying UPI Autopay mandates, parsing of GST invoices and pre-debit notices, and GST shown on each subscription. A Setu Account Aggregator connection is included but switched off by default.
Detection and review
- Recurring charge detection. Finds weekly, monthly, quarterly, yearly and custom cycles and gives each match a confidence score. High-confidence matches are added automatically. Medium-confidence matches are marked "Needs review".
- Merchant cleanup. Strips processor prefixes such as PayPal, Square, Google, Amazon, Razorpay, PayU, Cashfree and Paytm. Matches the result against a catalog of 500+ vendors in 25 categories and filters out everyday consumer spending.
- Waste flags. Flags overlapping tools in 11 categories, price changes over 5% or 2 units of currency, and trials that turned into paid plans. Each flag comes with a one-sentence explanation and an estimated saving.
- Keep / Unsure / Cancel tags. Tag counts appear as filter chips. The list also has search, owner and category filters, sorting and a review progress bar.
- Detail panel. Shows the amount, billed currency, charge dates, owner, payment method, flags, charge history, notes and attachments.
- Dismiss, merge, delete. A dismissed item stays dismissed. Your manual edits are kept when later scans run.
- Reveal screen. After setup, shows estimated savings, the tool count, monthly spend and the number of flags.
Renewals and alerts
- Renewal calendar. Month grid and list views of upcoming charges.
- Automatic reminders. Sent 30, 14 and 7 days before yearly or large charges, and 3 days before smaller ones.
- Manual charge check. Asks "Did this vendor charge you?" with Yes, Amount changed and It was cancelled. A subscription is marked Unverified after the prompt is ignored twice.
- Email alerts. For new subscriptions, price increases, renewals, charge checks and converted trials. Each type can be turned on or off.
- Slack alerts. Posts the same alerts to a channel.
- Digest. Sent monthly, weekly or never, at the hour and timezone each workspace picks. Statement-only workspaces also get a monthly upload reminder.
Savings and cancellation
- Cancellation help. A pre-written cancellation email you can copy or open in a mail client, plus a link to the vendor's cancel page or a web search for it. "Mark as cancelled" adds the saving to the tracker.
- Actions page. Holds the cancel queue and pending charge checks. It also offers negotiation email templates for tools over 100 a month that renew within 60 days.
- Savings tracker. Shows the total saved so far, the yearly run-rate and a dated list of every saving.
- Overview dashboard. Shows cancels waiting, renewals this week, flags, an "Act now" list, spend by category and a cash-out chart covering the last three months and the next three.
- Offboarding. Enter a departing person to see every tool they own, then remove the seat, reassign it or cancel it.
Teams and accountants
- Roles. Owner, Editor and Viewer. Invites expire after 7 days, and the last owner cannot be removed.
- Owner assignment. Each subscription can have a named owner.
- Accountant workspaces. Accountants can sign up as accountants, add client workspaces and switch between them. A Clients table shows each client's spend, flags and latest activity.
Reports and export
- CSV and PDF. CSV export of the subscription list and a printable PDF report.
- Shareable report. An unlisted link that expires after 30 days and can be revoked. It includes no transaction detail.
- QuickBooks and Xero. OAuth connection plus an "Export now" button that sends active subscriptions as bills. The QuickBooks call currently targets the sandbox API and needs a small change before live use.
- Attachments. Up to 10 contracts or invoices per subscription. The app runs a basic scan of each file for an end date and a notice period.
Chrome extension
- Checkout prompt. A Manifest V3 extension that recognizes 20 SaaS vendor sites. It reads the visible price and offers a one-click link that opens a prefilled add form.
- Read-only. It never changes the page it runs on.
Billing and SaaS platform
- Plans. Free is capped at 10 subscriptions, manual and statement sources, with the savings figure and flag details blurred. Pro defaults to $24 a month or $199 a year. Accountant defaults to $15 per client per month, minimum 3.
- Stripe Billing. Checkout, the customer portal and signed webhooks. New accounts get a 14-day Pro trial with no card and move to Free automatically when it ends.
- Sign-in. Email and password, magic links, Google sign-in and email verification.
- Onboarding. Asks for company size, software spend, country, timezone and digest preferences.
- Multi-currency. USD, CAD, GBP, EUR and INR, with daily exchange rates or built-in fallback rates.
- Data control. Bank and email tokens are encrypted with AES-256-GCM. You can disconnect any source and delete your account; deletion sends an email confirmation. Includes plain-language privacy and terms pages.
- Interface. Light, dark and system themes, a mobile tab bar, an installable app with an offline page, and a marketing site with pricing and an FAQ.
Tech stack
- Next.js 16 (App Router), React 19 with the React Compiler, TypeScript
- Tailwind CSS 4, Radix UI primitives, in-house SVG charts
- PostgreSQL with Drizzle ORM; embedded PGlite for local development
- Better Auth
- Nodemailer (any SMTP server) or Resend for email
- Stripe Billing
- unpdf for reading PDF text; built-in XLSX reader
- Vitest
- Vercel config with an hourly cron job
What's included
- Full application source: marketing pages, sign-in, onboarding, the app and all API routes
- Chrome extension source. Set your own app URL in its files before publishing.
- Drizzle schema and a bootstrap SQL file that creates the tables on first start
- Vendor catalog (500+ vendors, 25 categories) and the 48-tool quick-add list
- Demo workspace seed with sample transactions, switched on or off with
DEMO_LOGIN_ENABLED
- Script that creates the Stripe products and prices
docker-compose.yml, vercel.json and an .env.example that documents every setting
- Unit tests for detection and statement parsing
- 49 vendor logo SVGs, app icons and a service worker
- Product spec, design contract and build board
Requirements and third-party costs
Subsweep needs a Node.js host that runs Next.js 16 and a PostgreSQL database. It comes configured for Vercel. Most integrations are optional. If a key is missing, that feature reports that it is not configured. In production the local demo shortcuts are turned off.
- Hosting (required). The hourly cron job in
vercel.json needs a Vercel plan that allows hourly cron jobs. Otherwise, use any scheduler that calls /api/cron/tick with your cron secret.
- PostgreSQL (required). Neon, Supabase or any Postgres host.
- Outbound email (required in production). An SMTP account or Resend. Sign-in links, invites, alerts and digests depend on it.
- Stripe (required to charge customers). Standard Stripe processing fees apply.
- Plaid, TrueLayer, Salt Edge (optional). Bank feeds. Each needs its own production approval and bills separately.
- Setu Account Aggregator (optional). Off by default.
- Google Cloud (optional). Google sign-in and Gmail scanning. Read-only Gmail access is a restricted scope, so public use requires Google's verification and security review, which may cost money.
- Microsoft, Slack, QuickBooks, Xero developer apps (optional). Outlook scanning, Slack alerts and accounting export.
- Open Exchange Rates (optional). Live exchange rates.
- Cloudflare R2 (optional). Attachment storage. The included upload call is minimal, so plan to replace it with a signed S3 client. Without R2, files are saved to local disk, which does not persist on serverless hosts.
- PostHog, Sentry, Inngest (optional). Analytics, error tracking and a job event hook.
- Chrome Web Store developer account (optional). Needed only to publish the extension.
The purchase covers the source code only. Fees for hosting, databases, email, payments, bank data and other services are billed by those providers.