The wedge
Payroll software either does it for you (with fees and country lock-in) or hands you a CSV and tells you to deal with your bank. Odexy Payroll runs the cycle — pulls compensation from HRM, generates payslip PDFs, exports disbursements in your bank's format — and audit-trails every step.
What ships today
- Run lifecycle — draft → review → finalize → disburse → close. Every state transition logged.
- Per-employee compensation — annual / monthly / hourly, stored currency-aware in HRM. Payroll reads directly; no re-keying.
- Payslip PDFs — branded template with all line items, tax breakdown, year-to-date totals. Generated on finalize and emailed to the employee.
- Disbursement exports — CSV in common bank formats; per-org configurable.
- Multi-currency — runs in the org's reporting currency; per-employee currency converted at the configured rate.
- Audit log — every adjustment, every approval, every finalize is logged with actor and input hash.
How it integrates
- HRM —
hrm_employees.compensation*columns are the source. Adjustments propagate. - Accounting — finalized payroll posts to the GL (salary expense + tax liability + cash) automatically.
- Email — payslip emails route through the unified outbound module with suppression.
- Currency — uses the platform exchange-rate engine; no
amount * ratefloat math. - Notifications — finalize alerts, error alerts flow into the unified notification matrix.
How the AI helps
- "Run the December cycle for the EU entity, flag anyone whose compensation changed in the last 30 days."
- "Show me the variance between this run and last run by employee, grouped by department."
- "Draft the year-end disbursement export in our bank's format."
- "Send payslips to everyone whose email bounced last cycle — check the suppression list first."
Payroll-run finalize is gated as dangerous: true; the AI must propose and a payroll-permission user must approve.
Built for scale
- Audit log — full chain from compensation change → run draft → review → finalize → disburse.
- Permissions —
payroll:run:create,:finalize,:disburseseparate. Standard custom roles never grant:finalizeto non-admins. - Idempotency — re-firing finalize on the same run returns the existing result, not a duplicate.
- Currency precision —
bigintcents; conversion via the typed currency engine. Never floats. - Document export — every payslip PDF retrievable from the audit-log row's
output_hashlink.
Odexy Payroll vs. the category
| | Odexy Payroll | Gusto | Deel |
|---|---|---|---|
| Joined to HRM compensation in one schema | ✓ | partial (Gusto HR) | partial |
| Joined to Accounting in one schema | ✓ | — | — |
| Multi-currency native | ✓ | US-first | ✓ |
| Per-org pricing | ✓ | per-employee | per-employee |
| AI assists the cycle | ✓ | — | — |
Gusto is the gold standard for US payroll-as-a-service; Deel for contractor payments. Both add a per-employee fee on top of the platform price and integrate to your HR / accounting. Odexy Payroll runs in your HR/accounting schema.
Design-partner take
> "The payroll run that used to take a finance contractor a full day is a 20-minute review. The payslips are out before the disbursement file lands at the bank." — Design partner, 35-person services firm
