Skip to main content

Validate Files (Standard CSV Validator)

Written by Ryley White

This guide explains how to use Solink’s Standard CSV Validator, what each results section means, how errors differ from warnings, and how to fix each issue.

The Standard CSV Validator checks Retail, Restaurant, and Banking CSV files before you upload them for processing. It checks:

  • File naming and structure

  • Required columns and field values

  • For Retail and Restaurant: relationships across the header, item, and payment files

Use it to catch formatting and data issues early so files process cleanly through Standard CSV.


How to Use the Validator

  1. Select the data type: Retail, Restaurant, or Banking.

  2. Add your CSV files. Drag them onto the page, or use the file picker.

  3. Select Validate.

  4. Review the results for each file. For Retail and Restaurant, also review the Cross-file validation section.

  5. (Optional) Export the results to get the full row-level detail.

Upload Limits

Please note the following limits to uploading:

  • Only accepts CSV files (.csv)

  • Up to 3 files per validation

  • Up to 50 MB total


Retail and Restaurant File Requirements

Important: Partial uploads are not accepted. If a file type has no data rows for a given batch, include that file anyway, with only the column-names row and no data rows.

Required naming:

  • Use the naming pattern in the format guidelines for your data type:

Banking File Requirements

Banking uses a single-file structure (no header/item/payment split). Validate one Banking CSV at a time. For the required fields, see the Banking format guidelines.


Understand Results

After validation, results are grouped into sections. Each section can show Successes, Errors, Warnings, and Info.

Per-file sections (Header / Item / Payment, or Banking file)

These sections show the checks that apply to one file only.

Section

What it checks

File naming & size

Extension, naming pattern, size limits, suspicious names

Schema / columns

Required columns present; unexpected or empty required fields

Field values

Allowed values for status, itemStatus, and dataType

Date formats

ISO-8601 timestamps with a timezone where required (and YYYY-MM-DD where allowed for some date fields)

Cross-file validation section

Shown only for Retail and Restaurant. This section shows the checks that compare the header, item, and payment files.

Check

What it means

Complete file set

Must have exactly one header, one item, and one payment file. Incomplete sets or duplicate types fail here.

Amount mismatch

For each transaction with items and payments, line totals − discounts + tax should match the payment total (within $0.05).

Other cross-file checks

Invalid transactionId characters; item/payment times outside the header window; orphaned IDs for the item/payment files

When the same issue occurs many times, the validator shows a summary with the count and some examples. To see every row, export the results.

Errors vs Warnings

Errors

Warnings

Meaning

Issues that cause validation to fail

Issues you should review; validation can still pass

Typical impact

Fix these before you send the files for processing

Data may process, but results can be incomplete, unbalanced, or unexpected

Examples

Missing required columns; invalid status; incomplete 3-file set; invalid characters in transactionId; duplicate header IDs; item/payment time outside header window

Orphaned transaction IDs across files; amount mismatch (out of balance beyond $0.05); dataType mismatch vs selected type


Errors: Causes and Fixes

Upload / file-set Errors

Incomplete or duplicate file set (Retail / Restaurant)

  • Where: Cross-file validation

  • When flagged: Not exactly one header + one item + one payment file

  • Details: The validator uses the end of each file name (-header, -item, or -payment) to identify the file type. If a file type is missing, or if you upload two files of the same type, validation fails.

  • Fix: Upload all three types. If a file type has no data rows, upload a column-names-only file for it.

Invalid file name or type

  • Where: Per-file section

  • When flagged: Not a .csv; Retail/Restaurant name does not end with -header, -item, or -payment; naming format does not match expected pattern

  • Fix: Rename the file to match the naming pattern in the format guidelines. Then validate again.

File too large

  • When flagged: The total size of the files is more than 50 MB.

  • Fix: Reduce the total size. For example, validate a smaller batch of transactions, with one header, item, and payment file for that batch.

Schema and field Errors

Missing required columns / empty required fields

Invalid values

  • Header status: must be sale, refund, or void (case-insensitive)

  • Item itemStatus: must be sale, return, void, override, or gratuity (case-insensitive)

  • dataType field: Retail/Restaurant files: retail or restaurant; Banking: atm or teller. A value that is not in this list is an Error. A valid value that does not match the selected data type is a Warning (see section 6).

Invalid date / time format

  • Details: The validator flags a timestamp that is not valid ISO-8601, or that has no timezone. For the format and examples, see the CSV format guide.

  • Tip: Use the same timezone format on header startTime/endTime and item/payment times so the validator can compare the times correctly.

Cross-file Errors (Retail / Restaurant)

Invalid characters in transactionId

  • Where: Header, item, or payment file section

  • When flagged: A transactionId contains a forbidden character. For the list of forbidden characters, see the CSV format guide.

  • Details: The message shows only the first forbidden character in each ID. An ID can contain more than one, so check the full ID.

  • Fix: Remove or replace forbidden characters in IDs across all three files.

Duplicate header records

  • Where: Header file section

  • When flagged: The same transactionId appears on more than one header row

  • Details: Each transactionId can appear on only one row in the header file. The validator checks only the files that you upload. It cannot find duplicate IDs across days or stores.

  • Fix: Keep one header row per transaction ID.

Time outside transaction window

  • Where: Item file (itemTime) or Payment file (paymentTime)

  • When flagged:

    • Time is before the matching header startTime, or

    • Header has endTime and the time is after that endTime

  • Details: The validator compares each item and payment time to the start and end times of the same transaction, and includes the timezone. If a time is not in a valid format, the validator cannot do this check for that row. Fix the date format first.

  • Fix: Change the item or payment times so they are between the header start and end times. Or correct the header start and end times.


Warnings: Causes and Fixes

Orphaned Records

  • Severity: Warning (does not fail validation by itself)

  • Where: In the section for the file that has the unmatched ID:

    • Item IDs with no matching header → Item section

    • Payment IDs with no matching header → Payment section

    • Header IDs with no matching items or payments → Header section

  • Details: The validator compares the transactionId values in the three files. The message shows how many IDs have no match, with some example IDs.

  • Exception: A header with status void can have no matching items or payments (you do not get an orphan Warning for them).

  • Fix: Make sure that each transaction that is not a void has a header row, and the item and payment rows that belong to it. Remove extra rows, or add the missing rows.

Amount Mismatch

  • Severity: Warning

  • Where: Cross-file validation

  • When flagged: For a transactionId that has at least one item and at least one payment, the absolute difference between the expected total and the payment total is greater than $0.05.

  • High-level formula:

    • expected total = line totals − discounts + tax

    • payment total = sum of (amount tendered − change due)

    • Flag when the absolute difference is greater than $0.05

  • Direction rules: The validator uses the Balance Rule in the CSV format guide. It also uses these rules:

    • An override line uses the unit price as sent. A positive price adds, and a negative price subtracts. A positive item discount on an override is added to that line. A negative item discount is subtracted.

    • On a refund or void, positive transaction tax is refunded in full when every item with a price is a return or void. If only some priced items are returns or voids, the tax is split by item value: the returned share is refunded and the kept share is charged. If half the item value is returned, those two shares cancel. If no item is a return or void, the tax is charged in full.

    • A positive amount tendered is subtracted, as a refund, only when the header is a refund or void and every item with a price is a return or void. An amount that is already negative is used as sent.

    • Change due is subtracted from the amount tendered. On a void, change due is added instead.

  • Fix: For each transaction ID in the message, check the item prices, discounts, tax, amounts tendered, and change due. Correct them until the difference is $0.05 or less.

Other Common Warnings

  • dataType mismatch: The row has a valid dataType value, but it does not match the type selected in the UI (for example, you selected Retail, but the row says restaurant).

  • Column names but no data rows: The file has only the column-names row and no data rows (allowed when that file type has no data in a complete set). No action is necessary.


Read and Export the Results

  • Expand each file section to see Successes, Errors, Warnings, and Info.

  • The counters count each instance of an issue, also when the messages are summarized. If one message says 12 rows have this issue, the Errors counter goes up by 12, not 1.

  • To see every instance of an issue, export the results.

  • Fix all Errors first. Then fix the Warnings for amount mismatches and orphaned records.


Checklist Before you Send Files for Processing

Ensure the following before sending files:

  1. The correct data type is selected (Retail, Restaurant, or Banking).

  2. Retail/Restaurant: exactly one header, item, and payment file (a column-names-only file is OK when that type has no data rows).

  3. Names end with -header.csv, -item.csv, or -payment.csv. Use the specific guide to find the full filename pattern.

  4. Your files follow the CSV format guide.

  5. The validator shows no errors.

  6. Review Warnings for orphans and amount mismatches.

Did this answer your question?