Skip to main content
Every payout storekit sends to your bank becomes a row in your own ledger the moment it is created: amount, currency, which bank account, and when to expect it. Tick each row off as it appears on your bank statement, and download the month as CSV for your accountant.
The dashboard lists payouts under AnalyticsAccountingPayouts (see How payouts work). Build this recipe when you want your own reconciliation state (ticked off, notes, expected-vs-arrived), an export shaped for your bookkeeping software, or a Slack nudge when a payout is due.

How It Works

  1. storekit sends payments.payout.created to your app when a payout is created.
  2. Your app adds a row per payout with the total by currency, the last four digits of the bank account, and the estimated arrival date.
  3. You tick rows off against your bank statement; anything past its arrival date and still unticked is highlighted.

What You Need

  • Webhooks enabled on your storekit plan (SettingsDevelopers).
  • A Replit account — the ledger needs a database and a URL that stays up.
  • Optional: a Slack incoming webhook URL for a weekly “still not reconciled” reminder.

Step 1: Build the App

Paste the whole block into the builder in a single message.

Either button opens the builder with the whole prompt below already filled in. Nothing starts until you press send, so read it through and edit the parts marked as yours first.

Step 2: Connect storekit

1

Open the webhooks portal

In the dashboard sidebar, go to SettingsDevelopers and click Manage Webhooks (it reads Enable Webhooks the first time). Webhooks are a subscription feature — if you see Upgrade to enable webhooks, contact support first.
2

Add your app as an endpoint

In the embedded portal, add a new endpoint, paste the webhook URL your app builder gave you, and tick only the event types the recipe needs.
3

Copy the signing secret into your app

Open the endpoint you just created and copy its signing secret. In your app builder, save it as the environment variable STOREKIT_WEBHOOK_SECRET (builders call this “secrets” or “environment variables”). Redeploy if the builder asks you to.
4

Send a test event

Use the portal’s test option on the endpoint to send a sample event. The delivery log shows the response code from your app. A 2xx means your app accepted it; anything else, read the response body in the log — it is usually a missing secret.
Tick only payments.payout.created for this endpoint. Use the portal’s test option with that event type to create your first row.

Step 3: Reconcile

When the next real payout lands, compare the row against AnalyticsAccountingPayouts in the dashboard and against your bank statement, then tick it off. Payouts follow your payout schedule, so the first real row may take a few days.

Ideas

  • Send to your accountant automatically: ask the builder to email the month’s CSV on the 1st via a provider such as Resend or Postmark.
  • Match by amount: paste a bank-statement CSV in and let the app suggest matches by amount and date.
  • Multiple stores: run one endpoint per storekit account and add a “store” label from an environment variable so the ledger can be merged.

What This Does Not Do

  • It does not explain what is inside a payout. The event has the totals, not the orders, fees or refunds behind them; use the fee report and transactions report for that.
  • It starts from the day you connect it. Earlier payouts are in the dashboard, not the event stream.
  • It is not proof of payment. The event says a payout was created; whether and when it arrives is between the payment provider and your bank.
  • It is your service. storekit support can confirm the event reached your URL and the response code; the ledger and export are yours.

payments.payout.created payload

The full payload, including the fields this recipe deliberately does not store.

How Payouts Work

Timing, fees and where payouts appear in the dashboard.

Writing a Prompt That Works

The structure behind this prompt, and what to say when the builder gets it wrong.

Fee Report

What was deducted before the payout.