The four tools handle supplier cost changes through different operations, so check which record holds your quote price. Microsoft Learn describes posting a purchased item as received and invoiced on January 10.
Supplier cost updates: the documented differences
Repair businesses face supplier price changes before issuing quotes, but software tools handle these updates through different documented mechanisms. The four tools compared here do not share a single method for applying cost changes to future work. Instead, their help pages describe specific operations that address different parts of the pricing record.
Other tools in this comparison use different approaches. Some distinguish between buying prices and selling prices, storing them in separate records. Others require full object updates to change any attribute, including price. None of the documented behaviors suggest that a supplier cost change automatically raises customer selling prices across all four platforms. Each tool requires specific actions or configurations to manage price changes.
Key takeaways: purchase costs and selling prices
When a supplier raises the cost of a part, the software records that change in different places depending on the tool. You must distinguish between correcting past records and setting the price for the next customer quote.
-
Historical cost correction adjusts past entries. Microsoft Learn documents that cost adjustment updates the cost of goods sold (COGS) for historic sales entries. This process ensures those past entries match the costs of the inbound transactions applied to them. This operation corrects the record of what you paid in the past. If you are checking a quote for a current job, look for the current selling price record, not the historical COGS adjustment.
-
Separate price lists track buying and selling. Frappe explains that you can create multiple Price Lists for one Item to track the Selling and Buying Price separately. This structure keeps the cost you pay to the supplier distinct from the price you charge the customer. Check the specific price list intended for customer quotes before issuing a repair estimate.
-
Square updates need the full object. Square states that you must provide the full existing object in any update request.
Help-page reference table for four tools
| Publisher | Documented Price or Cost Behavior | Specific Example or Requirement |
|---|---|---|
| Microsoft Learn | Cost adjustment updates the cost of goods sold for historic sales entries | On January 10, you post a purchased item as received and invoiced. |
| Odoo | Import vendor pricelist with modified exported file | Storage Box (Reference: E-COM08) is sold by Wood Corner for $10. |
| Square | Update Catalog Objects with full existing object | You must provide the full existing object in any update requests. |
| Frappe | Item Price tracking for separate buying and selling | You can create multiple Price Lists for one Item in ERPNext to track the Selling and Buying Price of an Item separately. |
Review the row for your specific software to confirm whether the record you are editing holds a historical cost, a vendor rate, a full API object, or a separate price list entry.
Late freight and historical sales costs in Business Central
When a supplier sends a late charge after you have already billed the customer, the system corrects the past record. According to Microsoft Learn , an item can be sales invoiced before it has been purchase invoiced, so the recorded inventory value of the sale does not match the actual purchase cost. This timing gap creates the need for a post-sale correction.
The documentation illustrates this with a specific sequence. On February 5, you receive an invoice for a freight charge on the original purchase. Later, you post a related purchase item charge for 2.00 LCY invoiced on 02-10-20. Because the sale was already recorded at the original cost, the system must adjust the historical data to reflect this new expense.
The cost adjustment batch job adjusts the cost of the sale by -2.00 LCY accordingly. The Post Inventory Cost to G/L batch job then posts the new value entries to the G/L. These automated jobs handle the accounting entries for the past transaction. The correction applies to the historical sales cost.
For your next quote check, distinguish between these two types of records. The batch jobs fix the value entries for the job you already completed. If you rely on the adjusted historical cost to set your next price, you may use a figure that reflects a one-time freight charge rather than your standard part cost. Check the current selling price in your price list separately from the adjusted historical cost in the G/L.
This distinction matters when you review your margins after a job. The -2.00 LCY adjustment corrects the profit calculation for the specific sale that occurred. It does not signal that the supplier has permanently raised the base price of the part. If the supplier’s standard price remains unchanged, your next quote should use the standard selling price, not the adjusted historical cost.
Vendor rates in Odoo and separate selling prices in ERPNext
The Odoo documentation for "Import vendor pricelist — Odoo 18.0 documentation" illustrates a specific workflow for updating supplier costs. It begins with an example where a Storage Box (Reference: E-COM08) is sold by Wood Corner for $10. The guide then instructs the user to update the price for Wood Corner from $10 to $13. To perform this change through file, the documentation states to modify the exported file, as needed, then import it back into the Odoo database. These figures serve as a documentation example of how vendor pricelists are edited and imported, rather than establishing a market benchmark for repair parts.
In contrast, Frappe documents a structural approach to price separation in ERPNext. The "Item Price" manual explains that you can create multiple Price Lists for one Item in ERPNext to track the Selling and Buying Price of an Item separately. This distinction is critical for repair businesses. The "Price Lists" documentation further clarifies that in ERPNext, all the Item Prices are stored separately.
For a repair business owner, the key difference lies in where the price data resides. In the Odoo example, the focus is on updating the vendor's rate within a pricelist file. In ERPNext, the focus is on maintaining distinct records for buying and selling prices. When checking a quote, you must verify which price list is active for the specific item. If you are using a system that tracks buying and selling prices separately, check the customer price before you quote. You must manually review the selling price record to ensure it reflects your desired margin.
The documentation examples highlight that software tools handle supplier updates differently. Odoo's method involves exporting, modifying, and importing a pricelist file to adjust vendor rates. ERPNext's method involves maintaining separate price lists for buying and selling. When your supplier sends a new price sheet, you must determine whether you are updating a vendor pricelist or a selling price list. This distinction ensures that your internal cost tracking and customer-facing quotes remain accurate and distinct.
Square: full catalog objects and required update fields
When updating a price record in the Square Catalog API, the system requires the complete existing object rather than a partial change. According to Square , you must provide the full existing object in any update requests. This requirement applies specifically to the "Update Catalog Objects" operation. If you are adjusting a part's cost or price, you cannot send just the new value; the request must contain the entire object structure as it currently exists.
The specific identifiers required for this operation include the object ID, the version number, and the type. Square states that to update an object, you must specify the object ID, version number, and type as well as other object properties. These three identifiers serve as the primary keys for the update process. You must retrieve the current version number before attempting to modify the price.
If you omit any required attribute in the input of the request, the API returns a 400 error response. Square documents that failing to specify a required attribute in the input of the request results in a 400 error response. This error code indicates a client-side issue, meaning the request was malformed or incomplete. Omitting the object ID or the type field is one such case. When you receive a 400 response, you should check your request payload against the required fields list.
Illustrative example: one part's quote check
Suppose a part costs 10 dollars and your quote price is 25 dollars. The supplier raises the cost to 20 dollars, so the gap between cost and price shrinks to 5 dollars. Whether the 25-dollar price changes depends on your margin check.
Which documented behavior fits your next quote check
Before you issue a repair quote, identify whether the record you are reviewing holds its buying price, selling price, or historical sales cost. In ERPNext, all the Item Prices are stored separately, according to Frappe . You must check the relevant price record for the specific price list you use for quotes.
If your software tracks purchase costs and sales costs as distinct historical records, a supplier cost update may only adjust past entries. Update the selling price in your price book only if your margin requires it.
To apply this to your next quote:
- Open the part record in your software.
- Locate the field for the selling price used in quotes.
- Compare it to the current supplier cost.
- Update the selling price if your margin requires it.
Do not assume a supplier invoice updates your customer-facing price. The documented behavior in these tools shows that buying and selling prices are often managed in separate records or price lists. Your next step today is to open the part record and verify which price you will bill to the customer.
Related guides: Auto repair invoices: 7 checks before you bill a job · Flat-rate price updates: 4 apps and edit rules · Repair labor tax rules in 4 states before pricing .
Supplier changes before repair quotes: frequently asked questions
How do supplier cost updates differ across these tools?
The four tools document distinct operations for handling cost changes. Business Central performs historical cost adjustments, Odoo edits vendor pricelists, ERPNext tracks separate price lists, and Square requires full catalog object updates. Each system manages the relationship between purchase costs and selling prices differently. You should verify which specific operation your software performs before issuing a quote.
Does Business Central adjust historical sales costs after a late purchase charge?
Yes, cost adjustment updates the cost of goods sold for historic sales entries to match inbound transaction costs according to Microsoft Learn . The documentation describes posting a related purchase item charge for 2.00 LCY invoiced on 02-10-20. This process corrects historical records.
Can ERPNext track buying and selling prices separately?
You can create multiple Price Lists for one Item in ERPNext to track the Selling and Buying Price of an Item separately according to Frappe . Item Prices are stored separately within the system. Check the relevant price record before you quote.
What must an update include if my price book uses the Square Catalog API?
To update an object, you must specify the object ID, version number, and type as well as other object properties according to Square . Omitting a required attribute produces a 400 response. Ensure your update includes the full existing catalog object and its identifiers.
How does Odoo's example change a vendor price?
The documentation illustrates updating the price for Wood Corner from $10 to $13 according to Odoo . This process involves modifying an exported file before importing it back. Treat these figures as documentation examples rather than repair-part market benchmarks.