How to Accept Payments for Website Ads with Stripe
Checkout, Payment Links or invoices: how to collect advertiser payments up front, when payouts arrive, and how to handle disputes and testing.
On this page
The simplest way to get paid for ads on your website is to collect the full amount by card before the campaign starts, using Stripe Checkout, a Stripe Payment Link or a Stripe invoice. Checkout suits booking flows where dates and totals vary, Payment Links suit fixed packages, and invoices suit larger advertisers who need a formal bill—and in every case the money lands in your own Stripe account and is paid out to your bank on Stripe's schedule.
Key takeaways
- Take payment before the ad goes live, especially from a new advertiser.
- Use Checkout for self-serve bookings, Payment Links for fixed packages, and invoices for agencies and companies that need paperwork.
- If you review creatives first, authorize the card at booking and capture it on approval instead of charging and refunding.
- Stripe typically schedules your first payout within 7–14 days of your first live payment; after that, timing depends on your country and payout schedule.
- Test the whole flow in a Stripe sandbox before you switch to live keys.
Step 1: Prepare your Stripe account for ad sales
Before the first booking, spend ten minutes on settings that prevent problems later:
- Business details. Describe what you sell plainly, for example "advertising space on example.com," and add the bank account for payouts.
- Statement descriptor. Use your site's name so advertisers recognize the charge on their card statement. Unrecognized charges are a common trigger for disputes.
- Receipts. Turn on email receipts so every advertiser gets a record of the payment.
- Fees. Stripe's processing fees vary by country and payment method. Check the Stripe pricing page for your account and build the cost into your rates.
Step 2: Choose how advertisers pay
| Option | How it works | Best for | Watch out for |
|---|---|---|---|
| Stripe Checkout | A Stripe-hosted payment page created for each booking with the exact amount | Self-serve bookings with dates and variable totals | Needs code or a tool that creates sessions; sessions expire after 24 hours by default |
| Payment Links | A reusable link to a hosted page for a fixed product, no code needed | Fixed packages, such as one week in the sidebar | Same price for everyone; dates and availability are handled by you |
| Invoices | A bill sent to a specific customer, with a hosted payment page and due date | Agencies, larger deals, buyers who need an invoice | Payment can arrive late; don't start the ad until it's paid |
Stripe Checkout: best for bookings
With Checkout, each booking creates a session with the exact amount and a clear description, such as "Sidebar 300×250, 10 days, $200." The advertiser pays on a Stripe-hosted page, Stripe notifies your system through a webhook, and the booking can be confirmed automatically. Checkout can also place a hold on the card instead of charging it right away, which is what you want if you approve ads before they run.
Payment Links: best for fixed packages
Payment Links take a few minutes to create in the Stripe Dashboard and need no code. They work well for a simple rate card: "Sidebar banner, 7 days, $150." You can add up to three custom fields to collect details such as the preferred start date and the destination URL, and you can limit how many times a link can be used. The catch is that the link knows nothing about your calendar, so you must confirm dates by hand and refund any booking you can't fit in.
Invoices: best for agencies and companies
Some buyers can't pay by card on a web page; their finance team needs an invoice. Stripe Invoicing lets you email an invoice from the Dashboard with a hosted payment page and a PDF, and it can send automatic reminders. Set the due date before the campaign's start date, and don't put the ad live until the invoice is paid. Check Stripe's pricing page for any Invoicing fees that apply to your account.
Step 3: Decide when to charge
You have two choices:
- Charge at booking. Simple, and fine if you accept every booking automatically.
- Authorize at booking, charge on approval. The card is held, not charged. You review the creative, then capture the payment if you approve or cancel the authorization if you don't.
The second option is safer if you review ads. Stripe lets you cancel an uncaptured payment at no cost, while refunding a captured payment doesn't return the original processing fee. The hold doesn't last forever—an online card authorization is usually valid for about 7 days—so review promptly. Our guide to authorize-then-capture ad payments explains the details.
Step 4: Understand when you get paid
Stripe sends money from your available balance to your bank account as payouts. According to Stripe's payout documentation, the first payout is typically scheduled to arrive within 7–14 days after your first successful live payment, depending on your industry, country and risk level.
After that, two settings matter. Settlement timing, which depends on your country, decides when funds become available. Your payout schedule—daily, weekly, monthly or manual—decides when available funds are sent. Changing the schedule doesn't make funds available sooner.
Step 5: Handle refunds and disputes
Refunds. You can refund all or part of a payment from the Dashboard. Customers usually see the credit about 5–10 business days later, depending on their bank. Publish a clear cancellation policy so you're not negotiating each case; see ad booking refunds and cancellations.
Disputes. A dispute, or chargeback, happens when the cardholder questions a payment with their bank. Stripe debits the disputed amount plus a dispute fee, which varies by country. You can submit evidence, usually within 7–21 days depending on the card network, and the bank makes the final decision; Stripe's dispute guide notes the full process can take 2–3 months.
Ad sellers can prevent most disputes with a few habits:
- Send a confirmation email with the slot, dates and amount.
- Keep evidence: the approved creative, a screenshot of the live ad and the impression and click report.
- Reply quickly when an advertiser complains; a refund costs less than a lost dispute.
- Keep your terms and cancellation policy linked from the booking page.
Step 6: Test before going live
Every Stripe account has sandbox (test) keys, which start with pk_test_, sk_test_ and rk_test_. Use them to run the whole flow without real money:
- Pay with the test card 4242 4242 4242 4242, any future expiry date and any CVC.
- Try a declined payment with 4000 0000 0000 0002.
- Simulate a dispute with 4000 0000 0000 0259.
- Test approval, rejection and refunds, and confirm your webhook receives each event.
When everything works, switch to live keys. For a third-party tool, create a restricted key with only the permissions the tool needs; our guide to Stripe restricted API keys shows how.
Let a booking tool handle the plumbing
If you'd rather not build a Checkout integration yourself, a booking tool can create the sessions, holds and captures for you. Spreadiom connects with Stripe API keys you paste in (a restricted key is recommended), stores them encrypted and creates the webhook automatically, and test mode is supported. Advertisers pay through Stripe Checkout directly into your own account, Spreadiom never holds your money, and Stripe's fees are charged to your Stripe account as usual. Spreadiom's 5% fee on completed bookings is invoiced monthly; see pricing.
FAQ
Can I accept ad payments with Stripe without coding?
Yes. Payment Links and Stripe Invoicing both work from the Stripe Dashboard without code. A Payment Link suits a fixed package, such as one week in your sidebar, and can collect a few custom details like the start date. An invoice suits agencies that need a formal bill. The trade-off is manual work: you confirm dates, place the ad and remove it yourself.
How long does it take to receive money from Stripe?
Stripe typically schedules your first payout to arrive within 7–14 days after your first successful live payment, depending on your industry, country and risk level. After that, payouts follow your payout schedule, such as daily or weekly, and your country's settlement timing decides when funds become available. Your bank might take additional time to make the money available after receiving it.
Should I use Checkout or Payment Links for ad bookings?
Use Checkout when prices depend on dates or when you want bookings confirmed automatically, because each session carries the exact amount and details of one booking. Use Payment Links when you sell a few fixed packages and don't mind confirming dates by hand. If you want to approve ads before charging, Checkout with manual capture is the cleaner option.
What happens if an advertiser disputes a charge?
The advertiser's bank reverses the payment, and Stripe debits the amount plus a dispute fee from your balance. You can accept the dispute or counter it with evidence, such as the booking confirmation, the approved creative, screenshots of the live ad and the delivery report. The bank decides the outcome, and the process can take a couple of months, so clear terms and records matter.
Can I test ad payments without using real money?
Yes. Use your Stripe sandbox and its test API keys, then pay with test card numbers such as 4242 4242 4242 4242 with any future expiry date and any CVC. Stripe also provides test cards that simulate declines and disputes. Run through bookings, approvals, rejections and refunds in test mode before you switch your integration or booking tool to live keys.
Sell ad space on your site — start free
Give every ad slot its own booking page. Advertisers pick dates, upload a banner and pay by card or PayPal — straight into your own account. No subscription; 5% only on completed bookings.