Skip to main content

Overview

Digital Product Delivery is the Digital Files entitlement type. You upload your files once to a Digital Files entitlement and attach the entitlement to a product. Dodo Payments then delivers presigned download links to every paying customer by email and in the Customer Portal. A Digital Files entitlement supports:
  • Hosted file uploads: Dodo Payments stores your files and serves them through short-lived presigned URLs.
  • External download link: one URL per entitlement that points to files hosted elsewhere, such as Dropbox, Google Drive, or S3.
  • Download instructions: free-form text shown to the customer on their order page and in the delivery email.
You can combine all three on one entitlement. In the dashboard, add at least one file or an external download link.

Key Features

File Upload

Upload files such as PDFs, ZIP archives, images, and videos, up to 500 MiB each. Dodo Payments streams each upload to storage.

Multiple Files

Attach as many files as you need to one entitlement.

External Links

Add an external download link, such as a Dropbox, Google Drive, or signed S3 URL, instead of or in addition to hosted files.

Presigned URLs

Dodo Payments serves hosted files through presigned URLs. Each download URL expires 15 minutes after it’s generated.

Set Up Digital Product Delivery

1

Open Entitlements

Go to Entitlements in the dashboard and click + to create an entitlement.
2

Choose Digital Files

Select Digital Files and enter a Name for the entitlement.
3

Add Files, Links, and Instructions

Configure any combination of these fields:
  • Upload files: upload one or more files. Each upload returns a file_id and adds the file to the entitlement’s digital_file_ids.
  • External Download Link: a URL, starting with http:// or https://, that customers can reach. Dodo Payments delivers it alongside the hosted files.
  • Instructions: free-form text shown to the customer, for example “Unzip and run setup.sh.”
Digital Files entitlement with file upload, external URL, and instructions fields
4

Save the Entitlement

Click Create Entitlement. You can now attach the entitlement to any product.

Attach to Products

Open a product, go to its Entitlements section, and select your Digital Files entitlement. Dodo Payments delivers the entitlement on every successful purchase or active subscription for that product.
Product entitlements panel showing Digital Product Delivery selected

Attaching the Digital Files entitlement to a product alongside other entitlements.


How Delivery Works

Digital Files delivery follows the standard grant lifecycle. Each event affects a Digital Files grant as follows:
Revocation stops Dodo Payments from issuing new download URLs, but it does not invalidate copies a customer has already downloaded. Treat a hosted file as delivered once the customer downloads it.

Customer Experience

Purchase Confirmation

After a successful payment, the customer receives an email with download links and any instructions you configured.
Purchase confirmation email showing download links for digital products

Customer Portal Access

Customers can get download links again from the Customer Portal while their grant is active. The portal generates fresh presigned URLs on demand, so the purchase keeps working after the links in the email expire.
Customer portal interface showing available digital products for download
Customers can download files from the confirmation email or open them at any time from the Customer Portal.

Manage Files Programmatically

Upload a File to an Entitlement

To upload a file, send it as multipart/form-data in a file field. The optional filename field must come before the file part, because Dodo Payments ignores fields sent after it. Without filename, Dodo Payments uses the name of the uploaded file. The response returns the new file_id.

List Grants and Resolve Download URLs

Each Digital Files grant has a digital_product_delivery object with a fresh presigned URL for every file. To read the URLs, list the entitlement’s grants:

Remove a File from an Entitlement

To detach a file, pass its file_id and the entitlement ID:

Important Considerations

  • Presigned URLs expire quickly. Download URLs in grant payloads and webhook events are valid for 15 minutes. Don’t store them. Fetch new URLs when the customer needs to download again.
  • Updating files affects future purchases only. Replacing or removing a file doesn’t change downloads already issued. Each grant keeps the entitlement configuration from when it was created, so past customers can still get the version that was current then.
  • Refunds don’t invalidate downloaded copies. A customer who already downloaded a file keeps that copy. For revocable content, such as license-restricted media or time-limited access, pair Digital Files with License Keys and validate the key at runtime.
  • For sensitive content, prefer external URLs with their own authentication. Presigned URLs from Dodo Payments are short-lived, but anyone with the URL can download the file until it expires. Externally hosted content behind an account login gives you more control.

API Management

Create Entitlement

Create a Digital Files entitlement with an optional external URL and instructions.

Upload File

Upload a file of up to 500 MiB and attach it to the entitlement.

Delete File

Detach a file from the entitlement.

List Grants

List grants and read the resolved download URLs.

Update Entitlement

Update the instructions or external URL, or replace the files.

Revoke Grant

Revoke a customer’s access manually.

Webhooks

Digital file delivery and revocation send the four entitlement_grant.* webhook events. For Digital Files grants, the payload includes a digital_product_delivery object with the resolved file list, the optional instructions, and the optional external_url. Each file carries a presigned download_url, the filename, the content_type, the file_size in bytes, and expires_in, the number of seconds until the URL expires:

Legacy Digital Product Delivery

Products configured with the older digital_product_delivery block on the product itself have been automatically migrated to a Digital Files entitlement. Files uploaded through the legacy product file API are preserved: they stay downloadable and appear in grant payloads alongside newly uploaded files. The entitlement’s digital_files configuration tracks them in the legacy_file_ids list. To add files, change instructions, or replace the external URL, edit the migrated Digital Files entitlement under Entitlements.Product responses still include the legacy product-level fields (digital_product_delivery.external_url, digital_product_delivery.instructions) for backward compatibility, but the entitlement is the source of truth.

Best Practices

  • Treat downloads as one-time deliveries. Customers can share or lose links, so design your product on the assumption that anything they download is theirs to keep.
  • Use instructions to set expectations. For multi-file bundles, add an instructions line that explains what to install first or how to combine the files.
  • Watch the 500 MiB cap. Host larger artifacts, such as multi-GB datasets or video courses, externally, and link them with external_url instead of uploading them.
  • Combine with License Keys for revocable access. To revoke access to in-product features after a refund, pair the Digital Files entitlement with a License Key entitlement and validate the key at runtime.
  • Test the Customer Portal refresh flow. Confirm that a customer can return to the portal a week later and still get a working download link. The portal is the main recovery path when email links expire.
Last modified on September 25, 2026