# 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.

- Workflow type: agent
- Services: Open Exchange Rates, Stripe, Google Sheets, Slack
- Categories: Finance
- Published: 2026-08-09

## What it does

- 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 you'll need

- 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

## Prompt

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.

## How to customize

- 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

## FAQ

### 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.

Use this prompt in General Input: https://www.generalinput.com/prompts/consolidate-weekly-stripe-revenue-and-separate-growth-from-fx