This guide defines the file delivery and CSV formatting requirements for sending operational data to Solink via SFTP and applies to all supported schemas:
Retail
Restaurant
Chargeback
Banking
Access Control
This guide is intended for customers and partners building an integration.
Data Ingestion Overview
Figure 1: SFTP CSV data ingestion to Solink VD (high-level)
Scope and Supported Schemas
Solink ingests CSV files delivered over SFTP and processes them according to the schema indicated in the file content (typically via a dataType column).
Schema-specific field definitions are documented separately in the companion reference: “CSV Schemas for SFTP Data Integrations”.
Retail
Files Expected: 3 files per day; header, item, payment
Use Case: Event-level retail transactional data paired with video
Restaurant
Files Expected: 3 files per day; header, item, payment
Use Case: Event-level restaurant transactional data paired with video
Banking
Files Expected: 1 file per day
Use Case: Event-level ATM / Teller transactional data paired with video
Quick Start Checklist
Generate CSV files in UTF-8 encoding with a header row.
Include only one business day per file (or per file group, depending on schema).
Prefix filenames with the date for automated discovery (YYYYMMDD or YYYYMMDDTHHmm).
Split file groups by location/store (not by line count) and keep each daily group under 50 MB.
Use ISO-8601/RFC 3339 timestamps with timezone (Z or ±HH:MM) for time synchronization.
Ensure required identifiers are stable (storeId/locationId/terminalId) and unique keys do not collide.
File Delivery Requirements
These requirements apply to all schema types unless the schema-specific documentation states otherwise.
Automated delivery of files over SFTP using the credentials provided by Solink.
Each file must contain data for a single day. Do not mix multiple business days in one file.
Do not split a single day’s transactions across multiple, overlapping uploads. A transaction/event must appear in only one daily group.
Split large deliveries into multiple files and add a numeric suffix (for example, 20240213-header-2.csv).
Split by location/store when possible. Avoid splitting by line count unless required by file size limits.
Keep each daily group (all files for a day, per schema and per location strategy) at or below 50 MB.
CSV Formatting Requirements
Solink expects CSV files to follow standard conventions for comma-separated values, including quoting rules for fields containing commas, quotes, or line breaks.
Encoding: UTF-8.
Delimiter: comma (,).
Header row: first row must contain column headers.
Quoting: use double quotes (") around fields containing special characters (comma, CR/LF, or quotes). To include a quote inside a quoted field, escape it by doubling it (""), per common CSV conventions.
Line endings: LF or CRLF are accepted; be consistent within a file.
Empty values: represent missing optional values as empty fields; do not shift columns, and do not include NULL as a value.
File Naming Conventions
File names are used for automated discovery and to group related files. Use the schema-specific fileType values where applicable.
Component | Required | Format | Examples |
<datestamp> | Yes | YYYYMMDD (daily) or YYYYMMDDTHHmm (multiple drops/day) | 20240213, 20240213T1233 |
<storeId> | No | Alphanumeric identifier for a physical location/store | A203, store535 |
<fileType> | Schema-specific | One of the file types listed in the schema section | header, item, payment, chargeback, accesscontrol |
Timestamp Requirements (ISO-8601 / RFC 3339)
Solink synchronizes events to video using absolute time. Use ISO-8601 timestamps with an explicit timezone designator (Z for UTC or an offset such as -05:00). Include milliseconds when possible to improve alignment.
2024-06-15T06:15:00.000-06:00 (local time with offset)
2024-06-15T12:15:00.000Z (UTC)
Tip: Avoid ambiguous local timestamps (no timezone). If your source system cannot emit offsets, export in UTC and use the Z suffix. |
Format pattern:
YYYY-MM-DDTHH:mm:ss.sss±HH:MM (with timezone offset)
YYYY-MM-DDTHH:mm:ss.sssZ (UTC)
Examples:
2024-08-02T17:09:04.818Z → Aug 2, 2024 5:09:04 PM UTC
2024-06-15T06:15:00.000-06:00 → Jun 15, 2024 6:15:00 AM CST
2024-12-30T00:06:31.070Z → Dec 30, 2024 12:06:31 AM UTC
Validation and Common Rejection Reasons
During ingestion, Solink validates file structure and schema requirements. Rows (or entire files) may be rejected if they do not conform.
Missing required columns or empty required fields.
Invalid enum/picklist values (for example, Access Control result/state).
Non-unique identifiers where uniqueness is required (for example, eventUniqueId in Access Control).
Invalid timestamp format or timestamps without timezone.
Overlapping transactions/events across multiple daily groups.
Data Privacy and Minimization
Send only the data required for the integration. When customer identifiers are needed, use redacted or tokenized identifiers where possible (for example, last four digits rather than full account or card numbers).
