Connect Stripe

Payments, refunds, invoices, subscriptions and payouts from Stripe — synced into your picoask warehouse so revenue, churn and cash-flow are one question away.

1Create a restricted API key — not your secret key

picoask only reads from Stripe, so give it a key that can only read. Stripe's restricted keys exist for exactly this, and picoask never needs your full secret (sk_) key.

  • In the Stripe Dashboard, open Developers → API keys and click Create restricted key.
  • Name it something you'll recognise — e.g. picoask-readonly — so it can be revoked on its own later.
  • Set these resources to Read, and leave everything else on None: Charges, Customers, Invoices, Subscriptions, Payouts, Balance and Events.
  • Click Create key and copy the rk_live_… value — Stripe shows it only once.

Balance is what lets picoask see Stripe's processing fees, so it can answer net-revenue questions; Events is how it keeps refunds, disputes and status changes up to date without re-reading your whole history. If you skip Balance, everything still works — fee columns just stay empty.

2Copy your Account ID

  • In the Dashboard, open Settings → Business → Account details.
  • Copy the Account ID — it starts with acct_.

Stripe keys don't reveal which account they belong to, so picoask asks for the id explicitly — it's what keeps your data scoped to your account in the warehouse. When your key permits it, picoask double-checks the id against Stripe and refuses a mismatched pair.

3Connect in picoask

In your project's Integrations tab, choose Stripe → Connect and fill in:

  • Account ID — the acct_… value from step 2.
  • Restricted API key — the rk_… value from step 1.

picoask verifies the key against Stripe the moment the connector starts provisioning, so a mistyped key or a missing permission is reported immediately — with the exact permission to add — rather than showing up later as missing data. The key is stored encrypted and used only by the sync worker.

4What gets synced

  • Payments — every charge with amount, status, payment method, and Stripe's fee and net when your key includes Balance.
  • Refunds — dated by the refund itself, so "how much did we refund in August" is answered on refund timing, not order timing.
  • Invoices — billed vs collected, outstanding balances, void and uncollectible rates.
  • Subscriptions — the active base, trials, cancellations and price points.
  • Payouts — cash actually reaching your bank, dated by arrival.
  • Customers — so revenue and churn can be broken down per payer.

Amounts land in your own currencies, exactly as charged, and are never silently converted. The first import pulls up to four years of history; after that picoask checks Stripe's change feed every few hours, so a charge refunded or disputed months later updates in place. If you connect a test-mode key first to trial the integration, test rows are flagged so they never mix into revenue answers.

5Troubleshooting

  • API key rejected — the key was copied incompletely, or has been rotated or expired. Create a fresh restricted key under Developers → API keys and reconnect.
  • "Missing permission" on connect — the restricted key is short one of the Read grants from step 1. Edit the key in Stripe (⋯ → Edit key), set the named resource to Read, and reconnect — no need to make a new key.
  • Account ID refused — the value must be the acct_… id, not an API key and not your business name. It's under Settings → Business → Account details.
  • Fee columns are empty — the key lacks Balance: Read. Add it and the next sync fills fees for new activity.
  • No data after connecting a test key — sandbox keys (rk_test_…) see only sandbox data. Connect a live-mode key for production numbers.
Stuck?

Email contact@picoask.ai and we'll get you connected. See also the picoask docs.