Costco Edi 810

By Alexander Georges|Updated July 3, 2026
TL;DR: This guide shows exactly how Costco EDI 810 invoices are structured, how to parse and convert them to CSV, common failure modes, and practical fixes you can apply immediately. Use the examples and step-by-step mapping below to validate, transform, and prevent the most frequent Costco 810 errors; use PlainEDI to automate validation and CSV conversion.

What This Is

This guide is a comprehensive technical reference for working with Costco EDI 810 (invoice) transactions. It explains the X12 structure used by Costco suppliers, the key segments and elements you must parse, how to convert an 810 into a flat CSV for ERP or accounting import, and common compliance pitfalls specific to Costco invoicing workflows.

You will find real EDI snippets, line-by-line explanations, CSV mapping examples, conversion steps, troubleshooting for frequent error codes, and practical case studies. I also explain why each error occurs so you can prevent them upstream, not just patch the symptom. Where Costco policy or timing matters, note the effective date referenced (2026-05-31) and verify with the retailer portal before making process changes.

Who This Is For

This guide targets EDI developers, integration specialists, vendor finance teams, and IT staff responsible for receiving, validating, or converting Costco EDI 810 invoices into accounting or ERP systems.

Key Segments Explained

Below are the segments you will see in Costco 810s, with the role each plays in the invoice and what to validate.

  • ISA / GS / ST — Interchange and functional group envelopes. Validate delimiters, control numbers (ISA13/ISA14, GS06/GS08), date/time formats, and that ISA/GS/ST control numbers are consistent across IEA/GE/SE.
  • BIG — Beginning Segment for Invoice — BIG01 is the invoice date, BIG02 is the invoice number. Costco requires accurate invoice date and unique invoice numbers for reconciliation. If BIG is missing or misformatted the invoice will be rejected by downstream systems.
  • N1 / N3 / N4 — Party Identification and Address — N1 identifies Bill-to and Ship-to parties. Use qualifiers (e.g., N1*BT for Bill-to). N3/N4 supply street/city/state/ZIP. Map the Bill-to N1 properly to your accounting customer code.
  • IT1 — Baseline Item Data (line items) — IT1 contains line count, quantity, unit price and product IDs (IT1:CTP or other composite). For Costco, ensure correct Unit of Measure (UOM) and product identifier qualifiers (e.g., UP = UPC, VN = Vendor Part Number).
  • PID — Product/Item Description — Optional text description. Use for human-readable verification or populate item description in the CSV when needed.
  • TDS — Total Monetary Value Summary — TDS carries the invoice total in cents (no decimal). Validate that the sum of line totals + charges - allowances + tax = TDS. Mismatched totals are one of the most frequent rejection causes.
  • SAC — Service, Promotion, Allowance, or Charge Information — Used for discounts, promotions, freight charges or special handling. Accurately map SAC charges with the correct code and sign (+/-) to match accounting expectations.
  • SE / GE / IEA — Transaction, group, and interchange trailers. Ensure SE01 matches the number of segments in the transaction, and that trailer control numbers match their headers.

Example EDI Snippet

ISA*00*          *00*          *ZZ*SENDERID       *ZZ*COSTCOID       *230531*1253*U*00401*000000905*0*P*>
GS*IN*SENDERID*COSTCOID*20230531*1253*905*X*004010
ST*810*0001
BIG*20230531*INV123456**PO98765
N1*BT*Costco Wholesale*92*123456789
N3*123 Costco Way
N4*Issaquah*WA*98027
N1*ST*Costco Warehouse*92*987654321
IT1**10*EA*25.00**VN*ABC123*UP*000123456789
PID*F****Widget model A
SAC*C*D240***50.00******
TDS*250000
SE*11*0001
GE*1*905
IEA*1*000000905

Line-by-line explanation:

  • ISA*...* — Interchange header; field separators are asterisk (*) and segment terminator is greater-than (>). Verify ISA08 and ISA06 sender/receiver IDs, ISA13/ISA14 control numbers.
  • GS*IN*...* — Functional group header for invoices. GS06 is the group control number (905) which must match GE02.
  • ST*810*0001 — Transaction set header; 0001 is ST control number used in SE02.
  • BIG*20230531*INV123456**PO98765 — BIG01 = invoice date (YYYYMMDD), BIG02 = invoice number. BIG04 is optional PO number (PO98765 here).
  • N1*BT*Costco Wholesale*92*123456789 — Bill-to qualifier BT; 92 indicates assigned by buyer; 123456789 is Costco-assigned vendor code.
  • IT1**10*EA*25.00**VN*ABC123*UP*000123456789 — IT1: quantity 10, UOM EA (each), unit price 25.00; product qualifiers VN and UP provide vendor part number and UPC.
  • SAC*C*D240***50.00****** — SAC indicates a freight or charge. Code D240 is an example; you must map the code to a charge type in your accounting system.
  • TDS*250000 — Total invoice amount 250000 cents = $2,500.00. Convert TDS by dividing by 100 to match decimal currency.

CSV Output Example

Below is a canonical CSV mapping example showing how fields in the EDI 810 map to columns you would import to accounting or ERP.

InvoiceNumber InvoiceDate VendorID BillToName ShipToName LineNumber ProductID_Qualifier ProductID Qty UOM UnitPrice LineTotal Allowance/Charge InvoiceTotal
INV123456 2023-05-31 123456789 Costco Wholesale Costco Warehouse 1 UP 000123456789 10 EA 25.00 250.00 Freight:50.00 2500.00

Step-by-Step Conversion Process

  1. Detect and validate delimiters and envelope headers
    1. Read the ISA segment and capture the element separator (usually *) and segment terminator (usually ~ or >).
    2. Validate ISA control numbers and ensure IEA trailer count matches ISA. If mismatch, fail early and log.
    3. Check GS/GE group control numbers for consistency with GE02.
  2. Parse transaction sets
    1. Split by segment terminator to get segments and then by element separator to get elements.
    2. Identify ST/SE blocks and parse one 810 at a time. Keep ST02 for SE02 matching.
  3. Extract header-level data
    1. From BIG extract BIG01 (invoice date) and BIG02 (invoice number). Convert date to ISO format (YYYY-MM-DD).
    2. From N1 group with qualifier BT capture Bill-to identifier (element N103/N104). Map to VendorID.
    3. Record REF segments tied to invoice references (if REF*MK or others appear).
  4. Process line items (IT1 loops)
    1. For each IT1, extract quantity (IT102), UOM (IT103), unit price (IT104), and product identifiers (following element pairs like IT1:...*VN*... or *UP*...).
    2. Calculate line totals = Qty * UnitPrice and format decimal with two places.
    3. Capture PID descriptions attached to line for human readability.
  5. Handle allowances, charges and tax (SAC, TXI)
    1. Parse SAC segments and map codes to either positive charges or negative allowances. Convert amounts to decimal currency as specified in the EDI (SAC05 typically).
    2. Parse tax segments (TXI) or use SAC with tax codes if present. Sum tax amounts separately.
  6. Validate totals against TDS
    1. Compute expected total = sum(line totals) + sum(charges) - sum(allowances) + tax.
    2. Compare computed total with TDS/100. If mismatch, produce a validation error and detailed discrepancy report (per-line and per-charge).
  7. Generate CSV and perform post-validation
    1. Map header and each line to CSV rows. Include header-only rows (vendor/invoice-level) and line items as separate rows depending on ERP requirements.
    2. Run final validation: numeric formats, mandatory fields (InvoiceNumber, InvoiceDate, VendorID), and N1 qualifiers.
    3. Optionally run automated A/P rule checks (duplicate invoice check, PO match) before sending to accounting.

Common Errors and Fixes

  • Error: ISA/IEA control number mismatch — Cause: ISA13/ISA14 not matching IEA02 or IEA segment count. Fix: Recompute and align control numbers when generating interchange envelopes. Use PlainEDI validation to detect envelope mismatches before transmission.
  • Error: Missing BIG02 (Invoice number) — Cause: Upstream system failed to populate invoice reference. Fix: Reject and request corrected 810 with BIG02 populated. In converter, flag as exception and prevent auto-posting.
  • Error: TDS_MISMATCH (Computed total does not equal TDS) — Cause: Rounding differences, omitted charge/allowance, or incorrect SAC sign. Fix: Recompute totals with two-decimal rounding rules used by Costco; ensure SAC values are applied to invoice level and included in total. Use PlainEDI to check arithmetic sums automatically.
  • Error: N1 qualifier invalid or unexpected — Cause: N1 qualifier used (e.g., N1*BT vs incorrect qualifier) or missing required N1 segments. Fix: Validate N1 qualifiers against Costco requirements; if missing, request corrected EDI or map alternate identifiers by lookup table.
  • Error: SE segment count mismatch — Cause: SE01 (segment count) value doesn't equal the actual number of segments between ST and SE. Fix: Recount segments and correct SE01; validate with parser preventing acceptance of transactions with incorrect SE counts.
  • Error: Duplicate invoice detection — Cause: Vendor re-sent same BIG02; system allowed duplicate posts. Fix: Implement duplicate invoice detection based on VendorID+InvoiceNumber+InvoiceDate check before posting.

Practical Case Studies

Case Study 1 — Simple single-line invoice

A small vendor receives an 810 with one IT1 line and a TDS that equals the line total. The most common issues are: (1) TDS in cents vs dollars, (2) missing UNIT OF MEASURE. Solution: Convert TDS by dividing by 100 when mapping to CSV, enforce UOM validation mapping (EA > Each), and run a duplicate invoice check. Use PlainEDI to perform these checks automatically and generate a CSV per the table above.

Case Study 2 — Multiple allowances and freight

A distributor sends an 810 with several SAC segments: a promotion allowance, freight charge, and a per-invoice handling fee. Failure occurs when SAC signs are misinterpreted (allowance vs charge) causing TDS mismatch. Solution: Build a SAC code table in your parser that specifies whether a code is an allowance (negative) or a charge (positive). During conversion, explicitly tag each SAC value and sum them. Use test invoices to assert the computed total matches TDS before importing to accounting.

Related Resources

FAQ Section

Q: How do I convert TDS to a dollar amount for CSV imports?

TDS is expressed in cents (no decimal). Convert by dividing TDS by 100 and format to two decimal places (e.g., TDS*250000 → 250000 / 100 = 2500.00). Always validate the computed invoice total against the sum of line totals, charges, allowances, and tax before importing.

Q: What do I do when a Costco 810's totals don't match (TDS mismatch)?

First, compute line totals as Qty × UnitPrice with consistent rounding to two decimal places. Then add positive charges and subtract allowances using the SAC code table. Add taxes. Compare that value to TDS/100. If mismatch, produce a detailed discrepancy report showing per-line and per-charge differences and do not auto-post the invoice. Contact the sender for corrected 810 if the difference cannot be reconciled. Use PlainEDI to automate these checks and receive line-level diagnostics.

Q: How should SAC allowance/charge codes be mapped for accounting?

Create a mapping table that maps SAC codes to accounting GL cost categories and signs (charge or allowance). For example, map D240 to Freight (charge) and D230 to Promo Allowance (allowance). Always apply sign rules consistently when computing invoice totals. Document this mapping and validate with test invoices.

Q: Which segments are mandatory for Costco 810 and which often cause rejections?

Mandatory segments include ISA/GS/ST envelopes, BIG (invoice header with date and number), at least one N1*BT (Bill-to), IT1 for each line, TDS for totals, and SE/GE/IEA trailers. Frequent rejections stem from missing BIG02 (invoice number), incorrect TDS sums, missing N1 qualifiers, or incorrect SE/ISA control numbers.

Q: How do I handle multiple product identifiers in IT1 (UPC + Vendor SKU)?

Extract all identifier pairs and include them in CSV columns: e.g., ProductID_Qualifier1=UP, ProductID1=..., ProductID_Qualifier2=VN, ProductID2=.... If your ERP only accepts one ID, use a priority rule (Costco often prefers UPC for retail scans, so prefer UP when present). Keep both in your import staging table when possible for reconciliation.

Q: What penalties will Costco impose for invoice noncompliance?

Retailers, including Costco, enforce penalties for EDI compliance failures (e.g., late invoices, mismatched invoices, OTIF violations). Effective policy changes are noted as of 2026-05-31; verify current penalty amounts on the Costco vendor portal. Common penalty types are OTIF charges, ASN accuracy deductions, and chargebacks. Implement robust validation to minimize exposure.

Q: How can I prevent duplicate invoice posting when receiving multiple 810s?

Implement a duplicate detection rule based on VendorID + InvoiceNumber + InvoiceDate and optionally invoice total. If a duplicate is detected, hold for manual review. Automate alerts and keep an audit trail of EDI control numbers (ISA/GS/ST) to trace resends.

Q: Can PlainEDI automate Costco 810 validation and conversion?

PlainEDI validates envelope control numbers, mandatory segments (BIG, N1, IT1, TDS), arithmetic totals, and SAC mapping. It generates CSV per your mapping template and produces detailed error reports for mismatches, reducing manual review time. Use PlainEDI to pre-validate invoices before committing to your ERP.

Final checklist before import

  • ISA/GS/SE control numbers match their trailers.
  • BIG02 (invoice number) present and unique.
  • TDS reconciles to computed total using proper rounding.
  • All IT1 lines have product identifiers and UOM mapping.
  • SAC codes are interpreted using a documented code table.
  • Duplicate invoice detection executed.

Costco updated invoice program references as of 2026-05-31. Verify any penalty specifics or updated EDI requirements on Costco's vendor portal before finalizing compliance rules.

Call to Action

Ready to validate and convert your Costco EDI 810 invoices at scale? Upload your files for automated validation, error reporting, and CSV conversion with PlainEDI.