WooCommerce gift card plugins all sell the same headline feature — a card with a code on it — and then differ enormously in the three places that actually cost you money: whether the code arrives in the recipient’s inbox, whether you can get your outstanding balances back out again, and whether the expiry setting the plugin offers is legal to use on a US customer. Two of those are never mentioned on a pricing page.
Below: what WooCommerce gives you free before you buy anything, the seven criteria I judged each option against, a table of versions, install counts and prices checked on 1 October 2026 against WooCommerce 11.1.2 on WordPress 7.1.2, the federal rule that makes most expiry settings unusable, and the tax and accounting side that store owners discover in January.
A gift card is a liability, not a sale
Start here, because it changes which features matter. When someone pays you $100 for a gift card, you have taken $100 of cash and promised $100 of goods. The revenue happens later, when the card is redeemed. Until then the balance sits on your books as deferred revenue — money you are holding on someone else’s behalf.
That has three practical consequences for which plugin you pick. You need a running total of outstanding balances, not just a list of codes. You need to be able to export that total and the individual cards behind it, because a plugin you cannot export from is a plugin you can never leave. And you need to think about what happens to cards nobody ever redeems, which is a question with a different answer in every state.
Not tax or legal advice
What WooCommerce does for free
There is no gift card feature in WooCommerce core. There is, however, a coupon system, and for a store selling a handful of cards a year that is genuinely enough.
Create a product called Gift Card, set it to a fixed price, and when somebody buys one you manually create a coupon under Marketing > Coupons with a Fixed cart discount of that amount, a usage limit of one, and a random code. Email it to the recipient. That is a gift card. It took you four minutes.
Where it falls apart is at volume and at partial redemption. A fixed cart discount coupon is spent the moment it is used, even on a $12 order against a $100 card — core has no concept of a remaining balance, so your customer loses $88 and you get an email about it. There is also no automation: every card is a manual coupon, and on 20 December you will be making forty of them by hand.
So the free baseline is real but narrow. Under roughly one card a week, and if partial redemption never comes up, use coupons and spend nothing. Above that, the balance-tracking is the thing you are buying.
The seven criteria I judged each WooCommerce gift card plugin on
Stated up front so you can reweight them if your store looks nothing like the one I assumed: a US business, digital cards only, selling somewhere between 10 and 500 a year with a heavy November and December, and one person who configures plugins between other jobs.
- Does the free tier sell and redeem a card end to end? Not “has a free version” — can a customer buy a card, can the recipient receive a code, and can that code be spent at checkout with a balance left over. Several free tiers stop one step short of that and the step they stop at is redemption.
- Block checkout and HPOS, stated explicitly. Gift card redemption needs a field on the checkout, and the Cart and Checkout blocks need that field integrated through the Store API. A plugin written only for the classic shortcode checkout shows nothing on a block checkout and warns you about nothing.
- Partial redemption and remaining balance. The one thing coupons cannot do, and therefore the main reason to be here at all.
- Expiry that can be switched off. See the next section. For US sales an expiry date is a compliance question, not a convenience, and a plugin that forces one on you is a problem.
- Liability reporting. One screen showing total outstanding balance. Your accountant will ask for this number and you do not want to be adding up a CSV by hand in April.
- Export of outstanding codes. The exit route. Cards live in plugin-owned database tables, and a plugin without CSV export locks every unredeemed dollar inside itself.
- Renewal price, not first-year price. Promotional first years are standard in this category. Budget what it costs in year two.
The expiry trap: five years, federally
Nearly every plugin in this category advertises configurable expiration dates, usually with a default of six or twelve months, and for a US store that default is the single most dangerous setting on the screen.
Under the federal rules the FTC describes for gift cards and gift certificates, money on a gift card cannot expire for at least five years from the date it was purchased, or from the last date money was added to it. Inactivity or dormancy fees are restricted too: no more than one per month, and only after twelve consecutive months of non-use. Any expiry date and any fee has to be disclosed clearly on the card or its packaging — which, for a digital card, means on the card email and the product page.
Several states go further than the federal floor, and a few effectively prohibit expiry on retail gift certificates altogether. The federal rule is a minimum, not a safe harbour.
Check the default before your first sale, not after
Practically, this makes criterion four simple. A plugin where expiry is optional and can be set to never is fine. A plugin where expiry is mandatory with a maximum of 24 months is not usable for US sales, whatever else it does well.
WooCommerce gift card plugins compared
Versions, install counts and ratings come from WordPress.org and the vendors’ own listings; prices come from each vendor’s pricing page. All checked on 1 October 2026, against WooCommerce 11.1.2 and WordPress 7.1.2. On a narrow screen this table stacks into one card per option rather than scrolling sideways.
| Option | What you get for nothing | Paid price (1 Oct 2026) | Where it falls short |
|---|---|---|---|
| Core coupons (no plugin) | All of it. A fixed cart discount coupon with a usage limit of one is a gift card for the common case, and WooCommerce 11.1.2 has it built in | Free | No partial redemption — a $100 coupon spent on a $12 order loses the customer $88 and you the goodwill. No balance anywhere, no automated delivery, no liability total, and every card is created by hand. Fine under about one card a week; indefensible in December |
| PW WooCommerce Gift Cards (Pimwick) | v2.52, 20,000+ installs, 4.7/5 across 194 reviews, requires PHP 7.4+, tested to WP 7.1.2, updated two days ago. Customer picks an amount, enters a recipient email and a message; the code goes out through WooCommerce’s own email templates with a direct redemption link; partial redemption with a running balance; redemption at checkout or by link; works for guests because cards are not tied to an account; one-click gift card product creation; an admin dashboard showing total gift card liability; stated support for the Cart and Checkout blocks and for HPOS; 11 languages | Pro v3.95, released 29 September 2026. $99/yr for 1 site, $129/yr for 5 sites, auto-renewing. Adds five designed email templates, QR codes, a balance-check page, redemption restrictions by product or category, bonus gift cards, scheduled delivery, PDF export, physical card import and a REST API | Pimwick states plainly that renewals are not refundable, and advertises no money-back guarantee on the initial purchase either — the only option in this table with no stated refund window, so evaluate it entirely on the free tier. The free card design is WooCommerce’s default transactional email and looks like it; if you want something that feels like a gift, that is the $99 upgrade. Balance is applied after tax, which is the correct behaviour but differs from how some stores assume it works |
| WooCommerce Gift Cards (official, Woo Marketplace) | Nothing — paid only | $79/yr on the one-year plan, or $126.40/yr on the two-year plan. v2.7.7, last updated 18 September 2026. 4.2/5 across 51 verified reviews, 30-day money-back guarantee. Simple and variable gift card products, scheduled delivery dates, multiple recipients, expiring codes with a configurable validity period, a transaction log you can search, CSV import and export, issued/used/expired reporting, and account balances applied at checkout. Requires WooCommerce 10.6+, WordPress 6.8+, PHP 7.4+; blocks and HPOS supported | You are paying $79/yr for something the free PW plugin already does, and the honest reason to do it is support and first-party upgrade safety rather than features. 51 reviews at 4.2/5 is a thinner evidence base than PW’s 194 at 4.7. Expiry is on the feature list, so set the validity period deliberately — the five-year floor applies to you, not to the extension |
| Ultimate Gift Cards for WooCommerce (WP Swings) | v3.2.12, 7,000+ installs, 4.7/5 across 243 reviews, requires WP 6.7+ and PHP 7.4+, tested to WP 7.1.2, updated two weeks ago. Five pricing models including user-defined and range pricing, email templates with holiday presets, a balance checker, coupon code generation, tax handling, product and category exclusions, per-user daily redemption limits, a cap on what percentage of an order a card may pay, a gifting portal for in-store redemption (2 employees and 20 transactions a day in the free tier), WPML and multisite | Pro v4.2.12. $89/yr for 1 site, $169/yr for 5, $329/yr for 10, with two-year options and a 30-day money-back guarantee. Adds uploadable card designs, Twilio SMS delivery, QR and barcode redemption, scheduled delivery, PDF templates, CSV import and export, an unlimited gifting portal, group gifting and discounts on gift card products | The most configurable free tier here and the one with the most settings to get wrong — the percentage-of-order cap in particular is a footgun if you forget you set it. More importantly, the Pro product page states compatibility with WordPress 7.0.x and WooCommerce 11.0.x while 7.1.2 and 11.1.2 are current. One minor version behind is not abandonment, but confirm it before you upgrade your store. The in-store gifting portal is unusual and genuinely useful if you have a counter as well as a site |
| YITH WooCommerce Gift Cards | v4.37.0, released 24 August 2026, 10,000+ installs, requires WP 6.9+ and PHP 8.0+, tested to WP 7.1.2. Unlimited virtual and physical gift cards with custom amounts, an image gallery for card designs, personalised messages, code entry at checkout, and an admin dashboard for balances and orders | Premium adds bulk generation, CSV import and export, expiration management, stock control, QR codes, multiple recipients, scheduled delivery, custom amounts, PDF attachments, sender notifications and product-linked cards, plus integrations with YITH Multi Vendor and Smart Coupons. 30-day money-back guarantee. YITH does not print the licence price on the plugin page, so get the current figure from their store before you shortlist it — I am not quoting one I could not verify | Read the rating properly before anything else: 3.3/5 across 52 reviews, of which 18 are one-star and none are four-star. That is not a middling plugin, it is a polarised one — 27 people gave it five stars and 18 gave it one. A split that sharp usually means it works for the vanilla case and fails hard on something specific, so if you try it, test your exact flow in the first week rather than at Christmas. PHP 8.0 as a minimum will also rule it out on older managed hosting |
| Smart Coupons for WooCommerce (WebToffee) | v2.3.2, 30,000+ installs, 4.7/5 across 133 reviews, requires WP 6.0+ and PHP 7.0+, tested to WP 7.1.2, updated about a month ago. A large free coupon toolkit — but store credit and gift vouchers are premium only, so the free tier does not put you in this category at all | Premium adds store credit products and gift vouchers of any amount range, priced on WebToffee’s site | Listed here because it comes up in every gift card search and it is a different product. Store credit is an account balance you issue; a gift card is a transferable code someone buys as a present. If what you actually want is to refund a customer to their balance, or run a loyalty scheme, this is the right category and a gift card plugin is the wrong one. If you want something a customer buys for their sister, it is not |
The honest summary of that table: install the free PW plugin first. It is the only free tier that does the whole job — sell, deliver, redeem partially, report liability — and at 20,000 installs and 4.7/5 it has the strongest evidence base in the category. Run it for a quarter. If the only thing you end up wanting is a card that looks like a gift rather than a receipt, you then know exactly what you are buying and from whom.
Sales tax on the card, or on what it buys?
The general principle across US states is that selling a gift card is not a taxable retail sale, because no goods have changed hands yet. Tax applies when the card is redeemed, on whatever the customer actually buys. Tax the card at purchase and you have collected tax twice on the same hundred dollars.
In WooCommerce that is one field. Edit the gift card product, open the General tab under Product data, and set Tax status to None. Do it for every gift card product and every variation, because tax status is per-product and a variable card with five amounts is five chances to miss one.
Then check the other half: when the card is redeemed, is the balance applied before or after tax? PW applies it after tax, which keeps your tax line correct — the customer still owes tax on the goods, and the card pays part of the total including that tax. A plugin that deducts the balance from the subtotal before tax is calculated will under-collect, and you will not notice until a return is filed. Buy a $25 test card, spend it on a $40 taxable product, and read the order totals line by line. WooCommerce sales tax plugins compared for US stores covers the automation layer once you know what your numbers should look like.
The email is the product
This is the failure that generates phone calls. With a physical product, a missing delivery confirmation is annoying. With a gift card, the email is the thing the customer paid for. If it lands in spam on 23 December, you have not had a deliverability problem, you have had a refund.
WordPress sends mail through PHP’s mail() by default, straight from your web server, with no authentication — the exact pattern mailbox providers treat as suspicious. Gift card emails make it worse on two counts: they go to a recipient who has never heard of your store and has no prior relationship with your sending domain, and they contain a code and a link, which is what a phishing message looks like. Route them through authenticated SMTP with SPF, DKIM and DMARC in place before your first December.
Disclosure: one of the options below is mine
Whichever you use, test with a real inbox at a real provider — Gmail and Outlook.com both, from a clean address that has never emailed you — and check the spam folder explicitly rather than concluding it worked because something arrived. Then send one to an address at your own domain, because self-addressed mail often takes a different path and proves nothing.
Four things to test before you take real money
- A card that covers the whole order. If the balance pays 100% of the total, the order total is zero and no payment gateway is charged. Some checkout configurations handle that cleanly and some stall on a gateway that will not accept a zero-value transaction. Place that order yourself before a customer finds it.
- A card plus a coupon. Stacking is where arithmetic goes wrong. Apply a 20% coupon and a gift card to the same cart and check the order total, the tax line and the remaining balance on the card afterwards. Decide deliberately whether you want to allow it.
- Buying a gift card with a store-wide sale running. A 20%-off-everything coupon will happily take 20% off a $100 gift card, which means you sold $100 of liability for $80. Exclude gift card products from your coupons — most plugins have a setting, and the snippet below is the fallback.
- Redemption on block checkout specifically. If you migrated your checkout page to the Checkout block, confirm the gift card field renders there. A missing field produces no error at all; it is simply absent, and you will read that as “the customer must have typed the code wrong”.
<?php
// wp-content/plugins/wpfairs-store-snippets/gift-cards.php
// Stop store-wide coupons from discounting gift card products.
// Selling a $100 card for $80 creates $20 of liability you were paid nothing for.
add_filter(
'woocommerce_coupon_is_valid_for_product',
function ( $valid, $product, $coupon, $values ) {
// Product IDs (and variation IDs) of your gift card products.
$gift_card_ids = array( 1234, 1235, 1236 );
if ( in_array( $product->get_id(), $gift_card_ids, true ) ) {
return false;
}
// Variations: check the parent too.
if ( $product->is_type( 'variation' ) && in_array( $product->get_parent_id(), $gift_card_ids, true ) ) {
return false;
}
return $valid;
},
10,
4
);
Put that in a small site-specific plugin rather than your theme’s functions.php, so switching themes does not quietly re-enable discounted gift cards. Swap the IDs for yours — you can read them off the URL when editing each product.
Balances, caching and the switching problem
Two operational things that bite later rather than on day one.
The first is caching. A “check your balance” page renders a number that is true for one customer at one moment, which makes it exactly the kind of page a full-page cache must never serve. Cart and checkout are already excluded by any competent caching setup, so redemption itself is usually safe; a standalone balance-check page added via shortcode or block is not, because it is a normal page as far as the cache is concerned. Exclude it by URL the day you create it. WooCommerce caching plugins: what breaks and what works covers which plugins set store exclusions for you and which need the rule written by hand.
The second is portability, and it is the one that should influence your choice. Gift card codes and balances do not live in a standard WooCommerce table. Each plugin creates its own, and nothing reads anyone else’s. If you switch plugins with $4,000 of unredeemed cards outstanding, those cards stop working and every one of them is a customer who paid you and got nothing. That is why CSV export is criterion six and not an afterthought.
# Find out which tables your gift card plugin owns.
wp db query "SHOW TABLES LIKE '%gift%';"
# Then read its columns so you know what you can export,
# substituting the table name you found above.
wp db query "DESCRIBE wp_your_gift_card_table;"
# Outstanding liability: how much of other people's money you are holding.
# Column names vary by plugin -- check DESCRIBE first.
wp db query "SELECT COUNT(*) AS open_cards, SUM(balance) AS outstanding
FROM wp_your_gift_card_table
WHERE balance > 0;"
Change the wp_ prefix if yours differs, and run this against a copy or a read replica if you can. Do it once a quarter and keep the number — it is the figure your accountant wants, and it is also the figure that tells you how expensive switching plugins would be. WooCommerce backup plugins compared for store owners covers getting the database half of that backed up properly, which matters more here than for most store data: a restore that rolls back three days of redemptions hands three days of spent cards back to customers who already used them.
What to pick for your situation
- A handful of cards a year, partial redemption never comes up. Core coupons. Free, no plugin, four minutes per card. Revisit when you are making more than one a week by hand.
- You want real gift cards and have not bought anything yet. PW WooCommerce Gift Cards, free tier. It sells, delivers, redeems partially and reports liability, with 20,000+ installs and 4.7/5 behind it. Set expiry to never, set the product’s tax status to None, and send yourself a test card.
- You want first-party support and upgrade safety above all. The official WooCommerce Gift Cards extension at $79/yr, with its 30-day refund window. You are buying the vendor relationship rather than a feature the free options lack, and that is a legitimate thing to buy.
- You have a physical counter as well as a website. Ultimate Gift Cards for WooCommerce. The in-store gifting portal is in the free tier (capped at 2 staff and 20 transactions a day) and nothing else here has an equivalent. Check its WordPress and WooCommerce compatibility against your versions first.
- You want to issue account credit rather than sell presents. Wrong category — you want store credit, which is what Smart Coupons premium does. Refunds to balance and loyalty points are a different product from a transferable code.
- Cards are a December thing for you. Install and test in October. Every point in this article — deliverability, the zero-total order, coupon stacking, the tax line — is cheap to find in a quiet week and ruinous to find on the 22nd. WooCommerce abandoned cart plugins compared is the other thing worth having working before the Q4 traffic arrives.
Frequently asked questions
Does WooCommerce have gift cards built in?
No. WooCommerce 11.1.2 has no gift card feature. What it does have is coupons, and a fixed cart discount coupon with a usage limit of one works as a gift card for low volumes — create a Gift Card product, and generate a coupon by hand when someone buys one. The limit is partial redemption: a fixed cart discount is consumed entirely on first use, so a $100 code spent on a $12 order loses the remaining $88. That single behaviour is what every gift card plugin in this category exists to fix.
What is the best free WooCommerce gift card plugin?
PW WooCommerce Gift Cards, on the evidence available on 1 October 2026. Its free version is the only one here that completes the whole loop without payment: the customer chooses an amount and a recipient, the code is delivered through WooCommerce’s own email system with a redemption link, it can be spent partially with the balance carried forward, guests can use it without an account, and the admin screen shows your total outstanding liability. It is v2.52 with 20,000+ active installs, 4.7/5 across 194 reviews, tested to WordPress 7.1.2 and updated within the last week, with stated support for the Cart and Checkout blocks and HPOS. Ultimate Gift Cards for WooCommerce by WP Swings is the stronger free tier if you also redeem cards at a physical counter.
Can a WooCommerce gift card expire after one year?
Not for a US customer. The federal rules the FTC describes require that money on a gift card stays good for at least five years from purchase, or from the last time funds were added. Inactivity fees are limited to one a month and only after twelve consecutive months of non-use, and any expiry date or fee must be clearly disclosed. Several states are stricter still. The practical point is that plugin defaults are often shorter, because many of these plugins are written for markets where a twelve-month expiry is normal — so check the setting before your first sale, and read the card email itself, because a date printed there is a promise in writing. Confirm your own obligations with your accountant or attorney rather than with a settings screen.
Should I charge sales tax when someone buys a gift card?
The general US principle is no: selling a gift card is not a sale of goods, so tax attaches when the card is redeemed rather than when it is bought. Taxing it twice is the common error. In WooCommerce you prevent it by editing the gift card product, opening Product data > General, and setting Tax status to None — for every gift card product and every variation, since the setting is per-product. Then check the redemption side: the balance should be applied to the order total after tax is calculated, not deducted from the subtotal beforehand, or you will under-collect. Your state’s rules are the authority here, not this paragraph.
Why is my gift card email not arriving?
Almost always because WordPress is sending through PHP’s mail() straight from your web server with no authentication, which mailbox providers treat as suspicious. Gift card emails are the worst case for this: the recipient has no prior relationship with your domain, and the message contains a code and a link, which is the shape of a phishing email. Fix it by sending through authenticated SMTP with SPF, DKIM and DMARC configured on your sending domain. Then test properly — send to a fresh Gmail address and a fresh Outlook.com address, check the spam folders explicitly, and do not treat mail to your own domain as evidence, because it often takes a different route entirely.
What happens to outstanding gift cards if I switch plugins?
They stop working, unless you move the data yourself. Gift card codes and balances live in tables the plugin created, and no plugin reads another’s. Every unredeemed card is money a customer has already paid you, so a switch that strands them is a refund queue rather than a migration. Before you change anything, run SHOW TABLES LIKE '%gift%'; to find the tables, export every card with a balance above zero, and total it so you know the size of what you are moving. Then import into the new plugin if it supports CSV import, or keep the old plugin installed and redemption-only until the outstanding balance has run down.
Is a gift card the same as store credit?
No, and buying the wrong one is the most common mistake in this category. A gift card is a transferable code somebody purchases as a present for another person, who may never have visited your site and may check out as a guest. Store credit is a balance attached to an existing customer account, usually created by you as a refund, a loyalty reward or a goodwill gesture. The plugins differ accordingly: gift card plugins care about delivery emails, codes and guest redemption, while store credit features — such as those in Smart Coupons premium — care about accounts and balances. Some products do both, but if you shortlist on the wrong noun you will end up with a tool that cannot do the job you actually have.
Will a gift card field show on WooCommerce block checkout?
Only if the plugin has been built for it. The Cart and Checkout blocks need extensions integrated through the Store API, and a plugin written for the classic [woocommerce_checkout] shortcode renders nothing there — no error, no warning, just a missing field, which is easy to misread as a customer mistyping their code. Check two things: that your checkout page really does use the Checkout block (edit the page and look), and that the plugin’s own listing says block checkout support explicitly. Vendors who have done the work advertise it. Silence on the subject means assume it has not been done, then verify with a test redemption before you rely on it.
The short version
Install PW WooCommerce Gift Cards’ free version and run it for a quarter before you consider paying anybody. It covers the whole loop, it has the deepest evidence base in the category, and a quarter of real use tells you more about what you need than any comparison table, this one included.
Then spend an afternoon on the four settings nobody writes about: expiry set to never, tax status set to None on every card product and variation, gift cards excluded from store-wide coupons, and authenticated SMTP with a test card delivered to a real Gmail inbox. None of those is a feature you can buy. All four are the difference between gift cards being free money in December and being a support queue in January.
And write down your outstanding balance once a quarter. It is the number your accountant will ask for, and the number that tells you what changing your mind about any of this would cost.

Leave a Reply to This Post