Finance

Checkout and Downloads for Velveteen Direct Sales

Updated June 12, 2026

The short answer

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. 1

    Purchase completes

    Stripe redirects to /purchase/success with the checkout session id.
  2. 2

    Status is checked

    The success page checks download status for the session.
  3. 3

    Download appears

    When zip_status is ready, Velveteen returns a download URL.
  4. 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