Managing Price Changes

Pricing β€” User Guide

A guide for store managers, inventory officers, and
accountants.
If you set shelf prices, adjust costs, or reconcile
supplier invoices, this is for you.


What’s new

StoreHarmony now has four dedicated panels for handling prices, each
doing one job cleanly:

Menu item Who uses it What it does
Inventory β†’ Selling Price Management Store lead, pricing manager Change shelf prices (retail, promo, bulk, loyalty, etc.) across many items at once
Inventory β†’ Cost Price Management Inventory lead, finance approver Update the forward-default cost used for budgeting and next-purchase quotations, or raise a retroactive correction when an old supplier invoice was keyed wrongly
Inventory β†’ Price Change History Everyone with a pricing role Review every price / cost change ever made. Revert a change you regret.
Accounts β†’ Supplier Adjustment Inbox Accounts staff Process the adjustment notices that arrive when someone corrects a posted supplier invoice cost

Every change you make is logged β€” who did it, when, what the old
value was, what the new value is, and the reason. Nothing is secret,
and mistakes can be walked back.


Quick reference β€” which tool for which job?

When you need to… Use
Raise retail prices by 5% across a supplier’s line Selling Price Management β†’ Percentage change
Set a new bulk unit price because you negotiated a volume deal Selling Price Management β†’ Set fixed amount
Record that your imported lines got 12% more expensive after an FX move Cost Price Management β†’ Default Cost Update tab β†’ Percentage change
Someone keyed the supplier cost wrong on last week’s invoice (still a draft) Cost Price Management β†’ Retroactive Correction tab
Someone keyed the supplier cost wrong on an invoice that’s already been posted Cost Price Management β†’ Retroactive Correction tab (accounts gets a notice)
Check who changed the retail price of rice last Tuesday Price Change History β†’ Selling tab β†’ filter by date
Undo a change you made an hour ago Price Change History β†’ right-click the row β†’ Revert
Process a supplier adjustment notice that came from an inventory correction Accounts β†’ Supplier Adjustment Inbox

1. Finding the tools in the menu

All four tools live in the main menu bar:

.t { font-family: ‘Segoe UI’, Tahoma, Arial, sans-serif; }
.label { font-size: 11px; fill: #2C2C2C; }
.bold { font-weight: 700; }
.hint { font-size: 10px; fill: #888888; }
.mod { font-weight: 700; font-size: 12px; fill: #185FA5; }

Inventory β–Έ

Selling Price Mgmt.
shelf prices

Cost Price Mgmt.
default cost + corrections

Price Change History
audit trail + revert
Everyone who can change prices finds their tools under the Inventory module.

Accounts β–Έ

Supplier Adjustment Inbox
process posted-cost corrections
Accounts staff see an additional menu item under the Accounts module.

The menu items appear only if you have the right permission. If
something is missing, see Section 5 β€” Common questions below.


2. Understanding your access

Your administrator assigns you one or more pricing permissions.
What you can do depends on which ones you hold.

.t { font-family: ‘Segoe UI’, Tahoma, Arial, sans-serif; }
.title { font-weight: 700; font-size: 12px; fill: #2C2C2C; }
.role { font-size: 11px; font-weight: 700; fill: #FFFFFF; }
.hint { font-size: 10px; fill: #555555; }
.bold { font-weight: 700; font-size: 11px; }

Change selling prices
Who: store lead, pricing manager
Can change: retail, bulk, carton, promo,
loyalty, loyalty-bulk, internet prices.
Tools: Selling Price Management, History (revert)

Change default cost
Who: inventory lead
Can change: the cost baseline used for budgeting
and next-PO quotations (UnitPrice’s cost field).
Tools: Cost Price Management β†’ Default Cost tab

Post cost correction
Who: inventory lead + finance approver
Can correct: historic batch costs. Draft invoices
get updated in place; posted invoices send a
notice to accounts instead.
Tools: Cost Price Management β†’ Retroactive Correction tab

Process supplier adjustment
Who: accounts staff
Can action adjustment notices that arrive from
inventory cost corrections β€” by posting a
ledger adjustment on the accounts system
and closing the notice.

You might hold one, several, or all of these. The menu will only
show tools you can use β€” if you don’t see Cost Price Management,
you don’t have the “change default cost” or “post cost correction”
permission. Ask your admin.


3. Task guides

3.1 Raising selling prices across a product list

Scenario. “FX went up. Raise retail prices by 5% on the 40
imported items we carry.”

Steps.

  1. Open Inventory β†’ Selling Price Management.
  2. Click Pick Items… β€” a search window opens. Search or scroll
    to find the items. For each one you want to include, double-click
    it (or tick it) to add it to the basket. Click Choose Selected
    Items
    when you’re done. You’re back on the pricing panel with
    the items listed.
  3. From the Price field dropdown, pick Retail selling price.
    (The table’s current-price column now shows each item’s current
    retail price, so you know what you’re starting from.)
  4. From the Strategy dropdown, pick Percentage change.
  5. In the Percent (+/-) box, type 5. (If you meant a cut,
    you’d type -5.)
  6. In the Reason box, type something informative:
    “FX uplift β€” April review”. This goes into the audit log so
    anyone can see later why the change happened.
  7. Click Apply. A dialog will ask you to confirm β€” it tells
    you exactly what’s about to happen: “Apply percentage change on
    retail selling price across 40 item(s)?”
  8. Click Yes. A moment later a success message appears β€” it
    includes a reference code (something like BULK-1713900000000).
    Write it down or copy it if this is an important run; you can
    use it to find every row in the history later.

What happened behind the scenes. Each item’s retail price was
multiplied by 1.05. One row was written to the history for each
item, all tagged with the same reference code, signed with your
name and the reason you typed. Nothing else was touched.

Tips.

  • If you want to change more than one price field (say retail and
    bulk), run the panel twice. One price field per run.
  • If a single item already had the new value (nothing to change),
    it’s skipped silently β€” no double-logging, no error.
  • A negative percentage reduces the price. A negative kobo
    offset with the Fixed offset strategy also reduces.

3.2 Updating the forward default cost

Scenario. “The supplier called β€” our next three shipments will
be 12% more expensive. Adjust our internal cost baseline so
markup calculations and budget views reflect it.”

What the default cost means. When you receive stock, each
batch records its own actual unit cost. That’s the money trail and
it’s permanent. The default cost is a separate forward-looking
number used for pre-filling new supplier invoices, for markup
calculations, and for budget reports. Changing it does not touch
any historic record or any posted invoice.

Steps.

  1. Open Inventory β†’ Cost Price Management.
  2. You’re on the Default Cost Update tab (the left one).
  3. Click Pick Items… and select the items.
  4. Pick Strategy β†’ Percentage change, enter 12 in the value
    box.
  5. Type a reason: “Supplier FX notice β€” effective next PO”.
  6. Click Apply Default Cost. Confirm when asked.

Takes effect immediately; future supplier invoices and any reports
driven by default cost will use the new number.


3.3 Fixing a cost on a draft (not yet posted) supplier invoice

Scenario. “Our clerk keyed the wrong unit cost on the supplier
invoice from last Monday β€” quoted was ₦4,500, invoice has ₦5,400.
It’s still a draft; we haven’t posted it to accounts yet.”

This is the simpler cost-correction case. Because nothing has been
posted to the accounts ledger, the fix is direct: update the batch,
the invoice line, and the invoice total. No accountant needs to
be involved.

Steps.

  1. Open Inventory β†’ Cost Price Management.
  2. Click the Retroactive Correction tab.
  3. Click Pick Item… and pick the single product that was
    wrongly priced.
  4. The table fills with every batch that product has ever had.
    Each row shows the supplier, the invoice reference, the arrival
    date, the current cost, and a Posted? column.
  5. Find the row you need to fix (Posted? = No). Double-click
    its New Cost (kobo) cell and type the correct cost
    (e.g., 450000 for ₦4,500). Press Enter.
  6. In the Reason box below the table, type:
    “Invoice INV-2026-0442 was keyed at wrong cost β€” corrected”.
  7. Click Post Correction. The confirmation tells you:
    “Post cost correction against 1 batch(es)? β€” 1 unposted will
    be directly updated. β€” 0 posted will emit supplier-ledger
    notices.”
  8. Click Yes. A moment later you see:
    “Correction posted. Ref: COST-CORR-…, Applied (unposted): 1,
    Noticed (posted): 0.”

Your draft invoice and its batch are now correct. The invoice
total was recalculated automatically.


3.4 Fixing a cost on an already-posted supplier invoice

Scenario. “Same mistake as above β€” but the invoice was posted
to accounts three weeks ago and the supplier has already been
paid the wrong amount. We need to put this right.”

This is the case your accounting training probably warned you
about: don’t touch posted records. StoreHarmony respects that.
The correction does not touch the original invoice, batch, or
ledger β€” instead it records a notice that the accounts team
picks up and actions on their side.

Steps (your part β€” inventory).

  1. Open Inventory β†’ Cost Price Management β†’ Retroactive
    Correction
    tab.
  2. Pick the item, find the wrong batch. Posted? shows Yes
    (posted)
    for it.
  3. Enter the correct new cost, give a reason
    (“Invoice INV-2026-0442 β€” quoted ₦4,500, keyed ₦5,400,
    supplier rebate due”
    ).
  4. Click Post Correction. The confirmation warns you:
    “1 posted will emit supplier-ledger notices.”
  5. Click Yes.

What happens behind the scenes.

.t { font-family: ‘Segoe UI’, Tahoma, Arial, sans-serif; }
.head { font-weight: 700; font-size: 12px; }
.hint { font-size: 10px; fill: #666; }

β‘  You post the correction
Original invoice stays
untouched β€” “cut in stone”

β‘‘ Notice arrives with accounts
“Supplier X is due an
adjustment of ₦X,XXX”

β‘’ Accounts posts adjustment
New ledger entry on
supplier’s account
Both records exist in the audit trail
Original wrong invoice is not hidden or deleted β€” it’s still there.
A new adjustment entry, visible and explained, balances the account.
Auditors see exactly what happened and when.
This is how cost corrections should work in a clean-books system.

What the accountant does next β€” see Β§3.7 below.

Important. You can’t “undo” a posted correction. If your
correction was itself wrong, raise a new correction with the
reverse delta. Every step is visible in history.


3.5 Reviewing recent price changes

Scenario. “I need to audit every retail price change made
this quarter and give the auditor a list.”

Steps.

  1. Open Inventory β†’ Price Change History.
  2. The window shows two tabs: Selling Price Changes (default)
    and Default Cost Changes. You start on Selling.
  3. Set the From and To dates to your quarter start and
    end.
  4. Optionally filter by Field (e.g., only retail prices) and
    by Bulk ref (if you remember a specific bulk action’s
    reference code).
  5. Click Apply filters. The table shows every change that
    matches β€” one row per change.

Each row has:

  • When it happened
  • Which item
  • Which price field
  • Old value β†’ New value β†’ Ξ” (the change)
  • Who did it
  • Their reason
  • The bulk reference (if it was part of a bulk action)

Switch to the Default Cost Changes tab to see the cost-side
changes in the same shape.

You can click column headers to sort (by time, by item name, by
delta, etc.).

Want to see every row from one bulk action? Put its reference
code in the Bulk ref box. You’ll see exactly the items that
were touched by that action.


3.6 Reversing a price change

Scenario. “I bumped all retail prices 5% this morning but the
retail team says that’s too much β€” put them back.”

Steps.

  1. Open Inventory β†’ Price Change History.
  2. Filter to find the rows you need to reverse β€” typically by
    today’s date and the bulk reference from the confirmation
    toast.
  3. Right-click a row you want to revert.
  4. A menu appears: Revert this change / View details….
    Click Revert this change.
  5. A dialog shows what the revert will do:
    “Will become: ₦1,500.00 (from ₦1,575.00). A new history row
    is written β€” the original is not deleted.”
    Click Yes.
  6. Type a reason for the revert: “Retail team walked back 5%
    bump after customer feedback.”
  7. Done. The item’s price is back to the old value, and the
    history shows both the original change and the revert as
    two separate rows.

Tips.

  • If you need to revert every row from a bulk action, you’ll have
    to revert them one at a time. (A bulk-revert button is on the
    roadmap.)
  • You can revert a revert. Every step is visible.
  • You can’t revert the very first time a price was ever set
    (there’s no “before” value to go back to). The menu hides the
    Revert option in that case.

About reverting default-cost changes

Default cost doesn’t have a Revert action in the history
panel. That’s deliberate β€” to undo a default-cost change, just
re-open Cost Price Management and set it back to the old
value. It’s a forward-looking number with no ledger impact; no
special “revert” mechanism is needed.


3.7 Accounts β€” processing a supplier adjustment notice

Scenario. “Inventory raised a cost correction on a posted
invoice. My inbox now shows a notice. What do I do?”

Steps.

  1. Open Accounts β†’ Supplier Adjustment Inbox.
  2. The top of the window shows three summary cards:
    • PENDING NOTICES β€” how many you need to action
    • PENDING TOTAL VALUE β€” how much money is tied up
    • PROCESSED TOTAL β€” how much you’ve already closed
  3. The table defaults to showing pending notices. Each row tells
    you:

    • The supplier
    • The correction document reference
    • How many batches were affected
    • The total adjustment (positive means you owe the supplier
      more; negative means they owe you / rebate)
    • When inventory emitted the notice
  4. Right-click a notice you want to action. You get three
    options:

    • Process β€” record ledger ref
    • Reject β€” with reason
    • View details…

To process a notice (the normal case):

  1. Click Process β€” record ledger ref.
  2. First, post the adjustment entry on your accounts ledger
    (the existing journal / adjustment mechanism you use today β€”
    this part is outside StoreHarmony’s pricing panel, it’s your
    normal bookkeeping). Note the reference number your ledger
    assigned.
  3. Back in the inbox, paste that ledger reference into the
    prompt.
  4. Optionally type remarks (context for future auditors).
  5. The notice’s status flips to PROCESSED and your ledger
    reference is recorded. The loop is closed.

To reject a notice (if you dispute the correction):

  1. Click Reject β€” with reason.
  2. Type a reason β€” e.g., “Supplier confirmed original invoice
    was correct, escalating to inventory.”
  3. Confirm. The notice is marked REJECTED β€” no ledger entry
    gets posted on your side.

Important:

  • You can only change a notice’s status once. No “un-process”
    or “un-reject”. If you processed with the wrong ledger ref, ask
    inventory to raise a new correction with the inverse delta.
  • The Status filter in the inbox lets you switch to
    PROCESSED or REJECTED to see history.
  • Use the From / To date pickers to scope the view to the
    current week, month, etc.

4. How the audit trail works

Three principles worth knowing.

Append-only

Nothing ever gets edited in place. Every change is a new row in
the history. A revert is a new row. A correction is a new row.
A notice’s process step updates the notice, yes, but the notice
itself exists forever and can’t be deleted.

This means you can always answer “what did things look like on
April 20?” by reading the history up to that date.

Signed and timestamped

Every row carries:

  • Who β€” the user’s staff ID / name
  • When β€” timestamp down to the second
  • What β€” old value β†’ new value
  • Why β€” the reason you typed (reasons are required on most
    actions)

There’s no anonymous change possible through these tools.

Cost corrections never rewrite history

When you correct an already-posted supplier invoice, the original
invoice is left alone. The correction is a separate document.
The adjustment that makes the supplier’s balance right is a
separate ledger entry on the accounts side. Anyone reading the
books three years from now can see:

  1. The original invoice was for ₦X (even if keyed wrong).
  2. A correction document was raised for ₦Y.
  3. An adjustment ledger entry balanced the supplier’s account by
    ₦(Y βˆ’ X).

Nothing is hidden. That’s the point.


5. Common questions

Q: I can’t see “Cost Price Management” in the menu.
A: You don’t have the “change default cost” or “post cost
correction” permission. Ask your admin to grant one. You’ll need
to log out and back in for the new permission to take effect.

Q: I can see the menu, but when I click Apply I get an error
about permission.

A: You probably have one of the two cost permissions but not the
other. For example, you can change default cost but not post a
correction. Pick the tab that matches your access. Or ask your
admin to grant the missing permission.

Q: What’s the difference between “default cost” and the cost
that’s actually on my supplier invoice?

A: The cost on each supplier invoice is tied to that specific
delivery β€” it’s what you actually paid. It lives on the batch
record forever and drives your cost-of-goods-sold calculations.
The default cost is a separate, forward-looking number used
for quotes and budgeting. Changing default cost does not
change any historic invoice or batch.

Q: I need to change the price for just one item. Do I have
to pick it from a big list?

A: For now, yes β€” use Pick Items… and select the one item.
(A right-click shortcut from the product list is on the roadmap.)

Q: I made a typo in the reason field. Can I fix it?
A: No β€” reasons are permanent once written. If it really matters,
revert the change and apply the change again with the correct
reason. Both versions will be in the history.

Q: I corrected a cost on a posted invoice yesterday. Today
I realized I used the wrong new number. What now?

A: Raise a new correction with the reverse delta. The original
correction stays, the new one cancels it. Accounts gets another
notice to process.

Q: I’m an accountant and I processed a notice with the wrong
ledger reference. Can I change it?

A: Not directly β€” once PROCESSED, a notice is frozen. But you
can:

  1. Post a reversing entry on your ledger side (your normal
    accounting process).
  2. Ask inventory to raise a new correction document for the
    same batch(es). When it arrives in your inbox as a new
    notice, process it with the correct ledger ref.

This keeps the books clean and the audit trail honest.

Q: When do I use the legacy Bulk Pricing form instead of these
new panels?

A: Only if you need the discount / markup / rounding features
that the legacy form has and the new panels don’t. Those are on
the roadmap for the new panels; until then, the old form is
still available. Any plain price change should go through the
new panels so it gets audited properly.

Q: The system says “Operation returned false”. What happened?
A: Something went wrong during save that isn’t a permission
problem. Common causes: database lock contention, a missing item
that was deleted after you picked it. Try again; if it persists,
contact support with the timestamp β€” the technical log will have
details.


6. Glossary

Audit trail β€” The timestamped, signed history of every price
change. Can’t be edited; can be reverted.

Batch β€” A specific delivery of a product from a supplier.
Each batch has its own arrival date, cost, and expiry. When you
sell a unit, it comes out of a specific batch.

Bulk reference β€” A short code (like BULK-1713900000000)
that ties together every row of history created in one bulk
action. Use it to see every item affected by one apply click.

Default cost β€” A forward-looking cost baseline on each item,
used for quotes, budgets, and markup math. Changing it doesn’t
touch any historic record or invoice.

Draft invoice / unposted β€” A supplier invoice that’s been
received into inventory but not yet finalized with accounts.
Cost corrections on drafts update the records directly.

Forward-default vs historical cost β€” Default cost is what
you expect to pay next time; historical cost (on each batch) is
what you actually paid last time. The two are different numbers
for different jobs.

Ledger reference β€” The ID accounts gives to an adjustment
entry they post on their side. Used to link a supplier
adjustment notice to the ledger entry that closed it out.

Notice β€” A message to accounts that a posted supplier
invoice had its cost corrected and the supplier’s balance needs
an adjustment. Accounts process it by posting an adjustment
entry on their ledger.

Posted invoice β€” A supplier invoice that’s been finalized
and written to the accounts ledger. These are immutable β€” cost
corrections on posted invoices generate notices for accounts
instead of rewriting the invoice.

Revert β€” Undo a change. Writes a new history row restoring
the prior value; doesn’t delete the original change row.

Selling price field β€” One of the seven prices StoreHarmony
stores per item: retail, bulk unit, carton, promo, loyalty,
loyalty bulk, internet. Each can be changed independently.

Strategy β€” How a bulk price change is applied:

  • Set fixed amount β€” every item gets the same new value
  • Percentage change β€” multiply current value by a %
  • Fixed offset β€” add / subtract the same kobo amount
  • Cost-plus margin β€” new price = default cost Γ— (1 + margin%)

This guide reflects StoreHarmony pricing as of April 2026. For
the technical / developer version of the same material (including
operation names, database fields, and code samples), see
user_work_flow.md in the same folder.