Operations & Daily Work / Solution 05

Investigate the surprising number in Stripe activity.

Every week starts with copying metrics into a report. The narrative takes another hour, and nobody trusts the final version.

n8nGoogle SheetsStripe APIYour AI assistant of choice (e.g. ChatGPT, Claude, Gemini)Google DriveGoogle DocsRead-only SQL serviceIllustrative walkthrough
How to solve

What each tool does

Use the tools for your chosen path. Optional advanced tools are identified below.

n8n

Responsibility
Coordinate the reporting checks.
What it accomplishes
A pending exception brief or incomplete status.
What it does
Reads the export register, checks windows and thresholds and routes evidence into drafting.

Google Sheets

Responsibility
Calculate the pilot metric.
What it accomplishes
Reconciled totals by period and currency.
What it does
Stores export windows and row counts and calculates totals with formulas.

Stripe API

Responsibility
Supply balance activity for Stripe businesses.
What it accomplishes
Source transactions behind a change.
What it does
The advanced worker fetches all pages of balance transactions and preserves IDs and currencies.

Your AI assistant of choice (e.g. ChatGPT, Claude, Gemini)

Responsibility
Explain supplied differences.
What it accomplishes
A sourced observation with unknown causes left open.
What it does
Copies verified numbers, cites transaction IDs and proposes the next check.

Google Drive

Responsibility
Store the pilot exports.
What it accomplishes
Original files behind the report.
What it does
Keeps complete exports and their source links for reconciliation.

Google Docs

Responsibility
Present the report for review.
What it accomplishes
A shareable brief after owner approval.
What it does
Stores source links, refresh time and proposed narrative for the operations lead.

Read-only SQL service

Responsibility
Bound optional agent investigations.
What it accomplishes
Traceable breakdowns without production writes.
What it does
Runs parameterized queries over approved views for period comparisons and transaction lookups.

This walkthrough is for operations teams reporting Stripe balance activity.

AI reporting automation that brings the receipts

A report says net receipts fell. Before someone invents an explanation, have a workflow check whether the export is complete, separate refunds from charges and find the records behind the change. Send the operations lead a short exception brief with links they can inspect.

Start with one metric: Stripe balance activity by week and currency. Call it balance activity, not revenue or profit. Your finance owner defines which transaction types belong in the measure.

Schedule: Weekly check → n8n: Trace the change → Operations lead: Verify evidence → Team: Approved brief ScheduleWeekly checkn8nTrace the changeOperations leadVerify evidenceTeamApproved brief The workflow prepares the work. A person releases it.
Illustration: Schedule: Weekly check → n8n: Trace the change → Operations lead: Verify evidence → Team: Approved brief. The review gate comes before the final action.

1. Define the number before automating it

Use two complete Stripe exports with transaction IDs, type, currency, amount, fee, net and created time. Store them in Drive and register their date windows and row counts in a Sheet. Fix the reporting timezone and never mix currencies.

Synthetic comparison, USD, same weekly window:
Prior: charges net 1,000; refunds -100; combined net 900.
Current: charges net 1,000; refunds -400; combined net 600.
Refund R17: -300; linked transaction available.
No customer reason or operational cause supplied.

In the pilot Sheet, calculate totals with formulas. Set a proposed exception threshold, such as a week-on-week change above 15%, and have the operations lead approve it.

2. Low-code path: check freshness, then explain exceptions

Build n8n nodes in this order: Schedule Trigger → Google Sheets to read the export register → IF to verify both complete windows → Google Sheets to read the calculated totals. A missing export creates a “report incomplete” notification and stops the narrative branch.

Use an IF node for the approved threshold. When triggered, fetch the matching transaction rows and group by type and currency. Pass those rows and calculated totals to your AI assistant step:

Write an exception brief from verified totals and source rows.
Return observation, supporting_transaction_ids, unknowns and one check
for the operations owner. Copy supplied numbers; do not recalculate.
Distinguish an arithmetic contribution from a business cause.
A missing period or failed source lookup means REPORT INCOMPLETE.

Create a private Google Doc containing the brief, source links, windows and refresh time. Notify the operations lead that it is ready for review. For normal weeks, prepare a one-line “within threshold” result with the same source links. No report is distributed to the wider team yet.

3. Approve the explanation, not just the total

The sample net falls by USD 300. Refund activity accounts for that numerical difference; R17 supplies the extra USD 300. Nothing here proves poor service or lost customers. The brief asks the owner to inspect R17.

The operations lead checks formulas, sign conventions, excluded transaction types and completeness. They add any verified context and share the approved document. If a source changes during review, regenerate the brief and review again.

OPERATIONS LEAD CHECKS: Complete periods and traceable totals. Otherwise hold and check. OPERATIONS LEAD CHECKSComplete periods and traceable totalsMissing rows or unsupported explanation Approve →Hold + check
The operations lead approves both the calculation and its interpretation before sharing.

4. Advanced path: give the agent a small investigation budget

Replace manual exports with a scheduled worker calling Stripe’s balance-transactions list API. Fetch all pages, preserve transaction IDs and separate currencies. Use code for totals and record-count reconciliation. Select the intended time basis explicitly; created time and availability time answer different questions.

Expose read-only tools to an agent: compare_periods, break_down_by_type and get_transaction. Let it choose up to four follow-up queries, then produce an evidence packet or say what remains unknown. A database implementation should use parameterized queries over approved views, not arbitrary model-written SQL against production.

Store the result as pending. A separate authenticated approval action can distribute the exact approved report. Never let the reporting agent issue refunds, alter accounting data or quietly fill a missing day with zero.

5. Try a report that should refuse to explain itself

Test an incomplete export, pagination failure, zero prior period, mixed USD and EUR, and a refund posted after the cutoff. Expect incomplete status, incomplete status, an absolute change without percentage, separate totals and an explicit period boundary respectively.

Compare one automated report with a manually reconciled one. Track preparation time, review time and unsupported explanations. If reconciliation fails, distribute the source data with a limitation note through the normal manual process.

Scope: An illustrative build recipe with synthetic examples, not a live-tested integration or a claim of savings. Start with test records. Connector access, API usage and approval features may require paid plans.

AI connection: Use your AI assistant of choice (e.g. ChatGPT, Claude, Gemini). For automation, configure its supported provider API or connector; chat access alone does not supply an API connection. Keep approval outside the model.

Better together

How did it go?

Share a useful tweak, a question, or what you learned. Sign in with Google to post; your Google name and profile picture appear with your comment.

Loading comments…