Standard Order to Cash: Sales Order, Delivery, Goods Issue (601) and Billing
The complete standard SD cycle: a customer order (VA01) becomes an outbound delivery (VL01N), picking and goods issue (601) reduce stock and charge cost of goods sold, and the billing document (VF01) turns the delivery into revenue and a receivable.
Educational content. SAP behaviour varies by configuration and release. Spotted something off? Report it.
Digital twin
01Customer orders 50 EA
Sales creates standard order 10000123 for Demo Retail Pvt. Ltd. — 50 EA of FG-2000.
SD
VA01 — Standard Order
- Sold-to
- 200001
- Material
- FG-2000
- Quantity
- 50 EA
- Net value
- ₹1,00,000
Business scenario
Demo Retail Pvt. Ltd. orders 50 EA of FG-2000 (bracket assembly) from Demo Manufacturing. Sales confirms the order, the shipping point picks and loads the goods, goods issue is posted when the truck leaves, and billing invoices the customer.
All companies, numbers and documents are fictional demo data.
Step-by-step flow
- 01
Customer orders 50 EA open in twin
Sales creates standard order 10000123 for Demo Retail Pvt. Ltd. — 50 EA of FG-2000.
It is the commercial agreement and the reference document for everything that follows — delivery, goods issue and billing all point back to it.
- 02
Availability check confirms the date open in twin
200 EA are in stock, so all 50 EA are confirmed for the requested delivery date.
A confirmed schedule line is what makes the order deliverable. Without it, no delivery can be created for that date.
- 03
Shipping creates the outbound delivery open in twin
Outbound delivery 80000456 is created for the order at shipping point 1000 (VL01N).
It separates the commercial agreement (order) from the physical execution (picking, loading, goods issue), so one order can become several deliveries and vice versa.
- 04
Picking and loading open in twin
50 EA are picked from SLoc 0001 and loaded onto the truck at the shipping point.
Picking confirms what will actually ship. Until goods issue, the stock is still yours and still in SAP as unrestricted stock.
- 05
The truck is loaded open in twin
The goods are on the truck and ready to leave. Decide what reduces the stock.
Stock and value leave inventory at goods issue, not at billing. Keeping the two apart is the single most important idea in order to cash.
- 06
Billing does not touch stock open in twin
A billing document posts revenue and a receivable. Inventory is untouched — the stock is still 200 EA.
Stock and revenue are deliberately separate events. The goods issue (601) handles quantity and cost of goods sold; billing handles revenue and the receivable.
- 07
Post goods issue (601) open in twin
FG-2000 at 1000/0001: 200 → 150 EA. Cost of goods sold is charged.
This is the moment the goods stop being your asset. The delivery's goods-issue status is also what makes it due for billing.
- 08
Truck delivers to the customer open in twin
The goods travel to Demo Retail Pvt. Ltd. They are already out of your stock.
In this standard flow nothing is posted while the goods are travelling. Who carries the risk in transit is an Incoterms question, not a stock-posting one.
- 09
Create the billing document (VF01) open in twin
Invoice 90000789 bills 50 EA at ₹2,000 — revenue ₹1,00,000 and a receivable from the customer.
Revenue is recognised here, against the cost of goods sold already posted at goods issue — that pairing is what makes the margin visible in CO-PA and profitability reporting.
- 10
Order to cash complete open in twin
Sales order → delivery → goods issue (601) → invoice. Stock down 50 EA, revenue ₹1,00,000, margin ₹40,000.
That chain (visible in the order's document flow) is how you audit any sale: what was promised, what shipped, what left stock and what was billed.
SAP documents
Stock impact
| Step | Plant / SLoc | Stock type | MvT | Change |
|---|---|---|---|---|
| Post goods issue (601) | 1000 / 0001 | Unrestricted use | 601 | −50 EA |
Accounting impact
Goods issue for a sales order delivery
TypicalPost goods issue (601)
- Dr Cost of goods sold (GBB/VAX)₹60,000
- Cr Inventory — finished goods (BSX)₹60,000
The inventory value of the goods issued is moved from inventory to cost of goods sold. The accounts come from automatic account determination — transaction key GBB with the general modification for sales orders (VAX without account assignment, VAY with one). Your system's actual accounts depend on its configuration.
Customer invoice for the delivered goods
TypicalCreate the billing document (VF01)
- Dr Customer receivable (trade debtor)₹1,00,000
- Cr Revenue — domestic sales (ERL)₹1,00,000
Billing posts the receivable against revenue. The revenue account comes from SD revenue account determination (VKOA), driven by the condition's account key — typically ERL for revenue and ERS for sales deductions. Tax, freight and discount conditions add further lines depending on your pricing and tax configuration; this demo shows the net value only.
Typical conceptual flow. Actual G/L accounts and posting behaviour depend on material valuation, automatic account determination and system configuration.
Movement type
Sells stock to a customer and collects the money: records the agreement, ships the goods, takes them out of inventory at cost, and invoices the customer at the sales price.
Transactions & Fiori apps
- VA01 — Create Sales Order
- VA03 — Display Sales Order (document flow)
- VL01N — Create Outbound Delivery
- VL02N — Change Delivery / Post Goods Issue
- VF01 — Create Billing Document
- VF04 — Process Billing Due List
- VL09 — Reverse Goods Movement
- Create Sales OrdersAvailability depends on release and scope
- Create Outbound Deliveries
- Create Billing Documents
- Sales Order Fulfilment — Resolve IssuesIssue-driven monitoring of blocked orders and deliveries
Differences by SAP version
Customer master is maintained with VD01/XD01; pricing conditions sit in KONV.
The customer master is a business partner (BP transaction). Pricing conditions moved to PRCD_ELEMENTS and document status fields were merged into VBAK/VBAP.
Driven through Fiori apps rather than VA01/VL01N/VF01; the underlying document flow and movement type 601 are unchanged. Configuration is through self-service configuration rather than full IMG access.
Configuration
Sales document type (VOV8)
Configuration dependentOrder type OR drives screens, delivery type, billing type and whether billing is order- or delivery-related.
Item category and schedule line category
Configuration dependentDetermine whether an item is deliverable, billing-relevant and stock-relevant. This is what makes third-party or free-of-charge items behave differently.
Copy control (order → delivery → billing)
Configuration dependentControls what may be copied into the follow-on document and when, including the requirement that goods issue is posted before a delivery-related invoice.
Revenue account determination (VKOA)
Configuration dependentMaps condition account keys (ERL, ERS, MWS) to G/L accounts. Actual accounts are always system specific.
Partial delivery and over-delivery tolerance
Configuration dependentSet on the customer master sales area data and the item category; controls whether shortfalls may split into several deliveries.
Prerequisites
- Customer master (business partner) created for the sales area, with shipping and billing data
- Material extended to the sales area with a sales view and a valuation price
- Pricing condition records so the order can determine a price
- Revenue account determination (VKOA) and cost-of-goods-sold account determination (GBB/VAX) configured
- Shipping point determination for the plant, shipping condition and loading group
Master data
- Customer / business partner
- Sold-to, ship-to, bill-to and payer roles; sales area data drives pricing, shipping, partial deliveries and billing.
- Material master (sales views)
- Sales organization data, delivering plant, loading group and tax classification.
- Material valuation
- Supplies the value posted to cost of goods sold at goods issue — independent of the sales price.
- Pricing condition records
- Determine the net value of the order and the invoice.
Organizational structure
- Company code 1000
- Sales organization 1000, distribution channel 10, division 00
- Delivering plant 1000, storage location 0001
- Shipping point 1000
Tables
| Table | Description |
|---|---|
| VBAK / VBAP | Sales order header / item |
| VBEP | Schedule lines with confirmed quantities and dates |
| LIKP / LIPS | Delivery header / item |
| VBRK / VBRP | Billing document header / item |
| VBFA | Document flow — which document followed which |
| MATDOC | The 601 goods movement (MKPF / MSEG in ECC) |
| ACDOCA | Universal journal lines for both accounting documents (S/4HANA) |
Integration
- FIBilling posts the receivable and revenue; goods issue posts cost of goods sold.
- CORevenue and cost of goods sold flow to profitability analysis, giving the margin per order, customer or product.
- MMThe delivery consumes inventory managed by MM; stock availability drives the availability check.
Common errors
“No delivery can be created for the sales order”
Likely causes: No confirmed quantity on the schedule line; Delivery block on the order or the customer; Shipping point could not be determined; Requested delivery date in the past
Where to look: Sales order schedule lines · Customer master shipping data · Shipping point determination configuration
“Goods issue cannot be posted”
Likely causes: Picking quantity not confirmed; Insufficient unrestricted stock at the delivering plant/storage location; Posting period closed; Cost-of-goods-sold account missing in account determination
Where to look: Delivery picking status · Stock overview (MMBE) · Posting period settings · Account determination analysis
“Delivery does not appear in the billing due list”
Likely causes: Goods issue not yet posted; Billing block on the order or the item; Item category not billing relevant; Copy control between delivery and billing type missing
Where to look: Delivery goods-issue status · Order and item billing block · Item category configuration · Copy control for the billing type
“Invoice posts no revenue or hits the wrong account”
Likely causes: Revenue account determination (VKOA) incomplete; Condition has no account key; Account key assigned to the wrong G/L account
Where to look: Billing document account determination analysis · VKOA condition records · Pricing procedure account keys
Troubleshooting
Something went wrong? Work through these checks in order. They are diagnostic questions, not configuration instructions — confirm changes with your system owner.
CHECK 1
Order cannot be saved
- Is the material extended to this sales area?
- Does the customer exist for this sales area?
- Can pricing find a condition record?
- Is the pricing procedure complete for this document type?
CHECK 2
Nothing to deliver
- Is there a confirmed schedule line?
- Is there a delivery block on the order, item or customer?
- Is enough unrestricted stock available at the delivering plant?
CHECK 3
Cannot invoice
- Has goods issue been posted?
- Is there a billing block?
- Is the item category billing relevant?
- Is copy control maintained from the delivery type to the billing type?
CHECK 4
Wrong accounts posted
- Run the account determination analysis in the billing document
- Check VKOA condition records for the account keys used
- Check GBB/VAX for the cost-of-goods-sold account
Interview questions
At which point does stock actually leave the company in a standard sales process, and what else happens at that moment?
At goods issue on the outbound delivery, posted with movement type 601. It reduces unrestricted stock at the delivering plant and storage location, posts the inventory value to cost of goods sold, creates a material document and an accounting document, and sets the delivery's goods-issue status so it becomes due for billing. Neither the sales order nor the billing document moves stock.
Why is the value posted at goods issue different from the value on the invoice?
Goods issue posts the material's inventory value (standard price or moving average) to cost of goods sold. The invoice posts the sales price determined by pricing to revenue. The difference is the gross margin — which is exactly why both postings exist separately.
What is the difference between order-related and delivery-related billing?
Delivery-related billing invoices what was actually shipped, so the billing document copies from the delivery and requires goods issue to be posted — the normal case for physical goods. Order-related billing invoices from the sales order without a delivery, used for services, credit and debit memo requests, and some third-party configurations. The item category controls which applies.
A customer orders 100 EA but only 60 are available. What does SAP do?
The availability check confirms what it can. Depending on the customer master's partial-delivery settings and the item category, it either confirms 60 now with the remaining 40 on a later schedule line, confirms the full 100 for a later date when everything is available, or refuses to split at all if the customer requires complete delivery.
How would you reverse a goods issue that was posted by mistake?
Use VL09 to reverse the goods movement for the delivery, which posts movement type 602 and puts the stock back. If the delivery has already been invoiced, the billing document must be cancelled first (VF11), because the document flow has to be unwound in reverse order.
Quiz
References
- SAP SE — SAP Help Portal: Sales and Distribution (SD) (source)
- SAP SE — SAP Help Portal: Sales Order Processing (source)
- SAP SE — SAP Help Portal: Billing (source)
- SAP SE — SAP Help Portal: Revenue Account Determination (source)
Explanations are original. They summarize standard behaviour; always validate against your system's release and configuration.
Version history
| Version | Change |
|---|---|
| 1.0.0 | Initial version. |