# Edi Parser

> Parse EDI X12 files (810 Invoice, 850 Purchase Order, 856 ASN). Extract structured data from ISA/GS envelopes, transaction sets, and segments. Use when working with EDI files, Walmart/retail supplier compliance, or extracting PO, invoice, and shipment data from X12 format.

- Skill: `dvcrn/edi-parser` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dvcrn/edi-parser`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/edi-parser/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Finance & Business
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/edi-parser

---


# EDI X12 Parser

Parse and extract structured data from EDI X12 transaction sets.

## Supported Transaction Sets

- **810** -- Invoice
- **850** -- Purchase Order
- **856** -- Advance Ship Notice (ASN)

## Parsing Approach

EDI files use `~` as segment terminator, `*` as element separator, and `>` or `:` as sub-element separator (check ISA-16).

### Envelope Structure

```
ISA*QQ*SenderID*RR*ReceiverID*Date*Time*:*Version*Control#*AckReq*Mode*SubSep~
  GS*FuncCode*SenderCode*ReceiverCode*Date*Time*GroupControl*Standard*Version~
    ST*TransactionSet*Control#~
      ... segments ...
    SE*SegmentCount*Control#~
  GE*TransactionCount*GroupControl~
IEA*GroupCount*InterchangeControl~
```

### Key ISA Fields (1-indexed)
- ISA-05: Sender qualifier (`12`=UCS, `ZZ`=mutually defined, `08`=UCC)
- ISA-06: Sender ID (left-padded to 15 chars)
- ISA-07: Receiver qualifier
- ISA-08: Receiver ID

### 850 Purchase Order
| Segment | Key Fields |
|---------|-----------|
| BEG | BEG-03=PO Number, BEG-05=PO Date |
| DTM | DTM-01=Qualifier (002=Delivery, 010=Requested Ship), DTM-02=Date |
| N1 | N1-01=Entity (ST=Ship-To, BY=Buyer, SF=Ship-From), N1-02=Name |
| PO1 | PO1-02=Qty, PO1-04=Unit Price, PO1-07=UPC/SKU |
| PID | PID-05=Description |

### 810 Invoice
| Segment | Key Fields |
|---------|-----------|
| BIG | BIG-01=Invoice Date, BIG-02=Invoice#, BIG-04=PO# |
| REF | REF-01=Qualifier (IA=Vendor#, BM=BOL#), REF-02=Value |
| N1 | N1-01=Entity (ST=Ship-To, RE=Remit-To) |
| IT1 | IT1-02=Qty, IT1-04=Unit Price, IT1-07=UPC |
| TDS | TDS-01=Total invoice amount (cents, divide by 100) |

### 856 ASN
| Segment | Key Fields |
|---------|-----------|
| BSN | BSN-02=Shipment ID, BSN-03=Date |
| HL | HL-03=Level (S=Shipment, O=Order, P=Pack, I=Item) |
| REF | REF-01=Qualifier (BM=BOL, IA=Vendor#, LO=Load#, AO=Appointment) |
| PRF | PRF-01=PO Number |
| MAN | MAN-02=SSCC-18 barcode |
| LIN | LIN-03=UPC |
| SN1 | SN1-02=Qty Shipped, SN1-03=UOM |

## Walmart-Specific Notes

- Walmart ISA receiver: qualifier `08`, ID `925485US00`
- REF*IA = Walmart vendor number (required on 856)
- REF*LO = Load number (new requirement)
- N1*ST with `UL` qualifier = GLN for ship-to location
- MAN*GM = SSCC-18 (required per pallet on 856)

## Output Format

When parsing, output a clean table:

```
| Field | Value |
|-------|-------|
| Transaction | 856 ASN |
| ISA Sender | 12 / 1234567890 |
| ISA Receiver | 08 / 925485US00 |
| PO# | 0123456789 |
| Ship Date | 2026-02-16 |
| Items | 16 line items |
```

For bulk parsing, output CSV with one row per line item.

