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.
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.
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.
Stay in the loop
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…