Stripe File Uploads

Storing Verification and KYC Files Alongside Your Stripe Integration

Store identity documents and payment files for your Stripe integration.

Stripe's Files API exists, but it is scoped to Stripe's own needs — dispute evidence, Connect identity verification, and a few branding assets — with a 16 MB cap per file and no general-purpose retrieval or CDN. The moment your payment flow has to keep something Stripe doesn't natively manage — a customer-uploaded proof of address, a high-resolution passport scan for your own KYC review, a batch of invoice PDFs tied to a subscription, a signed mandate — you need storage you control. files.link sits next to your Stripe integration as that store: a REST API for uploads, private files with expiring signed URLs for anything containing PII, and permanent links you can persist on the payment record.

A typical pattern: your checkout or onboarding collects a verification document, your server uploads it with POST /v1/files/{folderId}, PUTs the bytes to the returned presigned URL, and confirms with POST /v1/files/confirm-upload. You then store the returned file id against the Stripe customer or PaymentIntent in your own database — for example, customer.metadata or a row keyed by the Stripe customer ID.

When a reviewer needs to see the document, mint a signed URL on demand (10-minute default) so the PII is never sitting behind a permanent public link. If a dispute later requires evidence, the same stored file can be referenced in your dispute workflow without re-collecting it from the user.

Keep the trust boundary clean: the upload should happen server-side, triggered after Stripe confirms the relevant event (a webhook like identity.verification_session.verified or checkout.session.completed), so the files.link API key never ships to the browser. Files are encrypted at rest and in transit; for PII, default to private and rely on signed URLs rather than public CDN delivery.

Because there is no 16 MB ceiling, you can store full-resolution scans and multi-page document bundles that would bounce off the Stripe Files API, and because delivery has no separate egress surcharge, serving evidence back to a reviewer or to Stripe's dispute form doesn't add a metered bandwidth line. files.link handles storage and access control; it is not a KYC/identity-decisioning product — pair it with Stripe Identity or your own review process for the actual verification logic.

Benefits With No Complexity

Global CDN delivery

Your files are served from 450+ edge locations worldwide.

Edge-cached worldwide

Files are cached close to your users for fast delivery.

Signed-URL security

Private files stay protected with time-limited access.

What You Get

Unlimited files

Upload as many files as you need.

Unlimited storage

There is no storage limit.

Public + Private storage

Private files are fully secured.

CDN ready links

Upload directly to 450+ edge locations worldwide.

Prepaid credits

No subscription. Pay only for the storage and bandwidth you use.

More coming soon

We have plenty of features coming!

How files.link Works

1. Upload

Create a project and upload your first file.

2. Copy

Copy the CDN link.

3. Use Anywhere

Paste and enjoy the blazing speed.

Why Developers Choose files.link

A Better Way to Store & Deliver Files

Stripe Files APIAmazon S3Cloudinaryfiles.link
No 16 MB per-file cap
General-purpose retrieval API
Private files with expiring signed URLs
Permanent links to store on payment record
No separate egress fees
Raw API-key auth (no SDK required)

Calculate Your Needs

Storage

0GB

Egress

0GB

CDN Bandwidth

0GB
Total: $0.000/month

Start Storing Stripe Files

  • Global CDN delivery
  • Edge-cached worldwide
  • Signed-URL security
  • Unlimited files
  • Unlimited storage
  • Public + Private storage
  • No subscription — prepaid credits keep spend predictable
Start Storing Stripe Files

Frequently Asked Questions

Why store verification files outside Stripe's Files API?
The Stripe Files API is scoped to Stripe's own use cases (dispute evidence, Connect verification, branding) and caps files at 16 MB with no general retrieval API or CDN. For your own KYC scans, proof-of-address uploads, or invoice bundles you need storage you control, which files.link provides with no size cap.
How do I link an uploaded file to a Stripe customer or payment?
After uploading via POST /v1/files/{folderId} → PUT presigned URL → POST /v1/files/confirm-upload, store the returned file id against the Stripe customer or PaymentIntent in your own database (e.g. on customer.metadata or a keyed row). Retrieve and mint a signed URL when a reviewer or dispute needs the document.
How do I keep the upload secure and PCI-conscious?
Do the upload server-side, triggered by a Stripe webhook, so the files.link API key never reaches the browser. Store PII-bearing documents as private and serve them through short-lived signed URLs rather than public links. Files are encrypted at rest and in transit.
Is files.link a KYC or identity-verification service?
No. It stores and controls access to the files; the actual identity decisioning is handled by Stripe Identity or your own review process. files.link is the durable, retrievable store those documents live in.
General Questions
Is there a subscription?
No. files.link uses prepaid credits, so storage, bandwidth, and API usage are deducted from your balance as you go. The app explains the payment step before uploads are enabled — no monthly subscription and no per-user fees.
What is files.link?
files.link is a developer-first file platform that makes it simple to store, secure, and deliver files globally. It provides signed URLs, public/private access, and an API-first design so you can integrate file delivery into any app without the usual complexity.
How does billing work?
files.link uses prepaid credits. As you use storage, bandwidth, and API requests, credits are deducted daily. When your balance runs low, we automatically recharge it using your saved card. If an auto-recharge doesn't go through, your files and links stay put — you simply update your payment method or top up manually to keep going. No monthly subscriptions — just simple usage-based pricing.
How secure is my data?
All files are encrypted at rest and in transit. You can use signed URLs for private files, control access with permissions, and rely on enterprise-grade infrastructure for data protection.

Related

files.link
Copyright © 2026
All rights reserved
ContactGuidesGlossaryStatusLegal