Stripe Gift Cards in QuickBooks: Book the Liability Right
A gift card sold through Stripe is a liability, not revenue, until someone spends it. How to set up QuickBooks, issue codes in Stripe, and book every...
A coffee roaster sells forty $50 digital gift cards through Stripe Checkout in the first three weeks of December. Stripe shows $2,000 in successful payments, deposits $1,930 after fees, and the December Profit and Loss says the holiday push added $2,000 of sales. In January, customers start spending those cards. Most of those orders bring in less cash than the goods they take, and some bring in none at all. January revenue looks weak, December looks strong, and neither month is right.
The fix is one account and one product in QuickBooks, set up before the first card sells. A gift card sale is not revenue. It is a promise to deliver goods later, so the money belongs in a liability account until someone redeems the card. This post covers how to set that up, how the Stripe side of redemption works, and the entries for a full holiday season. If you'd rather have your Stripe sales reach QuickBooks already sorted by product, start a free trial.
Why a gift card sale is a liability
When a customer pays $50 for a gift card, you have the cash but you haven't sold anything yet. You owe someone $50 of goods or services on demand. Intuit's help article on selling and redeeming gift cards in QuickBooks Online puts it directly: "When you accept payment for a gift certificate, you accept the liability to redeem the gift certificate at some time in the future."
The revenue appears when the card is spent, because that's when you hand over the coffee. Until then the balance sits on the Balance Sheet as money you hold for customers. It's the same logic as deferred revenue on a prepaid subscription, with one difference that makes gift cards harder: you don't know when, or whether, each card will be used.
Stripe doesn't make this distinction for you. In Stripe, a gift card you sell online is usually just a Product with a Price, like everything else in your catalog. The payment looks identical to a sale of beans. The split between "sold goods" and "sold a promise" has to happen in how the payment is recorded in QuickBooks.
Set up the liability account and the gift card product
Intuit's instructions start with the prerequisite: "set up a liability account and special items to use on a gift certificate invoice." In practice that is two things.
1. A liability account. In your chart of accounts, create an account such as "Gift Card Liability". Other Current Liabilities is the usual detail for a balance you expect to settle within a year.
2. A gift card product linked to it. Create a product or service called "Gift Card" and, in the field QuickBooks labels as the income account, choose Gift Card Liability instead of an income account. Intuit's redemption steps call this "the Product/Service for Gift Certificates (the one linking to a liability account)". Acodei's own guide to creating a product in QuickBooks confirms the field allows it: "The income account field can also accept expenses or liabilities."
Every line recorded on that product now lands on the Balance Sheet, not the Profit and Loss. A positive line adds to what you owe. A negative line reduces it.
The Stripe side: selling the card and issuing a code
Stripe has everything needed to sell a card and let the holder spend it, but you assemble it from general-purpose parts.
Selling. Create a Product called "Gift card" with a $50 Price and sell it through Checkout like any other item. Keep it as its own Product so it can be told apart from everything else you sell.
Issuing the redeemable value. Stripe's discounts documentation describes coupons, which set the discount, and promotion codes, which are "customer-facing codes created on top of coupons." For a $50 card, create a coupon for $50 off, then give each buyer their own promotion code on it with max_redemptions set to 1. Two coupon settings matter here:
applies_to"limits the products that the coupon applies to." List your regular products there and leave the gift card product out, or customers can spend one card on another card.- Stripe notes that "Checkout Sessions currently support up to one coupon or promotion code." A customer holding two cards can't combine them in one order.
Leftover value. A single-use code gets used up in one go. Stripe says that when "a promotion code reaches its max_redemptions or expires_at, it becomes permanently inactive." So if a $50 card is spent on a $35 order, the code is gone, but you still owe the customer $15. Decide in advance how you'll honor that. The usual answer is a new $15 code, and it means $15 stays in the liability account.
Some businesses redeem through the Stripe customer balance instead, crediting the card value to the customer so it applies to their next invoice. That only works for invoice-based billing, and it has its own bookkeeping, covered in how the Stripe customer balance reaches QuickBooks.
Recording the sale
The sale is the easy half. Intuit's version is a sales receipt: "select the payment method and where the gift card amount will be deposited to," then add a line for the gift certificate product with the card amount. Whatever records your Stripe payments, the requirement is the same: the $50 has to land on the Gift Card product, not your general sales product.
Stripe's fee is an expense now. Stripe's standard rate is 2.9% + 30¢ per successful domestic card payment, so a $50 card costs $1.75 to sell. That fee isn't deferred with the liability. It belongs in December, when you paid it. Your liability is the full $50 you owe, not the $48.25 that reached your bank.
Sales tax: decide before the first sale. Intuit's walkthrough adds "the sales tax rate" to the sale line. That's one treatment, not a rule. Whether a gift card sale is taxed when sold, or the goods are taxed when the card is redeemed, depends on your jurisdiction and your buyer's, so settle it with your accountant before you sell. If you use Stripe Tax, its product tax codes include one for this: txcd_10502000, "Gift Card", described as a "Gift card or gift certificate that you purchase and receive electronically and assumed to be multi-purpose." Assign it to the gift card product rather than leaving the card on your general goods code.
Recording the redemption
Redemption is where Stripe-based books usually go wrong. The goods leave, revenue should appear, and the liability should shrink by the value used. But the Stripe payment only covers the part the card didn't.
There are three shapes, and each needs a different entry.
The card covers the whole order. A $50 order paid entirely with a $50 code is a free order to Stripe. Its guide to no-cost orders says so: "Completed Checkout Sessions that are free won't have an associated PaymentIntent." No payment exists, and nothing enters your Stripe balance or a payout. In a payment-mode Checkout Session with no invoice, that means there is no Stripe charge to carry the order into QuickBooks. The whole $50 is an entry you make: debit Gift Card Liability, credit your sales income account.
The card covers part of the order. An $80 order with a $50 code charges the card $30. Stripe records a $30 payment, and that's the cash side. The other $50 of revenue is the liability being used, and how you book it depends on how the discount reached QuickBooks:
- If the sale landed at $30 with no discount line, add the $50 yourself: debit Gift Card Liability, credit sales income.
- If the sale landed at $80 with a -$50 discount line, the revenue is already there at full price. The discount line is the redemption. Move it from your discounts account to Gift Card Liability instead of adding another entry, or you'll count the $50 twice.
The card covers more than the order. A $35 order with a $50 code is free, like the first case, but only $35 of the liability is used. Release $35, issue the new $15 code, and leave $15 in the account.
Intuit's own method works the same way. It records the redemption as a second invoice line on the gift certificate product with "a negative number for the amount of the gift certificate." A negative line on a liability-linked product is the same debit to Gift Card Liability.
A worked season
Here is the coffee roaster's December and January in full, ignoring sales tax to keep the numbers clear.
December: 40 cards sold at $50.
| Entry | Debit | Credit |
|---|---|---|
| Card sales (40 × $50) | Stripe holding account $2,000 | Gift Card Liability $2,000 |
| Stripe fees (40 × $1.75) | Stripe fees expense $70 | Stripe holding account $70 |
| Payout to the bank | Bank $1,930 | Stripe holding account $1,930 |
December's Profit and Loss shows $70 of fees and no gift card revenue. The Balance Sheet at December 31 shows $2,000 owed to cardholders.
January: 23 cards come back.
| Redemptions | Card value used | Cash via Stripe | Revenue |
|---|---|---|---|
| 12 orders of $50, fully covered | $600 | $0 | $600 |
| 10 orders of $80, $30 paid by card | $500 | $300 | $800 |
| 1 order of $35, new $15 code issued | $35 | $0 | $35 |
| Total | $1,135 | $300 | $1,435 |
The $300 of card payments arrive through Stripe as ordinary sales, with $11.70 in fees (10 × 2.9% of $30, plus 30¢ each). The liability release is one entry for the month, or one per order if you want the detail: debit Gift Card Liability $1,135, credit sales income $1,135.
At January 31 the liability is $2,000 minus $1,135, or $865. That should match your list of live codes exactly: 17 unused $50 cards ($850) plus the one $15 replacement code. If it doesn't, a redemption was missed or booked twice. That tie-out is the most useful monthly check this setup gives you, and it takes two minutes if your code list is exported from Stripe.
Breakage: the cards nobody spends
Some cards are never redeemed. Their balances sit in the liability account indefinitely, and eventually the question is whether you can recognize them as income, known as breakage.
The answer is not a QuickBooks question. In the US, unused gift card balances can fall under state unclaimed property rules, and those rules differ from state to state. Leave the balance in the liability account until your accountant tells you what you're allowed to do with it, and keep the issue date of every code so the answer can be applied card by card. Stripe's promotion codes carry an expires_at you can set, but an expired code only stops Stripe from accepting it. It doesn't settle what you owe.
Refunds of unused cards
If a buyer asks for their money back on an unused card, refund the original Stripe payment and deactivate the code. The refund reduces Gift Card Liability, not sales, because the sale never became revenue. Stripe's refund documentation says "Stripe's processing fees from the original transaction aren't returned," so the $1.75 stays in December's fees.
Where Acodei fits
Everything above works by hand. The part a sync can take over is getting each Stripe payment onto the right QuickBooks product without anyone sorting it.
Acodei's Multiple Product Mapping matches Stripe transactions to QuickBooks products by rule, and one of its rule types matches on the Stripe Product ID, for all of that product's Prices or for one specific Price ID. A rule that sends the "Gift card" Stripe product to the Gift Card product in QuickBooks puts every card sale on the liability account, because the line books to whatever account that product is linked to. Acodei's docs say Stripe Product Mapping is "the only mapping type that allows for mapping multiple line items separately on one transaction," so a Checkout that sells a gift card alongside a bag of beans keeps the two lines apart. The feature overview shows the other rule types.
Three documented details matter for gift cards specifically:
- Set the rule before the first sale. Acodei's mapping rules aren't versioned. A changed rule "takes effect for future transactions only," so cards sold before the rule existed stay on whatever product they landed on until you correct them.
- Keep the product non-taxable. Acodei requires every QuickBooks product used in its mapping to be marked non-taxable, with tax handled separately. The gift card product is no exception, whatever you decide about tax on the sale.
- Know where discounts land. Acodei has a coupon tracking setting that posts Stripe coupons and discounts as their own line item on a Discounts product, instead of folding them into the sale. If it's on, a partly covered redemption arrives at full price with the gift card value on the discount line, and that line is what you move to Gift Card Liability. If it's off, the sale arrives net and you add the release yourself. The trade-offs of both approaches for ordinary promotions are covered in Stripe coupons and discounts in QuickBooks.
Fully covered redemptions have no Stripe payment behind them, so their release stays a manual entry either way. To get your Stripe gift card sales onto the right QuickBooks product from the first card, start a free trial.
Frequently asked questions
Is a gift card sale revenue in QuickBooks?
No. Until the card is redeemed, the money is owed to the cardholder, so it belongs in a liability account. Intuit's guidance is to "set up a liability account and special items" and record the sale on a product linked to that liability. Revenue appears when the card is spent.
How do I set up gift cards in QuickBooks Online?
Create a liability account such as Gift Card Liability, then create a Gift Card product or service whose income account field points at that liability. Record sales on that product, and record redemptions as a negative line on it, or as a journal entry moving the value from the liability to sales income.
Does Stripe have a gift card feature?
Stripe's catalog handles the sale like any other Product and Price. For redemption, many businesses issue a single-use promotion code on a fixed-amount coupon, with max_redemptions set to 1 and applies_to listing your regular products but not the gift card. Stripe Tax also lists a gift card tax code, txcd_10502000.
Why doesn't a fully paid gift card order show up in Stripe payments?
Because it isn't a payment. Stripe says "Completed Checkout Sessions that are free won't have an associated PaymentIntent," so an order covered entirely by a code creates no charge and never reaches your Stripe balance. Record that redemption in QuickBooks yourself.
Are Stripe fees on a gift card sale deferred too?
No. The fee is a cost of taking the payment, paid when the card is sold, so it's an expense in that period. The liability is the full face value of the card, not the net amount Stripe paid out.
What do I do with gift card balances that are never used?
Leave them in the liability account and ask your accountant. Unused balances can fall under state unclaimed property rules, which vary by state, so whether and when you can recognize them as income is a legal question as much as an accounting one.
Automate your Stripe to QuickBooks sync
Save hours every month. Acodei automatically syncs your Stripe transactions, invoices, and payouts to QuickBooks Online.
14-day free trial · card required · cancel anytime
How Acodei handles this in your stack
Stripe QuickBooks Integration
See how Acodei syncs Stripe payments, fees, refunds, invoices, and payouts into QuickBooks Online automatically.
Or go straight to a capability
Advanced Product Mapping
Map Stripe products to QuickBooks with rule-based logic on product ID, price ID, metadata, and account. Set rule priority and extend mapping to refunds and fees.
Automated Invoice Sync
Bring Stripe invoices into QuickBooks and auto-apply payments and credit memos, with numbering, invoice matching, and quantity tracking to cut double-entry.
Multi-Currency Mastery
Sync Stripe transactions across currencies with automatic exchange rate handling and currency-specific customer records. Our team enables multicurrency on request, and zero-decimal currencies such as JPY are not supported.
Class Mapping
Map Stripe products to QuickBooks classes for scalable categorization and multi-entity reporting. Class tracking requires QuickBooks Online Plus or Advanced.
Historical Data Import
Backfill historical Stripe data into QuickBooks by month range. Preview volume and cost before syncing so reporting starts from a complete baseline.
How to Connect Stripe to QuickBooks Online
Connect Stripe to QuickBooks Online in minutes. Acodei links both accounts with secure OAuth and syncs payments, fees, refunds, and payouts automatically.
Reconcile Stripe Payments in QuickBooks
Reconcile Stripe in QuickBooks Online automatically. Acodei splits out fees, matches payouts to deposits, and keeps every charge audit-ready.
Related articles
Acodei Journal
One Stripe Dispute Covering Several Subscription Charges
Acodei Content Team
One Stripe Dispute Covering Several Subscription Charges
9/27/2026
Acodei Journal
Stripe Chargeback After a Partial Refund in QuickBooks
Acodei Content Team
Stripe Chargeback After a Partial Refund in QuickBooks
9/27/2026
Acodei Journal
A Stripe Dispute on a Foreign-Currency Charge in QuickBooks
Acodei Content Team
A Stripe Dispute on a Foreign-Currency Charge in QuickBooks
9/26/2026
Get more operational finance guides like this one
We will only send high-value product and finance content.