Vendors and cost pricing
concorbit tracks both what you sell products and services for (the selling price) and what they cost you (the cost price), so every invoice line and ticket charge carries a margin you can report on.
Where to set cost prices
On every product record (Billing → Products → edit a product) you'll find:
Cost price: what you pay for this item from your supplier, in pence
Procurement URL: optional link to the vendor's product page for quick re-ordering
Vendor: which supplier stocks this item
These fields are optional. Leaving them blank just means margin calculations skip that product.
Vendors
Manage vendors from Billing → Vendors. A vendor record has:
Name (e.g. "Tech Data", "Ingram Micro")
Account number
Default contact email
Notes field for support line, portal URL, etc.
Products link to a vendor so when you're re-ordering you can sort by vendor to batch purchase orders.
Automatic cost propagation
When staff add a charge to a ticket by picking a product from the catalogue, the charge's cost price is automatically copied from the product. If you change the product's cost later, existing charges keep their historical cost, so you're always looking at what the item cost when it was billed.
For time-based charges (pro-services tickets), cost price is calculated as:
rounded_hours × engineer_hourly_cost
The engineer hourly cost comes from the claims setting claims.rates.engineer_hourly_cost by default, with per-user overrides supported (see Staff guide for cost override details).
Margin reporting
Margin appears on:
Product list: margin % column, sort-able
Invoice lines: hover a line to see margin
Ticket charges: displayed alongside the charge
Job costs & profits: the full reporting dashboard (coming soon)
Who can see what
Cost prices are sensitive. They're gated by the billing.costs.view permission:
Admins and finance staff: see everything
Sales / support staff: see the selling price only; cost fields are blank
Customers (portal): never see cost prices
Check Settings → Roles to confirm which roles carry the permission in your workspace.
Importing cost prices
The product import CSV accepts a cost_price column (in pence). The jcp:backfill-cost-prices artisan command can also populate cost on historical charges that were created before cost tracking was added.