You just landed three new brand clients for Q1 2026, each campaign lives in the same monorepo, and every single stock asset you pull needs a licence certificate filed somewhere retrievable. The problem is that Freepik, Adobe Stock, and Envato each bury licence proof in completely different corners of their dashboards. This guide walks through a concrete vault structure, naming conventions, and automation hooks that keep your licence records audit-ready without eating billable hours.

Photo by Molnár Tamás Photography™ from Pexels

TL;DR:
  • Create a dedicated /licences directory at the root of your monorepo, mirroring your project folder structure so every campaign asset maps to its proof file.
  • Use a consistent naming pattern like {platform}-{asset-id}-{date}.pdf to make searching instant.
  • Automate bulk downloads with a tool like licencedownloader.com instead of clicking through five different platform dashboards.
  • Run a quarterly audit script that flags any asset in your design files missing a matching licence certificate.

Why licence vaults matter now

Stock platforms tightened enforcement throughout 2025. Freepik updated its licence agreement in March 2025, Adobe Stock rolled out stricter content-ID matching for enterprise accounts, and Envato Elements now requires active subscription proof at the time of download, not just at the time of use. For freelancers juggling multiple clients inside a single monorepo, a missing certificate can mean a takedown notice on a live campaign.

0%
Freelancers lacking organized licence records

That number comes from informal polls in design communities on Reddit and Dribbble throughout late 2025. Two out of three freelancers store licence PDFs in their email inbox or not at all. When a client's legal team asks for proof six months after delivery, the scramble begins.

A licence vault is simply a structured directory (physical or cloud-synced) where every stock asset purchase maps to a downloadable certificate. In a monorepo setup, where multiple campaign projects share one repository, the vault sits at the repo root and uses path conventions to link each certificate to the project that consumed the asset.

Key takeaway: A licence vault is not a nice-to-have filing habit. It is the single fastest way to respond to a copyright dispute or client audit without losing billable time.

Common mistakes that cost time

graphic designer workspace
Photo by Jakub Zerdzicki from Pexels

Here are the patterns I see freelancers repeat, and each one creates real risk:

  1. Saving certificates to Downloads and forgetting them. Your browser's download folder is not a vault. One OS update or disk cleanup and the PDFs vanish.
  2. Mixing licence files into design project folders. This works until you have 14 campaigns in one monorepo. Searching for a specific Shutterstock certificate inside nested /assets/images/hero/ paths is painful.
  3. Relying on platform dashboards as the archive. Envato Elements only shows licence history while your subscription is active. Cancel or switch plans and that history can become inaccessible.
  4. No naming convention. Files named licence.pdf, licence(1).pdf, licence(2).pdf tell you nothing. You need the platform name, asset ID, and download date baked into the filename.
  5. Skipping free assets. Freepik free-tier images still require attribution and still come with a licence. Skipping the certificate because "it was free" does not protect you.
Warning: If you cancel an Envato Elements subscription, your licence history page may become restricted. Always download certificates before canceling or downgrading.
Freelancers who back up licence certificates outside the platform
0%

Only about 30% of freelancers keep an independent backup. The rest trust the platform to always be there. That trust breaks the moment you switch providers or a platform restructures its account pages.

Step-by-step vault structure

person using computer office
Photo by cottonbro studio from Pexels

Here is the folder layout I recommend for a monorepo that holds multiple 2026 campaign projects:

/monorepo-root
  /campaigns
    /client-a-spring-2026
    /client-b-product-launch
    /client-c-rebrand
  /licences
    /freepik
    /adobe-stock
    /envato
    /shutterstock
    /istock
  /scripts
    audit-licences.sh

Each subfolder under /licences holds certificates from that platform. The filename pattern is:

{platform}-{asset-id}-{YYYY-MM-DD}.pdf

Example: freepik-28374651-2026-01-15.pdf

Then, inside each campaign folder, you keep a LICENCE_MAP.md file that links asset usage to the certificate path:

Asset usedPlatformAsset IDCertificate path
hero-banner.jpgFreepik28374651/licences/freepik/freepik-28374651-2026-01-15.pdf
icon-set.svgEnvato9182736/licences/envato/envato-9182736-2026-01-20.pdf

This mapping file is the glue. When a client asks "prove you licensed that hero image," you open the campaign's LICENCE_MAP.md, find the row, and hand over the PDF. Total time: under 30 seconds.

Freelancer licence vault setup for 2026 campaigns (in monorepo setups) process
Figure 1: Freelancer licence vault setup for 2026 campaigns (in monorepo setups) at a glance.

The process diagram above shows the flow: Download Asset, Download Certificate, Rename with Convention, File in Vault, Update LICENCE_MAP. Five steps, repeatable for every asset.

Tools and workflows that help

freelance designer working laptop
Photo by George Milton from Pexels

Manually downloading certificates from five platforms is the bottleneck. Each platform has a different UI flow: Freepik buries it under "My Downloads," Adobe Stock puts it in the licence history tab, Shutterstock requires you to open each image's detail page. Multiply that by 40 assets per campaign and you are looking at hours of clicking.

Licence Downloader (licencedownloader.com) exists specifically for this. It connects to your accounts on Freepik, Shutterstock, Adobe Stock, Envato, iStock, and Canva, then bulk-downloads every licence certificate into a local folder. You point it at your /licences directory, and it handles the rest. The naming convention is configurable, so you can match the {platform}-{asset-id}-{date}.pdf pattern described above.

"The same toggle will also be available on the License Vault settings page, and you can turn it on or off at any time during your trial."
>, Getting started

Beyond the download step, a few other tools slot into this workflow:

  • Git hooks (pre-commit): A simple shell script that checks whether every image file added in a commit has a corresponding entry in LICENCE_MAP.md. If not, the commit fails with a reminder.
  • Cloud sync (Dropbox, Google Drive, or Syncthing): Mirror the /licences folder to cloud storage so you have an off-repo backup. If the monorepo gets wiped, the certificates survive.
  • Quarterly audit script: A bash or Python script that reads all LICENCE_MAP.md files, checks that every referenced PDF exists in /licences, and flags orphaned entries or missing files.
Manual DownloadBulk Download (Licence Downloader)
3-5 minutes per certificateSeconds per certificate
Different UI per platformOne unified interface
Easy to forget assetsCatches all downloads automatically
No naming consistencyConfigurable naming pattern
No audit trailExport log included
0x
Time saved with bulk licence downloads

Freelancers who switched from manual certificate downloads to a bulk tool reported saving roughly 12 times the effort per campaign. On a 50-asset campaign, that translates from about 3 hours of clicking to around 15 minutes of setup and verification.

Here is an example dashboard showing what a typical freelancer's licence vault looks like after setting up three 2026 campaigns:

Licence Vault, 2026 Campaigns

Total certificates filed127
Platforms covered5
Campaigns mapped3
Orphaned assets (no cert)2
Coverage by platform
Freepik48
Adobe Stock35
Envato22
Shutterstock14
iStock8

The two orphaned assets flagged in red are exactly the kind of thing the quarterly audit script catches. Fix those before the campaign goes live and you eliminate the risk entirely.

Keeping the vault alive long-term

Setting up the vault takes an afternoon. Keeping it accurate takes discipline. Three habits make the difference:

  1. Download the certificate the same day you download the asset. Do not batch it for "later." Later never comes.
  2. Update LICENCE_MAP.md before closing the design file. Treat it like saving your work. The mapping entry is part of the deliverable.
  3. Run the audit script on the first Monday of each quarter. Block 30 minutes on your calendar. The script does the heavy lifting; you just review the output and fix gaps.
Pro tip: Add a licence-check target to your monorepo's Makefile or package.json scripts. Running make licence-check before any client delivery ensures nothing slips through.
Audit pass rate after 2 quarters of vault discipline
0%

Freelancers who stick with this system for two quarters typically hit a 95% audit pass rate, meaning only a handful of assets per campaign need manual follow-up. The remaining 5% are usually free-tier downloads where the platform did not generate a formal PDF, and a screenshot of the licence terms page fills the gap.

|

Freelancer Licence Vault Setup Checklist

Your progress is saved automatically in your browser.

FAQ

Frequently Asked Questions

Freelance designers and developers who manage multiple client campaigns inside a single monorepo and purchase stock assets from platforms like Freepik, Adobe Stock, Envato, Shutterstock, iStock, or Canva. If you deliver creative work to clients and need to prove your assets are properly licensed, this setup applies to you.
Expect about two to three hours for the first-time setup. That includes creating the folder structure, writing the naming convention documentation, setting up the LICENCE_MAP.md template, and configuring a bulk download tool. After the initial setup, adding a new campaign takes under 15 minutes.
Start with the folder structure. Create the /licences directory and its platform subfolders. Then pick one existing campaign and retroactively file its certificates. This gives you a working reference before you scale the system to new projects.
Not strictly. You can download certificates manually from each platform dashboard. But once you cross about 20 assets per campaign, the manual approach eats significant time. A bulk tool like licencedownloader.com pays for itself in the first campaign by reclaiming hours you would spend clicking through platform UIs.
Some platforms (especially free tiers) only show licence terms on a web page without a dedicated PDF export. In those cases, take a full-page screenshot of the licence terms page, save it as a PNG or PDF, and file it in the vault with the same naming convention. The goal is proof, not a specific file format.
Yes. The vault structure works the same way. Instead of a single /licences folder at the monorepo root, you create a standalone licence-vault repository and reference it from each project repo via git submodule or a simple symlink. The LICENCE_MAP.md files still live inside each project and point to paths in the shared vault.

Additional Resources

What does your current licence filing system look like, and what is the biggest gap you want to close before your 2026 campaigns launch?