Skip to content

External Client Portal

Kraal's external client portal helps accounting firms collect client responses without moving the client into the firm's internal workspace.

Use it when you need a client to:

  • Upload or reference a document
  • Answer a specific question
  • Approve or reject a review item

The portal is designed for quick response. It is not a full accounting workspace and does not expose the firm's internal dashboards, work queues, or automation controls.

Firms and single businesses

The portal adapts to how your organization uses Kraal:

  • Accounting firm. You collect documents and answers from external clients. Portal pages and request emails speak on your firm's behalf ("Requests from [Your Firm]"), and the workspace talks about clients.
  • Single business (my company). Your accounting team collects documents and answers from people inside your own company — expense reports, receipts, approvals. The same request flow applies, but the portal and emails speak as "your finance team" and the workspace talks about your company instead of clients.

You choose between these when the organization is created; no extra portal setup is needed. Everything below applies to both — read "client" as "teammate" when Kraal runs your own company's books.

How the flow works

  1. A firm user creates a request from the client workspace.
  2. Kraal sends the client a secure portal link when an external portal contact is assigned.
  3. The client opens the link and sees their open requests.
  4. The client responds inline.
  5. The response is recorded for the firm. Document uploads move to the firm's Recently received list as "To review" and are checked off once the firm accepts the file. A question or approval linked to a reconciliation or close may also wait for firm review before it counts as accepted accounting evidence (see "Review received responses and check requests off").

Create a client request

From the workspace for a selected client, use Request from Client.

Choose the request type:

  • Document for bank statements, invoices, receipts, contracts, or other supporting files.
  • Question for short clarifications, missing details, or confirmation of accounting treatment.
  • Approval when the client needs to approve or reject a review item.

Add a clear title, optional description, priority, and due date. Keep the request specific so the client knows exactly what to do.

Good examples:

  • "Upload March bank statement"
  • "Confirm whether invoice INV-1042 was paid outside the bank feed"
  • "Approve April close package"

Avoid broad requests like "send everything for March" unless your firm has already agreed on that meaning with the client.

What clients see

The portal is a mobile-first checklist: one row per open request, ordered overdue-first then oldest-first, under a single verdict line — "N things to send · M are overdue," or "Nothing waiting on you." when the list is clear. Each row names what kind of ask it is (Send a document, Approve, or Answer a question), who it's for (For you, or open to anyone at the client), and when it's due, with overdue age spelled out.

Clients expand a row and respond right there:

  • Document requests accept a photo or file — Snap a document opens the phone camera, Choose from library picks an existing file (PDF, photo, or spreadsheet · one file · up to 25 MB), with an optional note.
  • Questions take a typed answer.
  • Approvals offer Approve or Request changes, with an optional note.

Every request also has an honest escape hatch — I don't have this, I don't know this, or Ask a question — which records a reply for the firm without falsely completing the request.

Responses land in a Sent section that translates firm-side state into client language: "Received — being reviewed," "Accepted by your accountant," "They've asked for a different file," and so on. A response can therefore be complete from the client's point of view while still sitting in the firm's review queue. The portal speaks on your firm's behalf throughout; Kraal appears once in the footer, alongside a reminder to only trust links from your firm.

Opening the secure link starts a portal session, so the client can return without re-opening the email; sessions last about 30 days, and when one expires the client simply opens the emailed link again. If the client cannot access the portal link, they can request a fresh one themselves (see Link lifetime below), or you can send a fresh request or ask your administrator to confirm the client's portal contact.

Every emailed Kraal link follows the same rule: it stays valid for 90 days. This applies to portal invitations and to shared report links alike, so there is one story to remember.

An expired portal link is not a dead end and does not require calling your firm. The expired page shows a single button, "Email me a fresh link". Clicking it sends a new secure link to the email address already on file, and the client is back in with two clicks. For security, the page always shows the same confirmation whether or not the link matched an active portal account, requests are rate limited, and each new link replaces the old one.

If a client's access was revoked by an administrator, the refresh button will not restore it. Re-inviting the client is the only way back in, which keeps revocation meaningful.

Billing page (legacy subscriptions only)

The portal no longer offers a Premium upgrade. Clients who still carry a legacy portal subscription can open the Billing page to view it or cancel it (cancellation applies at the end of the current billing period, and the page warns if a payment is past due); everyone else is taken straight to their requests. Payment details were only ever entered on Stripe's hosted page, never inside Kraal.

Administrators and managers can revoke a client's portal access at any time. Revoking deactivates the recipient and schedules cancellation of any active subscription; re-inviting the same email restores access with a fresh secure link.

Track requests in the workspace

The workspace shows request counts and recent open requests so firm users can see what is still blocking work.

Use the request stats to identify:

  • How many requests are still pending
  • Which requests are marked urgent or overdue
  • How many received documents are waiting for your review ("To review")
  • Which client follow-ups may be blocking close or reconciliation work

Kraal may also surface advisory signals when client requests become overdue. These signals are reminders to review the client request and decide the next action.

Review received responses and check requests off

When a client uploads a document, the request leaves the client's open list and lands in the Recently received panel as "To review" — received, but not yet checked off. From there you can:

  • Open the document to inspect it.
  • Accept it — this checks the request off. Accepting confirms the received file only; it never posts accounting entries on its own. Accepted close-critical uploads are routed into the matching close period as evidence.
  • Request replacement — if the file is wrong (wrong month, wrong account), this sends the request back to the client as pending and re-notifies their portal contact, so the follow-up loop continues without creating a new request. The rejected round stays visible in the request's history.

This review step keeps "the client sent something" and "we verified it" as separate, trackable states, so nothing silently slips through.

The same distinction applies when a question or approval is part of a reconciliation or close requirement: responded means the client answered; accepted means a firm reviewer decided that the response satisfies the accounting requirement. If it does not, request a replacement or revision. The earlier answer and review decision stay in the request history, so the next reviewer can see what changed.

The AI assistant can see and act on requests

Kraal's assistant has the same visibility you do:

  • Ask it "what's outstanding from this client?" or "what documents arrived?" and it lists the open requests, overdue items, and received responses awaiting review.
  • It can draft the follow-up actions — accept a received response, request a replacement, send a reminder, or cancel a stale request — as approval cards. Nothing runs until you click Execute on the card. If Kraal cannot confirm the exact request and allowed next step, it sends you to the request detail instead of asking you to invent missing information.
  • The "Let Kraal chase these docs" flow can also drive an entire document chase for a client: proposing requests for gaps, reminder batches for stale requests, and delivery fixes, each gated on your approval. If a document arrives outside the portal (for example by email), you can tell the chase to check the item off; the receipt is still recorded only after you approve it.

Reminders and delivery health

Kraal helps make sure requests actually reach the client and get answered:

  • Reminders can be sent for overdue requests, either individually or on a schedule your firm configures (with a preferred send window so clients are not emailed at odd hours).
  • Sent means the latest notification was accepted for sending. It does not prove that the recipient opened it or that the response is complete.
  • Delivery issues counts requests whose latest notification attempt failed. Open the affected request, confirm the assigned contact, resolve the contact or delivery problem, and retry. A delivery failure is firm-owned work, not time spent waiting on the client.
  • When a firm user sets a reply-to address for a client, replies to portal notifications route back to your firm's inbox.

If a request is marked Sent but the client reports that nothing arrived, confirm the email address, ask the client to check filtered or junk mail, and send a fresh notification through the request workflow. Continue to treat the request as outstanding until the client responds and the firm reviews the result.

See "Review received responses and check requests off" above for how responses are reviewed and routed into close work.

Managing portal contacts

Any workspace user with access to the client can add a portal contact and assign requests. Removing a contact (revoking portal access) is reserved for owners, administrators, and managers, and asks for confirmation — revocation cuts off the recipient's link immediately, while their request history stays intact.

  • Assign requests to the right client contact when possible.
  • Use one request per clear action.
  • Include due dates for close-critical requests.
  • Use urgent priority only when the request blocks time-sensitive accounting work.
  • Resolve or cancel stale requests rather than leaving them pending indefinitely.

Security and access

The portal link is intended only for the client recipient. Do not post portal links in shared public channels.

Clients should only use links sent by your firm or by Kraal on your firm's behalf. If a link appears suspicious, the client should contact the firm before opening it.

The portal does not give clients access to internal firm screens, work queues, automation settings, or other clients.

To send a client a finished report or report pack rather than request something from them, see Sharing Reports with Clients.

Troubleshooting

If a client says they cannot see a request:

  • Confirm the request was created for the correct client.
  • Confirm the request is still pending.
  • Confirm the request was assigned to the intended portal contact, if your firm uses assigned contacts.
  • Check whether the request appears under Delivery issues. Resolve the contact or delivery problem before retrying.
  • Send a new request if the original link is old or the recipient changed.

If a request is no longer needed, cancel it from the firm workspace so the open request count stays accurate.

Kraal — AI-powered accounting for modern firms