Skip to content

Split cost and billable rates

Enterprise plan Portfolio Manager or above

A rate card’s cost rate answers “what does this hour cost us?” Billable rates answer the other half: “what do we charge the client for it?” Once any rate card carries a billable rate or markup, Onplana starts reporting revenue and margin alongside cost on billable projects.

Each rate card has two optional fields next to the cost rate:

  • Billable rate (hourly): the explicit charge-out rate.
  • Markup %: a percentage added on top of the cost rate.

The precedence is strict:

  1. If Billable rate is set, that is the charge-out rate. The Markup field is disabled and shows “Override active”.
  2. Otherwise, if Markup % is set, the billable rate is the cost rate plus the markup. A 100/hour cost rate with 35% markup bills at 135/hour, and the form previews the result live as you type.
  3. If neither is set, the billable rate equals the cost rate. There is no margin, and revenue reporting treats the card as cost-only.

The same resolution chain as cost rates applies: a per-user card wins over a role-based card, which wins over the org default.

  1. Open Rate Cards and edit a card (or create a new one).

  2. Fill in Billable rate (hourly), or leave it empty and set Markup % instead. Watch the live preview to confirm the derived hourly charge.

  3. Save. The split takes effect immediately wherever that card resolves.

  • Project Finance tab: on a billable project, four revenue cards appear above the S-curve once at least one resolved rate card carries a billable rate or markup: Earned Revenue, Planned Revenue, Revenue Margin, and Realization %. Internal projects and cost-only rate setups show the cost columns alone.
  • Revenue at Risk: the report and dashboard widget use the billable rate to price unbilled hours. See Track revenue at risk.
  • Rate lookups: anyone can resolve their own billable rate, and the result says how it was derived (explicit rate, markup, or cost-only).
  1. Use Markup % for uniform pricing models. Consulting firms that charge cost × 1.5 across the board pick Markup %. Setting it once at org default applies everywhere; per-user overrides only where pricing differs.
  2. Use Billable rate for contracted hourly amounts. When a client contract pins $250/hr for senior consultants regardless of the underlying cost, that’s an explicit billable rate. Don’t try to back-derive a markup; just enter the number.
  3. Set up the split BEFORE Finance reads any revenue figures. Adding billable mid-quarter means revenue starts populating mid-quarter too. Set up at project start (or the start of the engagement) for consistent reporting.
  4. Treat billable rates as confidential too. The same permission gate as cost rates applies, but billable rates also leak negotiation context. Verify the matrix.
  5. Document derivation precedence. Anyone debugging “why is this hour billing at $X?” needs to know: explicit > markup > cost. The resolver shows derivation; pinning it in an internal doc saves repeated explanations.
  • Revenue cards not appearing on Finance tab. Three causes: (a) project isn’t marked Billable; (b) no rate card has a billable rate or markup; (c) viewer doesn’t have Finance permission. Check all three.
  • Billable rate showing as cost rate. Neither billable rate nor markup was set on the resolving card. Set one. Resolver shows derivation = “cost-only” in this case.
  • Markup field disabled. Billable rate override is active, the explicit billable rate wins. Clear the billable rate to re-enable markup.
  • Markup % saved as 0. A 0 markup is valid and treated as cost-only. If you meant to clear, delete the value rather than zero it.
  • Resolver shows “explicit” but I set markup. Check for a more specific card (per-user winning over role). The matching card with the explicit rate wins.
  • Split rates + EVM revenue math. Once billable rates are set, Earned/Planned Revenue cards appear on EVM. See Read the EVM dashboard.
  • Split rates + Revenue at Risk. Revenue at Risk prices unbilled hours at the billable rate. See Track revenue at risk.
  • Split rates + Billable flag. Revenue only shows on Billable projects. Internal projects show cost only. See Mark projects billable or internal.
  • Split rates + Resolver. Each member’s rate resolution shows derivation: explicit, markup, or cost-only. Useful for debugging.
ToolMapping
ServiceNow PSADirect concept; bill rate + cost rate
Microsoft Project OnlineLacks the billable side natively
Smartsheet PSADirect
HarvestDirect; per-user billable rate ≈ this concept
Custom spreadsheetOnplana automates the margin reporting

What happens if I set neither field? Revenue equals cost, so there is no margin to report. The Finance tab hides the revenue cards rather than showing a row of zeros.

Do internal projects show revenue? No. Revenue figures only appear on projects marked as billable, since internal work has no client to invoice.

Is there a limit on the markup? Markup accepts 0 to 1000 percent. If you need more than 10x cost, set the explicit billable rate instead.

Can I set different markups per client? Today the markup is on the rate card, not the client. For client-specific pricing, set per-user or per-role rate cards with the right effective dates per engagement.

Do billable rates affect historical reports? New billable rates apply forward. Historical timesheet entries use the rate at the time of logging.

Can revenue be negative? Conceptually no, the formula is (billable rate − cost rate) × hours, which is non-negative when billable ≥ cost. If billable < cost (loss-leader pricing), margin is negative; Onplana displays it as a red figure.