Three custom functions pull your own Stripe payouts, payout items and balance straight into the grid. A free template workbook matches those payouts against the bank statement you paste in. Your restricted, read-only Stripe key stays on your device.
Runs in Excel on Windows and Mac (Microsoft 365) and in Excel on the web.
Reconciliation
=IF($A4="","",IF($D4=0,"UNMATCHED","Matched"))
| Payout | Arrival | Amount | Status |
|---|---|---|---|
| po_1Kaโฆ7Qd | 2026-06-02 | 1,240.50 | Matched |
| po_1Kbโฆ3Fz | 2026-06-05 | 318.00 | Matched |
| po_1Kcโฆ9Lm | 2026-06-09 | 2,905.75 | UNMATCHED |
Everything the add-in does, and nothing it does not: it reads your Stripe payouts and helps you tie them to your bank.
=STRIPE.PAYOUTS(from, to) returns your payouts for a date range as Payout ID, Arrival date, Amount, Currency, Status, Bank and Description. Rows come back oldest-first and spill down and to the right from the formula cell.
=STRIPE.PAYOUT_ITEMS(payoutId) lists the transactions behind one payout: Txn ID, Type, Description, Created, Gross, Fee, Net and Currency. Point it at a po_โฆ id, for example from the first column of STRIPE.PAYOUTS.
=STRIPE.BALANCE() returns Type, Currency and Amount, with one available row and one pending row per currency. Amounts arrive in major units, and zero-decimal currencies such as JPY are handled correctly.
A free workbook with four sheets. Pull your payouts, paste your bank statement, and every payout is flagged Matched or UNMATCHED with a summary block of counts and totals. Built from plain SUMPRODUCT formulas a bookkeeper can read and adjust.
You use a restricted Stripe key (rk_live_ or rk_test_) with Balance: Read and Payouts: Read. It is stored only in the add-in's local storage on your device, and the functions call api.stripe.com directly from your machine, so neither the key nor your payout data passes through Innova Apps servers.
Four checks run in the task pane and stop at the first failure, each with the exact fix: the key format, that the key is valid and Balance: Read works, that Payouts: Read works, and a side-effect-free write probe. The probe tells you if the key you pasted can write, so you can go back to Stripe and recreate it read-only. The add-in itself never writes: it only issues GET requests for payouts, balance transactions and balance.
Five steps. The Stripe key is created by you, in your own Stripe account, with read permissions only.
In Stripe, go to Developers → API keys → Create restricted key and grant Balance: Read and Payouts: Read. Optionally also grant read access to external payout accounts (bank accounts) so the add-in can show bank names next to your payouts.
Restricted keys start with rk_live_ or rk_test_ and Stripe shows them only once, so copy the whole key.
Sign in with your free Innova Apps add-in account, paste the key, and choose "Test my key." Four checks run and stop at the first failure, each explaining exactly what to change. Saving only accepts restricted keys, so secret keys (sk_) and publishable keys (pk_) are refused with an explanation, and the write probe tells you if the key you pasted can write so you can recreate it read-only.
The key is saved to this device only. "Forget key" removes it again, and you can revoke it in Stripe at any time.
Type =STRIPE.PAYOUTS(B1,B2) with your From and To dates in B1 and B2, or write the dates as text such as 2026-06-01. The results spill down and to the right, oldest-first, with amounts in major units and dates as yyyy-mm-dd text.
On the Bank Import sheet of the template, paste three columns from your bank: Date, Description and Amount. The Date cells need to be real dates rather than text for the matching to work.
The Reconciliation sheet flags each payout Matched in green or UNMATCHED in red, and every bank deposit without a payout behind it is flagged "NO MATCHING PAYOUT" in amber on the Bank Import sheet. A summary block shows payouts listed, matched and unmatched counts, and the payouts, matched and unmatched totals.
Want the full walkthrough? Read the quickstart or the documentation.
Four sheets that take you from a date range to a list of deposits you still need to explain. Free to download, with no add-in account needed just to open it.
What to fill in, in what order, and what each sheet is for.
From and To date cells, plus a pre-placed =STRIPE.PAYOUTS(B1,B2) that fills the sheet.
Paste Date, Description and Amount from your bank. Deposits with no payout behind them are flagged here.
Every payout flagged Matched or UNMATCHED, the match window in J1, and the summary block.
A payout matches a bank row when the two amounts agree to the cent and the bank date falls inside a match window you control, in cell J1 on the Reconciliation sheet. The default is ± 3 days, because deposits often land a day or two after the payout's arrival date.
The formulas are plain and auditable, SUMPRODUCT-based with no array-entry (CSE) formulas, so a bookkeeper can inspect them and change them.
Two things to keep in mind:
If the sheet shows #NAME?, the add-in is not loaded yet. Open the task pane once, then recalculate with Ctrl+Alt+F9 (Cmd+Alt+F9 on Mac).
Direct .xlsx download. The workbook opens on its own; the =STRIPE.* formulas fill in once the add-in is installed and your key is connected.
Amounts come back in major units, for example 123.45 rather than 12345, with zero-decimal currencies such as JPY handled correctly. Dates come back as yyyy-mm-dd text.
=STRIPE.PAYOUTS(from, to, [includeHeader])
from and to are a date cell or text such as 2026-06-01. includeHeader defaults to TRUE. Rows are oldest-first and the results spill down and to the right from the formula cell.
| Payout ID | Arrival date | Amount | Currency | Status | Bank | Description |
|---|---|---|---|---|---|---|
| po_1Kaโฆ7Qd | 2026-06-02 | 1240.50 | USD | paid | Bank โขโข4321 | STRIPE PAYOUT |
=STRIPE.PAYOUT_ITEMS(payoutId, [includeHeader])
payoutId is a po_โฆ id, for example a cell from the first column of STRIPE.PAYOUTS. includeHeader defaults to TRUE.
| Txn ID | Type | Description | Created | Gross | Fee | Net | Currency |
|---|---|---|---|---|---|---|---|
| txn_1Kaโฆ2Bp | charge | Invoice 1042 | 2026-05-31 | 120.00 | 3.78 | 116.22 | USD |
=STRIPE.BALANCE()
Takes no arguments. The spill is one header row, then one available row and one pending row per currency you hold.
| Type | Currency | Amount |
|---|---|---|
| available | USD | 4820.15 |
| pending | USD | 1310.00 |
Nothing to install on a server, and no bank credentials anywhere.
Microsoft 365
Microsoft 365
In the browser
Your own
Read-only, created by you
Free, email and password
The add-in itself is free to install. The plan only changes how far back you can pull and how many payouts come back at once.
Enough to reconcile a recent month and see whether the matching fits how you work.
For closing the books across quarters and years rather than a single month.
Pro is billed through Stripe on Innova Apps' own Stripe account, not through Microsoft, and card details never reach Innova Apps servers. Paid upgrades are still being switched on; when they are, you start an upgrade from the Upgrade button in the task pane and cancel any time from "Manage billing" there.
The questions people ask before they paste a Stripe key into anything.
No. Saving only accepts restricted keys, so secret keys (sk_) and publishable keys (pk_) are refused with an explanation, and the fourth check in "Test my key" is a side-effect-free write probe that fails if the key you pasted can write, telling you to recreate it read-only. The add-in itself never writes: it only issues GET requests for payouts, balance transactions and balance, so it cannot create charges, issue refunds or move money.
Only in the add-in's local storage on your device. It is never sent to, stored on, or logged by Innova Apps servers, and the =STRIPE.* functions call api.stripe.com directly from your machine, so your payout data does not pass through our servers either. "Forget key" removes it from the device, and you can revoke it in Stripe.
You create it with Balance: Read and Payouts: Read, which is what the three functions need. If you also grant read access to external payout accounts (bank accounts), the add-in can show bank names next to your payouts; without it the Bank column falls back to the raw destination id, such as ba_1Abc.... Nothing else is requested.
A payout matches a bank row when the amounts agree to the cent and the bank date falls inside the match window in cell J1 on the Reconciliation sheet, which defaults to ± 3 days. Two payouts of the same amount inside the window can match the same deposit, so the template asks you to verify those by hand, and one copy of the workbook assumes a single currency.
No. There is no bank feed and no bank credentials involved. You paste Date, Description and Amount from your own statement onto the Bank Import sheet, and the workbook does the matching from there.
Excel on Windows or Mac with Microsoft 365, or Excel on the web. You also need a Stripe account and a free Innova Apps add-in account (email and password) that is used for sign-in and plan status.
Free covers the last 30 days and caps every formula at 25 rows, for STRIPE.PAYOUTS and STRIPE.PAYOUT_ITEMS alike, so a payout with more than 25 transactions behind it needs Pro. If a range is too wide you will see a message saying so; narrow the date range and pull in chunks, or move to Pro for full history and up to 1,000 rows per call.
That means the add-in is not loaded yet. Open the task pane once, then recalculate with Ctrl+Alt+F9 (Cmd+Alt+F9 on Mac). If a payout stays UNMATCHED although it is on the statement, check that the bank Date cell is a real date rather than text, that the amount matches to the cent, and widen the window in J1 if the deposit lagged.
It is coming soon to Microsoft AppSource and is not on the store yet. In the meantime, read the quickstart to see the whole setup, or email support@innovaapps.ai about early access.
Download the template today, and see the whole setup (restricted key, key test, first formula) in the quickstart. Coming soon to Microsoft AppSource.