EDI 856 ASN automation, from purchase order to ship notice.

Turn every inbound 850 into an order, wait for pick and pack to finish, and send the retailer a real X12 856 built from the shipment.

The problem

The ASN is due before the truck arrives, and someone is still typing it.

Retailers and marketplaces expect an 856 advance ship notice for every shipment, matched to the purchase order and sent before the goods arrive. A missing, late, or malformed ASN is where compliance chargebacks begin.

In many operations the 856 is still keyed into a retailer portal, exported from a spreadsheet, or produced by a translator nobody wants to touch. The purchase order lives in one system, pick and pack in another, and the ship notice depends on someone joining them by hand.

How it works in Flows

One flow from the 850 to the 856 ASN.

Flows reads and writes real X12 004010, so the purchase order, the shipment, and the ship notice are the same records your other flows act on. There is no EDI map to build for these documents.

  1. exchange_document
    An 850 starts the run

    The purchase order arrives over the partner's AS2, SFTP, or FTPS connection. Flows parses it from the ISA envelope, turns it into an Orderly order, and sends the 997, plus the 855 when the partner expects it. The trigger listens for 850s from that partner only.

  2. orderly.order.get
    Load the order

    Read the order the 850 created, with its lines, quantities, and ship-to, so every later step works from the same record.

  3. http.request
    Release it for pick and pack

    Send the order to your WMS over HTTPS with Basic auth or OAuth 2.0 client credentials, and include {{ run.id }} so the WMS knows which run to answer.

  4. wait.event
    Wait for the packed event

    The run parks on an event you name, such as order.packed. Nothing polls. When the WMS posts the event with cartons, weights, and tracking, the run resumes with that payload as its input.

  5. orderly.shipment.create
    Record the shipment

    Create the shipment in Orderly from the packed payload, so the ship notice is built from a real shipment record rather than a spreadsheet row.

  6. exchange.send
    Send the 856

    Generate the X12 856 advance ship notice from the shipment and deliver it over the partner's connection, with control numbers allocated per partner.

When something goes wrong

ASN EDI failures you can see and fix.

An 850 that fails validation lands in the exceptions queue with its exact errors and the raw file, ready to retry, ignore with a note, or escalate. Malformed money or quantity elements become validation errors, never silent zeros.

If your WMS times out, give the HTTP request step a retry policy with backoff, and a recovery lane of up to 20 steps that alerts the team when it fails for good. Every run either completes, waits, or opens an exception you can retry from the failed step. The reliability page covers alerting and the watchdog, and the designer page shows how recovery lanes are drawn.

Where it fits

Already creating shipments elsewhere?

If shipments are created by your label purchase flow or a connected WMS, a second, shorter flow can start on shipment_created, load the shipment, and send the 856. The EDI integration page lists every supported transaction set and transport, and Flows pricing shows the plans that include trading partners. Read the trading partner exchange guide ↗

Questions

EDI 856 automation FAQ.

Can a retried step send the same 856 twice?

No. The exchange.send step records the document it created. If the step is retried after a timeout, a notice that already went out is treated as delivered instead of being sent again, so the retailer never receives a duplicate ASN.

What if pick and pack takes days?

A wait can last up to 30 days with a timeout you choose, and the run holds its place the whole time without polling. If the packed event never arrives, the run fails into an exception with the reason attached, and your alert channels hear about it.

How do we know the retailer accepted the ASN?

Sent documents stay in a Sent state until the partner's 997 arrives, which marks each one acknowledged or rejected. A refused ship notice shows as rejected, not assumed delivered.

Which Flows plan do we need for 856 automation?

Flows Pro or Flows Dedicated. X12 documents and trading partner connections over AS2, SFTP, and FTPS are part of those plans, with no separate EDI module. Flows Launch runs your own flows and endpoints without trading partner connections.

Meet the routing guide

Send the retailer an 856 it accepts, every time.

Tell us who the partner is, which transport they use, and how your WMS reports a packed order. We will show you the flow end to end.

Talk to us about EDI 856 ASN automation

We use these details to reply to you. Privacy notice