Freeframe

How to Sell Gift Vouchers on Your Website

Sell Christmas gift vouchers from a static site with a Stripe payment link, collect the recipient's name and message, send the voucher and track redemptions.

· 7 min read

The quickest way to sell gift vouchers from a small website is a Stripe payment link: create one product per voucher value (or one where the buyer chooses the amount), add custom fields for the recipient's name and message, send buyers to a thank-you page on your site, then email each voucher yourself and keep a simple register of codes. It takes an afternoon, needs no shop software and works on a plain HTML, Astro, Next.js or WordPress site. Do it now: vouchers are a last-minute Christmas present, and a page that's been live for a few weeks is easier for customers to find than one added on 20 December.

What you need#

  • A Stripe account. At the time of writing Stripe's UK pricing for standard UK cards is 1.5% + 20p per payment, with no monthly fee, so a £50 voucher costs you 95p.
  • A page on your site for vouchers, such as /vouchers. The Hearth country inn template already has one; on any other template, copy an existing content page.
  • A voucher design: a PDF or image with your logo, a space for the recipient's name, the value, a code and the expiry date.
  • Short terms: how long the voucher lasts, what it can be spent on, whether it can be used in part, and that it isn't exchangeable for cash.

Step 1: Decide what kind of voucher you're selling#

There are two common kinds, and the choice affects both the checkout and your VAT.

  • A fixed amount of money ("£50 to spend"), which the recipient can use on anything you sell.
  • A specific service ("a two-course dinner for two" or "a 60-minute massage"), which is easier to buy as a present and often sells better.

If you're VAT-registered, read HMRC's guidance on vouchers in VAT Notice 700/7. In short, a single-purpose voucher is one where the VAT liability and place of supply are known when you sell it, and VAT is accounted for at the point of sale. Any other voucher is a multi-purpose voucher, and VAT is due when it's spent rather than when it's sold. A money voucher at a business that sells both standard-rated and zero-rated goods is the classic multi-purpose case. If you're unsure which applies to you, ask your accountant before you start selling.

Step 2: Create the products in Stripe#

In the Stripe Dashboard, go to Product catalog and click Add product. For fixed values, make one product per voucher, such as "Gift voucher, £25", "Gift voucher, £50" and "Gift voucher, £100", each with a one-off price.

To let the buyer type their own amount, Stripe's pay-what-you-want guide explains the steps: open More pricing options, choose One-off, then pick Customer chooses price as the pricing model. You can add a suggested price and set minimum and maximum limits, for example £10 to £500. The guide lists the catches: a customer-chooses-price link can only hold that one item with a quantity of 1, and it can't use promotion codes.

From each product, create a payment link. Stripe's Payment Links documentation covers the basics; the options worth setting for vouchers are in the customisation guide:

  • Add custom fields. Add a text field labelled "Recipient's name" and another labelled "Message for the card". Text fields take up to 255 characters, which is enough for a short message. A dropdown field (up to 10 options in the Dashboard) is handy for "Send the voucher to me" or "Send it straight to the recipient".
  • Collect customer names so you know who bought it.
  • Let customers adjust quantity on fixed-value vouchers, so someone can buy three £25 vouchers at once.
  • Require agreement to your terms. Once you've set a terms of service URL in Stripe's Public details settings, you can make buyers tick a box accepting it. Point it at your voucher terms.

Stripe's guide also warns not to use custom fields for sensitive personal data, so ask for a name and a message, not a date of birth or an address you don't need.

Step 4: Send buyers back to your website#

By default the buyer sees Stripe's own thank-you message after paying. It's better to send them back to your site so they know what happens next. In the payment link's After the payment settings, under Confirmation page, you can either write a custom message or redirect to a URL of your choice, as described in Stripe's after-payment guide.

Make a page such as /vouchers/thank-you that says, plainly:

  • that the payment went through and Stripe has emailed a receipt;
  • when the voucher will arrive ("within one working day, by email") and who it goes to;
  • how to get in touch if it hasn't arrived.

Add <meta name="robots" content="noindex"> to that page so it doesn't turn up in search results, and leave it out of your sitemap.

Step 5: Put the vouchers on your page#

The simplest option is a normal link styled as a button. Copy the payment link from Stripe and use it like any other link:

html
<a
  href="https://buy.stripe.com/your-link-id"
  class="inline-flex rounded-full bg-brand-600 px-6 py-3 font-semibold text-white hover:bg-brand-700"
>
  Buy a £50 voucher
</a>

This works the same in every Freeframe stack, including WordPress, where you can paste the address into a Buttons block. If you'd like a Stripe-styled button or card instead, open the link in Stripe and click Buy button to get an embed code: a <script> tag that loads https://js.stripe.com/v3/buy-button.js and a <stripe-buy-button> element. Stripe's buy button guide notes that if your site has a Content Security Policy, it needs to allow https://js.stripe.com in both script-src and frame-src. A plain link needs nothing extra, which is one reason to start there.

On the page itself, show each voucher with its value, what it's good for, how it's delivered and how long it lasts. A line of terms under the buttons ("Valid for 12 months. Can be used in part. Not exchangeable for cash.") answers most questions before they're asked. If your site's contact form works, link to it for anything unusual, such as a voucher for a specific room or treatment.

Step 6: Send each voucher and keep a register#

Payment links don't create voucher codes, so you send each voucher yourself. To get an email for every sale, Stripe's after-payment guide says to update the notification preferences in your Personal details settings; otherwise you only get an email after your first payment. Each payment's details page in the Dashboard shows the custom fields the buyer filled in.

For each sale:

  1. Give the voucher a code that's hard to guess, such as HRTH-7KQ2-M9XD, rather than VOUCHER1, VOUCHER2.
  2. Add the recipient's name, the value, the code and the expiry date to your design, and save it as a PDF.
  3. Email it to the buyer or the recipient, as they asked.
  4. Record it in a spreadsheet: code, value, buyer, recipient, date sold, Stripe payment ID, expiry date, and a column for each time it's used and the balance left.

The register is what you check when someone turns up with a voucher, and it's what stops the same code being spent twice. If sales take off, the after-payment guide also mentions connecting Stripe to tools such as Zapier to add each sale to a spreadsheet automatically.

Step 7: Refunds and unused vouchers#

If a buyer changes their mind, refund the payment from the Payments page in Stripe: click the menu next to the payment, choose Refund payment, and mark the voucher as cancelled in your register. Stripe's after-payment guide says refunds typically take 5 to 10 business days to reach the customer's bank. For VAT, HMRC's notice says no adjustment can be made for an unused single-purpose voucher unless a refund is made, and an unused multi-purpose voucher has no VAT to account for at all.

Whatever you decide about expiry, put it in your terms, on the voucher itself and on the website, and stick to it.

Before Christmas: a quick checklist#

  • Test the whole journey in Stripe's test mode: buy a voucher, fill in the fields, land on the thank-you page.
  • Buy one real voucher with your own card, then refund it.
  • Link to the vouchers page from your home page and main navigation for November and December.
  • Put the last date for sending vouchers in time for Christmas on the page, and an out-of-office line for the days you won't be checking email. Our post on holiday opening hours covers the rest of the season's updates.
  • Add the page to your sitemap and ask Google to index it in Search Console, as described in our SEO docs.

When you want something more automatic, with codes generated and balances tracked for you, that's the point to look at a full online shop or your card terminal provider's own gift card service. For most small businesses, a payment link, a thank-you page and a well-kept spreadsheet will carry the whole Christmas rush.

Templates for this

Keep reading