How-toSAP ECC / S/4HANAMM Purchasing / Pricing / Invoice Verification

Freight Cost in SAP MM: Planned and Unplanned Delivery Costs

Question
freight cost in sap mm

Also searched as

  • sap mm planned delivery costs
  • inbound freight condition type FRB1 purchase order
  • unplanned delivery costs MIRO

Short answer

In SAP MM, inbound freight is handled as delivery costs: planned delivery costs are conditions on the purchase order item (typically FRB1, FRC1, FRA1) that accrue at goods receipt, while unplanned delivery costs are entered in the vendor invoice (MIRO) when the freight was not on the PO. Where the cost lands, stock or expense, depends on the price control, valuation and the account keys behind the freight conditions.

Applies to: SAP ECC 6.0 and S/4HANA on-premise, standard MM-PUR and MM-IV; condition and account names vary with your calculation schema

How to account for inbound freight

  1. 1Decide whether freight is invoiced by the material vendor (on the same invoice) or by a separate freight forwarder. This decides whether you use a condition on the PO or a separate PO/service.
  2. 2In the PO (ME21N), open the item, go to the Conditions tab and add a freight condition type such as FRB1 (absolute), FRC1 (per quantity) or FRA1 (percentage) with the planned amount.
  3. 3For a separate forwarder, enter the forwarder in the vendor field of the freight condition, so the freight is invoiced by that vendor against the same PO.
  4. 4Post the goods receipt with MIGO. For moving average price (V), planned delivery costs increase the stock value; for standard price (S), they go to a price difference account.
  5. 5In MIRO, enter the invoice; planned delivery costs appear as selectable items under the PO reference. If the freight was not planned, enter it in the Unplanned delivery costs field on the Basic Data tab and let SAP distribute it.
  6. 6Check the postings in the accounting document (MIRO > Display, or FB03) and review account determination in OBYC for freight transaction keys.

Planned versus unplanned delivery costs

Planned delivery costs are known when the PO is created. They are maintained as conditions with a condition category for delivery costs, so they accrue when goods are received and clear at invoice receipt. This keeps GR/IR balanced because the accrual and the invoice line match.

Unplanned delivery costs are entered at MIRO when the vendor invoice contains a freight line that was not on the PO. SAP can distribute them across the invoiced items by quantity, value or manually. For moving average priced materials, the distributed amount increases stock value only for the quantity still in stock; the rest goes to a consumption or price difference account.

Which one you use is a process choice. Planned costs give better landed-cost visibility at receipt; unplanned costs are more flexible but only show in valuation at invoice time.

Account determination and where freight posts

Freight conditions carry an account key in the calculation schema (commonly FR1, FR2, FR3 for freight provisions, clearing and duties). Those account keys are mapped to G/L accounts in OBYC under the relevant transaction key, by valuation class.

If the account keys are missing from OBYC for a valuation class, goods receipt or invoice posting fails with an account determination error. Build the account assignments for the freight account keys together with the freight condition types, never separately.

For a forwarder invoiced separately, the freight accrual is cleared by the forwarder's own invoice against the same PO item, so GR/IR shows two invoice references on one receipt.

Checking what was posted

The PO history on the item (ME23N, PO History tab) shows goods receipts, delivery cost lines and invoices. The underlying history is in EKBE, with the delivery cost lines distinguished by their history category, which makes it simple to reconcile freight per PO.

A quick landed-cost query helps your buyers compare quoted and actual freight.

SELECT EBELN, EBELP, VGABE, BEWTP, BUDAT, DMBTR, MENGE
FROM EKBE
WHERE EBELN = '4500001234'
ORDER BY EBELP, BUDAT

Common pitfalls

  • !Using planned delivery costs on a standard-price material and expecting stock value to rise; the difference goes to a price difference account instead.
  • !Adding a freight condition type that is not in the calculation schema, so it silently never appears in the PO.
  • !Forgetting the account keys in OBYC for the valuation class, which stops GR or MIRO posting.
  • !Entering unplanned delivery costs twice, once on the PO and once in MIRO, which double counts freight.
  • !Mixing a separate freight vendor with the material vendor on one invoice and then failing to match the right GR/IR lines.

How an ERP-grounded AI assistant handles this

Buyers often ask why a landed cost differs from the PO price. Netray's ERPray can run this kind of lookup in plain language against your own SAP system, read-only by default, showing the query it ran and respecting SAP authorizations, with the model served on your own hardware when the system is on-prem. It explains and finds the data; it does not replace configuration decisions or post documents without human approval.

Frequently asked questions

Which freight condition types does SAP MM provide?

Standard systems ship FRB1 (freight absolute), FRC1 (freight per quantity) and FRA1 (freight percentage), plus related duty and discount types. Your calculation schema decides which are active, so check the schema in customizing rather than assuming they exist in your system.

Do I have to put freight on the PO?

No. You can enter it as unplanned delivery costs at MIRO. Planned costs give earlier landed-cost visibility and clean GR/IR accruals, while unplanned costs are more flexible but only affect valuation at invoice time.

How is freight split across items on an invoice?

For unplanned delivery costs, SAP lets you distribute by quantity, by value or manually. For planned conditions, the amount is assigned at the PO item level, so no distribution is needed.

Why did freight go to a price difference account?

The material uses standard price control. Under standard price, delivery costs are not added to stock value, so the difference is posted to a price difference account determined in OBYC.

Related

How-to

SAP GR/IR clearing account balance: reconcile with MB5S and clear with MR11

The GR/IR clearing account holds the value of goods received but not yet invoiced, and invoices not yet matched with receipts. It should trend to zero per PO item. Reconcile it with MB5S, find the PO items that are stuck, and clear true differences with MR11 or automatic clearing in F.13, after correcting the cause.

How-to

SAP MIRO: invoice blocked for price variance, and how to release it in MRBR

MIRO blocks an invoice for payment when its price or quantity differs from the PO or goods receipt by more than the tolerance limits defined in OMR6. The invoice posts, but it carries a payment block reason (R for price) until someone releases it in MRBR or corrects the underlying data. Release only after confirming which side is wrong.

How-to

SAP open purchase orders report: ME2N, ME2M, ME2L and the underlying tables

Use ME2N for a flexible open PO list, ME2M by material and ME2L by vendor, with the selection parameter Still to be delivered. The open quantity is the scheduled quantity in EKET minus goods received in EKBE, excluding deleted and delivery-completed items. For custom reports, read EKKO, EKPO, EKET and EKBE.

Error fix

SAP M7 021: Deficit of SL Stock Quantity

M7 021 fires during a goods issue, delivery, or confirmation when SAP checks the unrestricted-use (SL) stock for the exact plant, storage location and batch combination and finds less than what you are trying to post out. Fix the entry (batch, storage location, quantity) first; only enable negative stock or downgrade the message to a warning if the business genuinely needs to post ahead of a receipt.

Error fix

SAP IDoc Status 51: Application Document Not Posted

Status 51 tells you the IDoc reached the application layer and failed to post, but the status text itself is not the error - the real cause sits in the status record's long text or the linked application log. Fix the underlying data or configuration, then reprocess the IDoc through BD87 rather than editing the status.

Error fix

SAP Short Dump TIME_OUT: Maximum Runtime Exceeded

A TIME_OUT runtime error means a dialog (or RFC) work process ran longer than the maximum allowed runtime, controlled by profile parameter rdisp/max_wprun_time (600 seconds by default). The fix is almost always to move the long-running work to background processing or tune the underlying program, not to raise the timeout.

AI for ERP

AI for SAP S/4HANA, Running On-Prem or in Your Private Cloud

Run AI on SAP S/4HANA without sending ERP data to a public API. On-prem and private-cloud architecture, CDS views, OData, and honest deployment trade-offs.

Stuck on SAP ECC / S/4HANA?

Talk to engineers who work inside SAP ECC / S/4HANA every week, and who build private AI that answers these questions from your own ERP data.