QFind anything/
API Reference

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:

NameTypeRequiredDescription
sourcestringYesstripe
namestringYesDisplay name
config.apiKeystringYesStripe secret key (sk_live_... or sk_test_...)
config.webhookSecretstringNoWebhook signing secret for verification
enabledbooleanNoDefault: 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:

NameTypeRequiredDescription
sourcestringYessftp
namestringYesDisplay name
config.hoststringYesSFTP server hostname
config.portnumberNoSSH port (default 22)
config.usernamestringYesSSH username
config.authobjectYesEither { "password": "..." } or { "privateKey": "PEM...", "passphrase": "..." } (passphrase optional)
config.remotePathstringYesRemote directory to scan (files only; subfolders are not walked in v1)
config.filePatternstringNoGlob-style pattern (default *.csv). Only .csv files are ingested in v1
config.delimiterstringNoSingle CSV delimiter character (default ,)
config.encodingstringNoBuffer encoding for file contents (default utf8)
config.hostKeyFingerprintstringNoSHA-256 host key: 64-char hex or OpenSSH SHA256:... form (recommended for production)
config.knownHostsstringNoReserved for future strict host checking
config.moveToPathstringNoAfter a successful file import, rename the remote file into this directory
config.deleteAfterSuccessbooleanNoAfter 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

Use POST /data-sources/ebics/init/start (not POST /data-sources). After the bank activates keys, call POST /data-sources/ebics/init/complete.

Init start body:

NameTypeRequiredDescription
bankUrlstringYesEBICS server URL (PostFinance test: https://isotest.postfinance.ch/ebicsweb/ebicsweb)
hostIdstringYesBank host ID (PostFinance: PFEBICS)
partnerIdstringYesCustomer / partner ID
userIdstringYesParticipant / user ID
passphrasestringYesPassphrase for key storage (encrypted at rest)
accountIdstringYesAccount IBAN
bankIdstringYesParser id (e.g. postfinance)
ebicsVersionstringYesH004 (EBICS 2.5) or H005 (EBICS 3.0)
statementDownloadOrderTypestringNoH004 only: C53, Z53, or G53. Omit for bank defaults (PostFinance → Z53)
namestringNoDisplay name

Stored on the connection config after init: bankUrl, hostId, partnerId, userId, accountId, bankId, ebicsVersion, optional statementDownloadOrderType, encrypted key material, sync metadata. Passphrase is not stored in cleartext.

Init complete body:

NameTypeRequiredDescription
connectionIdstringYesID from init/start

Sync: POST /data-sources/ebics/sync with {"connectionId": "..."}. H004 uses C53/Z53/G53; H005 uses BTD (ZIP-wrapped CAMT when applicable). Requires EBICS_KEY_ENCRYPTION_KEY (32+ chars).