Free for Craft CMS 5 · Commerce optional
Everything after the sale
Craft's digital-products plugin gives Commerce a purchasable and stops there. Digits handles what comes after the sale: links that expire and can be taken back, downloads that are counted, files with versions, keys your software can check, an account page for customers, and refunds that really do remove access.
One verdict, everywhere
The helper that draws your button asks the same question as the endpoint that hands over the file. A template can't offer a download that the server will refuse.
{% set download = entry.downloads.one() %}
{% set verdict = craft.digits.can(download) %}
{% if verdict.allowed %}
{% for link in craft.digits.linksFor(download) %}
<a href="{{ link.url }}">{{ link.file.name }} ({{ link.file.sizeLabel }})</a>
{% endfor %}
{% else %}
{# expired, revoked, limit-reached, update-gated… #}
<p>{{ verdict.message }}</p>
{% endif %}
Features
Built on Craft elements rather than post meta, and modelled on the features Easy Digital Downloads users rely on.
Links you can take back
Every download link is minted per click and stored as a row, not a signed URL. That means a refund can kill the link that's already sitting in somebody's inbox.
- Only a hash of the token is stored
- Every redemption is logged, refusals included
Limits that hold under load
Download and seat limits are a single conditional UPDATE, so two tabs clicking at the same moment can't both spend the last download.
Versions and releases
A release can hold several files and carries a real release date, which is what "your licence covers updates until March" is measured against.
- Release notices to licence holders, safe to re-run
- Exactly one current version, switched inside a transaction
Licence keys and seats
Keys that people can read out over the phone, seats keyed on whatever your software calls itself, and an activation API with machine-readable error codes. Reinstalling doesn't use up a seat.
A customer portal
Signed-in customers and guests (by emailed link) see their files, versions, keys, seats and invoices on one page. The templates can be overridden in your own site.
EU VAT, documented honestly
Digits works out the place-of-supply treatment and prints the reverse-charge wording the directive requires. It also records what Commerce actually charged and flags any gap. It never quietly restates the charge.
- Gapless invoice numbers and credit notes
- The quarterly OSS return, on screen and as CSV
Digits in the control panel
Real screens from a Craft 5 install: the downloads index, every licence at a glance, and one licence with its seats and history.
Screenshots from a live install, not mockups.
Frequently Asked Questions
The questions worth answering before you install it.
Lite is, and it's a working download shop rather than a trial. Selling files, expiring links, download limits, versions and refund revocation are all included, with no cap on downloads or buyers. Pro is a one-off $129 with a $99/year renewal. It adds licence keys, activation seats, the customer portal, release notices, update gating and VAT invoicing.
No. Gating a file behind a user group, issuing a licence by hand, expiring a link and counting a delivery all work in plain Craft. You only need Commerce to sell a download and to raise VAT invoices.
That plugin gives Commerce a digital purchasable. Digits handles what happens after the sale: expiring links, counted downloads, versioned files, licence keys, a customer portal, refunds that revoke access, and VAT paperwork.
Because a signed URL can't be taken back. When a customer is refunded, the link emailed on Tuesday has to stop working on Thursday, and only a row can do that. A row also records when the link was used and from where.
You choose: revoke on a full refund, on any refund, or never. When a licence is revoked, its download links are deleted, including the ones already in the customer's inbox.
No. Your tax engine decides what the customer pays. Digits works out what the treatment should have been, prints it with the required wording, records what was actually charged, and shows you where the two disagree. It won't claim the reverse charge on a format check alone.
Yes. One licence can cover many downloads. Where their rules disagree, the strictest limit wins and the longest access window wins.
Craft CMS 5.3+ and PHP 8.2+. Craft Commerce 5.0+ is optional.
Start free, upgrade when you ship software
Lite is free and sells, protects and counts your files with no caps. Pro is $129 with a $99/year renewal, and adds licence keys, seats, the portal and EU VAT invoicing.