Skip to main content

CSV Format for SFTP Data Integrations

Written by Ryley White
Updated over 2 weeks ago

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).

Did this answer your question?