Reconcile daily Stripe revenue with ApogeoAPI, Google Sheets, and Slack
UnknownUnknown. This template uses community nodes we can't verify statically. Uses community nodes that can't be verified statically (unverified community packages are off by default in 3.0). Static check, last run 2026-10-19.
Community nodes
These come from third-party npm packages. In n8n 3.0 unverified community packages are off by default (N8N_UNVERIFIED_PACKAGES_ENABLED=false).
n8n-nodes-apogeoapi(Fetch Exchange Rates)
Nodes used (8)
- Schedule Trigger
n8n-nodes-base.scheduleTrigger - Manual Trigger
n8n-nodes-base.manualTrigger - Stripe
n8n-nodes-base.stripe - Code
n8n-nodes-base.code - Apogeo API
n8n-nodes-apogeoapi.apogeoAPI - Google Sheets
n8n-nodes-base.googleSheets - If
n8n-nodes-base.if - Slack
n8n-nodes-base.slack
What it does
Quick overview This workflow runs daily to reconcile yesterday’s successful Stripe charges in multiple currencies, converts net revenue to a single reporting currency using ApogeoAPI exchange rates, appends a dated total to Google Sheets, and posts a Slack alert if rates are stale or any charges cannot be converted. How it works 1. Runs every day at 09:00 (or manually with provided sample data for testing). 2. Retrieves charges from Stripe and keeps only succeeded charges created during the previous UTC day, net of any refunded amounts. 3. Fetches a full set of FX rates from ApogeoAPI in a single request using USD as the base. 4. Converts each charge to the reporting currency with correct handling for zero- and three-decimal currencies, aggregates totals by currency, and computes a grand total. 5. Appends one reconciliation row (date, totals, breakdown JSON, and any unconverted charges) to a Google Sheets tab. 6. Posts a message to a Slack channel when exchange rates are marked stale or any charges could not be converted. Setup 1. Install the n8n-nodes-apogeoapi community node (required for the ApogeoAPI exchange rate step). 2. Add credentials for Stripe, ApogeoAPI, Google Sheets (OAuth2), and Slack. 3. Update the Google Sheets document ID and ensure the sheet has a Reconciliation tab with columns for date, reporting currency, totals, rate flags, and JSON breakdown fields. 4. Set the Slack channel (for example finance) and adjust the reporting currency constant in the code if you don’t want USD. 5. Run the manual test trigger once to validate output, then activate the scheduled workflow.