Quickstart
Overview Functions Template Security Plans & limits Troubleshooting Support Quickstart
Documentation

Documentation

The reference for Stripe Payout Reconciliation, the add-in that pulls your Stripe payouts into Microsoft Excel: the three custom functions and their exact columns, the reconciliation template workbook, how your restricted Stripe key is handled, the plan limits, and what to do when something does not look right.

Overview

Stripe Payout Reconciliation is an add-in that pulls your own Stripe payouts into the Excel grid with custom functions, and ships a reconciliation template workbook that matches those payouts against a bank statement you paste in, flagging matched and unmatched deposits.

There are two halves to it. The first is the three =STRIPE.* functions, which read payouts, the transactions behind a payout, and your balance. The second is the template workbook, which takes the payouts you pulled, compares them with your bank rows and tells you which deposits are still unexplained.

🔒 Where your data goes

You connect with a restricted, read-only Stripe key that you create yourself. The key is stored only in the add-in's local storage on your device, and the =STRIPE.* functions call api.stripe.com directly from your machine, so neither the key nor your payout data is sent to, stored on, or logged by Innova Apps servers. See Security & your Stripe key.

🏪 Not on the store yet

The add-in is coming soon to Microsoft AppSource and cannot be installed from the store today. The template workbook is already available to download, and you can email support@innovaapps.ai about early access.

Requirements

Component Requirement
Excel Excel on Windows or Mac (Microsoft 365), or Excel on the web
Stripe account Your own Stripe account
Stripe key A restricted, read-only key you create in Stripe, with Balance: Read and Payouts: Read
Add-in account A free Innova Apps add-in account (email and password), used for sign-in and plan status

Nothing else is needed. There is no bank connection and no bank credentials anywhere: your statement rows are pasted in by you.

Getting started

The short version, in five steps:

  1. In Stripe, go to Developers → API keys → Create restricted key and grant Balance: Read and Payouts: Read.
  2. Sign in to the task pane with your free Innova Apps add-in account, paste the key and choose Test my key.
  3. Type =STRIPE.PAYOUTS(B1,B2) with your From and To dates in B1 and B2.
  4. Paste Date, Description and Amount from your bank onto the Bank Import sheet of the template.
  5. Read the flags on the Reconciliation sheet.

The quickstart walks through the same five steps in full, including exactly which permissions to tick in Stripe and what each of the four key checks means.

Functions

Three custom functions are available in the STRIPE namespace. They all read; none of them writes anything to Stripe.

Two conventions apply to all three:

↘️ How results spill

Each function returns a block of cells that spills down and to the right from the cell you type the formula into. Leave that area empty: if something is in the way, Excel shows a spill error instead of the results. Only the top-left cell holds the formula.

STRIPE.PAYOUTS: payouts in a date range

=STRIPE.PAYOUTS(from, to, [includeHeader])

Returns your Stripe payouts whose arrival date falls in the range, oldest-first.

Parameters

Parameter Required What to pass
from Yes The start of the range: a date cell, or text such as 2026-06-01.
to Yes The end of the range: a date cell, or text such as 2026-06-30.
includeHeader No Defaults to TRUE, which puts a header row above the results. Pass FALSE for data rows only.

Output columns

The seven columns, with one example row.
Payout ID Arrival date Amount Currency Status Bank Description
po_1Ka…7Qd 2026-06-02 1240.50 USD paid Bank ••4321 STRIPE PAYOUT

Example

=STRIPE.PAYOUTS(B1,B2)

With 2026-06-01 in B1 and 2026-06-30 in B2, this returns a header row followed by one row per payout that arrived in June, oldest-first, spilling seven columns wide. Writing the dates as text works just as well: =STRIPE.PAYOUTS("2026-06-01","2026-06-30").

Notes

STRIPE.PAYOUT_ITEMS: the transactions inside one payout

=STRIPE.PAYOUT_ITEMS(payoutId, [includeHeader])

Returns the balance transactions that make up a single payout, so you can see the charges and fees behind the amount your bank received.

Parameters

Parameter Required What to pass
payoutId Yes A po_… id, for example a cell from the first column of STRIPE.PAYOUTS.
includeHeader No Defaults to TRUE. Pass FALSE for data rows only.

Output columns

The eight columns, with one example row.
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

Example

=STRIPE.PAYOUT_ITEMS(A5)

If A5 holds a payout id from the first column of a STRIPE.PAYOUTS result, this returns a header row followed by one row per transaction in that payout, spilling eight columns wide. Gross, Fee and Net are in major units, and Created is yyyy-mm-dd text.

Notes

STRIPE.BALANCE: your current Stripe balance

=STRIPE.BALANCE()

Returns your current Stripe balance: one available row and one pending row for each currency you hold. It takes no arguments, and it has no includeHeader parameter, so the result always starts with a header row.

Output columns

The three columns, with two example rows.
Type Currency Amount
available USD 4820.15
pending USD 1310.00

Example

=STRIPE.BALANCE()

Typed into an empty cell, this spills three columns wide: a header row, then two rows per currency. Amounts are in major units, so a JPY balance comes back as whole yen rather than as a sub-unit figure.

Notes

The template workbook

The reconciliation template is a free download, and you do not need an add-in account just to download and open it. The =STRIPE.* formulas inside it fill in once the add-in is installed and your key is connected.

Download stripe-payout-reconciliation-template.xlsx, a direct .xlsx download.

The four sheets

Sheet What it is for
Start Here Instructions: what to fill in, in what order, and what each sheet does.
Payouts From and To date cells, plus a pre-placed =STRIPE.PAYOUTS(B1,B2) that fills the sheet.
Bank Import Where you paste Date, Description and Amount from your bank. Deposits with no payout behind them are flagged here.
Reconciliation The matching: every payout flagged, the match window in cell J1, and the summary block.

The matching rule

A payout matches a bank row when both of these are true:

The window defaults to ± 3 days, because deposits can lag the payout's arrival date. Widen or narrow it in J1 to suit your bank.

The results are flagged three ways: each payout is Matched in green or UNMATCHED in red on the Reconciliation sheet, and each bank deposit with no payout behind it is flagged NO MATCHING PAYOUT in amber on the Bank Import sheet.

The summary block

The Reconciliation sheet carries a summary block with six figures:

What to keep in mind

⚠️ Two caveats the template also states

The workbook is built from plain, auditable Excel formulas, SUMPRODUCT-based with no array-entry (CSE) formulas, so a bookkeeper can inspect exactly how a flag was reached and adjust it.

ℹ️ 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).

Security & your Stripe key

The restricted-key model

You create the key yourself, in your own Stripe account, with read permissions only. In Stripe, go to Developers → API keys → Create restricted key and grant:

Restricted keys start with rk_live_ or rk_test_, and Stripe shows them only once, so copy the whole key when you create it. The add-in refuses secret keys (sk_) and publishable keys (pk_) with an explanation of what to do instead.

The four "Test my key" checks

"Test my key" in the task pane runs four checks and stops at the first failure, telling you the exact fix each time.

# Check What it proves
1 Key format That you pasted a restricted key (rk_live_ or rk_test_) rather than a secret or publishable key.
2 Valid key, Balance: Read That Stripe accepts the key and that the Balance: Read permission is present.
3 Payouts: Read That the Payouts: Read permission is present.
4 Write probe Whether the key can write. The probe POSTs to a payout id that cannot exist, so nothing is ever created or changed: Stripe refusing the write outright (HTTP 403) means the key is read-only and the check passes, while an HTTP 404 means Stripe authorised the write and only then failed to find the object, which shows the key carries write permission and fails the check.

✅ The add-in only reads

The add-in only accepts restricted keys, and "Test my key" tells you if the key you pasted can write, so you can go back to Stripe and recreate it read-only. Check 4 reports that; it does not delete or block the key you saved.

The add-in itself never writes to Stripe. It only issues GET requests for payouts, balance transactions and balance, so it cannot create charges, issue refunds or move money.

What never leaves the device

What Innova Apps does store is the account side of things: your add-in account email and a hashed password, monthly usage counters that are used to show your usage in the task pane (and as a product signal for us), and, for Pro subscribers, a Stripe customer id and subscription status. The privacy policy has the full list.

ℹ️ Some Excel webviews block persistent storage

Where that happens, the key works for the session but has to be pasted again next time. The task pane tells you when you are in that situation.

Plans & limits

The add-in itself is free to install, and all three functions and the template are available on both plans. The plan only changes how far back you can pull and how many rows come back at once.

Free Pro: $19 per month
History The last 30 days of payouts Full payout history
Rows per call Up to 25, for STRIPE.PAYOUTS and for STRIPE.PAYOUT_ITEMS alike Up to 1,000, for both functions
Functions All three All three
Template workbook Included Included
Support Standard Priority support

The 25-row cap on Free is per call and applies to both list functions, so a payout with more than 25 transactions behind it needs Pro to open in full.

The messages you see at the limits

💳 How Pro is billed

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, so there is no instant checkout yet; when they are live, you start an upgrade from the Upgrade button in the task pane and cancel any time from Manage billing there.

Troubleshooting

The messages below are the ones the add-in and the workbook actually show, with what each one means and what to do about it.

"That's a full secret key…"
You pasted a secret key (sk_…). Create a restricted key instead: Developers → API keys → Create restricted key, with Balance: Read and Payouts: Read.
"Stripe rejected this key"
The key has been deleted or rolled in Stripe, or it was only partially copied. Restricted keys are shown once, so if you are not certain you have the whole string, create a new key and paste that.
"The key is missing Balance: Read" / "missing Payouts: Read"
The key is valid but one of the two required permissions is not granted. Edit the key's permissions in Stripe and test again.
"This key allows WRITES"
Stripe authorised the harmless write probe instead of refusing it, which shows the key carries write permission. The key you saved is not deleted or blocked, and the add-in still only reads with it, but recreate it in Stripe with Read-only permissions and test again so it cannot do more than it needs to.
#NAME? in a cell
The add-in is not loaded. Open the task pane once, then recalculate with Ctrl+Alt+F9 (Cmd+Alt+F9 on Mac).
"Free plan shows the last 30 days"
Your date range reaches further back than the Free plan allows. Narrow the range, or upgrade to Pro for full history.
A payout shows UNMATCHED although it is on the statement
Check three things, in this order:
  • the bank Date cell must be a real date, not text;
  • the amount must match to the cent;
  • if the deposit lagged, widen the ± 3 day match window in cell J1 on the Reconciliation sheet.
"More than 1,000 rows" / "more than 25 payouts"
The call returned more rows than your plan allows at once: 25 on Free, 1,000 on Pro, and the same cap applies to STRIPE.PAYOUTS and STRIPE.PAYOUT_ITEMS. Narrow the date range and pull in chunks, and note that a payout with more than 25 transactions needs Pro.

FAQ

Can the add-in move my money?

No. It only accepts restricted keys and refuses secret keys (sk_) and publishable keys (pk_), and the fourth check in "Test my key" is a side-effect-free write probe that tells you when the key you pasted can write, so you can recreate it read-only. Above all, the add-in never writes to Stripe itself: it only issues GET requests for payouts, balance transactions and balance, so it cannot create charges, issue refunds or move money.

Where is my Stripe key stored?

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 functions call api.stripe.com directly from your machine. "Forget key" removes it from the device, and you can revoke it in Stripe.

Does it connect to my bank?

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 matches from there.

Why are my amounts not divided by 100?

They already are. All three functions return amounts in major units (123.45 rather than 12345), and zero-decimal currencies such as JPY are handled correctly.

Can I use a test-mode key first?

Yes. The add-in accepts restricted keys starting with rk_test_ as well as rk_live_, so you can try the functions against your Stripe test data before pointing them at live payouts.

Do I need the add-in to open the template?

No. The workbook downloads and opens on its own, and no add-in account is needed to download it. The =STRIPE.* formulas inside it stay as #NAME? until the add-in is installed and your key is connected.

Can I reconcile more than one currency in one workbook?

One copy of the workbook assumes a single currency. Use a separate copy per currency.

Where do I install the add-in?

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.

How do I delete my add-in account?

Email support@innovaapps.ai from the address the account uses. Deletion is completed within 30 days.

Support

📧 Contact us

For technical questions, bug reports or feature requests: support@innovaapps.ai. The support page has the same troubleshooting steps in a shorter form.

When you write in, it helps to include:

Please do not send us your Stripe key, and do not paste it into an email or a screenshot. We never need it, and we cannot use it.

The add-in assists with reconciliation but does not replace accounting judgement. Verify the results before relying on them for bookkeeping, tax or audit.

📖 Read the quickstart ⬇ Download the template (.xlsx)