Security
What we do to protect your data, what we don't do, and how to report a vulnerability.
We're a small company. We hold things that matter to people who aren't our customers: your affiliates' payout details and tax forms. We also hold your own payout method credentials. This page says what protects them, and where we don't do something, it says that too.
We aren't SOC2 certified
SOC2 and ISO 27001 are security certificates an outside auditor signs off. We don't hold either, or any other certification, and we don't have an audit under way. At our size the certificate would cost more than the engineering it checks. Instead, this page describes what we do in enough detail for you to judge it yourself.
If your procurement process needs SOC2 before you sign, we aren't the right supplier. We'd rather tell you now.
Your affiliates' money never touches us
Payouts are non-custodial by design, which means we never hold the money. You connect your own PayPal Business or Wise Business credentials. We tell your PayPal or Wise account to pay, using your token, and the money goes from you to your affiliates.
- We never hold, receive, route or control any of it.
- We charge nothing on it.
- There's no platform-level payout credential anywhere in the system to be stolen.
Most of the damage an affiliate platform can do is to money in its custody. We have none.
Encryption
- In transit: TLS on every surface, including the tracker and the short-link redirector.
- At rest: the whole database, at the provider.
- Twice over for the two secrets that matter. Payout credentials and tax form payloads are encrypted a second time in the application, under a per-deployment key.
- One envelope format, with a key id. A key can be rotated without re-encrypting every row on the same day.
- The key isn't in the database. Someone with a copy of the database has neither.
Access
- Scoped API keys. Each key only does what its scopes allow. We store a SHA-256 hash of it and show it once. The server enforces scopes, never the interface.
- Three team roles (owner, admin and member). The server checks the role on every action that moves money, holds a credential or changes the team. Who can do what.
- Two-factor authentication on merchant accounts.
- Server-side plan gates. If your plan doesn't include a feature, the server refuses it.
- One tenancy check on every query. Programs can't see each other. We test that with two tenants seeded side by side.
- Signed webhooks (
Rail-Signature). When you rotate the secret, the old one keeps working for 24 hours, so a rotation doesn't cause an outage.
The audit log
The log records every action with consequences: who did it, what changed, and when. That covers approvals, commission decisions, payout batches, key creation, data exports and deletions.
A deletion gets its own record too. An erasure must never be able to remove that entry.
Backups and restore
The database runs on Neon. Neon keeps a point-in-time history window, set to 7 days in production. To restore, we branch the database as it was at a set moment. The live copy stays untouched while we look.
We run a restore drill and log the result with the numbers: tables, rows, and how long the whole restore took. The drill has been run, and its log lives in the repository. The routine is young, so there's no long track record behind it.
Analytics, and what's in your browser
Since August 2026 the product's analytics runs cookieless:
- no cookies, local storage or session storage
- no profile for anonymous traffic
- session replay off
- autocapture off, so no text you click leaves the browser, including an affiliate's email address
The dashboard keeps only what it needs to work in your browser: your session, which program you're looking at, and your security settings. None of that falls under consent law, which is why there's no cookie banner.
Who else sees the data
A sub-processor is another company that handles data for us. The current list is published at affiliaterail.com/subprocessors. It says what each one does, where it processes data and under which transfer mechanism. We commit to announcing a change before it takes effect.
Reporting a vulnerability
Email security@affiliaterail.com. Tell us:
- what you found
- how to reproduce it
- what you think it lets someone do
You'll get a human reply within two working days and a fix timeline within five.
Please don't open a public issue, and please don't test against data that isn't yours. A test merchant on a trial with its own partners is fine. Someone else's program isn't.
We don't run a paid bounty. We do say thank you in public, with credit if you want it.