Reconcile Stripe payouts against your Mercury deposits

Every weekday morning, check that every Stripe payout actually landed in your Mercury account, and hear about it only when one did not.

Agentic Task
StripeMercurySlack BotFinanceOperationsNotifications & AlertsDaily Digests
PromptCreate

Every weekday at 9am, reconcile my Stripe payouts against the money that actually landed in my Mercury account, and post only the exceptions to Slack.

Start by pulling my Stripe payouts from the last 14 days using the Stripe List Payouts operation. Then pull my Mercury account activity for the same window using the Mercury List Transactions operation, extending the Mercury window a few days on either side so that deposits which settled just outside the payout window are still visible. On the Mercury side, only incoming deposits matter, so ignore outgoing payments, card spend, and internal transfers.

Match each payout to the deposit that corresponds to it, using amount, date, and the counterparty description on the Mercury transaction, which usually names Stripe. Two things make this matching fuzzy rather than an equality check, so use judgement. First, settlement is not instant: a payout normally lands one to two business days after Stripe sends it, and that lag varies. Second, payouts do not always map one to one onto deposits, because they can be batched together or split apart before they reach the bank. When a near match looks like the same money arriving in a slightly different shape, treat it as matched and say so, rather than raising a false exception.

Convert units before comparing any amounts. Stripe reports amounts in the smallest currency unit, so a 1250 payout means twelve dollars and fifty cents. Mercury reports whole dollars as decimals, so the same money appears as 12.50. Divide the Stripe amount by 100 before comparing it to a Mercury amount. Never compare 1250 against 12.50 and conclude the amounts differ.

Report only exceptions, in three groups. First, payouts that are still unmatched more than three business days after Stripe sent them. Count business days rather than calendar days, so a Friday payout is not called late on Monday. Second, Stripe-looking deposits in Mercury that do not correspond to any payout in the window. Third, amount mismatches where a deposit clearly matches a payout but landed short of the expected amount, with the shortfall stated. Payouts that are still within the normal settlement window are not exceptions, so leave them out entirely.

Include the Stripe payout ID and the payout date on every single exception, along with the expected amount and, where there is one, the amount that actually landed. The payout ID is what lets me jump straight to it in the Stripe dashboard, so no exception line should ever be missing it.

Post the result to my finance channel in Slack using the Slack Bot Send a Message operation. When there are exceptions, group them under the three headings above and keep each line short and scannable. When everything reconciles, send a single short all clear line instead of a full report, for example noting how many payouts were checked and confirming that all of them landed. The whole point is that this channel stays quiet unless something genuinely needs attention, so never pad the message with detail about payouts that reconciled cleanly.

What does this prompt do?

  • Every weekday at 9am, pulls your Stripe payouts from the last two weeks alongside recent activity in your Mercury account.
  • Matches each payout to the deposit that actually landed, allowing for the one to two business day delay banks take to settle.
  • Posts a Slack message listing only the problems: payouts that never arrived, deposits that match no payout, and deposits that came in short.
  • Sends a short all clear when everything lines up, so the channel only lights up when something genuinely needs attention.

What do I need to use this?

  • A Stripe account that sends payouts to your bank.
  • A Mercury business banking account. Read only access is enough, because this workflow never moves money.
  • A Slack workspace and a channel where the finance updates should land.

How can I customize it?

  • Change when it runs, for example earlier in the morning or every day including weekends.
  • Widen or narrow the two week lookback, or change how many business days a payout can be missing before it counts as an exception.
  • Point it at a different Slack channel, or have it message you directly instead.

FAQs

Why does it wait a few days before flagging a payout as missing?
Stripe sends the money before your bank shows it. A payout typically takes one to two business days to appear as a deposit, so anything that alerted the moment Stripe marked a payout as sent would be wrong most of the time. This waits three business days before calling a payout missing, which keeps the alerts trustworthy.
Will this move any money or change anything in Stripe?
No. It only reads your payout history and your bank activity, then writes a message in Slack. Read only access to Mercury is enough, and nothing is created, refunded, or transferred.
What happens on a day when everything reconciles?
You get a single short all clear line rather than a full report. That is the point of the design: the channel stays quiet when the money is behaving, so a message from it always means something worth looking at.
What about weekends and bank holidays?
It counts business days rather than calendar days, so a payout sent on a Friday is not treated as late just because it did not land over the weekend.
Does it still work if my payouts are batched or split?
Yes. Payout amounts do not always map one to one onto bank deposits, so the matching uses judgement rather than a strict equality check. When a near match looks like the same money arriving in a different shape, it reasons about it instead of raising a false exception.

Related templates

Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Draft polite follow-ups for emails that never got a reply

Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.

Aurinko
Google Sheets
Slack Bot
Agentic Task
Replay failed SQS messages when a bug fix is merged

When you merge a fix in GitHub, this agent checks the matching dead-letter queue, replays the failed messages, and reports back on the pull request and in Slack.

Amazon SQS
GitHub
Slack Bot
Agentic Task

Stop chasing Stripe payouts through your bank statement.

Let this run every weekday morning and tell you only when money is actually missing.