Checkout and Downloads for Velveteen Direct Sales
Updated June 12, 2026
After checkout, Velveteen records the purchase, prepares the download zip, and shows the fan a purchase success page. Ready downloads can be fetched by purchase_id or session_id, and recovery is available by email.
The download flow is asynchronous because the zip may need to be generated after payment.
Checkout and delivery records
Stripe session
Created by the sales checkout route with direct_sale metadata.
fan_purchases
Stores purchase identity, release, customer email, zip status, and download metadata.
zip_status
Tracks whether the download zip is ready.
download URL
A signed URL generated once the purchase zip is ready.
Fan-facing flow
- 1
Purchase completes
Stripe redirects to /purchase/success with the checkout session id. - 2
Status is checked
The success page checks download status for the session. - 3
Download appears
When zip_status is ready, Velveteen returns a download URL. - 4
Recovery is available
The recovery route can find ready purchases by email and return recovery links.
Frequently asked questions
Why is my download not ready immediately?+
The zip may still be building. The success page checks status until it is ready.
Can download links be generated later?+
Yes. The download route can return a URL for a ready purchase.
Can a fan recover old downloads?+
Yes, if the purchase is found and the zip is ready.
Does checkout metadata identify the release?+
Yes. The Stripe session metadata includes direct_sale type, releaseId, slug, releaseTitle, and formatType.
Related articles