Payroll
Run a semi-monthly pay period end to end — create drafts, set how each member is paid, approve, record the payment you made, and review the archive.
FinancePayroll is the owner's payroll workspace. Payroll runs on semi-monthly periods — the 1–15 and 16–end halves of each month — and each member gets one statement per period.
Zyan records payroll. It does not pay anyone. There is no pay button anywhere on this page, and "Paid" means you told Zyan that you paid it.
Before you start
You need the Payroll plan feature and the Payroll permission. Members without it see "You do not have permission to view payroll. Ask the workspace owner for the Payroll permission." Set each member's pay settings before the first run, or every statement will come out at zero.
Missing
An eligible member with no statement yet
Draft
Run payroll builds it from pay settings, hours and commissions
Approved
Approve drafts. This is what the member sees in My Pay
You pay them
Bank, check, wire or your payroll provider. Outside Zyan entirely
Paid
Record manual payment files the method, date and reference
Run a period
Pick the period
Use the period navigator to select the month and the 1–15 or 16–end half.
Click Run payroll
Confirm Create statements. This generates a draft for everyone who is eligible and does not already have one. The button is disabled when nothing is missing.
Check the drafts
Open a member to review their pay items before approving. Amounts come from their pay settings plus imported hours and commissions.
Approve
Select rows with the checkboxes and use Approve drafts. Approved statements are what your team sees under My Pay.
Pay them, then record it
Pay through your bank or payroll provider, then select the approved rows and use Record manual payment.
Export CSV
Hand the period to your bookkeeper.
The stat strip above the roster shows Total payroll plus Missing, Drafts, Approved and Paid counts and amounts. Missing is the number of eligible members without a statement for this period — that is what Run payroll fills in.
Settings reference
| Setting | What it changes | Default |
|---|---|---|
| Current payroll | Archive | Switches between the live period and past periods. | Current payroll |
| All | Sales Reps | Developers | Operations | Filters the roster by member role. Each carries a count. | All |
| Search team... | Filters the roster by name or email. | — |
| Compensation | Filters by All compensation, Hourly, Salary or Custom mix. | All compensation |
| Run payroll | Creates the missing draft statements for the selected period. Disabled when nothing is missing. | — |
| Export CSV | Downloads the selected period's statements. | — |
| Refresh | Reloads the period. | — |
Set your payroll timezone
Until the workspace timezone is set, Payroll shows "Payroll timezone not set — clock times display in UTC." The default schedule timezone is UTC with pay dates shifted to the previous business day, which will not match your team's clock-ins. Set it in Settings; for one person, use Work timezone on their payroll detail.
A member's payroll detail
Clicking a member opens their own workspace with four tabs.
| Tab | What is on it |
|---|---|
| Summary | Pay settings, Stripe Connect reference data, the upsell catalog and assigned projects |
| Statements | The period list and the workflow actions for this member |
| Items & Audit | Items, Sources, Hours and Adjustments, plus the Completed Task Audit and Won Deal Audit |
| History | Year-to-date totals, past statements and payout records |
The tab set is the same for everyone, but the content is not: sales reps get commissions, while developers and operations get hours and project breakdowns.
Do not delete a pay item the Hours sync owns
Items created by the hours import are labelled Managed by the Hours sync. Deleting one is undone the next time hours sync. Fix the timesheet instead.
Pay settings
FinancePayrollthe memberPay settings decides how they are paid. The dialog has two tabs, and the difference matters.
- Profile defaults — how this person is paid from now on.
- This statement — a one-off override on the statement you have selected. The tab only appears when a statement is selected.
| Setting | What it changes | Default |
|---|---|---|
| Base pay | Standing base pay per period. | 0.00 |
| Pay type | Hourly, Salary or Custom mix. | — |
| Hourly rate | The rate applied when hours are imported. | 0.00 |
| Monthly % | Commission share on recurring service revenue. | placeholder 10 |
| Upfront % | Commission share on build and upfront revenue. | placeholder 25 |
| Upsell % | Commission share on upsells. | placeholder 10 |
| Statement notes | Internal notes kept on that one statement. | — |
The three percentages are for sales-rep style compensation. Developer and operations members are normally base pay plus hours, and can leave them empty.
An upsell commission is already quantity-inclusive
The amount shown against an upsell covers the full quantity. Do not multiply it by quantity again when you are checking a statement by hand.
Record a payment
Select approved statements
Use the row checkboxes. You can record several at once.
Click Record manual payment
Describe the payment you already made
Choose the Payment method and Payment date, enter the Reference (check number, ACH ref, wire ref, payroll batch id), and add a Reconciliation note.
Click Save payment
The statements move to Paid. You can add or edit a reference later with Save details on the payout row.
This records history, it never initiates a transfer
Record manual payment stores what happened. No money leaves any account when you save it, and there is no payout execution anywhere in Zyan.
Including and excluding people
Members you do not pay through Zyan can be excluded. They collapse under Excluded from payroll on the roster, and their own My Pay page disappears for them — existing data is untouched. Use Include on the roster, or Include in payroll on their detail page, to bring them back.
The Archive
Switch to PayrollArchive to review past runs. The stat tiles — Archived Periods, Archived Statements, Archive Payroll, Archive Settled — are read-only totals across every archived period.
Open a period to get its ledger: every statement in that period, filterable by status, member type and payment method, with a free-text search and an export.
Deleting an archived period is permanent
It "removes statement records, line items, adjustments, payout records, and stored pay-stub PDFs from the portal. It does not reverse recorded payments or delete team members." Export the period first if you may ever need it.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Run payroll is disabled or creates nothing | Every eligible member already has a statement — Missing is zero | Check the period navigator is on the right half-month, and check Excluded from payroll for anyone who should be included |
| A member is missing, and their My Pay is empty | They are marked excluded from payroll | Expand Excluded from payroll and click Include, or use Include in payroll on their detail |
| "Payroll timezone not set — clock times display in UTC." | The workspace payroll schedule timezone was never configured | Set it in Settings; for one person use Work timezone on their detail |
| "Approve with unsynced hour changes?" | Timesheet hours changed after the statement's pay items were built | Re-sync hours from the member's Hours tab, or choose Approve anyway if the statement is already correct |
| "Clocked-hours reference could not load for this period" | The hour notes could not be loaded | It means missing reference data, not zero hours — reload, then check the member's Hours tab |
| A deleted pay item comes back | It is Managed by the Hours sync | Correct the underlying timesheet rather than the statement |
| Statements come out at zero | The member has no pay settings | Open their detail, click Pay settings, and set base pay, pay type and rate |