Drop Shipment a valid PO is required

we have a purchase order marked drop ship it is linked to the order and all. When we put the po in drop shipment entry we get the error a valid po is required. Anyone have any ideas why this is happening? tried to receive it as normal and it errors saying po is drop ship.

Hi Matt,

Do you have multiple plants? If so is it possible you are processing using drop shipment in different plant than PO is for? Also, check PO tracker, are you certain that you don’t already have receipt done?


I checked the plant and it is the same. There are no receipts in po tracker. I’m perplexed

Does the Sales Order require a PO based on the Customer settings?

No the line and release are marked that way on the order. part of the order is make direct part buy direct/drop ship

What is the source Plant on the Line’s Release of the Order?

Just to be clear. The Sales Order Header has a valid PO number filled in. Just suggesting the message may be coming from Order Entry and not Purchasing modules.

Hi Matt,

We have found drop ship fussy (impossible?) in regards to sending to multiple customers (multiple releases). Any chance you have multiple releases?


nope. one release one line on the po

yes on the sales order tracker the po is in the box on the release.

the source plant is our main and only current plant

The PO on the Order Release is your companies Epicor PO number to link.

The PO on the Sales Order header is your Customer’s PO to you. Is there a PO number on the Sales Order Header. It’s a different question.

yes there is a customer PO

Are there details on the error that you can copy/paste here?


Business Layer Exception

A valid PO is required.

Exception caught in: Epicor.ServiceModel

Error Detail

Description: A valid PO is required.
Program: Erp.Services.BO.DropShip.dll
Method: GetPOInfo
Line Number: 2848
Column Number: 21
Table: DropShipHead
Server Trace Stack: at Erp.Services.BO.DropShipSvc.GetPOInfo(DropShipTableset& ds, Int32 poNum, Int32& vendorNum, String& purPoint) in C:_Releases\ERP\UD10.1.600.15\Source\Server\Services\BO\DropShip\DropShip.cs:line 2848
at Erp.Services.BO.DropShipSvcFacade.GetPOInfo(DropShipTableset& ds, Int32 poNum, Int32& vendorNum, String& purPoint) in C:_Releases\ERP\UD10.1.600.15\Source\Server\Services\BO\DropShip\DropShipSvcFacade.cs:line 346
at SyncInvokeGetPOInfo(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at Epicor.Hosting.OperationBoundInvoker.InnerInvoke(Object instance, Func2 func) in C:\_Releases\ICE\3.1.600.15\Source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 59 at Epicor.Hosting.OperationBoundInvoker.Invoke(Object instance, Func2 func) in C:_Releases\ICE\3.1.600.15\Source\Framework\Epicor.System\Hosting\OperationBoundInvoker.cs:line 28
at Epicor.Hosting.Wcf.EpiOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) in C:_Releases\ICE\3.1.600.15\Source\Framework\Epicor.System\Hosting\Wcf\EpiOperationInvoker.cs:line 23
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext)
at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext)
at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result)
at System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceiveAsyncResult.OnReceive(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.SynchronizedMessageSource.ReceiveAsyncResult.OnReceiveComplete(Object state)
at System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(Object state)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
at System.Net.Security.NegotiateStream.ProcessFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.NegotiateStream.ReadCallback(AsyncProtocolRequest asyncRequest)
at System.Net.AsyncProtocolRequest.CompleteRequest(Int32 result)
at System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(Int32 bytes)
at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.Channels.ConnectionStream.IOAsyncResult.OnAsyncIOComplete(Object state)
at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e)
at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSuccess(SocketError socketError, Int32 bytesTransferred, SocketFlags flags)
at System.Net.Sockets.SocketAsyncEventArgs.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

Client Stack Trace

at Epicor.ServiceModel.Channels.ImplBase`1.ShouldRethrowNonRetryableException(Exception ex, DataSet[] dataSets)
at Erp.Proxy.BO.DropShipImpl.GetPOInfo(DropShipDataSet ds, Int32 poNum, Int32& vendorNum, String& purPoint)
at Erp.Adapters.DropShipAdapter.MultiKeyGetPOInfo(Int32 poNum, Int32& vendorNum, String& purPoint)

When using the Search function, does the PO show up?


Is the PO approved?


This error appears if the drop shipment already has lines and the header vendor or purchase point are different from the PO you are entering.