Data Sources
Data sources bring incoming transactions into Payment Reconciler. Create connections for Stripe, EBICS, or SFTP; CSV is uploaded per file. Each connection syncs data into a specific tenant and environment.
What are data sources
Data sources are integrations that bring incoming transactions (payments received) into Payment Reconciler. For Stripe, EBICS, SFTP, and CSV, you create a connection scoped to a tenant and environment. CSV uploads reference that connection so sync logs and history align with other sources.
Incoming transactions created from a data source use field mappings to transform raw data into the standard schema (merchant, amount, date, reference, description).
Supported sources
| Source | Connection | How data enters | Notes |
|---|---|---|---|
| Stripe | Persistent (API key, webhook secret) | Sync job or manual trigger | Fetches charges; field mappings transform to incoming transactions |
| CSV | Persistent (name + config, typically {}) | POST /incoming-transactions/upload | Requires dataSourceConnectionId; field mappings map CSV columns |
| EBICS | Persistent (bank credentials) | Manual sync: POST /data-sources/ebics/sync | Bank statement import via CAMT.053 |
| SFTP | Persistent (SSH host, auth, remote path) | Manual sync: POST /data-sources/sftp/sync | CSV files only in v1; same default column mapping as CSV when no field mapping |
Manual is not a data source—you create incoming transactions directly via API with full fields. See Incoming Transactions.
Stripe connections
Create a Stripe connection with:
- apiKey — Stripe secret key (
sk_live_...orsk_test_...) - webhookSecret — Optional; for verifying Stripe webhook signatures
Sync runs via:
- Manual —
POST /data-sources/stripe/syncwithconnectionId - Scheduled job — Configure
stripeSyncSchedulein Job Scheduling; job syncs all enabled Stripe connections for the tenant/environment
Sync logs record each run (total fetched, created, errors). View via GET /data-sources/:id/sync-logs.
CSV uploads
Create a CSV connection via POST /data-sources with source: "csv", then upload via POST /incoming-transactions/upload with the connection ID (dataSourceConnectionId query parameter or form field) and a multipart file. Each upload creates a sync log linked to that connection (view via GET /data-sources/:id/sync-logs). Configure field mappings for source csv to map columns. Supports comma, semicolon, or tab delimiters. Max file size 10MB.
EBICS connections
EBICS connections store bank credentials and use the EBICS protocol to fetch bank statements (Camt.053). Supported banks include PostFinance (via bankId: postfinance). Each connection is created via a three-step flow:
- Start init —
POST /data-sources/ebics/init/startwith bank URL (e.g. PostFinance test:https://isotest.postfinance.ch/ebicsweb/ebicsweb), host ID (PFEBICS), customer/participant IDs, passphrase, IBAN, and bank parser ID - Bank letter — Download the bank letter via
GET /data-sources/ebics/init/:id/bank-letter, sign it, and send to your bank - Complete init — After the bank activates your keys, call
POST /data-sources/ebics/init/completewith theconnectionId
Once initialized, sync runs via manual trigger: POST /data-sources/ebics/sync with connectionId. Field mappings for source ebics transform statement rows into incoming transactions. See Data Source Config for the full schema.
SFTP connections
Create an SFTP connection with POST /data-sources and source: "sftp". The config object must include host, username, remotePath (directory to scan), and auth (either password or privateKey with optional passphrase). Optional: port (default 22), filePattern (default *.csv), delimiter, encoding, hostKeyFingerprint (recommended for production host-key verification), moveToPath, deleteAfterSuccess.
Sync runs via manual trigger: POST /data-sources/sftp/sync with connectionId. The service lists matching .csv files, skips unchanged files using stored metadata under _sftpState, and creates incoming transactions with source: sftp and traceable rawData._sftp. Field mappings for source sftp apply when configured; otherwise the same default column mapping as CSV applies. CAMT/XML and other formats are not supported in v1.
Sync logs
Each Stripe sync creates a sync log with status (RUNNING, COMPLETED, FAILED, PARTIAL), totalFetched, newTransactionsCreated, and errorsCount. Use sync logs to monitor sync health and debug failures.
API Reference
For connection endpoints, parameters, and request/response samples, see Data Sources in the API Reference.