Security at TERM
TERM is built to need as little access to your financial data as possible, and to make what it does have easy to withdraw.
Last updated: September 2, 2026
TERM does not write to your books
TERM reads from QuickBooks. It has no write path to it. The only accounting endpoints TERM calls are the company profile and a query for purchases — both reads. There is no code in TERM that creates, edits, or deletes anything in your ledger.
When you categorize a transaction, approve a suggestion, or mark a commitment to cancel, that decision is recorded in TERM. Your QuickBooks data is unchanged. If you disconnected TERM immediately afterwards, your books would look exactly as they did before you connected.
This is a narrower promise than software that writes back on your approval, and it is the accurate one. TERM is a layer for deciding, not a second system of record.
QuickBooks permissions
TERM requests one OAuth scope: com.intuit.quickbooks.accounting. Intuit does not offer a read-only variant of it, so the scope itself permits more than TERM uses. What limits the access is that TERM never issues a write request.
Within that scope, TERM reads your company profile and your purchase records from a start date forward. It does not read payroll, and it does not request the payments or payroll scopes.
Decisions wait for a person
TERM prepares decisions. It does not act on them. A suggested category, a detected commitment, and a renewal that is approaching are all proposals shown to you, and each stays in the queue until you resolve it.
One thing does happen without a prompt each time: if you choose to remember a categorization, TERM applies that rule to matching activity from then on. You set the rule, and you can change it.
TERM cannot cancel a subscription for you. Marking a commitment to cancel records your decision and tracks the deadline; cancelling is still something you do with the vendor.
Encryption
Traffic to TERM is served over HTTPS, with HTTP Strict Transport Security enabled so browsers refuse to fall back to an unencrypted connection.
Your QuickBooks access and refresh tokens are encrypted by TERM before they are stored, using AES-256-GCM with a key derived by scrypt. The key is held in the application environment, not in the database, so a copy of the database alone does not yield working tokens.
The database is hosted by Neon, which encrypts stored data at rest. Beyond the tokens, TERM does not add its own encryption layer on top of the imported transaction records.
Authentication
Accounts and sessions are handled by Clerk. TERM never receives, stores, or is able to read your password. Sessions are verified on the server for every request that touches workspace data.
Requests that change something also check the origin they came from, so a form on another site cannot act on your workspace using your session.
What TERM stores, and what it does not
TERM stores the purchase records it imports — amounts, dates, vendor names, and categories — along with the commitments it detects, your decisions, your workspace and membership records, billing identifiers, an audit history of actions taken, and the encrypted provider tokens described above.
- TERM does not store card numbers. Payment details go to Stripe directly and TERM sees only the plan, status, and the card's type and last four digits.
- TERM does not store passwords. Authentication is handled entirely by Clerk.
- TERM does not sell data, and does not use your financial data to advertise to you.
Disconnecting
Disconnecting QuickBooks from TERM revokes the refresh token with Intuit, deletes the stored token, and records the disconnection in your workspace's audit history. TERM cannot read anything further from that company: the credential it would need no longer exists on either side.
You can also revoke TERM from inside QuickBooks. That has the same effect on access. Transactions already imported stay in your workspace until you delete the workspace.
Deleting your data
Deleting a workspace from Settings revokes the QuickBooks connection, revokes any Gmail, Outlook, or Slack connections, cancels the subscription, and removes the workspace's records. It asks you to type a confirmation phrase first, because it cannot be undone.
If you would rather have it done for you, or want confirmation that it is complete, write to support@term.business.
Infrastructure
TERM runs on Vercel and stores data in a Neon Postgres database. Both are US-hosted managed platforms; TERM does not operate its own servers.
Subprocessors
These are the third parties that process data on TERM's behalf. The list is kept in the codebase alongside the integrations it describes, so it cannot quietly fall out of date.
| Provider | Purpose | Data involved |
|---|---|---|
| Intuit (QuickBooks Online) | Source of the accounting activity TERM reads, once you connect a company. | Transactions, vendors, and company profile from the company you authorize. |
| Clerk | Account creation, sign-in, and session management. | Email address, name, authentication events, session identifiers. |
| Stripe | Subscription billing and payment processing. | Billing contact and payment method. Card details go to Stripe directly. |
| Vercel | Application hosting and delivery. | Request metadata such as IP address and user agent, plus server logs. |
| Neon | The database TERM stores your workspace in. | Imported transactions and commitments, workspace and membership records, billing identifiers, audit history, and encrypted accounting-provider tokens. |
| Composio | Manages the connections to QuickBooks, Gmail, Outlook, and Slack, and carries the data TERM reads through them. | The authorization granted for each connected account, and the provider records TERM reads through it — accounting activity, and mailbox or channel content for the integrations you choose to connect. |
What TERM does not have
TERM is operated by one person and holds no third-party security certifications. It is not SOC 2 audited, not ISO 27001 certified, and not PCI DSS or HIPAA assessed. There is no penetration test report to share.
Those audits are worth having and TERM has not earned them yet. Saying so is more useful to you than a badge would be, and if a certification is a requirement for your business, TERM is not the right choice today.
Reporting a security issue
Email support@term.business with the details and how to reproduce the problem. Reports are read by the operator directly; you will get a reply.
Please do not run automated scans against the production site, and do not access an account that is not yours while testing. TERM does not currently run a paid bug bounty.