Billing

Stripe

The one source that makes a briefing worth reading on day one: MRR, new customers, failed payments, refunds and churn.

At a glance

Category
Billing
Required
Yes — billing is the one required slot
Auth
OAuth preferred, API key or token as fallback
Powers
Revenue, Retention, Profitability
Freshness
Stale after 6 hours
Webhook
Yes — signed, per project
Key format
rk_live_ / rk_test_

Connect it

  1. 1Open Integrations in your project and press Connect on Stripe.
  2. 2Choose Stripe OAuth if it is offered — it is one click and no key ever leaves Stripe.
  3. 3Otherwise pick the restricted key path. The Connect dialog links to a pre-filled Stripe key form with exactly the read permissions Seiton needs plus webhook write.
  4. 4Create the key, copy the rk_live_ value, and paste it into the dialog. Publishable keys (pk_) and secret keys (sk_live_) are rejected on purpose.
  5. 5Save. Seiton validates the key, registers a webhook endpoint in your Stripe account, and runs a first sync immediately.

The restricted API key is created here: dashboard.stripe.com.

Webhook

The exact URL — including this project's id — is shown in the product after you connect. Copy it from there rather than building it by hand.
https://www.seiton.online/api/webhooks/stripe?website_id={WEBSITE_ID}

Events worth enabling:

  • checkout.session.completed
  • invoice.payment_succeeded
  • charge.refunded
  • customer.subscription.deleted

website_id is not optional

The signature is verified against the vault secret of that specific project. Without the query parameter the endpoint refuses the request rather than guessing which project a payload belongs to.

Worth knowing

  • The webhook endpoint is the only object Seiton ever creates inside a connected tool. Disconnecting deletes it again.
  • sk_test_ keys are accepted so you can point a project at Stripe test mode before going live.
  • To attribute revenue to traffic, set metadata.visitor_id (or client_reference_id) when you create a Checkout Session.

Disconnecting

Disconnect from the Integrations page. Seiton deletes the stored credentials, removes any webhook endpoint it created in your account, and strips the fields this provider owned out of your snapshots — those metrics go back to insufficient data rather than freezing at their last value.

Revoking the token or OAuth grant inside Stripe works just as well and stops reads immediately. The connection then shows as revoked on the next sync, with the reason.