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

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

NameTypeRequiredDescription
bankUrlstringYesEBICS server URL → EBICS URL (PostFinance test: https://isotest.postfinance.ch/ebicsweb/ebicsweb)
hostIdstringYesBank host ID → EBICS Host ID (PostFinance: PFEBICS)
partnerIdstringYesEBICS customer ID → EBICS customer ID (e.g. PFC00887)
userIdstringYesEBICS participant ID → EBICS Participant ID (e.g. PFC00887)
passphrasestringYesEBICS passphrase (encrypted and stored; used for key management)
accountIdstringYesAccount IBAN
bankIdstringYesParser selector (e.g. postfinance for PostFinance CAMT.053)
namestringYesConnection display name

Init complete body:

NameTypeRequiredDescription
connectionIdstringYesID 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.