SFTP and FTP for Cloudflare R2

Cloudflare R2 has no SFTP of its own. DocEvent puts an SFTP, FTPS, FTP or SCP endpoint in front of your own R2 bucket — and because R2 charges no egress and DocEvent bills per user, neither leg of that path meters your bytes.
SFTPFTPSFTPSCP
Client
Partner or app
DocEvent
Simple FTP Service
R2
Your bucket
Files stream straight through to your own Cloudflare R2 bucket — nothing is stored on our servers.

How it works

1
Connect your R2 bucket
Create an R2 API token in the Cloudflare dashboard and paste its access key ID and secret into DocEvent, along with your account's S3 endpoint — <account-id>.r2.cloudflarestorage.com — and the bucket name. Scope the token to one bucket and the endpoint can reach nothing else in the account.
2
Create a user for each partner
Add an SFTP/FTPS/FTP user per partner or system, with a password or an SSH key and its own home directory. Lock it down with per-service IP allow and deny rules if you want it pinned to known addresses.
3
Hand over the hostname
Give them the DocEvent hostname and credentials. Files land in your bucket as they are uploaded, and every connection and transfer is recorded in the audit log.Prefer your own domain? Point a CNAME at the endpoint and partners connect to something like sftp.yourcompany.com instead.

Built for Cloudflare R2

No egress bill on the way back out

This is usually why the bucket is on R2 to begin with. A partner uploads over SFTP and you pull those files into a processing job, hand them to a customer or serve them from a Worker — none of it is charged as egress. The same round trip on S3 is billed per gigabyte out.

The same bucket your Workers read

R2 buckets bind directly to Workers, so a file that arrives over SFTP is available to your Worker or queue consumer as soon as the upload completes. No copy step, no cross-cloud event plumbing to keep a second system in sync.

Jurisdiction and tokens stay yours

Location hints, EU-jurisdiction buckets for data residency and lifecycle rules are all set on the Cloudflare side and keep working — DocEvent connects to whatever endpoint you give it. It holds only the API token you issued, which you can scope to one bucket and roll in the dashboard at any time.

Common questions

You focus on integration,
we'll focus on delivery.

Get started for free