Skip to content
Knowledge ERP Docs
API Reference ↗
Sales

Customer Portal

A branded, passwordless self-service portal where customers view quotes, invoices, orders, rentals, loans, and appointments — and accept quotes, request returns, reschedule appointments, and request due-date extensions on their own.

The customer portal is a public, self-service area where your customers can see and act on everything you've shared with them — without an account password and without staff involvement. It pulls together records from across the app (Sales, Appointments, Rentals, and Inventory loans) into one branded view, scoped to the signed-in customer.

Signing in #

The portal is passwordless. A customer enters their email on the sign-in page and receives a one-time magic link that signs them in for the session. Links are single-use and expire after 24 hours.

  • If the email matches an existing customer, they're signed straight in.
  • If it doesn't, the email is still sent — and the customer record is only created after they click through, so a stray address never creates a contact.

Reminder emails (below) embed a magic link, so a customer can jump from an email straight into the relevant record.

Branding #

The portal and its emails are branded to the account, not to Knowledge ERP:

  • The account name and uploaded logo appear on the sign-in page, the dashboard header, and outgoing portal emails. Upload a logo under Account Settings → Branding; it's stored once and resized automatically for each surface. The same logo also appears on document PDFs.
  • A per-location support phone and an account welcome message / support email tell customers how to reach you.

In production each account's portal lives on its own subdomain.

The dashboard #

After signing in, the customer lands on a tabbed dashboard. Tabs appear only when relevant — a tab shows when the account has the related module or the customer has records there. That second rule means that if you later drop a module, customers can still review their prior records (read-only) instead of losing their history. Clicking a tab updates the URL (?tab=…) without a reload, so links and the back button behave naturally.

A customer only ever sees their own records; the session is scoped to the linked customer.

Drafts are never shown. A Draft quote, invoice, or sales order has not been sent yet, so it is not visible in the portal — and for quotes and invoices the PDF is refused even over a direct link, so the list and the document itself always agree. A quote that has been Converted to a sales order is likewise hidden, since the order supersedes it. Terminal-but-already-sent records stay visible: a Declined or Expired quote, a Voided invoice, and a Cancelled order are all more useful to a customer shown than silently withdrawn.

Quotes #

Customers see their quotes with line items, total, and expiry. Each quote can be viewed as a PDF in the browser or downloaded, and a Sent quote can be accepted or declined in one click. The Quotes tab badges quotes awaiting a response.

Invoices #

Invoices list with date, amount, and status, each with view/download PDF. When an online payment gateway is connected, a customer can pay an open invoice from the portal. The Invoices tab badges any Sent or Partially Paid invoices.

Orders #

Sales orders show both their lifecycle status and their delivery status. Once an order has shipped or been delivered, the customer can request a return — choosing items and quantities (capped at what shipped), a reason, and a note. That opens a Submitted return for your staff to process; see Customer Returns.

Rentals & Loans #

Rental agreements and loan agreements are clickable to a detail page showing the return/due date and the items in the agreement (rentals also show the rate breakdown, total, and a link to the invoice PDF). From there a customer can request a due-date extension (see below). A row is flagged Extension requested while one is pending.

Appointments #

Each appointment opens to a detail page with the location's address and support phone, the requested equipment, and status-aware actions:

  • Pending appointments can be cancelled, have their details edited (contact info, notes, and — when the type allows equipment selection — the requested equipment, re-held against on-hand stock), and be rescheduled directly to any open slot (validated against the same availability rules as the public booking flow).
  • Confirmed appointments can be cancelled, and a reschedule becomes a request for staff to approve — or applies immediately when the location opts into auto-approval. Cancelling can notify the location's cancellation-notice email.
  • Completed appointments show the records they produced — the related sales order, rental, loan, or return.

Questionnaires #

Outstanding survey questionnaires tied to the customer's appointments are listed for completion.

Due-date reminders & extensions #

Both rentals and loans support automatic due-date reminder emails and customer-requested extensions:

  • Reminders. When a rental or loan is within its location's reminder window, the borrower is emailed once — with the equipment list and a magic-link button into the portal. Each agreement is reminded only once per due date (the marker resets if the due date is extended).
  • Extensions. From the agreement's detail page the customer picks a length:
    • Loans: 1, 2, 4, 8, or 16 weeks.
    • Rentals: 1 or 2 weeks, or 1 month — with a live estimated additional cost for the chosen length. Extending a rental only moves the return date; the extra rental is billed through the normal cycle/return billing, so no separate invoice is created at extension time.
  • Approval. By default an extension waits for staff approval (each module has an Extension Requests queue with a pending-count badge). With the location's auto-approve toggle on, it's applied immediately. A customer can withdraw a pending request, and approving/declining emails them the outcome.

Configuration #

Portal behavior is configured per account and per location:

Setting Where Effect
Logo, name Account Settings → Branding Portal + portal emails + PDFs
Welcome message, support email Account Settings → Customer Portal Sign-in page
Support phone Location → Appointments Appointment details
Cancellation-notice email Location → Appointments Notified on portal cancellations
Auto-approve confirmed reschedules Location → Appointments Apply reschedules immediately
Default quote validity (days) Location → Sales Pre-fills a new quote's "Valid Until"
Loan reminder days / auto-approve extensions Location → Loans Reminder lead time + extension approval
Rental reminder days / auto-approve extensions Location → Rentals Reminder lead time + extension approval

Security & audit #

Magic-link tokens are validated and consumed on use, and the session is limited to the linked customer's data. Every portal change — cancel, reschedule, edit, return request, extension request, quote decision — is recorded in the change history attributed to the customer who made it. Reminder emails are sent by the scheduled loans:send-due-reminders and rentals:send-due-reminders commands.