Skip to main content

SFTP file transfer — security documentation

This page describes the security measures around Revizo’s SFTP integration for automatic file import. The document is intended for IT managers, security teams, and compliance staff who are considering connecting SAP, banking systems, or other file sources to Revizo via SFTP.


Overview​

Revizo supports automatic file retrieval via SFTP (SSH File Transfer Protocol). The integration is used to retrieve bank files (CAMT.053) and trial-balance files (CSV/Excel) from external SFTP servers.

PropertyDescription
ProtocolSFTP over SSH (port 22)
DirectionRevizo retrieves files (pull model)
Encryption in transitSSH-encrypted channel (standard SSH encryption algorithms)
Encryption of credentialsAES-256-GCM (application level)
Encryption at restAES-256 at database level (Supabase/AWS)
AuthenticationUsername/password or SSH key pair
Access controlOnly Revizo administrators can create/change connections

Connection model​

Revizo operates as an SFTP client — we connect to your server and retrieve files. We do not run a publicly available SFTP server.

┌──────────────────────┐          ┌──────────────────────┐
│ Your SFTP server │◄─SSH────│ Revizo │
│ (bank, SAP, ERP) │ port 22│ (SFTP client) │
│ │ │ │
│ /outgoing/ │ │ Polling (interval) │
│ ├── file1.xml │ │ Retry with backoff │
│ └── file2.csv │ │ Dedup via SHA-256 │
└──────────────────────┘ └──────────────────────┘

IP addresses​

Revizo runs on Vercel (frontend/API) and Railway (background worker). Outbound SFTP connections are initiated from the Railway worker. If the firewall requires IP allowlisting, contact us for updated IP addresses.


Credential handling​

Storage​

All SFTP credentials (username, password, SSH keys) are encrypted before they are stored in the database:

FieldEncryption methodDetails
UsernameAES-256-GCMApplication-level encryption
PasswordAES-256-GCMApplication-level encryption
SSH keysAES-256-GCMApplication-level encryption
  • The encryption key is a server-side environment variable that is never exposed to clients
  • Encrypted values are stored as iv:tag:ciphertext (initialisation vector, authentication tag, encrypted data)
  • Each field uses a unique initialisation vector (IV) per encryption operation

Access​

  • Credentials are never shown in API responses — GET requests never return passwords or keys
  • Only administrators can create or change SFTP connections
  • All changes are logged with user ID and timestamp

Rotation​

We recommend rotating SFTP credentials periodically (at least annually). Updating is done in Revizo under Settings → File transfer → SFTP → edit connection.


Data processing​

File handling​

StepDescription
DownloadFiles are downloaded to memory (buffer), never to disk
DeduplicationSHA-256 hash is calculated — identical files are never imported twice
ProcessingThe file is parsed in memory and the result is stored in the database
After importConfigurable: the file can remain, be moved, or be deleted from the SFTP server

Revizo never stores raw files permanently. Only the parsed data (transactions or account balances) is stored in the database.

What is stored​

File typeData stored
Bank files (CAMT)Individual transactions: date, amount, reference, account number
Trial balanceAccount balances: account number, balance, company code, import time

Metadata about the import (filename, hash, timestamp, status) is stored for traceability and deduplication.

Tenant isolation​

All data in Revizo is isolated per organisation (tenant_id):

  • SFTP connections are scoped to the organisation that created them
  • Imported data is only available to authorised users in the same organisation
  • The database enforces Row Level Security (RLS) for additional isolation
  • All API requests validate organisation membership via the Clerk session

Network security​

Protocol​

SFTP uses SSH (Secure Shell) to establish an encrypted channel. All communication — including authentication, file transfer, and commands — is encrypted.

Connection handling​

PropertyValue
Timeout30 seconds per connection attempt
Retry3 attempts with exponential backoff
Concurrent connectionsMax 1 per sync config (sequential polling)
IntervalConfigurable (15 min – 24 hours)

Firewall recommendations​

If the SFTP server is behind a firewall, we recommend:

  1. Allow only port 22 (or the configured SFTP port) from Revizo’s IP addresses
  2. Block incoming connections — Revizo initiates all connections (pull model)
  3. Enable logging of all SFTP logins for tracing

Logging and tracing​

What is logged​

EventData loggedPurpose
Connection attemptTimestamp, connection ID, resultTroubleshooting
File retrievedFilename, SHA-256 hash, sizeTraceability
Import completedNumber of rows/transactions, durationAudit
Import failedError message, filename, timestampTroubleshooting
Configuration changedUser ID, timestamp, changeAudit trail

What is NOT logged​

  • Passwords and SSH keys
  • File contents (metadata only)
  • Personally identifying information beyond user ID

Compliance​

GDPR​

Trial-balance files typically contain only account numbers and amounts — no personal data. Bank files (CAMT.053) may contain payment references with personal names. This data:

  • Is stored encrypted (AES-256) in Revizo’s database
  • Is subject to tenant isolation and access control
  • Can be exported and deleted in accordance with GDPR (Articles 15 and 17)
  • Is processed in the EU (Frankfurt, Germany)

For complete GDPR documentation, see Privacy and GDPR.

SOC 2 and certifications​

Revizo’s infrastructure providers:

ComponentProviderCertification
HostingVercelSOC 2 Type II
DatabaseSupabase (AWS)SOC 2, ISO 27001
DNS/CDNCloudflareISO 27001
AuthenticationClerkSOC 2 Type II

Recommendations for IT departments​

Before setup​

  1. Create a dedicated SFTP user for Revizo with read access to the file directory
  2. Restrict access — the user should only have access to the folder with export files
  3. Configure chroot — lock the SFTP user to a specific folder
  4. Enable logging — log all SFTP logins and file transfers
  5. Consider SSH key authentication rather than passwords for stronger security

After setup​

  1. Verify that files transfer correctly by checking import status in Revizo
  2. Monitor SFTP logs for unexpected connection attempts
  3. Rotate credentials periodically (recommended: annually)
  4. Document the SFTP access internally (who administers it, which files are shared)

SAP-specific​

For SAP customers setting up automatic export of trial balance:

  1. Configure an SAP job that exports the trial balance to the SFTP server (see SAP SFTP documentation)
  2. Set up file format: CSV with semicolon separator, 3 columns (company code, account number, balance)
  3. Configure export frequency — Revizo supports polling from every 15 minutes to daily
  4. Use a consistent filename or a naming pattern that file retrieval can match (e.g. saldobalanse_*.csv)

Contact​

For questions about security around the SFTP integration, contact:

We normally reply within 1–2 business days.


Last updated: April 2026