Academy › Build › Bookings and orders
The exact moment your website takes a unit off your stock
You'll come away knowing that a unit gets subtracted from stock when payment is collected, not when a product is added to the cart or the order is confirmed, and that if you're paid in cash, by Venmo, or by bank transfer, it's subtracted the moment you mark the order as paid.
By Yodai · Published September 6, 2026 · Updated October 13, 2026
A customer puts a hoodie in their cart at eleven in the morning. They say they need to talk it over with their partner and don't come back until that night. At four in the afternoon, someone else buys that same hoodie, the last one in stock, and checks out without a hitch.
What does the first customer find when they come back? It depends on the exact moment your website subtracts a unit from stock. It could be when the product goes into the cart, when the customer fills out their info and confirms the order, or when payment goes through. All three sound similar. They're not, and subtracting stock at the wrong moment either costs you sales or makes you promise something you don't actually have.
Three moments competing for the trigger
A cart is a shopping list, not a promise. Someone fills it out of curiosity, to compare the price with another store, or because they got sidetracked browsing and then just closed the tab. The Baymard Institute, which has gathered 50 studies on online cart abandonment, found that on average 70% of carts get abandoned, and explains that a lot of that is just normal online shopping behavior: people browsing, comparing prices, or saving things for later. If that one action already subtracts stock, you're locking up units that most of the time never turn into sales. And it opens the door to anyone who wants to empty your store without paying for anything: the OWASP foundation, which catalogs automated attacks on websites, describes one that's exactly that: adding lots of items to a cart without ever paying for them, so the product can end up looking out of stock.
Confirming the order carries more weight. There's a name, an address, sometimes a card number typed in. It looks like the moment someone really commits. But there's still no money in your account, and without money, that commitment can fall apart on its own, without you doing anything.
Payment is different from the other two because it no longer depends on anyone changing their mind. The card has gone through, the Zelle payment has been confirmed, the bank transfer has arrived. That order isn't going to fall through on its own. Stripe's documentation puts it this way: once a payment is completed, "the funds are already in your account and you can safely fulfill the order"; if the card is declined, the payment goes back to pending so it can be tried again.
Why confirming the order isn't enough
The real commitment is money collected, not a form filled out
Subtracting stock when the order is confirmed is a mistake, and it's an expensive one right when you can least afford it: during a promotion, on the one big day of the year, the day that product finally sells well. While that unpaid order is still open, your website can show the product as sold out to a real buyer who has their card ready right then. You lose that sale over an order that never actually got paid. And that order can stay open for a while: on Stripe, a checkout session nobody finishes expires after 24 hours by default, and Stripe's own guide to limited inventory warns that, for some businesses with limited stock, you need to avoid letting someone hold items for a long time without finishing the purchase.
The fix isn't checking those orders by hand every evening to free up what never got paid. It's not subtracting anything until the payment is complete. That way, no unpaid order leaves a unit locked up, and you don't have to keep watch. If you take payments online, it's the payment gateway, not the thank-you page, that tells you a payment is complete: according to Stripe's guide to order fulfillment, the notification the gateway sends straight to your website is "the most reliable way to confirm when you've received payments." With a bank transfer, on top of that, the money isn't there the moment checkout ends: it arrives later, and until then, there's no payment.
What if you only collect a deposit?
Some businesses collect part of the payment upfront and the rest on delivery: a deposit to reserve a custom cake, an advance on a made-to-order piece. In that case, you don't need to wait for full payment. As soon as that deposit comes in, there's already real money committed, and that's the moment that counts.
The rule stays the same: what counts is money that's actually landed in your account, whether it's the full amount or part of it. Tax authorities see it the same way: under Article 75 of Spain's VAT Law, on advance payments the tax is triggered "at the time the price is collected in full or in part, for the amounts actually received." An email saying someone will pay later doesn't count. A $20 deposit does. One catch: if that deposit is paid outside the payment gateway, in cash, via Zelle, or by bank transfer, your website won't know on its own: until you mark that order as paid, the unit stays listed for sale.
If the payment doesn't go through the gateway, you mark it yourself
- The gateway confirms the charge; the item is subtracted when the order shows as paid, not before
- There's no gateway confirming anything: you see the money yourself, in cash or in your account
- The unit gets subtracted when you mark the order as paid, not when the customer sends it or when you accept it
Which one to pick: If the payment runs through the gateway, the item is subtracted when the order shows as paid, not before. If someone pays you in cash, Venmo, or Zelle, mark the order as paid as soon as you see the money: until then, the item stays listed for sale on your site, and if it's your last one, someone else could buy it first.
With that settled, you now know the exact moment your website ends up with one less unit: when payment is complete, not before. What happens to that unit while someone's still in the middle of paying is the next question.
- The unit gets subtracted at payment, never when something's added to the cart
- Confirming the order doesn't count either: without money, that commitment can fall apart on its own
- A deposit or advance payment does count, because it's already real money, even if it's just part of the total
- If you collect payment in cash, via Zelle, by bank transfer, or COD, the unit gets subtracted when you mark the order as paid, not when you accept it
Three cases to decide
Answer before opening each one. If one gives you trouble, go back to the section that explains it.
1. A customer pays with a card that the bank declines, then two minutes later tries again with a different card that goes through. When does the unit get subtracted?
Only when the second attempt actually goes through. The declined first attempt should never have touched the stock, so the second purchase finds the product available as if the first attempt never happened.
2. A bakery that makes custom cakes takes orders through WhatsApp and collects cash on pickup. At what point should it subtract the stock unit?
When the bakery gets paid for the cake and marks the order as paid, not when the customer messages about it or when the bakery says yes. There's no gateway confirming anything here, so until that moment, the cake stays listed for sale on the website: if it's the last one, someone else can buy it before the customer picks theirs up.
3. A store launches a limited-edition sneaker, and in the first hour there are thirty carts holding that same sneaker, but only four people actually pay. If the website subtracted stock for every cart, what do the other twenty-six find when they check back?
A product marked as sold out that actually had twenty-six units available. The problem isn't the demand the product got, it's letting the cart, not the payment, decide the stock.
You already know that putting something in the cart doesn't hold it: the unit only gets subtracted when payment goes through. What's left to see is what happens to that unit while someone has already started paying but hasn't finished yet.
Sources
- 50 Cart Abandonment Rate Statistics 2026. Baymard Institute, updated September 22, 2025.
- OAT-021 Denial of Inventory. OWASP Foundation, OWASP Automated Threats to Web Applications project, accessed October 2026.
- How Payment Intents and Setup Intents work. Stripe documentation, accessed October 2026.
- Fulfill orders. Stripe documentation, accessed October 2026.
- Manage limited inventory. Stripe documentation, accessed October 2026.
- Law 37/1992, of December 28, on Value Added Tax, article 75. Boletín Oficial del Estado (Spain's Official State Gazette), consolidated text (last update published October 7, 2026).
In Yodai the store comes with the Free plan, with a catalog, a cart and orders. See how to create your online store for free.
NextWhile payment is being entered, the unit stays available for sale