Catch duplicate Braintree charges before they become chargebacks

Every four hours we scan your Braintree payments for accidental double charges, reverse the clear-cut ones, and flag the rest in Slack for approval.

Agentic Task
BraintreeSlack BotHubSpotFinanceOperationsNotifications & AlertsResearch & Monitoring
PromptCreate

Every four hours, scan my Braintree account for accidental duplicate charges and get them reversed before they turn into chargebacks. This matters because issuing banks treat a double charge as a merchant error, so it usually comes back as a chargeback with fees attached rather than a simple refund, and customers tend to dispute with their bank instead of contacting support. The whole point is to catch and fix these within hours.

Start by using Braintree Search Transactions to pull every successful transaction from the last 24 hours. Cluster those transactions by customer, amount, and payment method, and flag any cluster where two or more near-identical charges landed within a short window of each other. Default that window to 60 minutes and make it easy for me to change.

For each suspected cluster, use Braintree Search Customers to attach the customer's name and email address so the alert is readable by a human without anyone having to go look up an ID.

Judge each cluster rather than blindly refunding it. An identical amount plus a matching order ID a few minutes apart is a real double submit, typically caused by a payment system retrying a charge, a shopper clicking buy twice on a slow checkout page, or a pre-authorization hold being converted to a charge incorrectly. On the other hand, distinct order IDs, a genuine restock or repeat purchase, and payments arriving on a normal recurring cadence that is visible in the customer's own transaction history should all be left alone. Give every cluster a confidence rating and a recommended action.

Because the scan runs every four hours across a 24 hour lookback, the same pair of charges will show up on several consecutive runs. Skip any cluster where one of the charges has already been voided or refunded, and do not re-alert or re-reverse a pair that an earlier run already handled.

Post a summary to my billing channel in Slack listing every suspected duplicate, with the customer name and email, the amount, both transaction IDs, the time gap between the two charges, the confidence rating, and the recommended action. If the scan finds nothing, keep it to a short all clear rather than a full empty report.

Then auto-reverse only the high confidence duplicates whose amount falls below a configurable dollar threshold, using Braintree Reverse Transaction, which voids or refunds automatically depending on whether the charge has already settled. That distinction is worth preserving: voiding a charge that has not settled yet means it never appears on the customer's statement at all. Always reverse the later charge in the pair and leave the original alone. Anything above the threshold, and anything below high confidence, stays in Slack for a human to approve instead.

Finally, for each duplicate, use HubSpot Search Contacts to find the contact by email address, then use HubSpot Create Note to log a note against that contact recording the duplicate charge, both transaction IDs, the amount, and whether it was reversed automatically or is still awaiting approval. That way support can see the duplicate and its refund status immediately if the customer calls in.

What does this prompt do?

  • Scans the last 24 hours of Braintree payments every four hours and groups together charges that look like the same customer paying the same amount twice
  • Weighs the evidence before acting, so a genuine repeat purchase or a payment on its normal recurring cadence is left alone while a true double submit gets caught
  • Posts a Slack summary to your billing channel with the customer name and email, the amount, both charge IDs, how far apart they landed, and a confidence rating
  • Automatically reverses the clear-cut duplicates under a dollar limit you set, leaves anything larger for a person to approve, and logs a note on the customer's HubSpot record either way

What do I need to use this?

  • A Braintree account with permission to view transactions and issue refunds
  • A Slack workspace and a billing channel for the alerts to land in
  • A HubSpot account, if you want the duplicate and its refund status logged on the customer record
  • A dollar figure in mind for what can be refunded automatically versus what needs a human to approve

How can I customize it?

  • Change the time window that counts as a duplicate. By default two matching charges landing within 60 minutes of each other are treated as suspicious.
  • Set the dollar amount above which a refund waits for human approval in Slack instead of going out automatically. Set it to zero if you want to approve every single one.
  • Adjust how often the scan runs and which Slack channel gets the alert.

FAQs

Will it refund a customer who genuinely bought the same thing twice?
That is exactly what it is built to avoid. Before recommending anything it looks at whether the two charges share an order reference, whether the amounts and payment method match exactly, and how the customer normally buys from you. Two purchases with different order references, a restock, or a payment arriving on its usual recurring cadence get left alone. Only clear-cut double submits are refunded automatically, and only under the dollar limit you set.
What happens if the duplicate charge has already gone through?
Both cases are handled. If the charge has not settled yet it gets cancelled outright, so it never appears on the customer's statement at all. If it has already settled, it gets refunded instead. You do not have to work out which situation you are in.
Do I have to let it issue refunds on its own?
No. The dollar threshold controls this completely. Set it low, or to zero, and every suspected duplicate is simply reported to Slack with a recommendation for someone on your team to approve. The detection, the summary, and the customer record note all still run.
Why not just wait for the customer to tell us?
Most people call their bank instead of your support team. Banks treat duplicate charges as a merchant error, so they usually come back as chargebacks with fees attached rather than as a simple refund you control. Catching the double charge within a few hours means you refund it on your own terms.
Do I need HubSpot for this to work?
No. The HubSpot note is the final step, there so your support team can see the duplicate and whether it was already refunded if the customer ever calls in. If you do not use HubSpot you can drop that step and the scanning, the Slack alert, and the refunds all still work.

Related templates

Prospecting desk that builds account lists from the live web

Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.

Hyperbrowser
HubSpot
Google Sheets
App
Plan a field sales day around drive time and neglected accounts

Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.

Geolocation
HubSpot
Google Calendar
App
Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Find ICP accounts, verify the emails, file them in HubSpot

One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.

Hunter
HubSpot
App
Approval war room for every social post awaiting sign-off

One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.

Hootsuite
Slack Bot
App
Turn champion job changes into new pipeline in Attio

Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.

Boomerang
Attio
Slack Bot
Agentic Task

Catch double charges before your customers do.

Set this up once and every accidental duplicate gets spotted, reversed, and logged on the customer record before it can turn into a dispute.