Reconcile Stripe payouts against your Mercury deposits

By General Input

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

Integrations

  • Stripe
  • Mercury
  • Slack Bot

Type

Agentic Task

Categories

  • Finance
  • Operations

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.

Related prompts

Explore more prompts
Let support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonCustomer lifecycle inspector for Loops, Stripe and PostHogLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client account