Reviewed and updated June 2026 — product-type setup, download rules and EU VAT (OSS) handling verified for PrestaShop 1.7, 8 and 9.

A digital product has one property nothing physical can match: zero marginal cost. You create the file once, and every sale after that costs you nothing — no stock to count, no carrier to book, no packaging. The catch is that "just upload a file" hides a surprising amount of PrestaShop-specific setup: the right product type, the download rules that decide whether customers feel trusted or policed, license delivery, and the EU VAT trap that quietly accrues a tax liability if you ignore it. This guide is about selling digital products on PrestaShop — getting them configured, priced, licensed and delivered cleanly from your back office. The harder security question of locking files down so they can't be shared is its own subject, and we send you to the right place for it below.

Step one: the product type, not a checkbox

The first decision happens before you touch a single file. When you create a product in PrestaShop 1.7, 8 or 9, the top of the product page offers a Type selector: Standard product, Pack of products, or Virtual product. A digital download is a Virtual product — and choosing it changes how PrestaShop treats the item everywhere downstream. It tells the platform there is nothing to ship, which is what makes the carrier and delivery steps vanish at checkout and keeps the product out of any weight- or dimension-based shipping calculation.

If you are still on PrestaShop 1.6, the equivalent lived on a tab and was driven by the same idea — a product flagged as virtual with an attached downloadable file. The mechanics moved around between versions, but the underlying concept (a product with no physical fulfilment) has been native to PrestaShop the whole time. The thing to get right is using the real Virtual product type rather than a standard product with shipping zeroed out — only the proper type removes the delivery step and the address-for-shipping logic cleanly.

Attaching the file and setting the download rules

Once the product is virtual, the product page exposes a Virtual product section where you decide how the download behaves. There are only a few fields, but each one is a business decision in disguise:

  • The file. Upload it directly, and PrestaShop stores it in its protected download/ directory — served through PrestaShop rather than exposed as a direct public URL, so the raw path is never publicly guessable. For anything large, your server's PHP upload_max_filesize and post_max_size limits decide the ceiling — a 500 MB course video will fail a default upload long before PrestaShop is the problem, which is why heavy files often need to be raised at the PHP level or handled with a module that delivers from external storage.
  • Number of allowed downloads. How many times the same customer can pull the file. Setting this to 0 means unlimited. A figure like 3–5 is the usual compromise: enough that a customer who switches from laptop to phone, or re-downloads after a disk wipe, never has to email you — low enough that the link isn't an open tap. Set it to 1 and you will generate support tickets.
  • Expiration date and Number of days. The link can stop working on a fixed calendar date, or a set number of days after purchase. For a one-off asset, 30–90 days is generous and still bounded. For anything you sell as "lifetime access," leave it open and lean on the download count instead — an expiry date that surprises a paying customer is a refund request waiting to happen.
  • Filename shown to the customer. What they see in their account, independent of the real file on disk. Use something they'll recognise months later, not final_v3_FINAL.zip.

Under the hood PrestaShop records all of this in the product_download table and serves the actual bytes through its own download controller rather than a direct file URL, so the customer's link is a tokenised request tied to their order — not a path anyone can copy and paste to a friend. That distinction is the whole foundation of digital delivery, and the depth of hardening it — link expiry strategy, abuse limits, watermarking, IP checks — is exactly what the sibling guide digital download management: how to protect and deliver your files is for. Treat this guide as "set up and sell," that one as "lock it down."

Where the download actually appears for the customer

After payment is validated, the download surfaces in two places: the order-confirmation email and the customer's account, under their order detail. The single most common digital-product support request — by a wide margin in our experience running shops — is "where is my download?" So two things are worth checking before you launch:

  • The confirmation email actually contains the link. The download link appears once the order reaches a valid / payment-accepted status, so an order parked in an unpaid or pending state shows the customer nothing. If you sell with bank-wire or any manual payment, the file won't appear until you mark the order paid — set that expectation in the order email so the customer isn't refreshing an empty account page.
  • The account page link is obvious. It lives in the order history, which a first-time buyer may not think to open. A line in the email that says plainly "your download is in this email and in My account → Order history" deflects most of the tickets.

License keys: when the key matters more than the file

Digital Products screen listing seven licensed products with SKUs, license statuses, domain counts, last-check and renewal dates, and per-row actions
The Digital Products screen lists seven licensed products with active, trial, expired, and blocked statuses and domains marked verified, pending, locked, or mismatched.

For software, the downloadable file is often the easy part — the license key is what you're really selling, because the file without a valid key does nothing. PrestaShop's native virtual-product feature delivers a file; it has no built-in concept of issuing a unique key per order. That gap is real, and it's worth understanding the models before you decide how to fill it:

Licensing modelWhat the customer getsGood forThe catch
Pre-generated key poolOne key pulled from a stock of keys you loaded in advanceReselling third-party software with fixed key inventoryYou can run out — the pool is finite stock, like any inventory
On-the-fly generationA unique key created at purchase from a rule or algorithmSoftware you control end to endNeeds logic to generate and validate keys server-side
Tiered keysDifferent key types for personal / commercial / enterpriseSelling the same product at several permission levelsYou must map each product or combination to the right key type

Whichever model you choose, the non-negotiable is timing: the customer should receive the key immediately after payment, in the confirmation email and visible in their account — not after a manual step from you at 9am the next morning. Pre-generated pools also behave like real stock, so if you sell keys you bought in bulk, the reorder-point thinking from when to reorder stock applies to your key inventory just as it does to physical goods — running out mid-promotion stalls sales the same way an empty shelf does.

This is one of the clearest places where the native feature stops and a module earns its keep. Our Digital Revolution module extends PrestaShop's virtual products with automatic license-key delivery, version management so existing buyers can pull an updated file, and download tracking — all configured from the back office rather than commissioned as custom work. The benefit in plain terms: a customer buys at 2am and has their file and a working key in their inbox before you wake up, and you never touch the order. For the full protection and delivery toolkit it builds on, the deep dive is again digital download management.

The EU VAT trap on digital sales (OSS)

This is the part that catches sellers who got everything else right. For digital services sold to EU consumers, VAT is charged at the rate of the customer's country — not yours. A German buyer pays 19%, a French buyer 20%, a Hungarian buyer 27%, on the very same download. This rule covers software and apps, e-books, online courses and webinars, music and video downloads, SaaS, and hosting. If you sell across the EU and apply a single home-country rate, you are under-collecting in some countries and over-collecting in others, and quietly accruing a liability in every member state where you have customers.

What this means concretely in PrestaShop:

  • Tax rules per country. PrestaShop's Tax Rules system (under International → Taxes, then Tax Rules in modern versions) lets you build a single tax-rules group that applies a different rate per country. You attach that group to your virtual products. The platform can do this — but only if you configure the group, the engine won't guess EU digital rates for you.
  • Evidence of customer location. The VAT regime expects at least two non-contradictory pieces of evidence for where the customer is — billing address, IP geolocation, the country of the payment method. Storing and reconciling those is on you (or a module), not something the stock checkout assembles into an audit trail.
  • B2B is different. Sell to a VAT-registered business in another EU country and the reverse-charge mechanism usually means you charge no VAT — if their VAT number validates. Our Automatic EU VAT Checker validates that number at checkout so a genuine B2B order is zero-rated correctly and a bogus number doesn't slip a consumer through as a business.
  • You file through OSS. The One-Stop Shop replaced the old MOSS scheme: you register once in your home country and file a single quarterly return covering all your EU digital sales, instead of registering in every country. PrestaShop won't file it for you, but clean per-country tax data and order records are what make that quarterly return painless instead of a reconstruction project.

None of this is optional if you sell to EU consumers. Get the tax-rules group and the location evidence right at launch — retrofitting correct VAT onto a year of mis-taxed orders is the kind of cleanup nobody enjoys.

Pricing without a cost-of-goods floor

Physical pricing starts from what the item cost you. Digital pricing has no such floor — the marginal cost is zero — which frees you but also removes the obvious anchor. A few models that work on PrestaShop's standard price and specific-price tools:

  • Value-based. Price against what the product saves or earns the buyer, not what it cost you to make. A template that saves a designer ten hours is worth far more than your afternoon building it.
  • Tiered by permission. Personal, commercial, extended — each tier adds rights, not features. The same file, three prices, three license types. This pairs directly with the tiered-key model above.
  • Bundles. Sell related assets together below the sum of their parts. PrestaShop's Pack product type (the second option in that same Type selector) is built for exactly this — a pack of virtual products delivers several downloads under one purchase.
  • Subscriptions. Recurring access or update entitlements give you predictable revenue instead of one-off spikes, though recurring billing on PrestaShop generally needs a dedicated module rather than core.

Mixed carts: when one order has a download and a parcel

Plenty of stores sell both — a physical book with a PDF companion, merchandise alongside a digital course. PrestaShop handles the common case automatically because the cart, not the product, decides what the checkout shows:

  • A cart of only virtual products skips the carrier and delivery step entirely — there's nothing to ship, so the customer isn't asked for a shipping method.
  • A mixed cart keeps the delivery step for the physical items and still makes the digital ones downloadable as soon as the order is paid.

Where it gets fiddly is a single product that is genuinely both physical and digital, or fulfilment rules that depend on order status. That's really an order-operations question, and the workflows that keep mixed and digital orders moving cleanly are covered in order management in PrestaShop. If you need data out of those orders for reconciliation or accounting, CSV exports for orders and invoices covers pulling it out.

Updates and versioning earn the repeat sale

Unlike a physical product, a digital one can keep improving after the sale — and that's a selling point, not a chore. When you fix a bug, refine a template or add a course module:

  • Replace the file on the product so new buyers get the current version.
  • Decide whether existing customers get the update — replacing the product file changes what future delivery serves, but exactly what a past buyer pulls on re-download depends on your PrestaShop version and how that order's download record was stored, and core has no proper workflow for notifying or re-delivering an updated file to people who already bought. A module like Digital Revolution makes "notify and re-deliver to past buyers" a deliberate, reliable action rather than something you hope the version happens to do.
  • Keep a short changelog so customers can see what changed and why the update is worth pulling.

A product that visibly improves over time justifies its price and seeds the next purchase — the same loyalty mechanic that makes good order-confirmation resends pay off: small, reliable touches the customer genuinely appreciates.

Frequently asked questions

How do I sell a digital product in PrestaShop?

Create the product and set its Type to Virtual product at the top of the product page (PS 1.7/8/9). That tells PrestaShop there's nothing to ship, so the carrier and delivery steps vanish at checkout. Then open the Virtual product section, upload the file (PrestaShop stores it in a protected download/ directory), and set the download count, expiry and customer-facing filename. Use the real Virtual product type — not a standard product with shipping zeroed out — or the delivery step won't disappear cleanly.

How does the customer get their file after paying?

The download appears in two places once the order reaches a valid / payment-accepted status: the order-confirmation email and the customer's account, under their order detail. If you sell by bank wire or any manual payment, the link won't show until you mark the order paid — set that expectation in the email so the customer isn't refreshing an empty page. "Where is my download?" is the number-one digital support request, so a plain line pointing to both places deflects most tickets.

Can PrestaShop deliver licence keys automatically?

Not natively — the virtual-product feature delivers a file, with no concept of issuing a unique key per order. For software, the key is often what you're really selling, since the file does nothing without it. Automatic per-order key delivery (pre-generated pool, on-the-fly generation, or tiered keys) in the same breath as the download is exactly what Digital Revolution adds, alongside version management and download tracking.

How does EU VAT work on digital products?

For digital services sold to EU consumers, VAT is charged at the customer's country rate, not yours — a German buyer pays 19%, a Hungarian buyer 27%, on the same download. In PrestaShop you build a tax-rules group (under International → Taxes → Tax Rules) that applies a different rate per country and attach it to your virtual products; the engine won't guess the rates for you. You then file a single quarterly OSS return covering all EU sales. B2B is different: a validated EU VAT number reverse-charges to zero — our Automatic EU VAT Checker validates it at checkout.

What happens with a cart that mixes a download and a physical item?

The cart, not the product, decides what checkout shows. A cart of only virtual products skips the carrier/delivery step entirely; a mixed cart keeps delivery for the physical items and still makes the digital ones downloadable as soon as the order is paid. The fiddly case is a single product that's genuinely both physical and digital — that's an order-operations question covered in order management in PrestaShop.

The short version

Selling digital products well on PrestaShop is mostly about getting four things right from the back office: pick the real Virtual product type so shipping disappears cleanly; set download counts and expiry that trust the customer without leaving the tap wide open; deliver any license key the instant payment clears; and configure per-country EU VAT before the liability builds rather than after. The platform gives you the native foundation for all of it, and a module fills the two gaps it leaves — automatic key delivery and serious file protection. Set it up once, and every sale after that is pure margin landing while you sleep.

Tags: PrestaShop SEO
Share this post:
David Miller

David Miller

Founder, mypresta.rocks

David Miller is a PrestaShop specialist with over a decade of hands-on experience and the founder of mypresta.rocks, a software studio in Tychy, Poland. He builds and maintains a catalogue of 152 PrestaShop modules — including 21 "Revolution" suites spanning SEO, checkout, security, performance, marketing, search, support, and warehouse operations — that improve real stores every day, all tested against PrestaShop 1.7.8, 8.x, and 9.x. He also acts as caretaker for production stores turning over millions in annual sales, so his work is judged on live revenue, not demos. His experience runs the full breadth of ecommerce — performance, security, SEO, and marketing — and reaches beyond PrestaShop to WooCommerce, Shopify, and custom-built systems. On the blog he writes about the code-aware side of PrestaShop: what the platform really does under the hood, what breaks in production, and which fixes hold up.

Enjoyed this article?

Get our latest tips, guides and module updates delivered to your inbox.

Comments

No comments yet. Be the first!

Be the first to ask a question or share useful feedback.

Loading...
Back to top