Data Source Configuration
Configure Stripe, CSV, EBICS, and SFTP data sources.
What is data source config
Data source configuration defines how incoming transactions are ingested. For Stripe, EBICS, SFTP, and CSV, you create a connection scoped to tenant and environment. CSV connections anchor file uploads and sync logs even when config is empty.
See Data Sources for the conceptual overview.
Stripe
Create a Stripe connection via POST /data-sources:
| Name | Type | Required | Description |
|---|---|---|---|
| source | string | Yes | stripe |
| name | string | Yes | Display name |
| config.apiKey | string | Yes | Stripe secret key (sk_live_... or sk_test_...) |
| config.webhookSecret | string | No | Webhook signing secret for verification |
| enabled | boolean | No | Default: true |
Sync runs manually (POST /data-sources/stripe/sync) or on a schedule via Job Scheduling.
CSV
Create a connection with source: "csv" and config: {} (or optional metadata). Upload via POST /incoming-transactions/upload with dataSourceConnectionId and a multipart file. Configure field mappings for source csv to map columns. Supports comma, semicolon, or tab delimiters.
SFTP
Create an SFTP connection via POST /data-sources with source: sftp and a JSON config:
| Name | Type | Required | Description |
|---|---|---|---|
| source | string | Yes | sftp |
| name | string | Yes | Display name |
| config.host | string | Yes | SFTP server hostname |
| config.port | number | No | SSH port (default 22) |
| config.username | string | Yes | SSH username |
| config.auth | object | Yes | Either { "password": "..." } or { "privateKey": "PEM...", "passphrase": "..." } (passphrase optional) |
| config.remotePath | string | Yes | Remote directory to scan (files only; subfolders are not walked in v1) |
| config.filePattern | string | No | Glob-style pattern (default *.csv). Only .csv files are ingested in v1 |
| config.delimiter | string | No | Single CSV delimiter character (default ,) |
| config.encoding | string | No | Buffer encoding for file contents (default utf8) |
| config.hostKeyFingerprint | string | No | SHA-256 host key: 64-char hex or OpenSSH SHA256:... form (recommended for production) |
| config.knownHosts | string | No | Reserved for future strict host checking |
| config.moveToPath | string | No | After a successful file import, rename the remote file into this directory |
| config.deleteAfterSuccess | boolean | No | After success, delete the remote file (ignored if moveToPath is set) |
The API validates config on create and update (invalid configs return 400). The service stores _sftpState in config for idempotent skips (do not remove unless you intend to reprocess files).
Sync: POST /data-sources/sftp/sync with {"connectionId": "<uuid>"}. Configure field mappings for source sftp when you need custom column mapping; otherwise the same defaults as CSV apply.
EBICS
EBICS connections are created via POST /data-sources/ebics/init/start (not POST /data-sources). The init flow creates the connection and returns a bank letter URL. After sending the signed bank letter to your bank and receiving activation, call POST /data-sources/ebics/init/complete.
Init start body (PostFinance mapping):
| Name | Type | Required | Description |
|---|---|---|---|
| bankUrl | string | Yes | EBICS server URL → EBICS URL (PostFinance test: https://isotest.postfinance.ch/ebicsweb/ebicsweb) |
| hostId | string | Yes | Bank host ID → EBICS Host ID (PostFinance: PFEBICS) |
| partnerId | string | Yes | EBICS customer ID → EBICS customer ID (e.g. PFC00887) |
| userId | string | Yes | EBICS participant ID → EBICS Participant ID (e.g. PFC00887) |
| passphrase | string | Yes | EBICS passphrase (encrypted and stored; used for key management) |
| accountId | string | Yes | Account IBAN |
| bankId | string | Yes | Parser selector (e.g. postfinance for PostFinance CAMT.053) |
| name | string | Yes | Connection display name |
Init complete body:
| Name | Type | Required | Description |
|---|---|---|---|
| connectionId | string | Yes | ID returned from init/start |
Sync: Call POST /data-sources/ebics/sync with {"connectionId": "..."} to fetch bank statements and create incoming transactions. Field mappings for source ebics transform statement rows. Requires EBICS_KEY_ENCRYPTION_KEY (32+ chars) in the environment.
Related
- Data Sources — Conceptual overview
- Data Sources API — Create, list, sync
- Field Mappings — Transform raw data