BillingBot — Pricing Resolution Guide
How unit prices and costs are determined during distributor charge imports
Last updated 24 days ago
How unit prices and costs are determined during distributor charge imports
Overview
BillingBot determines the selling price (Unit Price) and the cost (Unit Cost) of each product when importing charges from your distributor (Pax8) or from a Universal CSV file. You control these values through the product configuration in Map Products.
The Unit Price is resolved using four modes, in priority order:
- Price Override (highest priority) — Uses a fixed Base Price you configure.
- Margin Override — Calculates the price dynamically from cost plus a margin percentage.
- Use Halo Price — Uses the price of the Halo item the product is mapped to.
- Default — Uses the distributor retail price (or the price from the CSV file).
The Unit Cost is controlled separately by Cost Override: when enabled, the cost is locked to a fixed Cost Price; otherwise the distributor cost is used. Cost Override can be combined with any of the price modes above.
Priority Rule: Price Override always wins for the selling price. If it is enabled, Margin Override is ignored. Margin Override applies only when Price Override is OFF, and Use Halo Price applies only when both are OFF.
Base Data for All Examples
Scenario 1: Default (no overrides)
Settings: Price Override = OFF, Cost Override = OFF, Margin Override = OFF, Use Halo Price = OFF
With no overrides enabled, BillingBot uses the distributor retail price as the selling price and the distributor cost.
Result: The customer is charged the distributor suggested retail price. You do not control the selling price. (With Pax8, if the unit price does not match Pax8's line total, it is adjusted to Total ÷ Quantity — see Where Values Come From.)
Scenario 2: Price Override (fixed selling price)
Settings: Price Override = ON (Base Price = $12.50)
The selling price is locked to the Base Price you enter in Map Products, regardless of the distributor price.
Result: The price is fixed at $12.50 per unit. If the distributor cost rises, your Base Price stays $12.50 and your margin changes. The price does not auto-adjust.
Scenario 3: Margin Override (dynamic margin-based price)
Settings: Margin Override = ON (Margin % = 40)
Formula: Unit Price = Unit Cost x (1 + Margin% / 100). Example: $6.00 x 1.40 = $8.40
Result: Your profit margin stays consistent at 40%. If the cost rises to $8.00, the price auto-adjusts to $11.20, keeping the 40% margin.
Scenario 4: Cost Override (fixed cost)
Settings: Cost Override = ON (Cost Price = $5.00)
The distributor cost is ignored and the unit cost is locked to the Cost Price you enter. In this example the selling price uses the default (no price override), so only the cost changes.
Result: The unit cost is locked at $5.00 and the Net Amount becomes $40.00 ($5.00 x 8). The distributor cost is not used.
Combining Cost Override: Cost Override can be combined with the price modes. With Cost Override + Margin Override (40%), the price would be $5.00 x 1.40 = $7.00. With Cost Override + Price Override, the cost is $5.00 and the price is the fixed Base Price.
Scenario 5: Use Halo Price (price from your Halo item)
Settings: Use Halo Price = ON, Price Override = OFF, Margin Override = OFF (Halo item Recurring Price = $12.50)
The selling price is read from the Halo item the product is mapped to, every time charges are imported. BillingBot uses the item's Recurring Price; if it is 0, it uses the item's Base Price.
Result: You keep your price list in Halo. If you change the price of the item in Halo, the next import uses the new price.
Good to know:
- It uses the general price of the Halo item. Customer-specific prices configured in Halo are not used.
- If the Halo item has no Recurring Price and no Base Price, the charge keeps the default price and the import shows a warning listing those products.
- New products start with Use Halo Price turned off. A Universal CSV that carries no selling price (a cost-only export) imports those products at a unit price of 0; the import summary lists every charge in that situation so you can enable Use Halo Price (or a Price Override) before sending.
- Items created in Halo by BillingBot start with the distributor price of the day they were created. Check their price in Halo before enabling this option.
- The Edit dialog in Map Products shows the price that will be used before you save. To enable it for many products at once, select them and click Bulk Use Halo Price.
Charging One Customer a Different Price
The pricing options in Map Products apply per product: every customer with that product gets the same Price Override, Margin Override, Cost Override or Use Halo Price.
To charge one customer a different price for the same product:
- With Pax8 — Set that customer's price in Pax8 and leave Price Override, Margin Override and Use Halo Price turned off for the product. BillingBot then uses the price on each customer's Pax8 invoice line, so every customer is billed at the price you set for them in Pax8.
- For a one-off adjustment — Edit the Unit Price of the charge in Ready To Invoice before sending it. It applies only to that charge (see When Do Changes Take Effect?).
Before turning an override off: all your other customers with that product will be billed at their Pax8 price. Check those prices in Pax8 first.
Where Values Come From and How They Are Sent to Halo
For each charge line, BillingBot resolves the values from the sources below and sends them to the corresponding Halo invoice line fields.
When Pax8's unit price does not add up to its total: HaloPSA bills Quantity x Unit Price, not the total BillingBot sends. Pax8 sometimes sends a unit price that does not match its own line total — for example a unit price of 0 with a real total, or a unit price rounded to 2 decimals (2,700 x $0.54 = $1,458.00 for a Pax8 total of $1,451.34). When the charge uses Pax8's price (no Price Override, no Margin Override, no Use Halo Price) and Quantity x Unit Price misses the Pax8 total by more than one cent, BillingBot sets the Unit Price to Total ÷ Quantity, rounded to 6 decimals, so HaloPSA bills exactly what Pax8 charged. That is why some charges show unit prices with up to 6 decimals. Azure charges are not adjusted: they keep Pax8's own amounts.
When Do Changes Take Effect?
Pricing and cost configuration in Map Products applies as follows:
- Configured before importing — The values are applied automatically when charges are imported.
- Edited after importing — When you save the product in Map Products, BillingBot automatically updates the current period pending charges so they reflect the new price, cost and flags. Only the product's own fields change on those charges (the Halo product, name and SKU, and the pricing settings; the amounts only when an override or Use Halo Price recalculates them). A Cross-Map, an exclusion or a price typed in Ready To Invoice in the meantime is kept.
- Already invoiced charges — Charges that have already been sent/invoiced are never modified; only pending charges are updated.
- Prices typed on a charge — A price you type on a charge in Ready To Invoice is kept when new charges are imported. It is replaced if the product is saved in Map Products with an override or Use Halo Price enabled, or if that company's charges are reimported.
Applies to Pax8 and Universal CSV: The same pricing and cost resolution applies to charges imported from Pax8 and from Universal CSV files.
Prorated charges from Pax8: Pax8 bills mid-month additions and removals as separate lines whose unit price and cost are already prorated (for example 1 × $17.30 for half a month of a $35.76 license). BillingBot imports them as a product of their own, named after the main product with "-Partial", with its own pricing settings. Without overrides, or with Margin Override (which works on the already prorated cost), the charge keeps its proration. A Price Override or "Use Halo Price" on a "-Partial" product is sent as it is, without prorating it again, so enter the already prorated price. The main product's override does not apply to its "-Partial" product.
Credits and partial charges in CSV files: Some CSV files report the full unit amount and show a credit or a partial period only in the line total (for example quantity 9, unit cost $1.11, total -$8.06). BillingBot applies that same share to the Base Price, the Cost Price and the Halo price, so with an override a credit stays a credit and a partial charge stays partial. For example, a full credit of 27 units with a Base Price of $12.96 is sent as -$349.92, not as a charge of $349.92.
Configuration Guide
To configure pricing and cost for a product:
- Open Map Products — Go to Map Products and click Edit on the product.
- For a fixed selling price — Enable Price Override; a Base Price field appears — enter the selling price.
- For a margin-based price — Enable Margin Override; a Margin Percentage field appears — enter the margin (e.g., 40).
- For a fixed cost — Enable Cost Override; a Cost Price field appears — enter the unit cost.
- For the price of your Halo item — Enable Use Halo Price; the dialog shows the Halo price that will be used.
- For distributor defaults — Leave the overrides disabled to use the distributor price and cost.
- Save — Click Update Item. Pending charges for the current period are updated automatically.
Input fields appear on demand: Each value field is shown only when its override is enabled: Base Price with Price Override, Cost Price with Cost Override, and Margin Percentage with Margin Override.
Key Fields Reference
Quick Comparison Table
Comparison of the modes using the base data (cost $6.00, RRP $10.00, 8 units; Cost Price $5.00 in the Cost Override column; Halo item price $12.50 in the Halo Price column):
For additional assistance, contact your TechPulse account representative. (BillingBot by TechPulse — v2.1, September 2026)