mySites.guru

A Login for Your Accountant, Not Your Sites

A Login for Your Accountant, Not Your Sites

This is a blog post about a mySites.guru feature. Accountants can now log in to mySites.guru themselves to grab your past invoices.

If you run a web agency on mySites.guru, your accountant does not need to see your client sites. They need your invoices. And yet most SaaS tools force you to pick between two bad options: hand over full access and trust the bookkeeper not to poke around, or export a PDF of every invoice at month end and email the lot.

We shipped a third option. It is called the Accountant Portal and it is live today on every paid plan.

What Does the Accountant Portal Do?

The Accountant Portal is a new role type for team members. When you add a user and pick Accountant only, that user can log in, see your invoices, open any invoice in detail, and email a copy to themselves. That is the complete list. Every other page in the app returns 403 Access Denied.

The mySites.guru Accountant Portal showing a clean invoices list for captain@phil-taylor.com. Each row shows a Recurring subscription payment with date, amount in GBP, and a View invoice button. The header reads mySites.guru - Accountant Portal with a Log out button on the right.

That screenshot is the entire world an accountant can see. No sidebar, no tools menu, no team management, no settings. Just invoices.

Why Build a Separate Role Instead of Adding Permissions?

mySites.guru has had team members with per-site and per-feature permissions for years. We could have added an “invoices only” toggle to the existing team form. We chose not to.

A permission-based approach leaks. Every time we add a new feature (a new tool, a new audit, a new dashboard widget) we have to remember to exclude the accountant role. One missed #[IsGranted] check and the bookkeeper is suddenly looking at your hacked-sites list. That is not a security model, that is a promise we have to keep renewing on every PR, and we will eventually forget one.

The Accountant Portal inverts the default. Instead of maintaining a growing allowlist of what an accountant cannot see, we maintain a short allowlist of what they can see:

  • /invoices
  • /invoices/{id} (single invoice view)
  • /invoices/{id}/email (email invoice to self)
  • /login, /logout, password reset

A global request listener runs before every controller. If the logged-in user has ROLE_ACCOUNTANT and the route is not on that allowlist, they get a 403. No controller has to opt in. No future feature can accidentally expose data. The “captive portal” stays captive, full stop.

How Do You Invite an Accountant?

Open your Your Team page and click Add Team Member. Enter their name and email, then pick the Accountant only option.

The mySites.guru Create Team Member form with two account-type radio buttons. Team member (full access to manage sites) is unselected. Accountant only (read-only invoice access) is selected and highlighted in yellow, with help text explaining View and email invoices only. Cannot see any sites, cannot be assigned sites, and has no access to anything else. Use for your bookkeeper or accountant.

The help text tells you what you are agreeing to: View and email invoices only. Cannot see any sites, cannot be assigned sites, and has no access to anything else.

Ticking Accountant only hides the site picker entirely. There is no way to accidentally bundle a “just this one site” exception. Accountants are mutually exclusive with regular team members: one or the other, never both. The account saves, an invite email goes out with a password-reset link, and your accountant is up and running in under a minute.

What About Notifications and Activity Emails?

mySites.guru sends plenty of operational email: failed backups, security alerts, plugin update warnings, uptime pings. Your accountant does not want any of that, and you do not want them seeing it.

The getTeamMembers() call that feeds those notifications now excludes accountants by default. Billing emails (receipts, payment failures) still reach them, since that is the whole reason they have a login. Everything else skips them. You do not need to touch any notification preferences for this to work.

Can the Accountant Be Impersonated or Tricked Into Full Access?

No. The details that come up in security reviews:

  • ROLE_ACCOUNTANT is written to the same roles column as every other role. One hasRole() check, enforced centrally, not scattered across controllers.
  • The authenticator checks for ROLE_ACCOUNTANT on every successful login and force-redirects to /invoices, overriding any stored target path. Even a bookmarked deep link lands on the captive page.
  • A company owner can still impersonate an accountant for debugging, but the reverse is impossible. An accountant has no impersonation UI, no team member list, and no access to the user-switching mechanic.
  • The lockdown listener runs on every request, not just HTML routes. AJAX and JSON endpoints 403 too.
  • Passkeys and 2FA work on accountant accounts the same as any other. I would recommend turning a passkey on regardless.

Why Does This Matter?

Bookkeepers are busy people handling invoices for a pile of clients at once. The last thing you want is yours clicking around in an unfamiliar control panel and accidentally triggering a backup restore or firing off an email to a client who has no idea who they are. “I’ll just have a quick look round” is how incidents start. With the Accountant Portal there is no “round” to look at, so the temptation never shows up.

It is also honest. When you give your accountant a login, they should know exactly what they can and cannot see. A role labelled Accountant only (read-only invoice access) with a yellow warning box on the invite form leaves nothing to interpret. Nobody is “pretty sure” they cannot see client data. They demonstrably cannot.

Why Do We Not Auto-Email Financial Data?

Plenty of SaaS tools will happily pump your invoice data to whoever you point them at, on whatever schedule you pick. We will not.

Invoices are financial records. In the UK they fall under the UK GDPR and the Data Protection Act 2018, and the ICO’s own guidance is that plain SMTP email is not a secure channel for personal financial information. GDPR Article 32 (security of processing) says the same thing in EU terms. If your invoice touches anything health-related in the US, you are suddenly in HIPAA territory. Australia has the Privacy Act 1988. And the accounting regulators (ICAEW and AAT) expect members to keep client financial data inside access-controlled systems, not bouncing around inboxes.

Email is plaintext. It travels over servers you do not control, sits in spam filters you do not administer, and hangs around in archives long after the recipient has left the firm. Auto-emailing an invoice to an accountant every month means a year of invoices sitting across four or five mail hops, indefinitely. If their mailbox is compromised next year, so is your billing history.

The Accountant Portal inverts that flow. The accountant logs in with a password or a passkey, over TLS, to a page only they can see, and pulls the data when they need it. If they want a copy in their inbox, they can email a single invoice to themselves with one click. Same convenience, far less attack surface, and nobody is wondering two years from now whether a closed Yahoo account still has a client’s billing address sat in it.

Why No PDFs?

The Accountant Portal does not render invoice PDFs. Invoices display as HTML, and if the accountant needs a saved file, their browser’s Print to PDF handles it. That is a deliberate choice, and we are in reasonably good company on it.

The Government Digital Service blog laid out why GOV.UK publishes content as HTML rather than PDF: PDFs are harder to search, awkward with screen readers, awkward to re-flow on mobile, and ignore the browser settings (text size, contrast, preferred font) that a lot of readers actually rely on. The government’s Accessibility team went further in 2023 and started stripping legacy PDFs off GOV.UK. The ONS has now stopped generating PDFs of its HTML content from 2026 onwards.

Not everyone got the memo. The States Assembly in Jersey has just moved the other way, making the PDF the authoritative version of each proposition and treating the HTML on the page as a convenience copy. Every publication now carries an info box saying the PDF is the official document. Two governments, same decade, opposite conclusions. I would not bet on Jersey ageing well on that one.

Those reasons carry over to invoices:

  • An HTML invoice respects the accountant’s screen reader, their zoom level, and their high-contrast setting. A PDF locks you into 10 point text at whatever font happened to be embedded, whether that works for them or not.
  • If we change a VAT number, a trading address, or a line-item format, we edit one template and every historical invoice picks it up. Regenerating a decade of PDFs every time HMRC tweaks a required field is not a good use of anyone’s weekend.
  • A rendered PDF of a simple invoice is routinely five to twenty times the size of the equivalent HTML. Across thousands of customers that becomes a lot of bandwidth and storage for a worse experience.
  • Browsers already print HTML to PDF properly. The output is an accessible, tagged PDF that matches the reader’s display preferences. Two clicks in Chrome and your accountant has a filing copy that actually works with their tooling.

The part a lot of developers forget: every major operating system already has a first-class PDF renderer built in. macOS has had Print to PDF in the system print dialog since 2001. Windows 10 shipped Microsoft Print to PDF as a default printer back in 2015. Every mainstream Linux desktop exposes the same option via CUPS. Chrome, Safari, Firefox, and Edge all route into those system printers. So the PDF your accountant saves is one produced by Apple, Microsoft, or the CUPS team, using the same font rasterisation and colour management their operating system uses for everything else on screen.

Rendering a PDF server-side in PHP cannot get near that. The PHP options (mPDF, TCPDF, dompdf, wkhtmltopdf wrappers) are all fighting a frozen CSS subset, an embedded font list that never quite matches the source page, and assorted quirks around page breaks, ligatures, RTL text, emoji, and custom web fonts. I have lost enough Saturdays to TCPDF trying to line an invoice up with its HTML version to know the answer: ship the HTML, let the OS render the PDF.

One more reason, and it is one the PDF-by-default crowd rarely thinks about: printing is not eco-friendly. A PDF exists to look like a sheet of paper, and the natural next step with a PDF is to print it. A 2019 study by The Shift Project put the global digital industry at roughly 4% of greenhouse gas emissions, and paper is still the single biggest source of office waste in the UK according to Defra’s waste prevention programme. Every unneeded invoice PDF is an invitation to hit print, and every printed invoice is ink, toner, paper, electricity, and a delivery lorry somewhere up the supply chain.

An HTML invoice defaults to never being printed. If you want a filing copy you still can, but the default behaviour is “read it on the screen and close the tab” rather than “print it and put it in a folder that nobody opens.” Small thing per invoice. Not a small thing across thousands of accountants filing thousands of clients.

HTML first, print on demand. The invoice you see is the invoice you get, and the format of any saved copy is yours to pick.

Give It a Try

Open your Your Team page, click Add Team Member, and tick Accountant only. Your accountant has a login in two minutes. If you do not yet have a mySites.guru account, pricing starts at £5/month for one site or £19.99/month for unlimited sites, and every plan includes unlimited team members and accountants.

Add Your Accountant Now


Team access patterns like this one are covered in our agency multi-site management guide.

Frequently Asked Questions

What does the Accountant Portal in mySites.guru do?
It lets an account owner invite their accountant or bookkeeper as a restricted user who can only see and download invoices. They cannot see any sites, any tools, any team members, or any other account data. Every route outside the invoices page returns 403. The accountant lives in a captive page at /invoices with three actions: view the list, open a single invoice, or email a copy to themselves.
How is an accountant different from a team member in mySites.guru?
Team members can be granted full or site-specific access to manage WordPress and Joomla sites. Accountants cannot. The two roles are mutually exclusive: when you tick Accountant only on the team form, the site picker disappears and no site access is possible. Accountants do not receive site-activity notification emails, do not show up in site access lists, and cannot be impersonated into site admin. One accountant belongs to one account owner.
Can my accountant see my client sites or my clients' data in mySites.guru?
No. The accountant role is enforced by a global request listener that blocks every route outside the invoices captive page. They cannot reach the sites list, the tools, the backups, the audits, the white-label reports, or any API endpoint. Even if they guess a URL, the app returns 403 Access Denied. The only pages they can load are the invoices list, a single invoice view, and the login and logout pages.
Is there an extra charge for adding an accountant in mySites.guru?
No. The accountant seat is free on every paid plan. There are no per-seat fees for team members either. Add your accountant the same way you add a team member, tick the Accountant only option, and they are set up without affecting your subscription.
How does my accountant log in?
You add them from the Your Team tab with their name and email and pick Accountant only. They receive an invite email with a password-reset link. Once they set a password (or register a passkey, which is supported on every account), they log in at manage.mysites.guru and land directly on the invoices page. There is no way for them to navigate anywhere else.
Can the accountant email invoices to themselves?
Yes. On any single invoice, the accountant can click Email Invoice and a copy is delivered to the email address on their account. Useful for accountants who prefer to file PDFs in their inbox or forward them into a bookkeeping workflow. The email uses the same template the account owner receives.
Can I revoke accountant access?
Yes. Accountants are managed on the same team page as regular members. You can disable or delete the account at any time, and access is removed immediately. If your accountancy firm changes, remove the old one and add the new one in under a minute.

What our users say

John Flanagan
John FlanaganVice President - GovSites - Spatial Data Logic
★★★★★

mySites.guru is one of the pillars of our operation. The cost for the full suite is less than I would expect to pay for a single function (site upgrades, extension management, audits, backup triggering, secure logins, etc) and Phil is a wealth of knowledge when it comes to troubleshooting. If you are running a website without this platform, chances are something is lurking under the hood that this would uncover in a minute.

Read more reviews

Read all 177 reviews →

Ready to Take Control?

Start with a free site audit. No credit card required.

Get Your Free Site Audit