Overview
Ekso includes a full financial model that connects work management to cost tracking, billing, and profitability analysis. Every time entry carries financial metadata — who did the work (job role and cost), what it was for (SKU and rate), and who it was charged to (customer/CRM).
This financial layer ties together boards, cycles, and time tracking to give you visibility into project economics — from individual time entries up to organization-wide profitability. Whether you are working for an external customer or on internal projects, costs and margins still apply.
You manage all finance settings under Settings > Finance.
Job roles
A job role represents a professional function within your organization — for example, Backend Developer, Business Analyst, Project Manager, or Customer Service Agent.
| Property | Description |
|---|
| Name | Display name (e.g., “Backend Developer”) |
| Code | Short identifier (e.g., BKDEV) |
| Hourly base cost | What you pay for this role per hour — your internal cost |
| Hourly charge rate | What you charge clients for this role per hour — your revenue rate |
| Deleted | Remove from the system |
Job roles are assigned to users. When a user logs time, their job role determines the cost and charge rate used in profitability calculations. The gap between base cost and charge rate is your margin per hour.
Default job roles
Every new tenant is installed with 34 default job roles covering common professional functions. Each has a pre-set hourly base cost and charge rate that you can adjust to match your organization’s rates.
| Code | Name | Base cost | Charge rate |
|---|
| AI | ML / AI Engineer | 700 | 1,400 |
| ARCH | Software Architect | 600 | 1,200 |
| ASE | Application Support Engineer | 300 | 600 |
| BA | Business Analyst | 400 | 800 |
| BIA | BI Analyst | 450 | 900 |
| BKDEV | Backend Developer | 450 | 550 |
| CEO | CEO | 1,000 | 4,000 |
| CFO | CFO | 1,000 | 4,000 |
| CIO | CIO | 1,000 | 4,000 |
| COO | COO | 1,000 | 4,000 |
| CSA | Customer Service Agent | 200 | 300 |
| CSM | Customer Service Manager | 300 | 400 |
| CTO | CTO | 1,000 | 3,500 |
| DA | Data Analyst | 400 | 600 |
| DE | DevOps Engineer | 350 | 400 |
| DM | Delivery Manager | 350 | 400 |
| DS | Data Scientist | 600 | 1,200 |
| FA | Financial Analyst | 300 | 300 |
| FC | Financial Controller | 500 | 500 |
| FD | Frontend Developer | 470 | 900 |
| HPMO | Head of PMO | 700 | 1,400 |
| HR | Head of Recruitment | 600 | 600 |
| MOB | Mobile Developer | 550 | 550 |
| PM | Project Manager | 575 | 1,000 |
| PROD | Product Owner | 575 | 1,000 |
| QA | QA/Test Engineer | 375 | 1,000 |
| SA | Systems Administrator | 275 | 400 |
| SCRUM | Scrum Master | 450 | 800 |
| SE | Security Engineer | 395 | 700 |
| SOFT | Software Engineer | 395 | 700 |
| SVP | Senior VP | 800 | 2,000 |
| TL | Technical Lead | 600 | 2,000 |
| UX | UX Designer | 555 | 1,400 |
| VP | VP | 775 | 1,400 |
Rates are in your tenant’s configured currency. All default roles are fully editable — add new roles, remove ones you do not need, and adjust rates to reflect your organization’s actual costs and billing rates.
Job roles also serve as placeholders when planning items into cycles — you can assign work to a role before deciding which specific person will do it.
Cost centers
A cost center is an organizational grouping for tracking where costs are incurred — for example, a department, team, or business unit.
| Property | Description |
|---|
| Name | Display name (e.g., “Executive Leadership / C-Suite”) |
| Code | Short identifier (e.g., DTR) |
| Finance code | External code for integration with accounting systems (e.g., INSKJ) |
| Deleted | Remove from the system |
Cost centers are assigned to users alongside their job role. When calculating profitability, Ekso uses the cost center from the user who logged the time, allowing you to see how costs are distributed across your organization.
SKUs (billable time codes)
A SKU (stock-keeping unit) represents a billable product or service that you offer. SKUs link the work being performed to financial analysis — each has a unit price for revenue calculations.
| Property | Description |
|---|
| Name | Display name (e.g., “Service 1”) |
| Code | Short identifier (e.g., S1) |
| Finance code | External code for integration with accounting systems (e.g., TS-SRV1) |
| Unit price | Rate per hour for this type of work (e.g., 750.22) |
| Deleted | Remove from the system |
When a user logs billable time, they select a SKU. The SKU’s unit price is used to calculate revenue in profitability reports. SKUs can also be linked to CRM customers to define which products or services are available for each client.
Non-billable codes
Non-billable codes categorize time that is not chargeable to a client. Each code represents a category of internal work — for example, meetings, training, HR activities, or vacation.
| Property | Description |
|---|
| Code | Short identifier (e.g., HR) |
| Name | Display name (e.g., “HR”) |
| Description | Rich text description of the category (e.g., “Conducting job interviews, appraisals and recruitment related activities”) |
| Active | Whether this code is available for use |
| Groups | Which user groups can use this non-billable time entry category |
| Deleted | Remove from the system |
The Groups setting controls which users see a non-billable code when logging time. Select Everyone to make a code available to all users, or restrict it to specific teams. For example, an “HR” non-billable code might be limited to the HR team, while “Meetings” is available to everyone.
Non-billable codes appear in time tracking reports, helping you understand where non-chargeable time goes and identify opportunities to improve billable utilization.
CRM and customers
CRM records represent your customers, partners, and external vendors. Each record captures the customer’s identity and contact information, and connects them to the work you do for them.
| Property | Description |
|---|
| Name | Customer or company name (e.g., “Example Inc”) |
| Code | Short identifier (e.g., EXPL) |
| Domain | Comma-delimited email domain names (e.g., example.org) |
| Address | Street address |
| Zipcode / postal code | Postal code |
| Country | Country (selected from dropdown) |
| SKU | Which products and services are linked to this customer |
| Deleted | Remove from the system |
Customer domains
CRM records can have one or more email domains. These domains are used for automatic matching — when an email arrives through the mailbox integration, the sender’s domain can be matched to a CRM record to automatically associate the resulting ticket with the right customer.
Each CRM record can have multiple contacts, each with a name, email address, and phone number. Contacts represent the people at the customer organization you interact with.
Linked SKUs
CRM records can be linked to specific SKUs, defining which products or services are available for each customer. When logging billable time against items associated with that customer, the linked SKUs control which time codes are relevant. This ensures that your team only selects SKUs that are part of the customer’s agreement.
Budget reason codes
A budget reason code explains why a board’s budget was changed. Reason codes document changes to hours, costs, points, and other budget metrics, creating an auditable history.
| Property | Description |
|---|
| Name | Display name (e.g., “Scope increase”) |
| Code | Short identifier (e.g., INC) |
| Active | Whether this reason code is available for use |
| Deleted | Remove from the system |
Reason codes are configured at the tenant level and shared across all boards. Every budget change requires selecting a reason code.
Default reason codes
Every new tenant is installed with seven default reason codes:
| Code | Name |
|---|
| INIT | Initial |
| INC | Scope increase |
| DEC | Scope decrease |
| CANCEL | Work cancellation |
| ADD | Additional work order |
| DELAY | Third party delay |
| Redo | Re-work |
All default reason codes are editable — add codes that match your change management vocabulary, or remove the ones you do not use.
Use reason codes consistently across boards. Structured reason codes give you reporting on why budgets change over time, not just that they changed.
How finance connects to work
The financial model connects to work management at every level:
- Job roles attach to users, providing cost and charge rates for every time entry
- Cost centers attach to users, grouping costs by organizational unit for reporting
- SKUs attach to billable time entries, calculating revenue from logged hours
- CRM records link items to customers, connecting work to client relationships
- Non-billable codes categorize internal time, restricted by user group
- Budget reason codes document why board budgets change, creating an audit trail
Profitability
Ekso calculates profitability from the financial metadata on time entries:
- Estimated cost = time logged x job role hourly base cost
- Estimated revenue = time logged x job role hourly charge rate
- Gross margin = (revenue - cost) / revenue
Profitability reports can be grouped and filtered by container, board, cycle, SKU, job role, or cost center — giving you visibility from a single item up to the entire organization.