Recognize Revenue & COS Upon Completion Instead of Shipment

We have a company that often completes work weeks before our product is shipped out, and management wants to see this completed work recognized financially even if it’s still sitting in the warehouse. Anyone else have this problem? How are you achieving this?

Some background info…


  1. Invoice, recognize revenue (relieve Deferred Revenue, if applicable), and relieve WIP / recognize COS when our job is completed internally which if often weeks before actual shipment
  2. Remove job from Sales Backlog Report

What we’ve been doing: creating “fake” shipments and allowing the system to flow exactly how it’s intended (i.e. shipment creates invoice, moves deferred revenue, relieves WIP, and removes job off of backlog).

Why this solution isn’t great:

  1. Fake shipments with no actual tracking in the system… We are building pack slips offline in Excel :disappointed:
  2. If our customer changes the shipping address (or if anything else changes, like needing to swap parts, which happens a lot), we can’t update it the original SO line and job because it’s shipped and closed at that point
  3. Reporting purposes - shipped date is not accurate, though I could fix this with a UD field (i.e. have the project manager manually enter actual ship dates)

Another way would be to create Advanced Billing Invoices when the revenue is to be recognized. Then when you go to actually bill the customer, do a cancellation invoice - which will reverse the GL trans from the original Adv Invoice. And finally, do a normal Cust Shipment invoice.

That would solve the revenue piece, but they also want to see WIP cleared and COS captured at the time of product completion. Can’t figure out how to do that without shipping.

To relieve WIP and close Job you can move the stock to inventory. This will close the job and WIP. Regarding Revenue Recognition I doubt what you want is even acceptable in Accounting Standards.

Looking at your last three points again…

  1. Add a ShipTo for the customer, with the name “HOLD FOR RELEASE”
  2. Set the ShipTo on the lines/releases that need to be recognized
  3. Finish job as normal
  4. Customer shipment as normal. The ShipTo indicates that it should be held. and not actually shipped.
  5. When ready to actually ship, “unship” the packer from #4
  6. Update the ShipTo on the SO lines/Release
  7. Either make a new packer or add the shipment to the one made in step #4
  8. Invoice.

In #7, if you re-use the original packer (without adding more items to it, or cost changes of the job), it will be equal to the “unshipping” that happened in step 5, with the tran date used in step 4.

Then make a BAQ Report of all Packers with ShipTo of “HOLD FOR RELEASE”. That would show these shipments. And the would aautomatically come off this report when they’re re-shipped with the proper ShipTo

Thank you so much, Calvin! I’m going to test this out, but I think that’ll work! We can just do Advanced Billing to get the revenue, and then your steps above should accomplish the rest. Just have to make sure AR department doesn’t accidentally process the shipment invoice, because that would lock up the Customer Shipment Entry. We would want to reuse the original pack slip since it’ll have all of the line details attached.

A BPM to stop Shipment invoices with ShipTo containing “HOLD FOR RELEASE” would stop AR from invoicing the temp shipment

1 Like

Ah, you are awesome! Thank you again!