Moving Average Price Jump After Invoice Posting
The moving average price moves after invoice receipt because any price difference between the purchase order or goods receipt value and the invoice value is posted back into stock, not automatically to a price difference account, whenever enough stock quantity still exists to absorb it. If stock coverage is thin or the material has gone negative, the whole variance lands on a small remaining quantity and the per-unit price swings sharply.
Covers why a material valuated at moving average price (V) shows a sudden jump or drop in unit price right after MIRO posting, even though nobody touched the material master directly. Focuses on stock coverage at the moment of invoice posting, account determination for price differences, and the sequence of checks that separates a correct system reaction from a genuine configuration or data problem.
Published 16 Sept 2026· 1,173 words
The business symptom
Finance or plant accounting notices that a material's inventory value looks wrong right after month-end invoice processing, even though nobody changed anything in the material master. A controller reports that the standard cost report or the stock valuation report shows a unit price for a raw material that jumped from, say, 4.20 to 11.80 overnight, with no corresponding physical event. Production planning complains that a component now costs three times what it did last week and the variance is flowing into their work order settlement. Sometimes it goes the other way: the price drops close to zero after a credit memo is posted. Nobody remembers touching MR21 or the material master accounting view, and the finance team assumes the invoice was posted to the wrong material or the wrong GL account.
The configuration behind it
- Normal moving average recalculation with thin stock coverage: when the invoice price differs from the GR value, the difference is posted into stock at the transaction event key for price differences on moving average materials, but only up to the value of stock still on hand; if most of the receipt has already been consumed, the entire variance lands on a small remaining quantity, producing a large per-unit swing that is mathematically correct but looks alarming.
- Stock quantity at zero or negative at the time of invoice posting: the system cannot spread the variance across a positive quantity, so the price calculation behaves unpredictably and can produce extreme or even negative unit prices.
- Invoice matched against the wrong GR line or wrong quantity in a multi-GR purchase order, so the variance calculated against one receipt is actually applied against stock that came from a different receipt at a different price.
- Delivery costs or planned/unplanned freight posted through a separate condition with its own account assignment, inflating or deflating the receipt value independently of the main material price and then reconciling awkwardly at invoice time.
- Split valuation or batch management not fully considered: the invoice is posted at the material level while stock is actually split across valuation types or batches with different values, so the aggregate price moves even though no single batch changed rationally.
- Foreign currency invoices posted with an exchange rate different from the one used at goods receipt, triggering a currency-driven revaluation on top of the price variance itself.
- Account determination configuration routing price differences to the stock account instead of a price difference account for this valuation class or movement type, which forces every variance into the price calculation rather than into P&L.
What to check
- Check the material's current stock quantity and value at the time of the complaint using MMBE or MB5B, and compare against the quantity on hand at the moment the invoice was posted.
- Display the purchase order history in ME23N to confirm which GR line the invoice was matched against and whether quantities and values line up.
- Display the invoice document in MIR4 and its resulting accounting document to see exactly how much value was posted to the stock account versus a price difference account.
- Run the material document list (MB51 or the equivalent list transaction) filtered on the material and date range to see the sequence of GR, goods issue, and invoice postings and the stock balance after each.
- Check the accounting view of the material master (MM03) for price control indicator and current moving average price, and look at the price change history if material ledger is active via CKM3.
- Review account determination in OBYC for the relevant transaction event keys (stock posting versus price difference) tied to the material's valuation class.
How to prove it in the data
Pull the material document list for the material across the period bracketing the invoice, showing quantity and value after each movement, and overlay the accounting document from the invoice showing the split between stock account and price difference account postings. If material ledger is active, CKM3 shows the price change per period broken down by receipt, consumption, and invoice variance, which makes the arithmetic behind the jump visible rather than assumed.
Resolution path
If the calculation is mathematically correct given thin or zero stock coverage, this is not a defect; the fix is process, not system: encourage invoice verification closer to goods receipt, before stock is consumed, or move high-volatility materials to standard price control if moving average is causing recurring cost noise, which requires a material master and costing decision, not a transport. If the invoice was matched to the wrong GR line, the data fix is to reverse and reprocess the invoice against the correct PO line, no configuration change needed. If negative stock at invoice time is the trigger, the fix is a data timing correction: post the missing goods movement first, then reprocess, and separately review whether negative stock should be permitted for this plant or storage location, which is a configuration setting requiring transport. If account determination is routing variances to the stock account when it should go to a price difference account for this valuation class, that is a genuine OBYC configuration fix requiring transport through the usual change path, not a one-off correction. A one-off, provably wrong price can be corrected directly with a manual price change transaction, but only after the underlying cause is understood, otherwise the same swing recurs on the next invoice.
The fix people try first (and why it fails)
The reflex fix is to run a manual price change to force the moving average price back to what people expect it to be. This clears the visible symptom for a day but does nothing about the underlying stock coverage or account determination issue, so the same swing reappears on the next invoice or the next low-stock moment. It also creates its own accounting entry and can mask a genuine matching error that should have been caught and corrected at the source, leaving a paper trail that is harder to reconcile later.
Whose problem this is
This sits at the boundary between MM inventory accounting and finance. MM owns matching accuracy and stock movement sequencing; finance owns account determination configuration and the decision on price control strategy for volatile materials. The handover note should state the material, the stock quantity at invoice time, the exact value split between stock and price difference accounts, and whether the swing is a one-off matching error or a recurring coverage problem needing a costing decision.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-functional-issues/moving-average-price-changing-unexpectedly-after-invoice-receiptERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.