Skip to content

stripekit push ​

Reconcile your Stripe account to match stripe.config.ts — creating and updating products, prices, the webhook endpoint, and the customer portal.

bash
npx stripekit push

push prints the plan, applies it, and (idempotently) reports No changes on a second run.

Test vs live ​

The mode is inferred from your key's prefix:

  • sk_test_… → test mode. push applies directly.
  • sk_live_… → live mode. push refuses unless you pass --live, then asks for confirmation.
bash
# apply to test mode
npx stripekit push

# promote the same catalog to live mode
STRIPE_SECRET_KEY=sk_live_... npx stripekit push --live

Options ​

FlagDescription
--dry-runShow the plan without applying (same as stripekit plan).
--liveRequired to apply changes to a live-mode account.
-y, --yesSkip the interactive confirmation prompt (needed for CI; combine with --live for live mode).
--jsonMachine-readable output. In live JSON mode, both --live and --yes are required.
--url <url>Base URL used to register the webhook endpoint.

What it writes back ​

When push creates the webhook endpoint or the portal configuration, it writes the resulting values to your env file (.env.local if present, else .env):

  • STRIPE_WEBHOOK_SECRET — the signing secret, which Stripe only returns at creation time.
  • STRIPE_PORTAL_CONFIGURATION_ID — the managed portal configuration, passed explicitly by the generated portal route.

Webhook registration ​

The webhook endpoint is registered only when a deployment URL is available (via --url or an env var such as NEXT_PUBLIC_APP_URL). Without one, push skips the webhook and tells you — use the Stripe CLI to forward events during local development.

Safety ​

  • Only stripekit-managed objects are touched; hand-made products are invisible to it.
  • Prices are replaced (never mutated) and removed items are archived (never deleted).
  • Every create carries a stable idempotency key, so a re-run after a failure won't double-create.

Released under the MIT License.