Connecting
Connect tosftp.solo.one on port 22. Your email address is the username
and your organization’s WorkOS API key is the password:
+sandbox to the local part of your email:
How authentication works
Every connection is verified live, not against a stored password:- The username is parsed into an email and an environment tag
(
+sandbox→ sandbox; no tag → production). Usernames are case-insensitive. An unrecognized tag is rejected outright. - The password is validated as a WorkOS API key against WorkOS. Revoked or malformed keys are rejected.
- The key’s owning WorkOS organization — not anything in the username — is resolved to your SOLO organization. Your session is scoped to that organization’s isolated storage area in the selected environment.
Because authorization derives from the API key, the key is the credential
that matters: rotating or revoking it in WorkOS immediately cuts off SFTP
access (allow up to a minute for cached sessions to expire). Contact your
SOLO account manager to provision keys.
Directory layout
Files are uploaded to one of five category directories directly under the session root:| Category | Directory | Description |
|---|---|---|
| KYC Certificate Policy | kyc_cert_policy/ | Define KYC verification policies with operation flags |
| KYB Certificate Policy | kyb_cert_policy/ | Define KYB verification policies with operation flags |
| Programs | programs/ | Configure network programs linking KYC and KYB policies |
| KYC Furnish Data | kyc_furnish_data/ | Consumer onboarding records for KYC certificates |
| KYB Furnish Data | kyb_furnish_data/ | Business onboarding records for KYB certificates |
What happens on upload
Ingestion is event-driven — there is no polling window to wait for:- Upload. The file lands in your organization’s isolated storage area, prefixed by environment and organization.
- Trigger. The storage event fires the ingestion workflow for the file’s category — within seconds of the upload completing.
- Parse. The workbook is read: first sheet only, row 1 treated as a banner, row 2 as headers, row 3+ as data (format details).
- Ingest. Each row runs through the same furnishing pipeline as the API
channels. For data categories that means program routing and
furnishing-policy resolution
by
program_name+application_date; for configuration categories (policies, programs) it means creating governor-controlled network configuration. - Record. The outcome — total rows, successes, filtered rows, failures with per-row messages — is recorded as a furnish event you can review in the dashboard.
- Row-level processing — each row succeeds or fails independently. A single invalid row never sinks the rest of the file.
- Filtered is not failed — data rows whose
application_datefalls outside every applicable policy window are skipped deliberately and reported as filtered. - Header normalization — headers are lowercased and non-alphanumeric runs collapse to underscores, so column order and cosmetic formatting don’t matter.
- Example-row skipping — rows whose identifier column starts with
Ex.are treated as in-workbook examples and skipped. - Safe re-runs — data rows upsert on their natural keys (SSN for consumers; tax identifier and jurisdiction for businesses), so re-uploading a corrected batch updates records instead of duplicating them. Re-uploaded policy and program rows that collide with existing names surface as per-row name-conflict errors rather than duplicates.
File requirements
- Format: Excel workbook (
.xlsx) - Sheet: only the first sheet is read
- Row 1: banner row (ignored)
- Row 2: column headers
- Row 3+: data rows
Relationship to the API channels
SFTP shares everything but the transport with the REST furnishing surface:- The five directories map one-to-one onto the
slugvalues accepted by the bulk file upload endpoint (POST /v1/file-upload/ingest). - Data rows go through the same program routing and policy resolution as a
per-record
POST /v1/products/kyc_certificate/furnishcall — and earn the same entitlement for your organization. - The dashboard shows SFTP drops and API uploads in the same uploads view, with the same row-level result reporting.
Environments
Use plus-addressing on the email username to target an environment:| Environment | Username format | Example |
|---|---|---|
| Production | email@domain.com | alice@yourbank.com |
| Sandbox | email+sandbox@domain.com | alice+sandbox@yourbank.com |
Who can upload what
The five categories split into two permission tiers:- Data categories (
kyc_furnish_data,kyb_furnish_data) are for organizations holding the furnisher role in the target network. - Configuration categories (
kyc_cert_policy,kyb_cert_policy,programs) define network rules and are enforced as governor-only at ingest — rows uploaded by a non-governor fail with an access error even though the file itself uploads successfully.
Getting Started
Your first upload, end to end, in about 15 minutes.
Upload Categories
Required and optional columns for every category.
Workbook Format
Header normalization, data types, and formatting rules.
Furnishing Overview
How SFTP relates to the REST furnishing channels.