Bulk Editor for Stripe: docs

← Product page

Connect

In the Stripe dashboard open Developers, API keys, Create restricted key. Tick write access on exactly these resources and leave everything else at None: Customers, Subscriptions, Subscription Schedules, Products, Prices, Coupons, Promotion Codes. In the sheet choose Connect to Stripe and paste the key. Keys starting rk_test_ are test mode. Keys starting rk_live_ are live mode and show a red banner in the sidebar. Full secret keys (sk_) and publishable keys (pk_) are refused.

Templates and Pull current

Load template tab creates the tab for the chosen job with the right headers. Pull current (subscriptions and customers) replaces the tab with current Stripe data. For subscriptions it writes one row per subscription item with the customer email, current price, amount, interval, period end and status. Columns starting current_ are for your reference and are ignored by the dry run.

Migrate subscriptions

ColumnMeaning
subscription_idThe sub_ ID.
new_price_idThe price_ ID to move to.
effectivenow (default) or period end.
prorationnone (default) or prorate. Ignored for period end.
subscription_item_idRequired when the subscription has more than one item.

The dry run blocks a row when the subscription does not exist, is not active or trialing, already has a schedule, is multi-item without an item ID, or the new price is missing, inactive, not recurring or in a different currency. It warns (the row stays Ready) when the billing interval or the product changes. A subscription already on the new price shows "No change". A period-end change creates a subscription schedule: the current price runs to the end of the period, then the new price takes over and the schedule is released.

Update customers

Columns: customer_id, name, email, phone, description, address.line1, address.line2, address.city, address.state, address.postal_code, address.country and any metadata.<key> column you add. A blank cell leaves the field alone. Type <clear> to empty a field or remove a metadata key.

Create coupons and promotion codes

Columns: code, name, percent_off or amount_off (in normal units, such as 5.00) with currency, duration (once, repeating or forever), duration_in_months, max_redemptions, expires_at (a date like 2026-12-31). The code is also used as the coupon ID, so a re-run finds what already exists and creates nothing twice.

Create products and prices

Columns: product_name, description, amount, currency, interval (day, week, month, year, or blank for one-time), interval_count, lookup_key, existing_product_id. The product ID and price ID are written back to the sheet. A row that already shows a price ID in stripe_id, or whose lookup_key exists, is not created again.

Dry run, apply and the typed confirmation

The dry run writes a status and message to every row and records which rows are Ready. It writes nothing to Stripe. Apply refuses to run without a completed dry run on the same rows. Before each row's request the add-on re-reads that row, checks it still matches what the dry run approved, re-checks the live Stripe object, saves the prior value, and sends the request with an idempotency key. In live mode you must type the number of Ready rows before apply starts.

Undo (Pro)

Choose a run and click Generate Undo tab. It builds Undo Subscriptions or Undo Customers from the stored prior values. Run the dry run on that tab, then apply. Created objects are never deleted. Changes scheduled for period end are not included: release those schedules in Stripe.

Large jobs and failures

Dry runs, applies and pulls work in chunks and continue by trigger. Rate-limit responses and Retry-After are honoured. If Stripe is unavailable the run pauses and resumes from its saved position without repeating finished rows.

Free, Pro and the Migration pass

Free: unlimited dry runs and Pull current, apply up to 20 rows a month. Pro (US$20 a month): unlimited rows, Undo tab, saved jobs. Migration pass (US$49 once): Pro for 14 days, for one price increase.

Support

[email protected]. Stripe is a trademark of Stripe, Inc. This add-on is independent.