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.
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?
Why convert each payment on its own date instead of using one rate for the week?
What does separating growth from currency movement actually mean?
Will this still be useful if I only charge in one currency?
Does it handle currencies like the Japanese yen that do not use decimals?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
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.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
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.
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.
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.
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.