Practice authorgs, SSO & MFA
Invite surveyors, control project access, and secure QS data with organization membership, SSO, and multi-factor authentication — built into QSNAPP.
Everything you need
for practice access
SSO, email/password, magic links, MFA, and organization membership — so the right surveyors see the right BoE, BoQ, and valuations.
SSO & social providers
Connect Microsoft, Google, Okta, Azure AD, and SAML so practices sign in the way they already work.
Orgs & roles
Invite partners, seniors, and juniors into workspaces with project-level membership — no bolt-on IAM.
Your practice data
User and membership data stays in QSNAPP with Postgres Row Level Security — not a third-party auth silo.
QSNAPP makes it simple to bring a practice online — invitations, roles, and project access just work out of the box for QS teams.
Practice-ready
security at every level
Multi-Factor Authentication
- Time-based one-time passwords (TOTP)
- Works with any authenticator app
- Enforce MFA for partners and admins
- Built-in enrollment and challenge flows
Enterprise SSO
- SAML 2.0 for identity providers
- Connect Azure AD, Okta, and more
- Automatic user provisioning on sign-in
- Manage SSO from the dashboard or API
Organization membership
- Invite surveyors into practice workspaces
- Role-based access to projects and bills
- Separate personal and firm workspaces
- Audit-friendly session management
Simple APIs
for practice auth
Client and server helpers for sign-up, SSO, sessions, and membership — without wiring a separate identity stack.
// Invite or register a practice user
const { user, error } = await qsnapp.auth.signUp({
email: 'qs@practice.co.za',
password: 'secure-password',
metadata: { role: 'senior_qs' },
})Project permissions
without custom middleware
Use Postgres Row Level Security to control who can create, edit, and delete BoE/BoQ rows — tied to QSNAPP auth and organization membership.
-- Enable RLS on project bills
alter table bill_items enable row level security;
create policy "Members can read project bills"
on bill_items for select
using (
project_id in (
select project_id from project_members
where user_id = auth.uid()
)
);Kickstart your next project
with QSNAPP workflows
View documentationQSNAPP docs & guides
Learn how BoE, BoQ, valuations, and WinQS migration fit together — from first project to final account.
Switch from WinQS
Bring DimensionX and WinQS libraries across, then continue pricing and measurement in QSNAPP.
Start a practice workspace
Create your QSNAPP account and invite surveyors into your first organization.
Pricing for practices
See plans for solo estimators through multi-office quantity surveying firms.
Workflow guides
Step-through guides for estimating, measurement, certificates, and VOs.
Import playbooks
Practical paths for migrating bills and libraries without losing structure.