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.
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_idand adds the file to the entitlement’sdigital_file_ids. - External Download Link: a URL, starting with
http://orhttps://, 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.”

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.
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:Customer Experience
Purchase Confirmation
After a successful payment, the customer receives an email with download links and any instructions you configured.
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.
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 asmultipart/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 adigital_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 itsfile_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 fourentitlement_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
instructionsline 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_urlinstead 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.