ROD-Solutions
Still loading. Check your connection, then reload the page.
{{ brandName }}
{{ brandName }}
{{ brandTagline }}
{{ loginTitle }}
{{ loginSubtitle }}
or with a local account
{{ loginLabel }}
Password
{{ loginError }}
New employee? Create an account
Create your account
Sign up with your company email. We'll send a verification code.
Full name
Company email
Job title
Password
Confirm
{{ suError }}
Already have an account? Sign in
Two-step verification
{{ mfaHint }}
Verification code
{{ mfaError }}
Check your email
We sent a 6-digit verification code to {{ suEmail }}.
Verification code
{{ codeError }}
Leave & approvals 1:1 meetings on Teams Pipeline in SAR · AED · USD · EGP
© 2026 {{ brandFull }} · Internal system, authorised users only · v6.0.0
No results.
v6.0.0
{{ licBannerTitle }}{{ licBannerText }}
{{ greeting }}
{{ todayLabel }}
Set up your workspace{{ onbProgress }}
{{ st.label }}
{{ st.value }} {{ st.unit }}
{{ st.sub }}
My recent requests
No requests yet — use the buttons above to create one.
{{ rq.typeLabel }}
{{ rq.detail }}
{{ rq.stLabel }}
{{ dashRightTitle }}
{{ dashRightEmptyText }}
{{ it.title }}
{{ it.sub }}
{{ it.stLabel }}
{{ b.label }}
{{ b.left }} of {{ b.total }} days left
All my requests
Nothing here yet. Create your first request.
{{ rq.typeLabel }}
{{ rq.dateLabel }}
{{ rq.detail }}▦ Join in Teams
{{ rq.chainText }}
{{ rq.stLabel }}
Approval delegate
{{ dgText }}
{{ dgToMe }}
Waiting on you · {{ inboxCount }}
You're all caught up — nothing awaits your approval.
{{ rq.initials }}
{{ rq.requesterName }} · {{ rq.typeLabel }}
{{ rq.detail }}▦ Teams link
{{ rq.stepText }}
All requests
{{ rq.requesterName }}
{{ rq.typeLabel }}
{{ rq.detail }}
{{ rq.chainText }}
{{ rq.stLabel }}
{{ arPager.text }}
Reminders & escalation
Approvers get a daily reminder. Requests still waiting after the escalation period move to the escalation contact. Set 0 to turn either off.
Remind after (working days)
Escalate after (working days)
Escalate to
Define who approves each request type, in order. Steps run as a chain — a request moves to the next approver once the previous one approves. Set a company default, or override per employee.
Policy for
Currently following the company default.
{{ row.typeLabel }}
{{ s.stepNo }}. {{ s.name }}
{{ row.autoNote }}
People
Only administrators can access this page. Edit any user's role, department, leave balances and feature access, reset passwords, or disable accounts.
{{ u.initials }}
{{ u.name }}
{{ u.email }}
{{ u.roleLabel }} {{ u.srcLabel }}
{{ u.dept }}
{{ u.balText }} · {{ u.featText }}
{{ u.statusLabel }}
⊞
Microsoft Entra ID
VerifiedNot verified
Cloud directory for user import and Microsoft Teams meeting links. Uses an app registration in your Microsoft 365 tenant. Last import: {{ adLastSync }}.
Tenant domain
Directory (tenant) ID
Application (client) ID
Client secret value
{{ adVerifyMsgText }}
⛁
LDAP sign-in · on-premises Active Directory
Enabled · {{ ldUserCount }} LDAP usersDisabled
Users sign in with their domain credentials, validated against your domain controller. Each user is either Local (password stored in this system) or LDAP (password checked by Active Directory) — set this per user in User management.
Server URL
Port
Base DN
NetBIOS domain
Bind DN (service account)
Bind password
User search filter
{{ ldSslCheck }}Use LDAPS (TLS, port 636)
{{ ldJitCheck }}Auto-create the user on first domain sign-in
{{ ldMsgText }}
▦
Microsoft Teams
ActiveNeeds Entra IDOff
Every 1:1 meeting request gets a Teams join link. The meeting is created in the requester's Microsoft 365 calendar; if their account is not in the tenant, the default organizer below is used.
Default organizer (Microsoft 365 account)
One-time setup in Microsoft 365
1. App registration → API permissions → Application → OnlineMeetings.ReadWrite.All → Grant admin consent.
2. Teams PowerShell (Connect-MicrosoftTeams):
New-CsApplicationAccessPolicy -Identity ERP-Meetings -AppIds "{{ teamsAppIdText }}"
Grant-CsApplicationAccessPolicy -PolicyName ERP-Meetings -Global
Policies can take up to 30 minutes to apply.
{{ teamsMsgText }}
✉
Microsoft 365 email
Sending emailNot used
Recommended for Microsoft 365. Sends verification codes and notifications through Microsoft Graph with the Entra ID app above, so no mailbox password or SMTP AUTH is needed.
Sender mailbox
One-time setup: App registration → API permissions → Microsoft Graph → Application → Mail.Send → Grant admin consent. The sender must be a mailbox in your tenant (a shared mailbox works).
{{ msMailMsgText }}
{{ msMailTestText }}
G
Google (Gmail / Workspace)
Sending emailNot used
Send all notification emails and two-factor sign-in codes through a Google account. Requires 2-Step Verification on that account and an app password (myaccount.google.com → Security → App passwords).
Google account (sender)
App password (16 characters)
{{ gMsgText }}
{{ gTestText }}
@
Email server (SMTP) · any provider
In use
Outgoing mail server used for every notification and two-factor code. Pick your email provider to fill in the server settings, or choose Other to enter any SMTP server. Microsoft 365 and Google can also be connected with the cards above.
Email provider
{{ smtpPresetHint }}
Host
Port
Security
From address
Username
Password
{{ smtpMsgText }}
✦
Claude assistant
OnOff
An AI assistant inside the workspace that answers questions about the pipeline, projects and requests, summarises analytics and drafts text. It only sees what the user is allowed to see, and asks before creating anything.
Anthropic API key
Model
Who can use it
The system administrator always can. Tick the groups that should also have it.
No groups yet. Create one on the Groups page.
{{ aiEnabledCheck }}Assistant turned on
{{ aiMsgText }}
G
GoDaddy domains & DNS
ConnectedNot set up
Manage your GoDaddy domains from here: DNS records, nameservers, auto-renew, domain lock and renewals. GoDaddy does not let other apps sign in with your account password, so connect once with an API key: sign in to GoDaddy on the key page, create a Production key and paste both values below. GoDaddy only opens its Domains API to accounts with 10+ domains or a Domain Pro plan.
Sign in to GoDaddy and create a key ↗
API key
API secret
Environment
Domains
DomainExpiresAuto-renew
{{ dm.domain }}{{ dm.expText }}{{ dm.renew }}
{{ gdSelDomain }}
Open in GoDaddy ↗
{{ gdFormTitle }}
Type
Name
Service
Protocol
{{ gdValueLabel }}
TTL (s)
Priority
Weight
Port
{{ r.type }}{{ r.name }}{{ r.data }}TTL {{ r.ttl }}
Nameservers decide which provider answers DNS for this domain. Changing them moves DNS away from GoDaddy, and records you manage here stop applying.
Nameservers (one per line)
{{ g.label }}
{{ g.sub }}
Renew now
{{ gdRenewSub }}
{{ gdContactText }} Contacts, privacy and forwarding are changed in GoDaddy: use Open in GoDaddy.
{{ anEyebrow }}
{{ anSubtitle }}
Updated {{ anUpdated }}
{{ k.label }}
{{ k.value }}
{{ k.sub }}
Insights
{{ t.n }}{{ t.text }}
{{ sec.title }}
{{ sec.sub }}
{{ lg.label }}
No data for the selected filters.
{{ b.label }}{{ b.display }}{{ b.pct }}
{{ b.label }}{{ b.display }}
Total{{ sec.donutTotal }}
{{ lg.label }}{{ lg.display }}{{ lg.pct }}
{{ f.stage }}
{{ f.count }}
{{ f.value }}
{{ f.conv }}
{{ f.convLbl }}
{{ y.v }}
{{ c.label }}
{{ p.rank }}{{ p.ini }}
{{ p.name }}
{{ p.meta }}
{{ p.score }}
{{ p.sub }}
{{ hc.n }}{{ hr.name }}{{ hc.v }}
{{ c.n }}
{{ c.v }}
Won projects
Estimated vs actual value for every won project. Actual cost comes from approved expense, freelance and overtime claims.
Status
Totals in
{{ k.label }}
{{ k.value }}
{{ k.sub }}
No won projects yet. Move a deal to Won in the pipeline and it appears here.
{{ p.name }}
{{ p.client }} · {{ p.cat }}
{{ p.status }}
Est. cost
{{ p.estCost }}
Actual cost
{{ p.actCost }}
Variance
{{ p.variance }}
Margin est. → act.
{{ p.margins }}
{{ p.healthText }}
Freelancers
External resources and their rates. Freelance and overtime claims are costed from these rates and booked to the project when approved.
No freelancers yet.
{{ f.initials }}
{{ f.name }}
{{ f.position }}
Rate
{{ f.rate }}
Billed
{{ f.effort }}
Cost booked
{{ f.cost }}
{{ f.status }}
Deal categories & sub-categories
These populate the Category and Sub-category drop-downs on every deal.
{{ sb.name }}
{{ lsMsg }}
Exchange rates
Units per 1 USD. Used to convert claims into the project currency and for report totals.
1 USD ={{ x.code }}
{{ fxMsg }}
Employee hourly cost rates
Used to cost overtime claims for company employees. Saved when you leave the field.
Cur.Normal /hWeekend /h
{{ x.name }}
Sales
Open deals by stage. Click a card for details, use the arrows to move it.
{{ k.label }}
{{ k.value }}
{{ k.sub }}
{{ col.name }}{{ col.count }}{{ col.total }}
{{ col.prob }}
No deals
{{ d.client }}
{{ d.name }}
{{ d.age }}
{{ d.catText }}
{{ d.lostReason }}
{{ d.value }} 📎 {{ d.fileCount }} {{ d.ownerInitials }}
Define which email is sent for each event, who receives it, and the exact wording. Use the variables when editing a rule to insert live details. The sending account (SMTP, Microsoft 365 or Google) is set up in Integrations.
No rules yet. Add one to start sending notification emails.
{{ r.name }}
{{ r.eventLabel }} · to {{ r.recipText }} · {{ r.channels }}
{{ r.subject }}
No emails sent yet.
{{ m.subject }}
To {{ m.to }} · {{ m.rule }} · {{ m.time }}
{{ m.status }}
Company papers
Licences, registrations and contracts. Every view, upload and change is recorded, and administrators are reminded 1 month, 1 week and on the day before a paper expires.
⚿
This area is locked
{{ papersUnlockHint }}
🔓 Unlocked — locks automatically after 10 minutes of the session
No company papers yet. Add your first one.
{{ p.name }}
{{ p.sub }}
{{ p.expLabel }}
View
No access recorded yet.
DateUserActionPaperIP
{{ a.when }}{{ a.name }}{{ a.action }}{{ a.paper }}{{ a.ip }}
Groups
Grant a set of administration permissions and extra feature views to several people at once, and route notifications to the group's email addresses.
No groups yet. Create one to delegate administration.
{{ g.initials }}
{{ g.name }}
{{ g.memberText }} · {{ g.emailText }}
{{ g.privText }}
{{ g.featText }}
Activity log
Every action taken in the system, and every sign-in attempt.
Search
User
Action
Keep fordays
{{ lgCount }}
Nothing recorded for these filters yet.
DateUserActionDetails
{{ r.when }}{{ r.by }}{{ r.action }}{{ r.detail }}
DateUserResultIP addressDevice
{{ r.when }}{{ r.name }}{{ r.result }}{{ r.ip }}{{ r.device }}
Active Directory connected · {{ orgDomain }}Last sync {{ adLastSync }} Active Directory not connected
{{ u.initials }}
{{ u.name }}
{{ u.title }}
AD
✉ {{ u.email }}
{{ u.roleLabel }} {{ u.dept }}
{{ u.balanceText }}
No one matches "{{ chatSearch }}".
{{ chatPartnerInitials }}
{{ chatPartnerName }}
{{ chatPartnerTitle }}
{{ m.text }}
{{ m.time }}
No messages yet — say hello 👋
Select a colleague on the left to start chatting.
Product license
{{ licPhaseLabel }}
{{ lr.k }}{{ lr.v }}
{{ licReason }}
Licensed by Sahl-ERP · Check status or renew on the server: sudo /opt/techvera/bin/license.sh status
◐
Company branding
Name, logo and colour shown on the sign-in page, the sidebar, the installed phone app and everywhere else. Colour changes preview immediately; press Save to apply them for everyone.
Company name
Tagline under the name
Full legal name (footer)
Colours from your logo
Upload a logo to pick colours from it.
▦
Page theme
{{ brThemeName }}
Colours for the whole workspace: page background, cards, sidebar, top bar, text and buttons. Pick a theme, then fine-tune any colour below. Changes preview immediately.
Customise colours
Leave a colour on Auto to follow the theme.
{{ c.label }}
{{ c.value }}
▤
Document design
Applies to quotations, purchase orders, invoices and credit notes. Every document carries the company logo; the accent colour can follow the theme or a colour from the logo.
Header layout
Logo size
Accent colour
Footer text
Signature and stamp block
QUOTATION
عرض سعر · QT-0042
⚿
Two-factor sign-in
Required for everyoneOptional
After the password, users confirm with a 6-digit code: from Microsoft Authenticator or Google Authenticator if they set one up in My profile, otherwise by email (sent through Google or your SMTP server). Users with an authenticator app always get the second step, even when this is optional.
Locked out? On the server run: sudo -u techvera TECHVERA_CONF=/etc/techvera/techvera.conf python3 /opt/techvera/app/server.py disable-mfa
⛨
Security assessment
Running…
Checks this server for security issues: default passwords and two-factor, HTTPS and certificate, security headers, access control and file exposure, sign-in rate limiting, open ports, database exposure, SELinux, firewall and pending security updates. Optionally adds an OWASP ZAP web scan. The PDF report is emailed to the addresses below.
Send the report to
{{ e.addr }}
{{ ptZapCheck }}Include OWASP ZAP web scan{{ ptZapNote }}
{{ ptZapHelp }}
Recent assessments
{{ r.when }}{{ r.rating }}{{ r.counts }} Download PDF
{{ r.meta }}
⟲
Factory reset
Deletes every user, request, deal, file, document, message, notification and setting, then recreates the single administrator account (admin / admin). A full backup is saved on the server first, under /var/lib/techvera/reset-backups.
🗎
Company papers access
Opening the company papers always needs the user's password. Turn this on to also require an authenticator code, even for users who don't otherwise use two-factor sign-in.
{{ papersTotpCheck }}Require an authenticator code to open company papers
{{ pfInitials }}
{{ pfName }}
{{ pfTitle }} · {{ pfDept }} · {{ pfEmail }}
Identity
Iqama number
{{ pfIqamaNo }}
Iqama expiry
{{ pfIqamaExp }}{{ pfIqamaBadge }}
Passport number
{{ pfPassNo }}
Passport expiry
{{ pfPassExp }}{{ pfPassBadge }}
⚿
Authenticator app
OnOff
Ask for a 6-digit code from Microsoft Authenticator or Google Authenticator every time you sign in.
1. {{ totpStep1 }} Account name: {{ brandName }}. Secret key:
{{ totpKey }}
On your phone you can instead open this setup link.
2. Enter the 6-digit code the app shows:
{{ totpError }}
Recent sign-ins
No sign-ins recorded yet.
{{ l.when }}{{ l.ip }} · {{ l.device }}
Documents
{{ g.label }}{{ g.hint }}
No file uploaded
{{ f.icon }}{{ f.name }}{{ f.meta }}Open
Your identity details and documents are maintained by your administrator. Contact them to make changes.
Timesheets
Log your hours per project each week and submit them for approval. Approved hours are costed to the project.
Export CSV
{{ tsWeekLabel }}
{{ tsStatusLabel }}
{{ tsNote }}
Project
{{ dy.label }}
Total
Notes
{{ row.name }}
{{ row.total }}
Total hours
{{ t.v }}
{{ tsTotal }}
This week is approved. Turn it into freelance claims for payment.
Waiting for your approval
{{ t.who }}
{{ t.week }} · {{ t.total }} h
{{ ln }}
{{ tsHistoryTitle }}
No timesheets yet.
{{ t.week }}
{{ t.who }}
{{ t.total }} h
{{ t.stLabel }}
Leave calendar
{{ lvSub }}
{{ lvMonthLabel }}
Export CSV
{{ lg.label }}
Person
{{ h.label }}
{{ r.name }}
No leave in this month.
Public holidays · {{ lvCountry }}
{{ h.date }}{{ h.name }}
Clients & follow-ups
One register of clients, their contacts and tax details. Used on deals, quotations and invoices.
Export CSV
No clients yet. Add your first client.
{{ c.name }}
{{ c.sub }}
Deals
{{ c.deals }}
Balance
{{ c.balance }}
{{ clPager.text }}
Follow-ups
Export CSV
No follow-ups.
{{ t.title }}
{{ t.sub }}
{{ t.due }}
Quotations
Priced offers to clients. Accepted quotations can be turned into invoices by Finance.
No quotations yet.
{{ q.number }}
{{ q.client }}
{{ q.deal }}
{{ q.total }}
{{ q.valid }}
{{ q.status }}
Print
Invoices
KSA (ZATCA, QR), UAE (FTA) and Egypt (ETA) tax invoices, payments and receivables ageing.
Export CSV Payments CSV
{{ a.label }}
{{ a.value }}
{{ a.count }}
No invoices here.
{{ i.number }}
{{ i.format }}
{{ i.client }}
{{ i.project }}
{{ i.dates }}
{{ i.total }}
{{ i.balance }}
{{ i.status }}
Print ETA JSON
{{ ivPager.text }}
Request a letter
Letter type
Addressed to
Purpose
My payslips
No payslips uploaded yet.
{{ p.period }}Download
My letters
No letter requests yet.
{{ l.kind }}
{{ l.sub }}
{{ l.status }}Download
{{ c.title }}
{{ c.progress }}
{{ it.text }}
No letter requests.
{{ l.who }} · {{ l.kind }}
{{ l.sub }}
{{ l.status }}Download
Employee
Month
No payslips uploaded yet.
{{ p.who }}{{ p.period }}Download
Employee
Country
Joining date
Carried over
Project staff
Annual left
{{ u.name }}
{{ u.title }}
{{ u.balance }}
{{ c.name }}
Weekend
Week starts on
Carry-over cap
Annual days
Sick days
Country
From
To
Name
Islamic holiday dates are preloaded as estimates. Adjust them when they are officially announced.
{{ h.date }}{{ h.name }}
Employee
Type
Onboarding (one item per line)
Offboarding (one item per line)
No checklists yet.
{{ c.title }}
{{ c.sub }}
{{ c.progress }}
{{ it.text }}{{ it.by }}
Exports
CSV files open in Excel. Each export contains only what you are allowed to see.
Scheduled email reports
Sent as CSV attachments, using your access rights.
No scheduled reports.
{{ r.status }}
Active sessions
{{ x.device }}
{{ x.sub }}
This device
Language
English or Arabic (right-to-left).
System health
All checks passed.
{{ m }}
{{ c.label }}
{{ c.value }}
{{ c.sub }}
Disk alert at %
Alert emails (blank = administrators)
Off-site backups (SFTP)
{{ osStatus }}
After the nightly 02:00 backup, a copy is uploaded to your SFTP server with an SSH key. Add the public key below to the SFTP user's authorized_keys.
Host
Port
User
Remote folder
Public key
{{ osPub }}
Purchasing
Purchase orders go through approval by amount. Finance records supplier bills and payments; bills on a project are added to its costs.
No purchase orders yet.
{{ o.number }}
{{ o.by }}
{{ o.supplier }}
{{ o.project }}
{{ o.total }}
{{ o.step }}
{{ o.status }}
Print / PDF
No supplier bills yet.
{{ b.number }}
{{ b.ref }}
{{ b.supplier }}
{{ b.project }}
{{ b.dates }}
{{ b.total }}
{{ b.balance }}
{{ b.status }}
No suppliers yet.
{{ x.name }}
{{ x.sub }}
{{ x.payable }}
Run payroll
Approval: HR → Finance → {{ prCeoName }}. Approved runs post to the ledger, reduce loans and release payslips.
Month
Country
No payroll runs yet. Set up salaries first.
{{ r.title }}
{{ r.sub }}
{{ r.status }}
{{ f.label }}
{{ f.value }}
Mudad / WPS file WPS SIF file
Employee
Country
Nationality
Basic
Housing
Transport
Other
IBAN
Bank code
Emp. no.
MOL / ID
End of service
{{ u.name }}
{{ u.country }}
{{ u.eos }}
Employee
Type
Amount
Monthly
First deduction
No loans or advances.
{{ l.who }}
{{ l.what }}
{{ l.balance }}
{{ l.status }}
Rates are preloaded from published rules and can change. Confirm them with your accountant or GOSI / GPSSA / NOSI before the first run.
{{ c.title }}
{{ f.label }}
Final approver (CEO)
Base currency: {{ acBase }}
No journals yet. They are created automatically when invoices, payments, bills and payroll are posted.
#{{ j.id }}{{ j.date }}{{ j.memo }}{{ j.source }}{{ j.total }}Reversed
{{ l.account }}{{ l.memo }}{{ l.debit }}{{ l.credit }}
{{ jnPager.text }}
From
{{ rpToLabel }}
Account
{{ rpTitle }}
{{ rpSub }}
{{ c.label }}
{{ c.v }}
{{ f.label }}
Type
{{ a.code }}{{ a.name }}{{ a.nameAr }}{{ a.type }}System
Year-end close
Moves the year's income and expense to retained earnings and locks all 12 months.
{{ p.label }}{{ p.status }}
Management
Figures in {{ exBase }} from the ledger, open invoices and bills, the pipeline and timesheets.
Updated {{ exUpdated }}
{{ k.label }}
{{ k.value }}
{{ k.sub }}
Revenue and expense by month
Posted to the ledger · net result above each month
Revenue {{ exRev12 }}Expense {{ exExp12 }}
Nothing posted to the ledger yet.
{{ m.net }}
{{ y.v }}
{{ m.label }}
Cash forecast · next 12 weeks
Starting cash plus invoices due, minus bills and payroll. Overdue items fall in week 1.
Week 12
{{ exFcEnd }}
Low point {{ exFcLow }}
No cash movements to forecast yet.
{{ w.label }}
Pipeline by stage
Value in each stage
Win rate
{{ exWin }}
{{ f.stage }}
{{ f.count }}
{{ f.value }}
Receivables ageing
Open invoice balances by days overdue
Outstanding
{{ exAgeTotal }}
No open invoices.
{{ r.label }}{{ r.n }}{{ r.value }}{{ r.pct }}
Utilisation · last 4 weeks
160 h = 100% · marker shows full capacity
No timesheets in the last 4 weeks.
{{ u.name }}
{{ u.pct }}{{ u.tone }}
Top projects by value
Won projects · price, booked cost and margin
No won projects yet.
ProjectPriceCostMargin
{{ p.name }}
{{ p.client }}
{{ p.priceT }}{{ p.cost }}
{{ p.margin }}
Migration & Sync
Move data in or out of other ERPs, or keep them in sync both ways.
{{ k.l }}{{ k.v }}{{ k.s }}
No connections yet
Connect another ERP to import its data, export your data to it, or keep both systems in sync. Every run starts with a test run, so nothing is written until you confirm.
{{ mgConflictCount }} records changed in both systemsSync for these records is paused until you choose which value to keep.
{{ c.rec }}{{ c.src }}
{{ c.f }}
SourceMethodDirectionLast runRecordsStatus
Data{{ r.ents }}
Schedule{{ r.sched }} {{ r.nextRun }}
Log No runs yet.
{{ l.t }}{{ l.m }}
Supported systems
{{ p }}
{{ mgTitle }}{{ mgProvName }}
{{ st.n }}{{ st.l }}
Which system are you connecting?
How to connect
Direction
Data to include
When a record changes in both systems
Sync schedule
{{ mgNote }}
{{ f.label }}
{{ mgTestMsg }}
{{ mgFileHint }} You can upload only the files you have and add the rest later.
{{ u.l }}{{ u.info }}
Nothing to connect. You will download one file per data type, laid out for {{ mgProvName }}'s import tools.
{{ mgExportNote }}
Columns were matched automatically. Check each one, and pick from the drop-down to change it. Fields marked * are required.
No columns found for this data type. Upload a file or fetch a sample first.
{{ m.label }} *←
{{ mgMissing }}
{{ mgExportNote }}
A test run reads everything and checks it against your data without saving anything.
DataNewUpdateSkipErrors
{{ x.l }}{{ x.nw }}{{ x.up }}{{ x.sk }}{{ x.er }}
{{ z.t }}
{{ mgErr }}
Data import
Download a template, fill it in Excel and upload it. Existing clients, suppliers and employees are matched by name or email and updated.
{{ c.title }}
{{ c.sub }}
{{ c.result }}
{{ e }}
Recurring invoices
Created automatically on the next date (as drafts, or issued if you choose).
No recurring invoices.
{{ r.client }}
{{ r.every }}
{{ r.next }}
{{ r.total }}
{{ r.status }}
Approval rules by amount and department
The first matching rule replaces the normal chain. Amounts are in {{ acBase }}. Purchase orders without a matching rule go to Finance.
No rules. Example: purchase orders over 50,000 → Finance manager → CEO.
Applies to
From amount
Up to (blank = no limit)
Department (optional)
Approvers in order:{{ c.n }}
Phone and browser notifications
{{ pushText }}
Excel workbooks
Formatted .xlsx files with a title, frozen header, filters, number formats and totals.
No notifications yet.
{{ n.text }}
{{ n.time }}
New request
Request type
From
To
{{ rqDaysText }}
Half day
Meet with
You are not in a group with anyone yet. Ask an administrator to add you to a group.
Date
Time
Amount
Project (optional)
Start date
Estimated end date
Actual end date
Project
Freelancer
Who worked the overtime
{{ rqEffortLabel }}
Hourly rate ({{ rqHourlyCur }})
{{ rqCostPreview }}
There are no won projects yet. Claims must be booked to a won project.
Equipment needed
Reason / notes
Approval chain: {{ rqChainPreview }}
{{ rqError }}
{{ rmTitle }}
Rule name
When this happens
Send to
…or specific people
…or groups (their members and the group's notification emails)
{{ rmEmailCheck }}Email
{{ rmInappCheck }}In-app notification
Subject
Body
Insert:
Preview (sample data)
{{ rmPreviewSubject }}
{{ rmPreviewBody }}
{{ rmError }}
Edit user — {{ umName }}
Role
Department
Job title
Annual leave (days/yr)
Sick leave (days/yr)
Linked freelance employee
Sign-in source
{{ umEmailNotifCheck }}Receive email notifications
Groups
Administration permissions
{{ umPrivNote }}
{{ p.check }}{{ p.label }}from group
Feature access
{{ f.check }}{{ f.label }}
Identity & documents
Iqama number
Iqama expiry
Passport number
Passport expiry
{{ g.label }}{{ g.hint }}
No file uploaded
{{ f.icon }}{{ f.name }}{{ f.meta }}Open
{{ umActiveCheck }}Account activeDisabled users cannot sign in
{{ umMsg }}
{{ umError }}
Turn on two-factor sign-in
Freelance accounts must use Microsoft Authenticator. After this, every sign-in asks for a 6-digit code from the app.
1. Install Microsoft Authenticator on your phone. Tap + → Other account (Google, Facebook, etc.) → Or enter code manually. Account name: {{ brandName }}. Secret key:
{{ totpKey }}
On your phone you can instead open this setup link.
2. Enter the 6-digit code the app shows:
{{ totpError }}
Change password
For security, choose a new password before continuing. Use at least 10 characters with letters and numbers.
Current password
New password
Confirm new password
{{ pwError }}
{{ ddName }}
{{ ddStage }}
Deal name
Client
Deal amount
Currency
{{ ddEdError }}
{{ ddClient }} · {{ ddValue }} · Owner: {{ ddOwner }}Currency
Category
Sub-category
Project value
{{ ddDelivery }}
Estimated cost
Selling price
Actual selling price
Start date
Estimated end
Actual end
Status
Amounts in {{ ddCurrency }}. Actual cost is calculated from approved claims and cannot be edited. Every change is recorded in the change history.
{{ pvError }}
Estimated project value
{{ r.label }}{{ r.value }}
Actual project value
{{ r.label }}{{ r.value }}
{{ ddHealthText }}
Actual cost breakdown
{{ lg.label }} {{ lg.display }}
{{ dt.label }}
{{ dt.v }}
Booked costs
No approved claims booked to this project yet.
{{ ci.label }}
{{ ci.sub }}
{{ ci.value }}
Project phases
{{ ddPhaseSummary }}
{{ ph.name }}{{ ph.weight }} · {{ ph.price }}{{ ph.status }}
{{ ph.dates }}
📄 Invoice 🧾 Transfer evidence
Start End
Paid
Weights total {{ phTotalW }}%
{{ phError }}
Change history
{{ au.when }} · {{ au.by }}
{{ au.text }}
Stage
Lost reason: {{ ddLostReason }}
{{ ddStageError }}
Opportunity files · {{ ddFileCount }}
No files yet. Upload proposals, BoQs, contracts or any supporting documents for this opportunity.
{{ f.icon }} {{ f.name }}{{ f.meta }} Download
⊞
Active Directory sync
Connect to your Active Directory (on-premises via LDAP when LDAP sign-in is enabled, otherwise Microsoft Entra ID) to import employees instead of managing local users.
Tenant domain
Directory scope
{{ adFoundText }}
Everyone in the directory is already imported — you're fully in sync. ✓
{{ u.check }} {{ u.initials }} {{ u.name }}{{ u.email }} · {{ u.title }} Imported
New deal
Deal name
Client
Client from register
Share with group
Value
Owner
Category
Sub-category
{{ dlError }}
{{ flTitle }}
Freelance employee name
Position
Rate basis
Currency
Rate
{{ flActiveCheck }}ActiveInactive freelancers can't be claimed
Linked projects
When this freelancer signs in, they can only claim on these projects.
{{ flError }}
Unlock company papers
{{ papersUnlockHint }}
Your password
Authenticator code
{{ cpUnlockError }}
{{ cpTitle }}
Paper name
Category (optional)
Expiry date
{{ cpFileLabel }}
PDF, JPG, PNG or WebP. Replacing a file keeps the previous version.
{{ cpModalError }}
{{ auTitle }}
{{ auIntro }}
Full name
{{ auEmailLabel }}
Job title
Department
Annual leave (days)
Sick leave (days)
Temporary password
Groups
Linked freelance employee
Pages they can open
Additional access (optional)
Group access is added on top of these. You can change everything later from the user's edit window.
{{ auError }}
{{ grTitle }}
Group name
Administration permissions
{{ p.check }}{{ p.label }}
Extra feature views
{{ f.check }}{{ f.label }}
Notification email addresses
{{ e.addr }}
Landing page for members
{{ grError }}
{{ cfTitle }}
{{ cfBody }}
Type RESET to confirm
Your password
{{ cfError }}
Install {{ brandName }} on this phone
{{ pwaSub }}
1. Tap Share ↑ in the Safari toolbar
2. Choose Add to Home Screen
3. Tap Add
✦
{{ brandName }} assistant
Powered by Claude · sees only what you can see
Hello {{ aiFirst }}. Ask me about your requests, the pipeline, projects or analytics, or ask me to draft something.
{{ m.text }}
{{ m.actionTitle }}
{{ m.actionText }}
Thinking…
{{ docTitle }}
Client
Project / deal
Phase (optional)
Tax format
Currency
Issue date
Due date
Valid until
Status
Repeat
Next invoice date
End date (optional)
Description
Qty
Unit price
Amount
{{ l.amount }}
Subtotal{{ docSub }}
{{ docTaxLabel }}{{ docTax }}
Total{{ docTotal }}
Notes
{{ docError }}
{{ clTitle }}
{{ f.label }}
Country
Contacts
{{ clError }}
{{ payTitle }}
{{ paySummary }}
{{ p.date }}{{ p.amount }}{{ p.method }}
Amount
Date
Method
Reference
{{ payError }}
Invoicing settings
Seller details
{{ f.label }}
{{ isError }}
{{ ltTitle }}
{{ ltSub }}
Letter text (English; printed on company letterhead as PDF)
Reason (only if declining)
{{ ltError }}
{{ pdTitle }}
Supplier
Project (optional)
Currency
VAT
Needed by
Supplier invoice no.
Bill date
Due date
Description
Qty
Unit price
Amount
{{ l.amount }}
Subtotal {{ pdSub }}VAT {{ pdTax }}Total {{ pdTotal }}
{{ pdError }}
{{ spTitle }}
{{ f.label }}
Country
{{ spError }}
{{ bpTitle }}
{{ bpSummary }}
{{ p.date }}{{ p.amount }}
{{ bpError }}
{{ prmTitle }}
Employee
Gross
Soc. ins.
Tax
Loans
Net
Employer SI
{{ l.name }}
{{ l.gross }}
{{ l.si }}
{{ l.tax }}
{{ l.loans }}
{{ l.net }}
{{ l.er }}
Payslip
Manual journal
Date
Reference
Description
Account
Debit
Credit
Project
{{ jmBalance }}
{{ jmError }}
{{ cnTitle }}
Credit notes reduce the invoice balance and are posted to the ledger. Adjust the lines to credit part of the invoice.
{{ cnTotal }}
Reason
{{ cnError }}
{{ ptSeller }}
Client portal
{{ ptWho }}
{{ ptLoginTitle }}
{{ ptHint }}
{{ ptError }}
Choose a new password
{{ ptError }}
{{ ptClient }}
{{ k.label }}
{{ k.value }}
Invoices
No invoices yet.
{{ i.number }}
{{ i.dates }}
{{ i.total }}
{{ i.balance }}
{{ i.status }}View / print
Quotations
No quotations.
{{ q.number }}
{{ q.valid }}
{{ q.total }}
{{ q.status }}View
Welcome to
{{ brandName }}
{{ obHello }} This workspace is ready for you. Take a one-minute tour, or go straight to your dashboard.
{{ obStepCount }}
{{ obTitle }}
{{ obText }}
{{ toastMsg }}