Consolidate weekly Stripe revenue and separate growth from FX

Every Monday, turn last week's Stripe payments in every currency into one home currency total and show what was real growth versus exchange rates.

Agentic Task
Open Exchange RatesStripeGoogle SheetsSlackFinanceAI ReportsDaily Digests
PromptCreate

Every Monday at 7am, consolidate last week's Stripe revenue into my home currency and explain what currency movement did to the number. Treat my home currency as USD unless I have told you otherwise, and treat the reporting window as the seven full days ending the previous Sunday.

Use the Stripe List Balance Transactions operation to pull every transaction that settled inside that seven day window, across every currency I charge in. Page through the whole result set instead of stopping at the first page, and keep each transaction's currency, settlement date, gross amount, fee and net amount. Stripe returns amounts in the smallest currency unit, so divide by 100 for normal decimal currencies and handle zero decimal currencies such as JPY and KRW correctly rather than dividing them. If I ask for gross charge volume instead of settled activity, use List Charges in place of List Balance Transactions.

Use the Open Exchange Rates Get Historical Rates operation to convert each transaction at the rate on its own settlement date. Do not apply one week end rate to the whole period, because that makes both the currency effect and the growth number wrong. Loop the historical call once per distinct settlement date in the window and reuse that result for every transaction on the same date, since each dated call counts against my monthly request quota. Also call Get Latest Rates once for today's comparison rate. Open Exchange Rates is a read only API and free plans are USD base only, so request USD as the base and derive any cross rate you need by dividing the two USD quotes. Do not use the Convert Amount operation or the Get Time-Series operation, since those require higher plans than mine.

Write a short report that breaks revenue down by currency, showing both the native amount and the converted home currency amount for each, and then gives the consolidated home currency total. Separate genuine growth from pure FX effect: restate last week's currency mix at the prior week's rates, report the difference between that restated total and the actual converted total as the FX effect, and treat the remainder as real growth. State plainly which direction currency movement pushed the headline number.

Append the weekly totals as a row to my finance tracking sheet with the Google Sheets Append Values operation. The row should carry the week ending date, the per currency native totals, the consolidated home currency total, the constant currency total and the FX effect, so the tab builds a week over week history I can chart later.

Then post the written summary to Slack with the Send a Message operation, calling out any currency where the FX effect alone exceeded 1 percent of that currency's revenue. Lead with the consolidated total and the growth versus FX split, and keep the message short enough to read on a phone.

If a settlement date has no published rate yet, fall back to the most recent earlier date that does and note the substitution in the report.

What does this prompt do?

  • Pulls every payment that settled in your Stripe account over the last seven days, across every currency you charge in.
  • Converts each payment at the exchange rate from the day it actually settled rather than one rate for the whole week, so the totals hold up.
  • Splits the week over week change into genuine growth and pure currency movement by restating last week's mix at the previous week's rates.
  • Adds the weekly totals to your finance tracking spreadsheet and posts the written summary to Slack, flagging any currency where exchange rates alone moved revenue by more than 1 percent.

What do I need to use this?

  • A Stripe account taking payments in one or more currencies
  • An Open Exchange Rates account (the free plan is enough; it quotes everything against the US dollar and the report does the rest of the maths)
  • A Google Sheets spreadsheet to keep the weekly history in
  • A Slack workspace and the channel where the Monday summary should land
  • Your home currency, meaning the one you report the business in

How can I customize it?

  • Change the day and time it runs, or the length of the reporting window
  • Set your home currency and choose which Slack channel or person receives the summary
  • Raise or lower the 1 percent threshold that decides when a currency gets called out
  • Report gross customer payments instead of settled amounts if you would rather see revenue before fees

FAQs

Do I need a paid Open Exchange Rates plan?
No, the free plan works. Free accounts quote every currency against the US dollar, so the report derives the pairs it needs by comparing those dollar quotes. Paid plans mainly give you a bigger monthly lookup allowance, which matters only if you run this many times a day.
Why convert each payment on its own date instead of using one rate for the week?
Applying a single end of week rate to seven days of payments smears the numbers, and it makes both the growth figure and the currency effect wrong. Converting each payment at the rate on the day it settled is what lets the report tell the two apart.
What does separating growth from currency movement actually mean?
The report takes last week's mix of currencies and restates it at the previous week's exchange rates. The gap between that restated figure and the real converted total is the part caused purely by currency movement. Whatever is left is genuine growth.
Will this still be useful if I only charge in one currency?
Yes. You still get the weekly total, the spreadsheet history and the Slack summary. The currency section will simply report that exchange rates had no meaningful effect.
Does it handle currencies like the Japanese yen that do not use decimals?
Yes. Stripe reports amounts in the smallest unit of each currency, and the report knows which currencies have no decimal places so yen and similar currencies are not accidentally divided by a hundred.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
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
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
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
Turn each week's football fixtures into a venue staffing plan

Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.

API-Sports
Google Calendar
Slack
Agentic Task

Stop guessing whether revenue grew or the dollar moved.

Get one Monday morning report that consolidates every currency you charge in and shows exactly which part of the change was real.