Back to Guides
Complete guide11 min read

Stripe Security Deposit: The 2026 Guide

Everything you need to collect a Stripe security deposit in 2026 — how pre-authorization holds work, how long you can hold funds, what the Extended Authorizations feature changed, fees, code samples, and the no-code PayRequest alternative.

Short Answer

Yes, Stripe lets you collect a security deposit using a PaymentIntent with capture_method: manual. This places a pre-authorization hold on the customer's card — the funds are reserved but not charged until you capture. You can now hold up to 30 days (Stripe Extended Authorizations); the standard default is 7 days. After the stay, rental, or event you either capture part, capture all, or let the hold expire and release the funds.

  • Hold funds: Place an authorization on a card without charging
  • Hold up to 30 days: With Stripe Extended Authorizations (standard is 7 days)
  • Partial capture: Charge only what you need, release the rest automatically
  • No fee if not captured: You only pay Stripe fees on the captured amount

What Is a Stripe Security Deposit?

A Stripe security deposit is a pre-authorization hold placed on a customer's credit or debit card through a Stripe PaymentIntent with capture_method set to manual. The funds are reserved on the card — invisible to the customer's available balance — but no money moves until you capture the amount you're owed. If the rental, stay, or booking ends without damage, you release the hold and the customer never sees a charge.

Under the hood this is the same mechanism hotels have used for decades when they imprint your card on check-in. The difference online is that the card network enforces the hold automatically, the capture or release happens from a dashboard or API, and the whole workflow is auditable. For businesses that collect deposits online — vacation rentals, car rentals, equipment rental, event venues, photography studios, boats — it's the closest thing to a 'refundable deposit' that doesn't require moving money twice.

Historically Stripe capped authorizations at 7 days for most merchant categories. In 2024 Stripe rolled out the Extended Authorizations feature which allows certain merchants to hold funds for up to 30 days on Visa (29 days 18 hours precisely) and Mastercard cards. That's the single most important change for deposit workflows in the last five years, and it's why this guide is worth re-reading if you set up your flow before 2024.

The 5 Ways to Collect a Deposit on Stripe

Stripe supports five distinct deposit patterns. Most businesses pick one and stick with it, but knowing all five helps you pick the right one for your use case — and helps you recognize when to combine them.

1

Pre-authorization (Auth & Capture)

Hold funds on a customer's card without charging. Capture later or let the hold expire.

How it works
Create a PaymentIntent with capture_method: 'manual'. Stripe places the hold. You have 7 days (or up to 30 with Extended Authorizations) to capture the amount you're owed.
Best for
Vacation rentals, car rentals, equipment rental, hotels, damage deposits
Stripe feature
PaymentIntents.create({ capture_method: 'manual' })
2

Extended Authorizations (up to 30 days)

The 2024 feature that extends the standard 7-day hold to a 30-day window.

How it works
Enabled on eligible merchant accounts (hotels, vehicle rentals, cruise lines are free; other MCCs pay 0.08% per transaction and need Interchange Plus pricing). Hold up to 29 days 18 hours on Visa, 30 days on Mastercard.
Best for
Longer rentals, multi-night stays, any deposit window longer than 7 days
Stripe feature
payment_method_options.card.request_extended_authorization: 'if_available'
3

Partial capture

Authorize a full deposit, capture only what you need for damages or fees.

How it works
Hold €500, capture €120 for a cleaning fee. The remaining €380 is released back to the customer automatically. Only one capture per authorization.
Best for
Security deposits where the final charge is usually zero and occasionally partial
Stripe feature
PaymentIntents.capture({ amount_to_capture: 12000 })
4

Upfront deposit + balance

Charge a partial deposit now, charge the remainder later as a separate transaction.

How it works
Customer pays 50% upfront with a normal charge. When work is complete you create a second PaymentIntent for the remaining 50% against the same customer.
Best for
Services with long lead times — custom projects, event bookings, wedding venues
Stripe feature
Two separate PaymentIntents or an Invoicing workflow
5

Refundable deposit (charge then refund)

Charge the full amount, refund it after the service is complete.

How it works
Standard charge for €500. After the rental you refund the full amount or keep part as a damage fee. Both the charge and the refund carry Stripe fees.
Best for
When you actually need the cash in your account, or when your MCC does not support manual capture
Stripe feature
Charges API + Refunds API

Compare the 5 Deposit Methods

At a glance — how the five methods differ on the four variables that matter most: whether the customer is actually charged, whether money sits in your account, whether a refund is needed afterwards, and what the time limits are.

MethodCharges customer?Funds in account?Refund needed?Time limitFees
Pre-authorization (standard)No (hold only)NoNo7 daysNo fee if not captured
Extended AuthorizationsNo (hold only)NoNoUp to 30 days0.08% for non-eligible MCCs (IC+ required)
Partial capturePartialYes (captured amount)NoSame as authorizationFee on captured amount only
Deposit + balancePartial now, rest laterPartialNoNoneFull fee on each charge
Charge + refundYes (full)Yes (then refunded)YesNoneFull fee + refund fee may apply

How to Set Up a Stripe Security Deposit

There are three realistic ways to set up a Stripe security deposit in 2026: the Stripe Dashboard with Payment Links, the Stripe API with a PaymentIntent, or a no-code platform like PayRequest that wraps the whole thing in a hosted checkout. Which one you pick depends mostly on how much engineering time you want to spend.

Method 1: Stripe Dashboard (no code, limited)

The Stripe Dashboard lets you create Payment Links in a few clicks, but Payment Links do not support manual capture out of the box. What this means in practice: you cannot collect a real pre-authorization hold from a plain Payment Link — the charge goes through immediately. If you need an actual hold via the Dashboard, you have to use the 'Create a payment' form inside Dashboard → Payments → Payments, switch the capture method to Manual, and send the hosted invoice URL to your customer. This works but it's cumbersome for high volume.

Method 2: Stripe API (full control, code required)

With the API you have full control. The minimal example is a PaymentIntent created with capture_method: 'manual' and, if you want the 30-day window, payment_method_options.card.request_extended_authorization: 'if_available'. When the customer confirms, Stripe places the hold. When you're ready to capture, you call POST /v1/payment_intents/{id}/capture with an optional amount_to_capture parameter for partial capture. You'll need a Stripe account with the Extended Authorizations capability activated (self-serve for eligible merchant categories, application-based for others).

Method 3: PayRequest (no code, full features)

The no-code option. Connect your Stripe account to PayRequest, toggle 'pre-authorization hold' on a payment request, share the link. The hosted checkout handles the 3D Secure challenge, places the hold via Stripe's API behind the scenes, and surfaces the authorization in a simple dashboard where you capture part, capture all, or let it expire. Works with both standard 7-day holds and Extended Authorizations depending on your Stripe account settings. Price is €20/month flat, no per-transaction fee from PayRequest on top of Stripe's fees.

Common Use Cases for Stripe Security Deposits

Across PayRequest's customer base these are the industries that rely on Stripe security deposits most heavily, and the deposit ranges that work in each.

Vacation rentals

Replace the old 'security deposit' field in Airbnb-style listings with a real hold. Typical range: €200–€500 per booking. Captures happen in roughly 8% of bookings.

Car rentals

Cover fuel, smoking, late returns, and minor damage. Typical range: €300–€1000. Extended Authorizations are especially valuable here since rentals often exceed 7 days.

Event bookings

Secure event dates with a deposit, then charge the balance closer to the event. Works well with the deposit + balance pattern rather than a hold.

Freelance projects

Collect 50% upfront before starting work. This is typically a charge-and-keep pattern rather than a hold, since the freelancer needs the cash to actually do the work.

Equipment rentals

Hold €500–€2000 on cameras, tools, AV equipment, drones. Captures are rare but high-value when they happen — typically full replacement cost for a dropped item.

Property management

Hold a security deposit for short-term furnished rentals. Extended Authorizations lets you cover most short-stay windows; longer leases switch to a separate escrow.

What to Watch Out For

  • 7-day vs 30-day limit: Standard authorizations expire after 7 days. Only merchants with Extended Authorizations enabled can hold up to 29 days 18 hours on Visa or 30 days on Mastercard.
  • Extended Authorizations fees: Free for hotels, car rentals, and cruise lines. For all other merchant categories Stripe charges 0.08% per transaction and requires Interchange Plus (IC+) pricing.
  • Customer statement: Pre-authorizations appear as 'pending' on the customer's card statement. Explain this clearly at checkout — the #1 support ticket for deposit flows is 'you charged me for a hold'.
  • Card support: Most credit and debit cards support manual capture. Some prepaid cards and certain debit cards in specific regions do not. Offer a second payment method in checkout as a fallback.
  • One capture per authorization: You can only capture once. Plan your capture to include everything you need — if you miss a damage charge, you cannot re-capture the same hold.
  • Disputes and chargebacks: Captured deposits can be disputed like any charge. Keep a clear deposit terms PDF, photos of the item before and after, and the authorization trail. Documented captures win disputes at around 85%.

Stripe Direct vs PayRequest: Which Should You Pick?

Both options ultimately use Stripe's PaymentIntent API to place the hold. The difference is what you own, what you maintain, and how much engineering time it takes to ship.

Pick Stripe direct when you have in-house engineering, you need deep customization (custom authentication flows, unusual capture patterns, multi-currency handling across regions), or you're already running a product that's deeply integrated with the Stripe API and adding deposits is a two-day feature.

Pick PayRequest when you want to ship in under an hour, you don't have engineering capacity to maintain PCI-compliant checkout flows, or you want the full billing workflow — deposits, invoicing, subscriptions, dunning, customer portal — from one platform rather than stitching together Stripe plus three other tools. The price is a flat €20/month instead of paying for developer time plus separate tools for invoicing, email reminders, and customer self-service.

A useful rule of thumb: if Stripe is the 19th line item in your engineering backlog, you probably want PayRequest. If you're a Stripe-native product with API-level customizations across every charge, stay with Stripe direct and optionally use PayRequest's customer-portal feature as a self-service layer on top.

Stripe Manual Capture vs PayRequest Security Deposits — feature checklist

Both use the same underlying payment-network mechanism. What differs is what you build, what you maintain, and how the rest of the deposit workflow plugs in.

FeatureStripe direct (manual capture)PayRequest
Hold mechanismPaymentIntent capture_method=manualSame PaymentIntent under the hood
Hosted deposit checkoutYou build it (Elements + 3DS)Built-in hosted page
Capture & release dashboardAPI only — build your own UIBuilt-in: 1-click capture, partial capture, release
Partial captureYes (single API call)Yes (UI button)
Authorization expiry trackingManual — webhooks + reconciliationAuto-tracked with expiry alerts
Extended Authorizations (29–30 days)Yes — set request_extended_authorizationYes — toggle in deposit settings
3D Secure handlingYou handle the SCA challenge in codeHosted — handled automatically
Dispute evidence trailYou assemble logs + customer agreementAuto-collected (terms, agreement, capture trail)
Customer-facing receipt & portalStripe email or your own templateBranded receipt + customer portal
Time to shipEngineering days to weeksSame-day setup
Cost on top of Stripe feesEngineering time€20/mo flat — no per-transaction markup

Frequently Asked Questions

Can you take deposits on Stripe?

Yes. Stripe supports five deposit patterns: standard pre-authorization holds (7 days), Extended Authorizations (up to 30 days), partial capture, deposit plus balance, and charge-and-refund. The right one depends on how long you need to hold, whether you need the cash in your account, and whether your merchant category is eligible for Extended Authorizations.

How long can you hold a Stripe pre-authorization?

Standard pre-authorizations hold funds for 7 days before automatically releasing. With Stripe's Extended Authorizations feature you can hold up to 29 days 18 hours on Visa cards and up to 30 days on Mastercard. Extended Authorizations is free for hotels, car rentals, and cruise lines; other merchant categories pay 0.08% per transaction.

How do I create a Stripe security deposit with the API?

Create a PaymentIntent with capture_method: 'manual'. Add payment_method_options.card.request_extended_authorization: 'if_available' if you need the 30-day window. Confirm the PaymentIntent on the client with Stripe.js or Elements — the customer passes 3D Secure if required. When the stay or rental ends, POST to /v1/payment_intents/{id}/capture with an optional amount_to_capture for partial capture.

Does Stripe charge fees on pre-authorizations?

No fee is charged if you let the authorization expire or release it. Stripe only charges fees on captured amounts. Extended Authorizations adds 0.08% per transaction for non-eligible merchant categories. 3D Secure authentication does not carry an extra fee.

Can I capture less than the authorized amount?

Yes. Call the capture endpoint with amount_to_capture set to the lower amount. The remaining hold is released back to the customer automatically. You can only capture once per authorization, so make sure you include everything you need to charge (damages, fees, no-show penalties) in the same capture.

What's the difference between a Stripe security deposit and a Stripe pre-authorization?

A security deposit is the business concept — the amount you're protecting yourself with. A pre-authorization is the payment-network mechanism that implements it. On Stripe, a security deposit is almost always implemented as a PaymentIntent with manual capture, which places a pre-authorization hold.

Can I use Stripe deposits without writing code?

Yes. PayRequest connects to your Stripe account and gives you a hosted deposit checkout, dashboard, and capture/release controls without any code. Turn on 'pre-authorization hold' on a payment request, share the link, and manage the whole lifecycle from the PayRequest dashboard.

What happens if a customer disputes a deposit capture?

Captured deposits can be disputed like any Stripe charge. To win disputes, keep a deposit terms document the customer agreed to, photos of the item before and after, and the full authorization and capture trail. Properly documented deposit captures win around 85% of disputes.

Does Stripe's Payment Links feature support security deposits?

Not directly. Plain Stripe Payment Links charge the card immediately — they do not place a hold. For a real pre-authorization via a hosted link, you need to either use Stripe's API (capture_method: 'manual') or a platform like PayRequest that wraps the API in a hosted deposit checkout.

Can I combine Stripe security deposits with subscriptions?

Yes. A common pattern is a subscription for the recurring charge plus a one-time PaymentIntent with manual capture for the deposit at each booking. PayRequest's billing platform handles both in one flow — subscription dunning on the recurring fee and a deposit hold per booking.

What happens to a Stripe deposit when the customer's card expires before capture?

If the card expires while the authorization is still open, the hold is voided automatically by the card network — funds become available to the customer immediately and you can no longer capture against that authorization. To prevent revenue loss on long holds (Extended Authorizations up to 30 days), check the customer's card expiry before placing the hold and ask for a new card if the expiry falls within the hold window. Stripe also fires `payment_intent.canceled` with cancellation_reason=`automatic` so you can react programmatically. PayRequest dashboards flag deposits where the card will expire during the hold window automatically and prompt you to request a fresh authorization.

Related Guides

Skip the Stripe API and Ship Deposits Today

PayRequest connects to your Stripe account and gives you hosted security-deposit payment links, a capture dashboard, and the full billing workflow (invoicing, subscriptions, dunning) for €20/month. No code, no PCI compliance work, no extra per-transaction fee from PayRequest.