Client Portal
Each client has access to a personalized portal where they can view their invoices, quotes, and payment status. No account or password creation is required.
Portal Access
For the Client
Frihet generates a secure link for each invoice:
https://app.frihet.io/pay/{userId}/{invoiceId}/{token}
The client clicks and accesses directly without logging in. The link is automatically included in invoice emails with a "View and Pay Invoice" button.
No Account Required
No need to:
- Create user
- Remember password
- Configure 2FA
The link is unique per invoice and identified by an HMAC-SHA256 token. Each user+invoice combination generates a deterministic token, without database storage.
What the Client Sees in the Portal
Upon opening the link, the client sees a page with your branding (logo and brand color):
Header
- Your company's logo or initial with your brand color
- Your business name
- Invoice number
Invoice Details
- Highlighted total amount
- Due date
- Issue date
- Client name
- Line item table: description, quantity, unit price, amount
- Breakdown: subtotal, VAT, IRPF (if applicable), total
Status
- Green banner if already paid
- Red banner if overdue
Notes
If the invoice includes notes, they are shown at the end.
Payment Button
If you have Stripe Connect configured, a "Pay [amount]" button appears, which redirects to the Stripe checkout. The payment is processed, and the invoice is automatically marked as paid.
Features by Plan
Free Plan
- View invoices: ✅
- Download PDF: ✅
- View quotes: ✅
- Direct message: ❌
- Accept quote: ❌
Pro Plan
- All Free Plan features +
- Accept quotes: ✅
- Send message: ✅ (received in your email)
- History: ✅
Business Plan
- All Pro Plan features +
- Custom branded portal (your logo, colors)
- Project status (if using Projects module)
- Download consolidated statement
- Portal integration: accept quote → automatic invoice
Portal Customization
In Pro and Business Plans
Customize the client experience:
- Go to Settings > Client Portal
- Upload logo (JPG, PNG, max 2MB)
- Choose primary color (your brand)
- Write welcome message
- Configure portal language
Example:
Logo: Your company logo
Color: #0066cc
Welcome: "Secure access to your invoices and documents"
Language: Spanish / English (automatic based on browser)
Automatic Language
If a client accesses from an English browser, the portal automatically displays in English (if you enabled multi-language in the Business plan).
Security
Authentication
- Unique HMAC-SHA256 token per invoice (deterministic, no DB storage)
- Timing-safe comparison to prevent timing attacks
- HTTPS mandatory
- Security headers:
X-Frame-Options: DENY,X-Content-Type-Options: nosniff
Privacy
The client only sees:
- The specific invoice from the link
- Secure data (no internal IDs or sensitive data are exposed)
Cannot access:
- Other invoices
- Data from other clients
- Expense information
- Your account settings
Access Revocation
If you delete a client:
- Their portal links are immediately invalidated
- Cannot access anything
- Data is kept for audit (logical deletion, not physical)
Sending Invoices
Automatic
When you create an invoice, Frihet asks:
¿Send by email to client?
✓ Yes, with link to the portal
○ No, just save
Manual
To resend an invoice:
- Open invoice in Frihet
- Click Send
- An email is sent with:
- PDF file attached
- Link to the portal
- Due date
- Payment details if configured
Email Template
Default:
Subject: Your invoice INV-2026-001 is ready
Hello,
Attached is your invoice from February 5 for 1,250 EUR.
Due: March 7, 2026
Payment term: 30 days
View in portal: [link]
Download PDF: [direct download link]
[Your contact details]
In the Business plan, customize the template and signature.
Client Notifications
Frihet can automatically send:
- Invoice issued: Email when you create a new invoice
- Payment reminder: Email 3 days before due date (configurable)
- Payment received: Confirmation email when marked as paid
- Quote expired: Notification if a quote expires without being accepted
Configure in Settings > Client Notifications.
Support and Questions
If a client has questions via the portal:
In Pro/Business Plans
A "Send message" field appears for the client. The message reaches your email:
From: Acme Corp
Message: "Can I change the shipping address on the invoice?"
You reply via normal email (or from Frihet).
In Free Plan
Client cannot send direct message (incentive for upgrade).
Usage Metrics
In Reports > Client Portal:
- Active clients (who accessed in the last month)
- Documents downloaded
- Messages sent
- Average view time
Useful for knowing if a client reads your invoices or needs a reminder.
Common Problem: Client Cannot Access
Expired Link
If a client saves a link and uses it 6 months later:
- If the client is still in your database: normal access (token valid indefinitely)
- If you deleted the client: access blocked
Solution: Resend invoice (generates a new valid link).
Email Spam
Frihet email goes to spam. Solutions:
- Client adds
noreply@frihet.ioto contacts - In the Business plan, use your own domain (SPF/DKIM configured)
- Resend from Frihet (not client forwards)
Upcoming Improvements
We are developing:
- Portal with chat: Integrated direct contact
- Push notifications: Alert when an invoice is due
- Bizum payments: Alternative to card payment
- Additional documents: Receipts, credit notes
- Access control: Client only sees invoices for a specific project/contract