Setup guide
How to Set Up Stripe Sound Alerts on Your Computer
The complete setup for a cash register sound on every Stripe sale, on the machine you actually work at. What to create, which Stripe event to send, why the browser wants one click, and how to keep a tab ringing all day.

2 min
Total setup
1
Webhook destination
0
API keys
7
Sounds included
The three things a Stripe sound alert needs
It helps to know what you are actually assembling, because it explains why no single switch inside Stripe can do this and why some tools in this category ask for far more access than they need.
- An event. Stripe already broadcasts one the instant a charge succeeds. It is called
charge.succeededand it costs nothing to send. - A destination. A URL you register inside your own dashboard, which Stripe posts that event to. Stripe calls these event destinations, and they are one-way.
- A speaker. A browser tab that has been allowed to play audio, holding an open connection so the sound fires the moment the event arrives.
Stripe hands you the first two for free. It has nothing that does the third, and the third is the hard part: a public endpoint that verifies Stripe's signature, a live connection into the browser, an audio unlock, and a tab that keeps working after the browser tries to put it to sleep.
Step 1: create your account
Sign in with a magic link. There is no password to invent and no card to enter, and the account is free until your first cha-ching, so you hear the thing working before you decide whether it is worth paying for.
Create a connection and the dashboard generates a private endpoint URL for it. Each Stripe account you want to hear gets its own connection and its own URL, up to ten on one subscription, each with a label so you know which business just got paid.
Step 2: add one event destination in Stripe
This part happens entirely inside your own Stripe dashboard, so you can see exactly what is being shared and revoke it in one click. Four screens, and the dashboard deep links you past the two that people get lost in.
Open Workbench and add a destination
In Stripe, open Workbench, then the Webhooks tab, then Add destination. This is the screen that tells Stripe where to send events. Your dashboard links straight into it with the event already ticked, so you can skip ahead if you use that link.
Listen for charge.succeeded
Switch to the All events tab and tick charge.succeeded. That single event covers every successful charge in the account, and it is the only one worth sending here.
Paste the endpoint URL
Copy the private URL from your ChaChing Alerts dashboard into the Endpoint URL field, then create the destination. That URL belongs to one connection, so a second Stripe account gets its own.
Copy the signing secret back
Stripe shows a signing secret beginning with whsec_ once the destination exists. Reveal it, copy it, and paste it back into ChaChing Alerts. That secret is what proves an incoming event came from Stripe and not from someone guessing your URL.
The moment the first verified event arrives, the connection flips to receiving in your dashboard, so you never have to guess whether it worked.
Step 3: arm the sound and leave the tab open
Open the dashboard and click enable sound once. Pick your sound while you are there. Seven ship with it: a cha-ching, a cash register, a level up, a gong, a vibraphone, a marimba and a coin drop, plus a synthesized fallback, all levelled to the same volume so none is louder than another.
Then leave the tab open and get back to work. The next successful charge in that Stripe account rings within seconds.
Why the browser makes you click once
This trips people up, so it is worth being exact about. Chrome's autoplay policy allows a page to play audio once the user has interacted with the domain, or on desktop once that site has crossed a threshold of media engagement, or when the site has been installed as an app. Until one of those is true, audio is blocked, and the Web Audio context a page uses to make sound is created in a suspended state that only a user gesture can resume. Safari and Firefox apply their own versions of the same rule.
So the click is not a workaround. It is the browser handing your page permission to make noise, and it only has to happen once per session. On a machine you use every day, browsers generally stop asking.
Keeping a tab ringing all day
A tab that must make noise for eight hours runs into a problem that most write-ups on this subject skip: browsers actively work against long-lived background tabs, and pinning a tab does not exempt it. Chrome throttles timers in a hidden tab, can freeze the page outright, and can discard it entirely to reclaim memory, rebuilding it only when you click back.
An audible tab is exempt from all three, which is why arming the sound does more than pick a noise. While sound is on, the page holds an inaudible keep-alive so the browser continues to count the tab as active and leaves it running. If a tab was paused anyway, the dashboard says so and catches up rather than showing a healthy badge over a silent till.
- Make it deterministic in Chrome. Settings, then Performance, then "Always keep these sites active". This is the belt-and-braces step for a machine that must never miss one.
- Pin the tab anyway. It will not stop the browser sleeping it, but it does stop you closing it by accident, and the speaker icon in the title tells you sound is armed.
- Turn off sleep on a counter machine. A sleeping computer cannot play audio. Payments are still recorded and the totals catch up when it wakes.
- Give it a screen of its own. Display mode is built for a second monitor or a shop TV that stays on all day.
Which Stripe event should you send?
Only one, and picking the wrong one is the most common way a home-built version ends up missing sales.
charge.succeeded is the right event for a payment sound. It fires on every successful charge in the account regardless of how the money arrived, so Checkout, Payment Links, subscription renewals, paid invoices and direct API charges all ring.
checkout.session.completed sounds like the obvious choice and is not. It only fires for Checkout sessions, so a subscription renewing next month goes through silently. invoice.paid has the mirror problem: it covers billing and nothing else. payment_intent.succeeded overlaps heavily with charge.succeeded and will double up if you send both.
Two details worth knowing if you are wiring this yourself. Stripe does not guarantee that events arrive in the order they were generated, so anything downstream has to identify duplicates by ID rather than by timestamp. And Stripe explicitly recommends subscribing to only the events your integration needs, rather than sending everything and filtering later.
Every way to make a Stripe sale audible, compared
The honest version, including the free options and the places where something else is the better fit. If you only ever need a record of a payment, Stripe's own email is free and it works.
Swipe the table sideways to see every column.
| What you get | ChaChing Alerts | Notification platforms | Menu bar apps | Stripe mobile app | Build it yourself |
|---|---|---|---|---|---|
| Sound on your desktop | Yes | Yes | Yes | No | If you build it |
| Typical entry price | $4.49 a month | From $20 a month | About $7 a month | Free | Your weekend |
| Needs a Stripe API key | Never | App install or key | Usually yes | Not applicable | Key optional |
| Needs an install | No, any browser tab | No | Yes, per machine | iOS or Android | You host it |
| Works on any OS | Yes | Yes | One platform each | No | If you build it |
| Customer data on screen | Never, amount only | Varies | Often full details | Full details | Your choice |
| Multiple Stripe accounts | Up to 10 on one plan | Varies by tier | Often a paid tier | Account switcher | Yours to write |
| Full-screen counter display | Yes | Yes | No | No | If you build it |
| Slack and Discord alerts | Included | Varies by tier | Rarely | No | Yours to write |
| Setup time | About 2 minutes | About 5 minutes | Minutes, per machine | Minutes | A weekend, honestly |
Competing prices are the cheapest published entry tier for each category as of September 2026 and are worth checking before you decide. Notification platforms in this space start around $20 a month billed annually, and the Mac menu bar apps around $7 a month or a one-time licence. ChaChing Alerts is not affiliated with Stripe.
What it takes to build this yourself
You can, and it is a genuinely satisfying weekend. It is worth seeing the real scope before you start, because the demo is an afternoon and the parts that make it survive a working week are the rest of it.
- A public HTTPS endpoint on TLS 1.2 or better, since Stripe will not deliver to anything less.
- Signature verification on every request, computed as an HMAC with SHA-256 over the raw body, with a tolerance window so a replayed event is rejected.
- A host that does not sleep, and a handler that returns a 2xx immediately rather than after its own work, or Stripe records a timeout.
- Deduplication by event ID, because endpoints do occasionally receive the same event twice and one sale must not ring twice.
- A live connection into the browser, plus an audio unlock gesture and a strategy for the tab going to sleep behind you.
- A recovery path for the minutes your machine was closed, since Stripe retries for up to three days and those retries all have to land somewhere sensible.
That is the stack running here for $4.49/month. If you want to build it anyway, the overview of how real-time Stripe payment notifications work lays out the same pieces, and the guide to getting a Stripe payment sound covers why Stripe leaves the gap in the first place.
When the sound does not arrive
Six things account for almost every report, and each one has a specific tell.
- Payments appear in the feed, but nothing makes a noise.
- The tab is not armed. Click enable sound once, and check the tab is not muted in the browser and that your system output is not set to a device that is off. Browsers block audio in a tab until someone interacts with the page, so this is the first thing to rule out.
- It rang all morning and then went quiet.
- The browser paused the tab. Clicking back into it usually rings immediately, which is the giveaway: the payment arrived, the delivery was late. Keeping sound armed prevents this, and Chrome users can make it deterministic under Settings, then Performance, then "Always keep these sites active".
- Stripe shows the delivery failed with a 404.
- The connection is not verified yet. Until the signing secret is pasted back into ChaChing Alerts, the endpoint deliberately answers unknown callers with a 404 so nobody can probe for live URLs. Finish the last step and Stripe's next retry succeeds.
- Stripe shows the delivery failed with a 400 invalid signature.
- The secret does not match the destination. The most common cause is pasting the secret from a different endpoint, or a test mode secret onto a live mode destination, since Stripe issues a separate one for each. Reveal the secret on that exact destination and paste it again.
- Test payments ring but do not show up in the totals.
- That is deliberate. Test mode payments carry a test badge in the feed so you can confirm the wiring works, and they are excluded from revenue totals so your figures stay honest.
- A sale landed while the laptop was closed.
- The record is safe. Stripe retries a failed delivery for up to three days, and the dashboard reconciles anything it missed the next time you open it. Only the sound is lost, not the payment.
Where people put the screen
The setup on this page is the same everywhere. What changes is the room, and each of these covers one of them: app developers, solo founders, web shop owners and retail counters. If you want the whole team to hear it rather than one machine, there are Slack and Discord alerts as well.
Frequently asked questions
- How do I set up an alert sound on my computer when I make a Stripe sale?
- Create a ChaChing Alerts account, follow the guided setup to add one webhook destination in your own Stripe dashboard (we give you the URL and a link that pre-fills the rest), then leave the dashboard tab open and click "enable sound" once, because browsers require one click before a tab may play audio. Three steps, about two minutes. From then on every successful payment plays a cash register sound the moment it lands. It runs in the browser, so it works on Windows, Mac, Linux and Chromebooks with nothing to install.
- Can Stripe play a sound on my computer by itself?
- No. The Stripe dashboard in a desktop browser has no audio at all, so new payments appear only when you refresh the page. Stripe can email you, and the Stripe mobile app can make a noise on your phone, but neither of those puts a sound on the machine you are working at. There is no setting to turn on, which is why a separate listener is needed.
- Do I need to give out a Stripe API key to get sound alerts?
- Not with this setup. You register an inbound webhook destination from inside your own Stripe dashboard, which is a one-way notification: Stripe posts events to us and we have no way to call back into your account. Several competing tools do ask you to paste a secret API key or install a Stripe App with account access. This one asks for neither, and you can delete the destination in Stripe at any time to stop it dead.
- Which Stripe event should a payment sound listen to?
- charge.succeeded. It fires on every successful charge in the account, whether the money came from Checkout, a Payment Link, a subscription renewal, a paid invoice or a direct API call, so one event covers every way you take money. checkout.session.completed only covers Checkout sessions, and invoice.paid only covers billing, so either one on its own will miss sales. Stripe also recommends subscribing to only the events you need rather than sending everything.
- Why do I have to click once before the sound works?
- Every modern browser blocks audio in a tab until someone has interacted with that page. Chrome's autoplay policy allows sound once the user has interacted with the domain, and the Web Audio context a page uses for sound starts in a suspended state until a gesture resumes it. That is a deliberate rule, not a bug or a limitation of this app. Click enable sound once after opening the dashboard and the tab is armed.
- Will it keep ringing if the tab sits in the background all day?
- Yes, and the reason is worth knowing. Browsers throttle, freeze and sometimes discard background tabs to save power, and pinning a tab does not exempt it from any of that. A tab that is playing audio is exempt, so while sound is armed the page holds an inaudible keep-alive that keeps the browser treating it as active. For a machine that must never miss one, Chrome users can also add the site under Settings, then Performance, then "Always keep these sites active".
- Does it work on Windows, Mac, Linux and Chromebooks?
- Yes. It is a browser tab, so any operating system with a modern browser works and there is nothing to install, update or keep signed in on each machine. That is the main practical difference from the menu bar apps in this category, which are downloads tied to one operating system and often to one computer.
- What happens to sales that land while my computer is asleep?
- Nothing is lost from your records. Stripe retries a failed delivery for up to three days with exponential backoff, and payments that arrive while your tab was closed are captured and reconciled the moment you open the dashboard again, so your totals catch up. The sound itself needs a browser that is awake, which is why display mode exists for a screen that stays on all day.
- Will this break the Stripe webhook my own app already uses?
- No. Stripe lets you register multiple webhook endpoints on one account, and each destination has its own event list and its own signing secret. Adding one for sound alerts sits alongside whatever your application already listens to and does not change, replace or intercept it.
- How much does it cost and is there a trial?
- $4.49/month, which covers unlimited payments, up to 10 Stripe accounts, every sound and every feature. No card required. Your free trial ends 48 hours after your first live payment arrives, or 30 days after signup, whichever comes first. Then subscribe for $4.49/month to continue, or pay once for lifetime access. No automatic charge.
Keep reading
Two minutes from here to your first cha-ching.
$4.49/month, unlimited payments, up to 10 Stripe accounts, every sound and every feature on this page.
Or pay $120 once and never pay again. Lifetime access is available until September 30, 2026.
No card required. Your free trial ends 48 hours after your first live payment arrives, or 30 days after signup, whichever comes first. Then subscribe for $4.49/month to continue, or pay once for lifetime access. No automatic charge.