---
title: "Recipe: Reconcile payments and payouts"
description: "TL;DR: On a schedule, this playbook pulls transactions from Stripe and your ledger or bank source, matches them in a Code step, and produces an exception report of mismatches sent to Slack or email. Trigger is a schedule; output is a reconciliation summary plus an exceptions list."
canonical_url: "https://docs.ballet.dev/articles/recipe-reconcile-payments-and-payouts-cMv63QRUdO"
md_url: "https://docs.ballet.dev/articles/recipe-reconcile-payments-and-payouts-cMv63QRUdO.md"
---
# Recipe: Reconcile payments and payouts

**TL;DR:** On a schedule, this playbook pulls transactions from Stripe and your ledger or bank source, matches them in a Code step, and produces an exception report of mismatches sent to Slack or email. Trigger is a schedule; output is a reconciliation summary plus an exceptions list.

## Who this is for

Finance teams that reconcile payments, payouts, and ledgers manually.

## What you'll need

- **Connectors:** Stripe (or payment processor), Ramp/bank/ledger source (HTTP), Slack or email.
- **Secrets:** Stripe API key, ledger/bank API key, Slack token or email API key.
- **Trigger:** Schedule (e.g. daily after close).

## How to build it with Ask Ballet

1. Open the Console on Home.
2. Paste the prompt below; set sources, matching window, and recipients.
3. Review the plan and confirm.
4. Connect Stripe and the ledger source plus Slack/email, then set the schedule.

```text
Build a playbook that runs daily at 6am. Pull yesterday's Stripe payouts and balance
transactions, and pull matching entries from our ledger via its API. Match transactions
by amount, date, and reference in a Code step. Produce a report with totals reconciled,
and an exceptions list for anything unmatched or with amount differences. Post the
summary to #finance-recon in Slack and email the exceptions to the finance team.
```

## What the playbook does

1. **Schedule trigger** — runs after daily close.
2. **HTTP step (pull Stripe)** — fetches payouts and balance transactions.
3. **HTTP step (pull ledger)** — fetches the matching ledger entries.
4. **Code step (reconcile)** — matches records and flags exceptions.
5. **HTTP step (report)** — posts the summary and emails exceptions.

## Variations and tips

- Define clear match keys (amount, date window, reference) to reduce false exceptions.
- Keep a record of resolved exceptions to avoid re-flagging.
- Escalate large discrepancies with an "Ask" step or a Slack mention.

## Related articles

- [Invoice and expense processing](/articles/recipe-invoice-and-expense-processing-MZMvhq3VlS)
- [How do I manage Schedules?](/articles/how-do-i-manage-schedules-NTU9cNrk8w)
- [How do I store credentials with Secrets?](/articles/how-do-i-store-credentials-with-secrets-1D8OUcCo0n)
- [How do I edit steps (Code and HTTP)?](/articles/how-do-i-edit-steps-code-and-http-47pGJ6HgKr)
