diff --git a/AGENTS.md b/AGENTS.md
index 4cd373c..9a204df 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1,5 +1,7 @@
# beenvoice - AI Assistant Rules
+> **Canonical architecture reference:** [docs/ARCHITECTURE.md](./docs/ARCHITECTURE.md) (stack, routers, schema, auth). This file may lag behind; prefer ARCHITECTURE.md for facts.
+
## Project Overview
beenvoice is a professional invoicing application built with the T3 stack (Next.js 15, tRPC, Drizzle/LibSQL, NextAuth.js) and shadcn/ui components. This is a business-critical application where reliability, security, and professional user experience are paramount.
diff --git a/README.md b/README.md
index e8b2fa1..909325b 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,29 @@

-# beenvoice - Invoicing Made Simple
+# beenvoice — Invoicing Made Simple
-A modern, professional invoicing application built for freelancers and small businesses. beenvoice provides a clean, efficient way to manage clients and create professional invoices with ease.
+Modern invoicing for freelancers and small businesses: clients, businesses, invoices, time tracking, expenses, recurring billing, PDF/email delivery, and optional SSO.
-
+**Architecture (dense):** [docs/ARCHITECTURE.md](./docs/ARCHITECTURE.md)
+**Mobile companion:** [../beenvoice-app/README.md](../beenvoice-app/README.md)
-## ✨ Features
+## Stack at a glance
-- **🔐 Secure Authentication** - Email/password registration and sign-in with better-auth, plus SSO via Authentik OIDC
+| Layer | Tech |
+|-------|------|
+| App | Next.js 16 App Router, React 19 |
+| API | tRPC 11 + SuperJSON |
+| DB | PostgreSQL, Drizzle ORM |
+| Auth | better-auth (email/password, Authentik OIDC, Expo mobile) |
+| UI | shadcn/ui, Tailwind v4 |
+| Email / PDF | Resend, @react-pdf/renderer |
+| Package manager | Bun |
+
+## Features
+
+- **🔐 Authentication** — better-auth: email/password, password reset, optional Authentik OIDC, Expo mobile sessions
+- **⏱ Time clock** — running timer, one per user; clock-out can append invoice line items
+- **🤖 MCP API** — `/api/mcp` for automation via API keys (`bv_…`)
- **👥 Client Management** - Create, edit, and manage client information
- **🏢 Business Profiles** - Manage your business details, logo, and email settings
- **📄 Professional Invoices** - Generate detailed invoices with line items
@@ -103,35 +118,19 @@ A modern, professional invoicing application built for freelancers and small bus
7. **Open your browser**
Navigate to [http://localhost:3000](http://localhost:3000)
-## 🏗️ Project Structure
+## 🏗️ Project structure
+
+See [docs/ARCHITECTURE.md](./docs/ARCHITECTURE.md) for routers, schema, auth, and MCP.
```
beenvoice/
-├── src/
-│ ├── app/ # Next.js App Router pages
-│ │ ├── api/ # API routes (better-auth, tRPC)
-│ │ ├── auth/ # Authentication pages
-│ │ ├── dashboard/ # Main app pages
-│ │ │ ├── clients/ # Client management pages
-│ │ │ ├── invoices/ # Invoice management pages
-│ │ │ └── businesses/ # Business profile pages
-│ │ └── _components/ # Page-specific components
-│ ├── components/ # Shared UI components
-│ │ ├── ui/ # shadcn/ui components
-│ │ ├── data/ # Data display components
-│ │ ├── forms/ # Form components
-│ │ └── layout/ # Layout components
-│ ├── server/ # Server-side code
-│ │ ├── api/ # tRPC routers
-│ │ └── db/ # Database schema and connection
-│ ├── lib/ # Utilities (auth, pdf export, etc.)
-│ ├── styles/ # Global styles
-│ └── trpc/ # tRPC client configuration
-├── drizzle/ # Database migrations
-├── public/ # Static assets
-├── docs/ # Documentation
-├── docker-compose.yml # Deployment compose stack
-└── docker-compose.dev.yml # Development overrides with exposed PostgreSQL
+├── src/app/ # Pages + /api (auth, trpc, mcp, cron, public PDF)
+├── src/server/api/ # tRPC routers
+├── src/server/db/ # Drizzle schema + pool
+├── src/components/ # UI + domain components
+├── src/lib/ # auth, PDF, email, branding
+├── drizzle/ # SQL migrations
+└── docs/ # Architecture + UI guides
```
## 🎯 Usage
@@ -250,15 +249,14 @@ The application uses the following core tables:
- **invoices** - Invoice headers with client and business relationships
- **invoice_items** - Individual line items with pricing and position ordering
-### API Development
+### API surface
-All API endpoints are built with tRPC for type safety:
+- **tRPC** — `/api/trpc` — primary API for web and mobile (session cookies)
+- **MCP** — `/api/mcp` — JSON-RPC tools for integrations (API key only)
+- **REST auth** — `/api/auth/register`, forgot/reset password (mobile + custom flows)
+- **Public** — `/i/[token]`, `/api/i/[token]/pdf`
-- **Authentication**: better-auth integration (email/password + OIDC)
-- **Clients**: CRUD operations for client management
-- **Businesses**: Business profile management
-- **Invoices**: Invoice creation, management, and status tracking
-- **Validation**: Zod schemas for input validation
+All business logic lives in `src/server/api/routers/`. Input validation via Zod.
## 🎨 Customization
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
new file mode 100644
index 0000000..0ad5abe
--- /dev/null
+++ b/docs/ARCHITECTURE.md
@@ -0,0 +1,211 @@
+# beenvoice server architecture
+
+Dense reference for the Next.js web application and API in `beenvoice/`. Package manager: **Bun**. Database: **PostgreSQL** via Drizzle ORM.
+
+## Stack
+
+| Layer | Technology |
+|-------|------------|
+| Framework | Next.js 16 App Router (`src/app/`) |
+| API | tRPC 11 (`/api/trpc`), SuperJSON transformer |
+| ORM | Drizzle + `pg` pool |
+| Auth | better-auth (email/password, optional Authentik OIDC, Expo plugin for mobile) |
+| UI | shadcn/ui, Tailwind CSS v4, Radix primitives |
+| Email | Resend |
+| PDF | `@react-pdf/renderer` |
+
+## Request flow
+
+```
+Browser / Mobile / MCP client
+ │
+ ├─► /api/auth/* → better-auth handler (session cookies)
+ ├─► /api/trpc/* → createContext() → appRouter
+ │ ├─ Bearer / x-api-key → api-key auth
+ │ └─ else → better-auth session
+ ├─► /api/mcp → API key only → JSON-RPC tools → tRPC caller
+ ├─► /api/i/[token]/pdf → public invoice PDF
+ └─► /dashboard/* → RSC + client components (session required in UI)
+```
+
+**Context** (`src/server/api/trpc.ts`): `protectedProcedure` requires `ctx.session.user`. API-key auth sets `authSource: "api-key"`; `apiKeys.*` mutations require session (cannot manage keys with a key).
+
+## Directory layout
+
+```
+src/
+├── app/ # Routes (pages + route handlers)
+│ ├── api/
+│ │ ├── auth/ # better-auth catch-all + custom register/reset REST
+│ │ ├── trpc/[trpc]/ # tRPC HTTP adapter
+│ │ ├── mcp/ # MCP over HTTP (API key)
+│ │ ├── i/[token]/pdf/ # Public PDF
+│ │ └── cron/ # Recurring invoice generation (CRON_SECRET)
+│ ├── auth/ # sign-in, register, forgot/reset password
+│ ├── dashboard/ # Authenticated app shell
+│ └── i/[token]/ # Public invoice view
+├── components/ # Shared UI (ui/, forms/, layout/, data/)
+├── hooks/
+├── lib/ # auth.ts, pdf-export, email templates, branding
+├── server/
+│ ├── api/
+│ │ ├── root.ts # appRouter composition
+│ │ ├── trpc.ts # procedures, context, timing middleware (dev)
+│ │ ├── api-keys.ts
+│ │ └── routers/ # one file per domain
+│ └── db/
+│ ├── schema.ts # all tables (prefix beenvoice_)
+│ ├── index.ts # drizzle + pool
+│ └── migrate.ts
+├── trpc/ # react.tsx (client), server.ts (RSC)
+├── env.js # @t3-oss/env-nextjs validation
+└── styles/globals.css
+drizzle/ # SQL migrations (0000–0014+)
+```
+
+## tRPC routers
+
+Root: `src/server/api/root.ts`. All routers use Zod input validation.
+
+| Namespace | File | Key procedures |
+|-----------|------|----------------|
+| `clients` | `routers/clients.ts` | getAll, getById, create, update, delete |
+| `businesses` | `routers/businesses.ts` | getAll, getById, getDefault, create, update, delete, setDefault, getEmailConfig, updateEmailConfig |
+| `invoices` | `routers/invoices.ts` | getAll, getBillable, getById, create, update, delete, updateStatus, bulk*, previewPdf, public token, **getByPublicToken** (public), sendReminder |
+| `payments` | `routers/payments.ts` | getByInvoice, create, delete |
+| `expenses` | `routers/expenses.ts` | getAll, getById, create, update, delete |
+| `invoiceTemplates` | `routers/invoiceTemplates.ts` | CRUD by template type |
+| `recurringInvoices` | `routers/recurring-invoices.ts` | CRUD, pause/resume, generateNow; cron helper `generateDueRecurringInvoices` |
+| `timeEntries` | `routers/time-entries.ts` | getAll, getRunning, clockIn, updateRunning, clockOut, create, update, delete, getSummary |
+| `dashboard` | `routers/dashboard.ts` | getStats |
+| `email` | `routers/email.ts` | sendInvoice |
+| `settings` | `routers/settings.ts` | profile, theme, animation prefs, export/import data, admin account roles |
+| `apiKeys` | `routers/apiKeys.ts` | list, create, revoke (session-only) |
+
+### Time clock semantics
+
+- **One running entry per user** — partial unique index on `(createdById)` where `endedAt IS NULL`.
+- `clockIn` — optional client, invoice, rate, backdated `startedAt`; resolves rate from input → client default → business default.
+- `clockOut` — optional description update; computes hours; if `invoiceId` set, appends line item; else tries latest open invoice for client.
+- Outcomes: `linked_to_invoice`, `saved_no_invoice`, `saved_no_client`, `zero_hours`.
+
+## Database schema
+
+Single file: `src/server/db/schema.ts`. Table names use `pgTableCreator` → prefix `beenvoice_`.
+
+### Auth & platform
+
+| Table | Notes |
+|-------|-------|
+| `beenvoice_user` | Core user; role for admin features |
+| `beenvoice_account` | OAuth/credential accounts (better-auth) |
+| `beenvoice_session` | Sessions; unique token |
+| `beenvoice_verification_token` | Email verification / reset |
+| `beenvoice_api_key` | `bv_` prefix keys; SHA-256 hash stored |
+| `beenvoice_sso_provider` | OIDC/SAML config per user |
+| `beenvoice_platform_setting` | Singleton (`id = global`) branding/PDF/appearance |
+
+### Domain
+
+| Table | FKs | Notes |
+|-------|-----|-------|
+| `beenvoice_client` | `createdById` → user | defaultHourlyRate, currency |
+| `beenvoice_business` | `createdById` | Resend config, `isDefault` |
+| `beenvoice_invoice` | client, business?, user | status draft/sent/paid; `publicToken` |
+| `beenvoice_invoice_item` | invoice (cascade) | position ordering |
+| `beenvoice_invoice_payment` | invoice, user | payment method enum |
+| `beenvoice_expense` | business?, client?, invoice? | billable flags |
+| `beenvoice_invoice_template` | user | notes/terms templates |
+| `beenvoice_recurring_invoice` | client, business?, user | schedule, `nextDueAt` |
+| `beenvoice_recurring_invoice_item` | recurring (cascade) | |
+| `beenvoice_time_entry` | client?, invoice?, user | `endedAt` null = running |
+
+Migrations: `bun run db:generate` → `drizzle/`; apply with `db:push` (dev) or `db:migrate` (prod script).
+
+## Authentication
+
+**Server** — `src/lib/auth.ts`:
+
+- `betterAuth` + `drizzleAdapter` (users, sessions, accounts, verification)
+- Plugins: `@better-auth/expo` (mobile SecureStore cookies), `nextCookies()`, optional `genericOAuth` (Authentik)
+- Email/password with bcrypt (12 rounds); `DISABLE_SIGNUPS=true` blocks registration
+- `trustedOrigins`: production URL, `beenvoice://`, `exp://` (Expo)
+
+**Web client** — `src/lib/auth-client.ts`: `createAuthClient` + `genericOAuthClient`.
+
+**Routes**:
+
+- `src/app/api/auth/[...all]/route.ts` — better-auth handler
+- Custom REST: `register`, `forgot-password`, `reset-password`, `validate-reset-token` (used by mobile and legacy flows)
+
+**Session cookies**: `better-auth.session_token` or `__Secure-better-auth.session_token` in production.
+
+## Mobile API contract
+
+The Expo app (`beenvoice-app`) does **not** use API keys. It:
+
+1. Calls the same tRPC endpoints with `Authorization` cookie header from `authClient.getCookie()`.
+2. Stores session per account in SecureStore via `@better-auth/expo` (`storagePrefix`: `beenvoice:guest` or `beenvoice:auth:{accountId}`).
+3. Requires `trustedOrigins` and matching `BETTER_AUTH_URL` for the host the device can reach.
+
+Ensure `src/lib/auth.ts` keeps the `expo()` plugin enabled.
+
+## MCP (machine clients)
+
+`POST /api/mcp` — JSON-RPC 2.0, protocol `2025-11-25`.
+
+- **Auth**: API key only (`Authorization: Bearer bv_…` or `x-api-key`). Session cookies rejected.
+- **Tools**: ~50 tools mirroring tRPC (invoices, clients, time clock, expenses, etc.)
+- Implemented in `src/app/api/mcp/route.ts`; delegates to `createCaller(createContext)`.
+
+API keys: format `bv_
- Last updated: {new Date().toLocaleDateString()}
-
- beenvoice ("we", "our", or "us")
- is committed to protecting your privacy. This Privacy Policy
- explains how we collect, use, disclose, and safeguard your
- information when you use our invoicing platform and services.
-
- Please read this Privacy Policy carefully. If you do not agree
- with the terms of this Privacy Policy, please do not access or
- use our Service.
-
- We may collect personal information that you voluntarily provide
- to us when you:
- This personal information may include:
- We may automatically collect certain information when you visit
- our Service:
- We use the information we collect to:
- We do not sell, trade, or rent your personal information to
- third parties. We may share your information in the following
- circumstances:
-
- We may share your information with trusted third-party service
- providers who assist us in operating our Service, such as:
-
- We may disclose your information if required to do so by law or
- in response to:
-
- In the event of a merger, acquisition, or sale of assets, your
- information may be transferred as part of that transaction.
-
- We implement appropriate technical and organizational security
- measures to protect your information:
-
- However, no method of transmission over the internet or
- electronic storage is 100% secure. While we strive to protect
- your information, we cannot guarantee absolute security.
-
- We retain your personal information only for as long as
- necessary to fulfill the purposes outlined in this Privacy
- Policy, unless a longer retention period is required by law.
-
- Factors we consider when determining retention periods include:
-
- Depending on your location, you may have the following rights
- regarding your personal information:
-
- To exercise these rights, please contact us using the
- information provided in the "Contact Us" section
- below.
- We use cookies and similar technologies to:
- You can control cookies through your browser settings. However,
- disabling cookies may affect the functionality of our Service.
-
- Our Service may contain links to third-party websites or
- integrate with third-party services. We are not responsible for
- the privacy practices of these third parties.
-
- We encourage you to read the privacy policies of any third-party
- services you use in connection with our Service.
-
- Our Service is not intended for children under the age of 13. We
- do not knowingly collect personal information from children
- under 13.
-
- If you are a parent or guardian and believe your child has
- provided us with personal information, please contact us
- immediately so we can remove such information.
-
- Your information may be transferred to and processed in
- countries other than your own. We ensure that such transfers
- comply with applicable data protection laws.
-
- When we transfer your information internationally, we implement
- appropriate safeguards to protect your data, including:
-
- We may update this Privacy Policy from time to time. We will
- notify you of any material changes by:
-
- Your continued use of our Service after any changes indicates
- your acceptance of the updated Privacy Policy.
-
- If you have questions about this Privacy Policy or our privacy
- practices, please contact us at:
-
- We will respond to your inquiries within a reasonable timeframe
- and in accordance with applicable law.
-
- Last updated: {new Date().toLocaleDateString()}
-
- These Terms of Service ("Terms") govern your use of
- the beenvoice platform and services (the "Service")
- operated by beenvoice ("us", "we", or
- "our").
-
- By accessing or using our Service, you agree to be bound by
- these Terms. If you disagree with any part of these terms, then
- you may not access the Service.
-
- beenvoice is a web-based invoicing platform that allows users
- to:
-
- When you create an account with us, you must provide information
- that is accurate, complete, and current at all times. You are
- responsible for safeguarding the password and for all activities
- that occur under your account.
-
- You agree not to disclose your password to any third party. You
- must notify us immediately upon becoming aware of any breach of
- security or unauthorized use of your account.
- You agree not to use the Service:
- Your privacy is important to us. Please review our Privacy
- Policy, which also governs your use of the Service, to
- understand our practices.
-
- You retain ownership of your data. We will not sell, rent, or
- share your personal information with third parties without your
- explicit consent, except as described in our Privacy Policy.
-
- You are responsible for backing up your data. While we implement
- regular backups, we recommend you maintain your own copies of
- important information.
-
- Some aspects of the Service may require payment. You will be
- charged according to your subscription plan. All fees are
- non-refundable unless otherwise stated.
-
- We may change our fees at any time. We will provide you with
- reasonable notice of any fee changes by posting the new fees on
- the Service or sending you email notification.
-
- If you fail to pay any fees when due, we may suspend or
- terminate your access to the Service until payment is made.
-
- The Service and its original content, features, and
- functionality are and will remain the exclusive property of
- beenvoice and its licensors. The Service is protected by
- copyright, trademark, and other laws.
-
- Our trademarks and trade dress may not be used in connection
- with any product or service without our prior written consent.
-
- We may terminate or suspend your account and bar access to the
- Service immediately, without prior notice or liability, under
- our sole discretion, for any reason whatsoever and without
- limitation, including but not limited to a breach of the Terms.
-
- If you wish to terminate your account, you may simply
- discontinue using the Service and contact us to request account
- deletion.
-
- Upon termination, your right to use the Service will cease
- immediately. If you wish to terminate your account, you may
- simply discontinue using the Service.
-
- The information on this Service is provided on an "as
- is" basis. To the fullest extent permitted by law, we
- exclude all representations, warranties, and conditions relating
- to our Service and the use of this Service.
-
- Nothing in this disclaimer will limit or exclude our or your
- liability for death or personal injury resulting from
- negligence, fraud, or fraudulent misrepresentation.
-
- In no event shall beenvoice, nor its directors, employees,
- partners, agents, suppliers, or affiliates, be liable for any
- indirect, incidental, special, consequential, or punitive
- damages, including without limitation, loss of profits, data,
- use, goodwill, or other intangible losses, resulting from your
- use of the Service.
-
- These Terms shall be interpreted and governed by the laws of the
- jurisdiction in which beenvoice operates, without regard to its
- conflict of law provisions.
-
- Our failure to enforce any right or provision of these Terms
- will not be considered a waiver of those rights.
-
- We reserve the right, at our sole discretion, to modify or
- replace these Terms at any time. If a revision is material, we
- will provide at least 30 days notice prior to any new terms
- taking effect.
-
- What constitutes a material change will be determined at our
- sole discretion. By continuing to access or use our Service
- after any revisions become effective, you agree to be bound by
- the revised terms.
-
- If you have any questions about these Terms of Service, please
- contact us at:
- Privacy Policy
- Personal Information
-
-
-
-
-
-
- Automatically Collected Information
-
-
-
-
- Service Providers
-
-
-
- Legal Requirements
-
-
-
- Business Transfers
-
-
-
-
- Access and Portability
-
-
-
- Correction and Updates
-
-
-
- Deletion
-
-
-
- Restriction and Objection
-
-
-
-
-
-
- Types of Cookies We Use
-
-
-
-
-
-
-
-
- Terms of Service
-
-
-
-
-
-
-
- By creating an account you agree to our{" "}
-
- By signing in you agree to our{" "}
-
+ By {action}, you agree to our
+ Last updated: {LEGAL_LAST_UPDATED} +
++ {brand.name} ("we", "our", or "us") is + committed to protecting your privacy. This Privacy Policy explains + how we collect, use, disclose, and safeguard your information when + you use our invoicing platform and services. +
++ Please read this Privacy Policy carefully. If you do not agree with + the terms of this Privacy Policy, please do not access or use our + Service. +
++ We may collect personal information that you voluntarily provide to + us when you: +
+This personal information may include:
++ We may automatically collect certain information when you visit our + Service: +
+We use the information we collect to:
++ We do not sell, trade, or rent your personal information to third + parties. We may share your information in the following + circumstances: +
+ ++ We may share your information with trusted third-party service + providers who assist us in operating our Service, such as: +
++ We may disclose your information if required to do so by law or in + response to: +
++ In the event of a merger, acquisition, or sale of assets, your + information may be transferred as part of that transaction. +
++ We implement appropriate technical and organizational security + measures to protect your information: +
++ However, no method of transmission over the internet or electronic + storage is 100% secure. While we strive to protect your information, + we cannot guarantee absolute security. +
++ We retain your personal information only for as long as necessary to + fulfill the purposes outlined in this Privacy Policy, unless a + longer retention period is required by law. +
++ Factors we consider when determining retention periods include: +
++ Depending on your location, you may have the following rights + regarding your personal information: +
+ ++ To exercise these rights, please contact us using the information + provided in the "Contact Us" section below. +
+We use cookies and similar technologies to:
++ You can control cookies through your browser settings. However, + disabling cookies may affect the functionality of our Service. +
+ ++ Our Service may contain links to third-party websites or integrate + with third-party services. We are not responsible for the privacy + practices of these third parties. +
++ We encourage you to read the privacy policies of any third-party + services you use in connection with our Service. +
++ Our Service is not intended for children under the age of 13. We do + not knowingly collect personal information from children under 13. +
++ If you are a parent or guardian and believe your child has provided + us with personal information, please contact us immediately so we + can remove such information. +
++ Your information may be transferred to and processed in countries + other than your own. We ensure that such transfers comply with + applicable data protection laws. +
++ When we transfer your information internationally, we implement + appropriate safeguards to protect your data, including: +
++ We may update this Privacy Policy from time to time. We will notify + you of any material changes by: +
++ Your continued use of our Service after any changes indicates your + acceptance of the updated Privacy Policy. +
++ If you have questions about this Privacy Policy or our privacy + practices, please contact us at: +
++ We will respond to your inquiries within a reasonable timeframe and + in accordance with applicable law. +
++ These Terms of Service ("Terms") govern your use of the{" "} + {brand.name} platform and services (the "Service") operated + by {brand.name} ("us", "we", or "our"). +
++ By accessing or using our Service, you agree to be bound by these + Terms. If you disagree with any part of these terms, then you may not + access the Service. +
++ {brand.name} is a web-based invoicing platform that allows users to: +
++ When you create an account with us, you must provide information that + is accurate, complete, and current at all times. You are responsible + for safeguarding the password and for all activities that occur + under your account. +
++ You agree not to disclose your password to any third party. You must + notify us immediately upon becoming aware of any breach of security + or unauthorized use of your account. +
+You agree not to use the Service:
++ Your privacy is important to us. Please review our{" "} + Privacy Policy, which also governs your + use of the Service, to understand our practices. +
++ You retain ownership of your data. We will not sell, rent, or share + your personal information with third parties without your explicit + consent, except as described in our Privacy Policy. +
++ You are responsible for backing up your data. While we implement + regular backups, we recommend you maintain your own copies of + important information. +
++ Some aspects of the Service may require payment. You will be charged + according to your subscription plan. All fees are non-refundable + unless otherwise stated. +
++ We may change our fees at any time. We will provide you with + reasonable notice of any fee changes by posting the new fees on the + Service or sending you email notification. +
++ If you fail to pay any fees when due, we may suspend or terminate + your access to the Service until payment is made. +
++ The Service and its original content, features, and functionality + are and will remain the exclusive property of {brand.name} and its + licensors. The Service is protected by copyright, trademark, and + other laws. +
++ Our trademarks and trade dress may not be used in connection with + any product or service without our prior written consent. +
++ We may terminate or suspend your account and bar access to the + Service immediately, without prior notice or liability, under our + sole discretion, for any reason whatsoever and without limitation, + including but not limited to a breach of the Terms. +
++ If you wish to terminate your account, you may discontinue using the + Service and contact us to request account deletion. +
++ Upon termination, your right to use the Service will cease + immediately. +
++ The information on this Service is provided on an "as is" + basis. To the fullest extent permitted by law, we exclude all + representations, warranties, and conditions relating to our Service + and the use of this Service. +
++ Nothing in this disclaimer will limit or exclude our or your + liability for death or personal injury resulting from negligence, + fraud, or fraudulent misrepresentation. +
++ In no event shall {brand.name}, nor its directors, employees, + partners, agents, suppliers, or affiliates, be liable for any + indirect, incidental, special, consequential, or punitive damages, + including without limitation, loss of profits, data, use, goodwill, or + other intangible losses, resulting from your use of the Service. +
++ These Terms shall be interpreted and governed by the laws of the + jurisdiction in which {brand.name} operates, without regard to its + conflict of law provisions. +
++ Our failure to enforce any right or provision of these Terms will + not be considered a waiver of those rights. +
++ We reserve the right, at our sole discretion, to modify or replace + these Terms at any time. If a revision is material, we will provide + at least 30 days notice prior to any new terms taking effect. +
++ What constitutes a material change will be determined at our sole + discretion. By continuing to access or use our Service after any + revisions become effective, you agree to be bound by the revised + terms. +
++ If you have any questions about these Terms of Service, please + contact us at: +
+- These Terms of Service ("Terms") govern your use of the - beenvoice platform and services (the "Service") operated - by beenvoice ("us", "we", or "our"). -
-- By accessing or using our Service, you agree to be bound by these - Terms. If you disagree with any part of these terms, then you may - not access the Service. -
-- beenvoice is a web-based invoicing platform that allows users to: -
-- When you create an account with us, you must provide information - that is accurate, complete, and current at all times. You are - responsible for safeguarding the password and for all activities - that occur under your account. -
-- You agree not to disclose your password to any third party. You must - notify us immediately upon becoming aware of any breach of security - or unauthorized use of your account. -
-You agree not to use the Service:
-- Some aspects of the Service may require payment. You will be charged - according to your subscription plan. All fees are non-refundable - unless otherwise stated. -
-- We may change our fees at any time. We will provide you with - reasonable notice of any fee changes by posting the new fees on the - Service or sending you email notification. -
-- We may terminate or suspend your account and bar access to the - Service immediately, without prior notice or liability, under our - sole discretion, for any reason whatsoever and without limitation, - including but not limited to a breach of the Terms. -
-- If you wish to terminate your account, you may simply discontinue - using the Service and contact us to request account deletion. -
-- If you have any questions about these Terms of Service, please - contact us at: -
-- We may collect personal information that you voluntarily provide to - us when you: -
-This personal information may include:
-We use the information we collect to:
-- We do not sell, trade, or rent your personal information to third - parties. We may share your information in the following - circumstances: -
- -- We may share your information with trusted third-party service - providers who assist us in operating our Service, such as: -
-- We may disclose your information if required to do so by law or in - response to: -
-- We implement appropriate technical and organizational security - measures to protect your information: -
-- Depending on your location, you may have the following rights - regarding your personal information: -
-- To exercise these rights, please contact us at - privacy@beenvoice.com. -
-- If you have questions about this Privacy Policy or our privacy - practices, please contact us at: -
-