TEMPLATE / FILE CONTRACTS

A supplier file spec that actually prevents breakage.

Most "file specifications" are a column list in a PDF nobody can enforce. A spec that works is a contract: precise enough that a machine can check every delivery against it, and owned on both sides. Here are the twelve fields that make the difference, with a skeleton you can copy into your next supplier onboarding.

Original template · FileSpecGuard · Updated October 13, 2026

The twelve fields of an enforceable spec

Each field exists because its absence is a real failure mode.
FieldWhat to pin downThe failure it prevents
1 · File namingExact pattern with date format, e.g. claims_YYYYMMDD.csv; case sensitivity.Yesterday's file processed twice; files silently skipped.
2 · Delivery & cadenceChannel (SFTP path, email, portal), schedule, timezone, late-file rule."Where's the file?" mornings; loads run against stale data.
3 · EncodingUTF-8 (with or without BOM) or the legacy encoding, stated once.Names with accents corrupted; invisible BOM breaking the first header.
4 · Delimiter & quotingDelimiter, quote character, escape rule, whether delimiters may appear inside quoted values.One free-text comma shifting every downstream column.
5 · Header contractExact header row, exact spelling and order; whether extra columns are ever allowed.Renamed or reordered columns loading into the wrong targets.
6 · Column inventoryPer column: name, type, nullability, max length.Truncation, type failures, surprise NULLs in required fields.
7 · Keys & uniquenessWhich column(s) identify a row; duplicate policy.Double-paid claims, double-counted orders.
8 · Value formatsDates (one format, one timezone), amounts (decimal separator, no symbols), code lists for enums.03/04 ambiguity; "1,000" read as one; unknown status codes.
9 · Reconciliation totalsRow count and/or control totals, in a trailer row or sidecar file.Silently truncated transfers passing as complete.
10 · Change noticeHow many days' notice for layout changes, to whom, in writing.The Monday-morning surprise redesign.
11 · Rejection handlingWhat the receiver does with a failing file; who is notified; redelivery window.Bad files half-loaded because nobody owned the failure path.
12 · Version & ownersSpec version number, effective date, one named owner per side.Arguments about which rules were in force when it broke.

A skeleton you can copy

FILE SPECIFICATION — [Supplier] → [Receiver]        v1.0 · effective 2026-11-01
Owners: [name, supplier]  /  [name, receiver]

File:      claims_YYYYMMDD.csv   (lowercase; one file per business day)
Delivery:  SFTP /incoming/claims/ by 06:00 America/Chicago; late = notify + skip
Encoding:  UTF-8, no BOM         Line endings: LF
Delimiter: comma  Quote: "  Escape: ""  (quoted fields may contain commas/newlines)
Header:    claim_id,member_id,service_date,amount,status   (exact, row 1, always)
Columns:   claim_id    string  required  unique  max 24
           member_id   string  required         max 16
           service_date date   required  format YYYY-MM-DD
           amount      decimal required  format 1234.56 (no symbols/thousands)
           status      enum    required  one of: NEW | ADJ | VOID
Totals:    trailer row: TOTAL,<row count>,<sum of amount>
Changes:   10 business days' written notice to [owner email]
Rejection: failing file is not loaded; both owners notified same day;
           corrected redelivery within 1 business day

Adapt the column block to your file; everything else transfers almost unchanged. The point is not bureaucracy — it's that every line above is checkable by a machine.

Enforce it on every delivery

The free FileSpecGuard checker verifies a file against rules like these in your browser — nothing uploads. Teams with several recurring feeds can have us author the specs as a fixed-price service.

Check a file now

Companion guide: The CSV validation checklist for recurring partner files · Spec authoring as a service: specification setup.