User Personas: Admin | Project Manager
Actual Costs is where a project's real spend lives. It collects the invoices billed against your purchase orders, the invoices and expenses that never went through a purchase order, and the labor cost of each month, and it puts them in one place per project instead of scattered across receivings, spreadsheets and payroll reports.
The three tabs are built for volume. Costs can be typed straight into the grid a row at a time without touching the mouse, or entered on a full form when you need to attach a receipt or fill in the optional detail. Costs recorded here are what the project's cost reporting reads, so keeping this log current is what makes the rest of the numbers trustworthy.
To work in Actual Costs you need the Actual Costs permissions granted to your permission group. See the Permissions table at the end of this article.
Use the links below to jump to a topic:
- Accessing Actual Costs
- Working in the Log
- Entering Costs From the Keyboard
- PO Costs
- Indirect Costs
- Labor Costs
- Attachments
- Invoices on the Purchase Order
- Costs That Arrive Through the API
- Permissions
-
FAQ
- I do not see Actual Costs in the side menu at all.
- What is the difference between the cost period and the invoice date?
- I added an invoice on the purchase order. Do I have to add it here too?
- What happened to the invoice numbers we entered on receivings?
- Why can I not add a row on the Labor Costs tab?
- Why does a row have a padlock on it?
- Can I import a batch of costs?
- Can I email a cost entry or save one as a PDF?
Accessing Actual Costs
- Open the project you want to record costs against.
- In the side menu, expand Documents.
- Select Actual Costs, listed under Purchase Orders.
Working in the Log
All three tabs share the same log layout, so what you learn on one carries to the others.
- The page title carries a row count for whichever tab is open.
- The search box filters the rows on the active tab. It clears when you switch tabs.
- The refresh button reloads the rows for the active tab.
- Sort and filter are available on the columns, and each row carries a menu at the end of it.
- A total row is pinned to the bottom of the grid, so the amounts on screen always add up to something you can read.
Entering Costs From the Keyboard
Recording costs is repetitive work, so the grid is built to be driven from the keyboard. You can enter a stack of invoices without reaching for the mouse, and the form based panels are still there for the entries that need attachments or the optional fields.
Adding a Cost by Typing in the Grid
Every grid keeps an empty row at the bottom, waiting for a new entry.
- Select the empty row at the bottom of the grid and start typing.
- Fill in the fields the entry needs, moving across with the Tab key.
- Tab off the end of the row. The entry saves and a fresh empty row opens below it, ready for the next one.
A row that is still missing something is not saved. It stays where it is and marks the fields it is waiting for, so nothing is recorded half finished. The button at the end of the row empties a part filled row if you would rather start over.
| The grid has room for the fields most entries need, not all of them. To add a shipment link or an attachment, either use the full form to begin with or add the row inline and then open Edit Details on it. |
Editing a Cost by Typing in the Grid
Cells you can edit in place carry a blue edge:
- Select the cell you want to change and type the new value.
- Move to another cell. The change saves on its own.
There is no Save button on the grid. While a change is being recorded, that cell shows a small saving indicator, and when the indicator clears the value is stored.
Using the Full Form Instead
The form gives you every field on the entry, including the ones the grid has no room for.
- Select the floating Actions button.
- Select the add option for the tab you are on, for example Add PO Invoice.
- Fill in the form and save.
The form opens as a full page rather than a panel over the grid. The option you pick names the tab you are on, for example Add PO Invoice or Add Indirect Cost, while the page itself is headed Add Actual Cost.
To reopen an existing entry on the form, select Edit Details from the menu at the end of its row. Leaving a form with unsaved changes asks you to confirm before the changes are lost.
The Cost Period Field
Cost Period is the month a cost lands in for reporting, and it is required on every entry on the PO Costs and Indirect Costs tabs. It is a month and year rather than a date.
The list you pick from is built around the project rather than around today.
| Behavior | What it means |
| Always Offered | Next month, this month and last month are lifted to the top of the list, in that order, and each one is labeled. |
| Earliest Month | Last month, or the project's start month if the project started earlier. The project's start month is marked where it falls in the list. |
| Latest Month | Next month, or the project's end month if that is later. A project running past its planned end date still offers the months it has actually been running. |
| Length Limit | The list stops at 120 months, so a typo in the project dates cannot generate thousands of entries. |
| Outside the List | A month the list does not offer can still be chosen with the calendar button inside the field. |
Months are typed rather than scrolled for, so a long list narrows in a keystroke or two. Entering an invoice or receipt date fills in the cost period from that date if one has not been picked yet, and it never overwrites a cost period you have already chosen.
PO Costs
The PO Costs tab holds the invoices billed against the purchase orders on this project. Each row shows which purchase order it was billed against, the cost period it will land in, the amount, the invoice number and date, and a description. Amounts are totaled at the bottom of the grid.
Invoices are recorded as lump sum amounts. They are not broken down by line item.
The Purchase Order cell carries the purchase order number, its date and its current status, and an open button that takes you to that purchase order in a new tab.
Purchase Order Invoice Fields
Opening the form from the PO Costs tab sets Type to Purchase Order Invoice, which is a third type alongside Invoice and Expense and the only one that asks which purchase order the cost belongs to. The type available to you depends on the tab you started from.
| Field | Notes |
| Purchase Order | Required. The purchase order this invoice is billed against. |
| Cost Period | Required. The month the cost lands in. |
| Invoice No | Required. |
| Amount | Required. Two decimal places. |
| Invoice Date | Optional. |
| Purchase Order Shipment | Optional. Available on the form, not in the grid. The list fills in once a purchase order is selected. |
| Description | Optional. |
| Attachments | Optional. Available on the form, not in the grid. |
| Vendor | Not entered. It comes from the purchase order. |
Adding, Editing, Viewing and Deleting
Add an invoice either inline in the grid or on the Add PO Invoice form from the Actions button. Editing works the same way: type in the grid for the fields it shows, or select Edit PO Invoice Details from the row menu for everything else.
The row menu also carries View PO Invoice, a read only view of the invoice, and Delete for users whose permission group allows it. The view page carries Delete, View History and Edit at the top. View History shows the change history of the cost: who changed what, and when. See Audit Trail and Version History.
Marking a Purchase Order Complete
An invoice row carries a Mark PO as Complete action on its menu, unless the purchase order is already complete.
The change is saved on the purchase order itself, not on the invoice, so the purchase order shows as complete everywhere in the app, and every invoice billed against it on this tab shows the same status.
Indirect Costs
The Indirect Costs tab holds the costs that are not tied to a purchase order and are not labor. It covers two kinds of entry in one grid.
- An invoice, which is a bill from a vendor.
- An expense, which is a receipt for something somebody paid for directly, for example an out of pocket purchase documented with a receipt.
A Type column marks which is which, and the amounts are totaled at the bottom of the grid. Like purchase order invoices, indirect costs are recorded as lump sum amounts.
Adding, editing, viewing and deleting an indirect cost work exactly as they do on the PO Costs tab, with one addition: the form asks for the Type so the entry is recorded as an invoice or as an expense. The row menu names the type of the row, for example View Expense and Edit Expense Details.
Invoice Fields
| Field | Notes |
| Cost Period | Required. The month the cost lands in. |
| Invoice No | Required. |
| Amount | Required. Two decimal places. |
| Invoice Date | Optional. |
| Vendor | Optional. Selected from the vendor list. |
| Description | Optional. |
| Attachments | Optional. Available on the form, not in the grid. |
Expense Fields
| Field | Notes |
| Cost Period | Required. The month the cost lands in. |
| Receipt No | Required. |
| Amount | Required. Two decimal places. |
| Receipt Date | Optional. |
| Vendor | Optional. Typed in as free text on an expense. |
| Paid By | Optional. Picked from a people list, so the person who paid out of pocket is recorded on the cost. The saved entry shows the name last name first. |
| Description | Optional. |
| Attachments | Optional. Available on the form, not in the grid. This is where the receipt image belongs. |
Choosing Expense as the type changes the form rather than just the record. Invoice No. becomes Receipt No., Invoice Date becomes Receipt Date, Vendor asks who was paid, and a Paid By field appears that the invoice form does not have.
Labor Costs
The Labor Costs tab does not work like the other two, and the difference is worth understanding before you use it. There are no invoices to add here. The grid arrives pre-filled with one row per month of the project, the same way a project budget does, and recording a labor cost means overriding the month that is already there.
Each row shows the month, the labor cost calculated from timecards, the actual cost if one has been recorded instead, and when it was last changed and by whom. Both the calculated figures and the actual figures are totaled at the bottom.
| Column | Where it comes from |
| Month | Calculated. One row per month of the project, taken from the project dates. Months further ahead than next month are left out, since there is nothing to record against them yet. |
| Calculated Cost | Calculated from approved project time: hours multiplied by rates. |
| Actual Cost | Optional. What you record as the month's real cost, for example the figure from your payroll system. |
| Comments | Optional. Free text against the month. |
Months cannot be added or removed on this tab. Changing the project dates is what changes the list of rows.
Overriding a Month With an Actual Cost
The Actual Cost column starts out showing the figure calculated from Timecard Management
- Select the Actual Cost cell for the month you want to record.
- Type the figure the month actually cost.
- Move off the cell. The change saves on its own.
An overridden month reads differently from a calculated one. It carries a Manual chip, and the row fills in Last Updated and Updated By so it is clear who recorded the figure. Last Updated is shown as time elapsed rather than a date. Emptying the cell takes the override back off and the month returns to the calculated figure.
Comments can be typed against a month whether or not its cost has been overridden.
There is no view, delete or attachment support on Labor Costs. A month is either calculated or overridden.
Attachments
Documents and media files can be attached to a cost on the add and edit forms, either by dragging them in or by browsing for them, including from Drive, the same way you attach to any other document type in eSUB.
Attachments are saved with the cost and are shown whenever it is viewed, so the receipt image or the invoice PDF travels with the amount.
Attachments are not supported on the Labor Costs tab.
Invoices on the Purchase Order
Purchase order invoices are records of their own. There are two methods to accessing the same set of invoices, and both show the same records.
- The PO Costs tab in Actual Costs, which shows every purchase order invoice on the project.
- The Invoices tab on an individual purchase order, which shows the invoices billed against that one purchase order.
An invoice added in one place appears in the other.
While editing a purchase order, the Invoices tab lets you add, edit, view and delete any invoice logged against it. Selecting Add PO Invoice opens a dialog with the same fields as the Actual Costs form, and Edit on a row opens the same fields for an existing invoice. Viewing an invoice from here opens it in a dialog, so you keep your place on the purchase order.
Linking an Invoice to a Shipment
An invoice can be tied to the shipment it covers, and the link can be made from either side.
From the purchase order:
- Open the purchase order and select Receiving.
- On the shipment, open the Invoice list and pick the invoice.
- An invoice that has not been recorded yet can be added from that same list without leaving the shipment.
From the invoice: use the Shipment field when adding or editing the purchase order invoice.
Invoices Entered on a Receiving Before Now
Invoice details that were captured directly on a purchase order receiving, as an Invoice # and an Invoice Amount, were brought across as purchase order invoices so they appear in Actual Costs with everything else.
- Each one is linked to the receiving it came from, and to that receiving's purchase order.
- Its invoice date and cost period come from the receiving's date, falling back to the purchase order date if the receiving has none.
- Nothing was changed on your purchase orders. The original Invoice # and Invoice Amount are still on the receiving, exactly as they were. No receiving field was added, edited or removed.
Costs That Arrive Through the API
Some costs are not typed in by a person. If your organization has the API module and integration, actual costs can be created through the eSUB Public API, where the external system is the system of record. Actual Costs are available in the Public API, covering direct cost invoices, direct cost expenses, purchase order invoices and actual labor costs.
Entries created that way are owned by the integration, so they can be protected from being changed by hand. The API Entries permission controls that, and it applies only to organizations using the API module. Costs typed into eSUB by hand are never locked.
When a user's API Entries permission does not include edit, entries that arrived through the API are read only for that user. A red padlock appears at the start of the row, and hovering over it explains why the row is locked. Where the padlock sits depends on which grid you are in.
| Grid | Where the padlock appears |
| PO Costs | Next to the purchase order, beside its status. |
| Indirect Costs | In the number column. |
| Labor Costs | In the month column. |
| Invoices tab on a purchase order | In the invoice number column. |
On a locked row, the cells cannot be typed into, Edit Details in the row menu is greyed out with a note explaining why, and opening the entry shows a locked label next to its title with no edit or delete buttons offered.
When it does not include delete, the delete action in the row menu is greyed out on entries that came through the API, again with a note explaining why.
Users who do have these permissions can edit and delete API entries freely. Those entries still carry a mark in that first column slot: where a red padlock appears for a user who cannot change the row, a grey sync icon appears for a user who can, so it is always clear the record came from an integration. Hovering the icon shows the detail.
Permissions
Actual Costs is its own section in Permission Groups in settings. If the section is not there, the Actual Costs module has not been switched on for your organization yet.
| Permission | What it allows |
| General Permissions | Everyday access to the log, carried as one value that can include View, Create, Edit and Delete. A group holding none of them cannot open Actual Costs at all. |
| API Entries | Whether the group may change entries that arrived through the API, carried as one value that can include Edit and Delete. It is set independently of General Permissions, so a group with full everyday access can still be held back from API entries. |
The two rows are independent. A group can hold full access on General Permissions and still be unable to touch a cost that came from an integration, which is how the pair is meant to be used.
FAQ
I do not see Actual Costs in the side menu at all.
Either the module is not switched on for your organization, or your permission group has not been given access. The module is licensed separately, so start by asking your eSUB representative whether it is enabled, then have an administrator check the Actual Costs row in Permission Groups.
What is the difference between the cost period and the invoice date?
The invoice date is the date on the paperwork. The cost period is the month the cost belongs to for reporting, and it is what the project's cost reporting reads. They are usually the same month, which is why entering a date fills in an empty cost period for you, but an invoice dated the first of a month can belong to the month before it.
I added an invoice on the purchase order. Do I have to add it here too?
No. There is one invoice record and two places to work with it. An invoice added on the purchase order's Invoices tab shows up on the PO Costs tab, and the other way around.
What happened to the invoice numbers we entered on receivings?
They were brought across as purchase order invoices, linked to the receiving they came from, so they now appear in Actual Costs with everything else. The original invoice number and amount are still on the receiving, unchanged.
Why can I not add a row on the Labor Costs tab?
Because the months are already there. Labor Costs works like a project budget: one row per month of the project, taken from the project dates. Recording a labor cost means typing over the month that is already listed, not adding a row. Changing the project dates is what changes the list.
Why does a row have a padlock on it?
That cost came in through the API from an integration, and your permission group does not include API Entries, Edit. The integration is the system of record for those entries, so they are protected from being changed by hand. An administrator can grant the permission if the figure genuinely needs correcting in eSUB.
Can I import a batch of costs?
There is no import in Actual Costs. Costs are either entered here, one at a time in-line or on the form, or created through the eSUB Public API by an integration.
Can I email a cost entry or save one as a PDF?
No. Actual Costs entries do not currently support the PDF or email actions you may be used to on other document types.
See also: eSUB Public API | Revenue Forecast