From Time Entry to Invoice: The PSA Billing Workflow Explained
A practitioner's walk through the Workday PSA billing workflow for time and materials consulting: how project, time, expense, billing, and revenue connect.

A consultant books eight hours on a Friday afternoon. Nine weeks later the client questions that line on an invoice, and three people go looking for what happened in between.
What happened in between is the PSA billing workflow. Most of the pain in professional services billing comes from teams treating it as a handful of separate steps owned by separate functions, when it really is an inter-connected process chain. To illustrate how Workday PSA handles this chain, this post walks through an example for a consulting firm on time and materials. It is the foundational and most common shape and the one where the connections are easiest to see. Fixed fee, milestone, and retainer billing each have their own quirks and get their own posts later in this series.
The chain: project, time, expense, contract, invoice, revenue
Everything anchors on the project. The project carries the plan, phases and tasks, the resource assignments, and the billable flags. It also has to be tied to a customer contract line, because that link is what makes any transaction against it billable at all.
Time comes in against the project and/or task. When a consultant submits, Workday checks the worker's assignment, whether the task is billable, and whether the date falls inside the contract period. Approved time becomes a billable transaction carrying the worker, the role, the task, the hours, the bill rate, and the cost rate.
Expenses arrive at the same place from a different door. An expense report line coded to the project and marked billable produces a billable transaction too. The markup, the cap, and the treatment of non-billable items are not decided on the expense report. They are decided by the billing rules on the contract or through manual intervention.
The customer contract line is where the commercial agreement becomes configuration: the rate sheet, the rate hierarchy across worker, role, and task, what is billable, what is capped, and what carries markup.
The transaction billing schedule then sweeps eligible billable transactions on its cycle and produces the customer invoice. Revenue recognition runs off the same contract line. On a straightforward T&M engagement, revenue recognizes as the work is delivered and billed, which is why a rate problem shows up in revenue and margin at the same time it shows up on the invoice.
---
config:
theme: forest
---
flowchart LR
A(fa:fa-clipboard Project) <==> B(fa:fa-list-ul Contract Line)
B --> C(Billing Schedule)
D(fa:fa-clock Time block) --> E
F(fa:fa-credit-card Expense) --> E
H(fa:fa-plug Ad-hoc) --> E
E(Billable Transaction) -..- C
C --> G(fa:fa-envelope-square Invoice)What "integrated" actually buys you
Six links, one system, one record. That is worth being specific about, because "integrated" gets used loosely.
You can drill from an invoice line back to the time block, the worker, and the day it was entered, without leaving Workday and without a support ticket. Cost rate and bill rate sit on the same transaction, so project margin is a live number rather than a month-end exercise. The billing and revenue status sits on the billable transaction, so reporting can be done in both directions.
There is no interface between the time system and the billing system to reconcile, no nightly file, and no drift between what delivery thinks was billed and what finance actually billed.
Firms running a standalone PSA tool alongside Workday Financials spend real effort keeping projects, workers, rates, and invoices in agreement across the boundary. That work disappears when the boundary does.
Where the chain breaks
The failures are almost always at the joints, not inside any one step.
- Time against a project with no active contract line. The transaction is created and sits unbilled. Nobody notices until someone runs the unbilled report, often a quarter later.
- Rate hierarchy set at the wrong level. A contract-level default quietly overrides the negotiated role rate. The invoice is wrong, and it is wrong consistently, which makes it worse.
- Billable expenses on a contract that does not bill expenses. They pass approval, land as transactions, and age in place.
- Retroactive time edits after the invoice has gone out. These become adjustments with their own approval and revenue impact, not quiet corrections.
- Missing cost rates on the worker. Revenue and invoicing look fine. Margin reporting is fiction.
Use ad-hoc billable transactions to expand beyond
Not everything that belongs on a T&M invoice starts life as time or expense record in Workday. A subcontractor pass-through, a tooling or license charge, a negotiated credit, a fixed onboarding fee on an otherwise hourly engagement. The instinct is to fake a time entry or hand-edit the invoice. Both leave you with an audit trail that does not survive contact with a reviewer.
Create an ad-hoc billable transaction against the project and contract line instead. This way you can import transactions from other systems as well. It picks up the same billing rules, flows through the same billing schedule, carries the same revenue treatment, and stays visible in the same drill path as everything else. It is the pressure valve that lets a tightly configured T&M contract absorb the one-off without anyone going around the system.
Two guardrails. Give ad-hoc transactions their own revenue category so they do not distort utilization and effective rate reporting, and put a real approval step on them. Flexibility without a control is just an open door.
Start at the contract line and walk forward when you are debugging any of this. Nine times out of ten, an invoice that looks wrong is a contract that was configured for a deal nobody has sold in two years.
Working through a T&M billing setup that fights you? Contact us

