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
Open the validator: https://integrations.solinkcloud.com/csv-validator
Select the data type: Retail, Restaurant, or Banking.
Add your CSV files. Drag them onto the page, or use the file picker.
Select Validate.
Review the results for each file. For Retail and Restaurant, also review the Cross-file validation section.
(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
Details: Each file must include all required columns. On data rows, required fields cannot be empty.
Common required fields can be found on a per schema basis here (https://help.solink.com/en/articles/10395588-csv-format-for-sftp-data-integrations)
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:
The correct data type is selected (Retail, Restaurant, or Banking).
Retail/Restaurant: exactly one header, item, and payment file (a column-names-only file is OK when that type has no data rows).
Names end with -header.csv, -item.csv, or -payment.csv. Use the specific guide to find the full filename pattern.
Your files follow the CSV format guide.
The validator shows no errors.
Review Warnings for orphans and amount mismatches.
