How It Works
- storekit sends
payments.payout.createdto your app when a payout is created. - 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.
- 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 (Settings → Developers).
- 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.
Full prompt (click to expand)
Full prompt (click to expand)
Step 2: Connect storekit
1
Open the webhooks portal
In the dashboard sidebar, go to Settings → Developers 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.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 Analytics → Accounting → Payouts 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.
Related
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.