186 lines
8.0 KiB
Markdown
186 lines
8.0 KiB
Markdown
# Influencer Business-in-a-Box MVP
|
|
|
|
## Quick Context for AI Builders
|
|
|
|
Financial management SaaS for Swedish influencers/content creators. Supports both enskild firma (sole proprietor) and aktiebolag (limited company). Core problem: tax anxiety and admin overload. Core solution: automated compliance and simplified invoicing.
|
|
|
|
## Tech Stack
|
|
|
|
- **Framework**: Next.js 14 (App Router) + TypeScript
|
|
- **UI**: Tailwind CSS + shadcn/ui + Framer Motion
|
|
- **Database**: Supabase (PostgreSQL with RLS)
|
|
- **Auth**: Supabase Auth (magic link)
|
|
- **Hosting**: Vercel
|
|
- **PDF**: @react-pdf/renderer
|
|
- **Banking**: Enable Banking (PSD2 AISP)
|
|
- **Currency**: Riksbanken API for exchange rates
|
|
|
|
## Documentation Index
|
|
|
|
| Doc | Purpose |
|
|
|-----|---------|
|
|
| [01-PRD.md](./docs/01-PRD.md) | Product requirements, user stories, success metrics |
|
|
| [02-ARCHITECTURE.md](./docs/02-ARCHITECTURE.md) | Technical architecture, PSD2 strategy, security |
|
|
| [03-DATABASE-SCHEMA.md](./docs/03-DATABASE-SCHEMA.md) | Full Supabase schema with RLS policies |
|
|
| [04-API-SPECIFICATION.md](./docs/04-API-SPECIFICATION.md) | All API endpoints, VAT rules, momsdeklaration rutor |
|
|
| [05-UI-SPECIFICATION.md](./docs/05-UI-SPECIFICATION.md) | Wireframes, component specs, design system |
|
|
| [06-IMPLEMENTATION-GUIDE.md](./docs/06-IMPLEMENTATION-GUIDE.md) | Step-by-step build guide with code examples |
|
|
| [07-FUTURE-FEATURES.md](./docs/07-FUTURE-FEATURES.md) | Phase 2+ features: benefits tracking, NE-bilaga, Skatteverket APIs |
|
|
| [08-BAS-ACCOUNTING-GUIDE.md](./docs/08-BAS-ACCOUNTING-GUIDE.md) | BAS account mapping, MCC codes, auto-categorization rules |
|
|
|
|
## MVP Feature Scope
|
|
|
|
### Included in MVP
|
|
|
|
1. **Entity Support**: Both enskild firma and aktiebolag with appropriate tax logic
|
|
2. **Bank Integration**: Enable Banking (PSD2) with multiple account support
|
|
3. **Tax Dashboard**: "Disponibelt saldo" with F-skatt comparison warning
|
|
4. **Transaction Categorization**: Swipe UI with schablonavdrag suggestions
|
|
5. **Multi-currency Invoicing**: SEK, EUR, USD with Riksbanken auto-conversion
|
|
6. **VAT Automation**: Swedish (25%), EU reverse charge (0%), Export (0%)
|
|
7. **Credit Notes**: Kreditfaktura support for invoice corrections
|
|
8. **Expense Warnings**: Alert on non-deductible lifestyle costs
|
|
9. **Configurable Settings**: Momsperiod (monthly/quarterly), custom invoice numbering
|
|
|
|
### Deferred to Later
|
|
|
|
- Receipt photo capture and matching
|
|
- Benefits/gifts tracking (förmånshantering)
|
|
- NE-bilaga / Årsredovisning auto-generation
|
|
- Automated payment reminders
|
|
- Quotes/proforma invoices
|
|
- English UI
|
|
|
|
## Entity Type Tax Differences
|
|
|
|
| Aspect | Enskild Firma | Aktiebolag |
|
|
|--------|---------------|------------|
|
|
| Profit tax | Egenavgifter (28.97%) + kommunalskatt (~32%) | Bolagsskatt (20.6%) |
|
|
| Owner payment | Eget uttag | Lön + utdelning |
|
|
| Annual filing | NE-bilaga | Årsredovisning + INK2 |
|
|
|
|
## Key Swedish Tax & Legal Concepts
|
|
|
|
| Term | English | Rate/Rule |
|
|
|------|---------|-----------|
|
|
| Enskild firma | Sole proprietorship | Personal liability, NE-bilaga |
|
|
| Aktiebolag (AB) | Limited company | 20.6% bolagsskatt, årsredovisning |
|
|
| Egenavgifter | Self-employment contributions | 28.97% (enskild firma only) |
|
|
| Arbetsgivaravgifter | Employer contributions | 31.42% (AB paying salary) |
|
|
| Bolagsskatt | Corporate tax | 20.6% on AB profit |
|
|
| Kommunalskatt | Municipal income tax | ~30-35% varies |
|
|
| F-skatt | Business tax registration | Required for invoicing |
|
|
| Debiterad preliminärskatt | Preliminary tax set | Monthly F-skatt payment amount |
|
|
| Moms | VAT | 25% standard, threshold 80k SEK |
|
|
| Momsperiod | VAT reporting period | Monthly or quarterly |
|
|
| Räkenskapsår | Fiscal year | Calendar or brutet (broken) |
|
|
| Brutet räkenskapsår | Non-calendar fiscal year | e.g., July 1 - June 30 |
|
|
| Omvänd skattskyldighet | Reverse charge | EU B2B: buyer reports VAT |
|
|
| Kreditfaktura | Credit note | Corrects/cancels issued invoice |
|
|
| Schablonavdrag | Standard deduction | Fixed amounts (hemmakontor 2000 kr/år) |
|
|
| AGI-deklaration | Employer declaration | Monthly report for AB salaries |
|
|
| SIE-fil | Standard Import Export | Accounting data exchange format |
|
|
|
|
## Entity Type Tax Differences
|
|
|
|
| Aspect | Enskild Firma | Aktiebolag |
|
|
|--------|---------------|------------|
|
|
| Profit tax | Egenavgifter (28.97%) + kommunalskatt (~32%) | Bolagsskatt (20.6%) |
|
|
| Owner payment | Eget uttag | Lön + utdelning |
|
|
| Salary costs | N/A | Arbetsgivaravgifter (31.42%) |
|
|
| Annual filing | NE-bilaga | Årsredovisning + INK2 |
|
|
| Periodiseringsfond | Max 30% | Max 25% |
|
|
|
|
**MVP Note:** For AB, system tracks salary payments and calculates arbetsgivaravgifter. Lön/utdelning optimization (3:12-reglerna) deferred to future phase.
|
|
|
|
## MVP Technical Notes
|
|
|
|
| Aspect | Implementation |
|
|
|--------|----------------|
|
|
| Banking | Enable Banking (PSD2 AISP) |
|
|
| Email | Supabase built-in |
|
|
| Payment on invoices | Bank transfer only (future: third-party) |
|
|
| Partial payments | Not supported (paid/unpaid binary) |
|
|
| Fiscal year | Calendar + brutet räkenskapsår |
|
|
| Multi-user | Single user per account |
|
|
| UI Language | Swedish only |
|
|
| Data import | SIE file (future feature) |
|
|
|
|
## Momsdeklaration Ruta Quick Reference
|
|
|
|
| Ruta | When Used |
|
|
|------|-----------|
|
|
| 05 | Swedish domestic sales with 25% VAT |
|
|
| 39 | EU B2B services (reverse charge) |
|
|
| 40 | Export to non-EU |
|
|
| 21 | Service purchases from EU (input) |
|
|
| 48 | Self-assessed output VAT on foreign purchases |
|
|
|
|
## Critical Implementation Notes
|
|
|
|
1. **All tax figures are estimates** - display disclaimer prominently
|
|
2. **VIES validation required** for EU reverse charge - without it, charge 25% VAT
|
|
3. **Non-custodial design** - app NEVER holds user funds
|
|
4. **Multi-currency**: Store original + SEK converted amounts, use Riksbanken rate on invoice date
|
|
5. **Invoice numbers**: Allow custom starting number (user may have history elsewhere)
|
|
6. **Credit notes**: Must reference original invoice, use negative amounts
|
|
7. **Expense warnings** - clothing, cosmetics, gym are NOT deductible per Kammarrätten rulings
|
|
8. **7-year retention** - Bokföringslagen requires, GDPR does not override for accounting records
|
|
9. **RLS on all tables** - users must only access own data
|
|
10. **Swedish UI only** for MVP
|
|
|
|
## Schablonavdrag Defaults
|
|
|
|
| Type | Amount | Notes |
|
|
|------|--------|-------|
|
|
| Hemmakontor | 2 000 kr/år | If dedicated room |
|
|
| Bilkostnader | 18.50 kr/mil | Business travel |
|
|
| Telefon | Actual or % split | Based on business use |
|
|
|
|
## Quick Start for Builder AI
|
|
|
|
1. Read docs in order: PRD → Architecture → Schema → API → UI → Implementation → Future
|
|
2. Start with auth + middleware (including onboarding redirect logic)
|
|
3. Build onboarding wizard (6 steps, all required except preliminary tax)
|
|
4. Implement Enable Banking integration in onboarding step 6
|
|
5. Build dashboard with tax calculations (adapt for entity type)
|
|
6. Add invoice creation with multi-currency + VIES validation
|
|
7. Implement credit note flow
|
|
8. Polish UI (Swedish language)
|
|
|
|
## File Structure
|
|
|
|
```
|
|
/
|
|
├── app/
|
|
│ ├── (auth)/login/page.tsx
|
|
│ ├── (onboarding)/onboarding/ # Wizard steps 1-6
|
|
│ ├── (dashboard)/
|
|
│ │ ├── page.tsx # Dashboard
|
|
│ │ ├── transactions/page.tsx
|
|
│ │ ├── invoices/
|
|
│ │ │ ├── page.tsx
|
|
│ │ │ ├── new/page.tsx
|
|
│ │ │ └── [id]/credit/page.tsx # Credit notes
|
|
│ │ ├── customers/page.tsx
|
|
│ │ └── settings/page.tsx
|
|
│ └── api/...
|
|
├── components/
|
|
│ ├── ui/ # shadcn components
|
|
│ ├── onboarding/ # Wizard components
|
|
│ ├── dashboard/
|
|
│ ├── transactions/
|
|
│ └── invoices/
|
|
├── lib/
|
|
│ ├── supabase/
|
|
│ ├── banking/enable-banking.ts
|
|
│ ├── currency/riksbanken.ts
|
|
│ ├── tax/
|
|
│ │ ├── calculator.ts
|
|
│ │ ├── expense-warnings.ts
|
|
│ │ ├── schablonavdrag.ts
|
|
│ │ └── fskatt-warning.ts
|
|
│ └── invoice/vat-rules.ts
|
|
├── types/index.ts
|
|
└── supabase/migrations/
|
|
``` |