Ask
248
@hollis_pike ·

shut the api off 3 weeks ago and stripe still billed 41 accounts last night Shutdown Plan

Killed the product on the 8th. DNS gone, workers deleted, database snapshotted and dropped. Last night Stripe put 41 renewals through, $1,140 in total, for a thing that now returns a parked page.

What I did in Stripe beforehand: archived every price and marked the products inactive. I genuinely believed that was the off switch. Apparently archiving a price only stops new checkouts.

Six people have already opened disputes. What is the least bad order of operations from here - refund everyone now, or cancel first and refund whoever complains?

9 answers Share
Report

Answering anonymously — a moderator will review it first.

  • @r2_bucketeer · yesterday · 3 replies

    Archiving a price stops new subscriptions being created against it. It does nothing to the ones that already exist - they hold a reference to that price and keep renewing until something explicitly cancels them.

    Order I would do it in, today:

    • page through stripe subscriptions list --status active --limit 100 and collect the ids
    • subscription.cancel(id) on each, not cancel_at_period_end, since there is no product left to deliver
    • refund the last invoice on each one, in full
    • then email, after the refunds are in flight, so the email says "already refunded" instead of "will refund"

    The six disputes are the expensive part. You pay the dispute fee whether you win or lose, and a sudden cluster of them on a dormant account is how an account ends up under review. Refunding a charge that is already disputed does not withdraw the dispute either - you still have to respond to it.

    186
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
    • @finops_reyna · 4h ago

      The fee is around $15 in the US and yes, it lands on won and lost alike in most cases. The number that gets you attention is disputes over transactions on a rolling window: with 41 charges and 6 disputes you are at roughly 14%. That is not "flagged eventually", that is "someone reads your account this week". Get ahead of it and leave a note explaining the shutdown.

      58
      Share
      Reply

      Answering anonymously — a moderator will review it first.

      Report
    • @thermal_theo · yesterday

      Pull the customer emails and invoice PDFs out before you delete anything else. People lose access to their own billing history the moment you close the portal, and then they ask you for it in April.

      24
      Share
      Reply

      Answering anonymously — a moderator will review it first.

      Report
  • @spreadsheet_tabs · 3h ago

    Cheap thing that would have caught it: run the cancel script against a copy in test mode, then require stripe subscriptions list --status active to return zero before you touch DNS. Money off, then product off, never the other way round.

    I keep a shutdown checklist now and the first four lines are all billing.

    67
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
  • @starschema_sy · 3h ago

    Refund all 41 in full and do it before the statements land. It is $1,140. Whatever you feel you are owed for months nobody used, it is not worth a payments account with a 14% dispute rate stapled to your name and your bank details.

    Then send two paragraphs. No apology theatre:

    • the service ended on the 8th
    • we have refunded your last payment, it will appear in 5-10 days
    • here is your data

    The people who were going to be annoyed will still be annoyed. They will just not be annoyed at their bank.

    108
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
  • @blown_cap · yesterday

    Do not cancel with proration. Stripe will happily generate a credit note and park the balance on the customer, which does absolutely nothing for someone who is never coming back. Cancel, then issue an explicit refund against the charge. Credit on a dead account is just a way of not giving people their money.

    38
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
  • @nightbus_nina · yesterday · 2 replies

    Fastest path is to delete the customer objects. Deleting a customer cancels all of their subscriptions in one call, so you get the cancellations for free and you are done in an afternoon.

    34
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report
    • @stipend_sam · 3h ago

      It does cancel the subscriptions. It also detaches the payment methods, which means you can no longer refund those charges through the normal flow, and it takes the invoice history out of the dashboard where you can read it. Refund first, delete later if you even care about deleting. That deletion is not reversible and there is a reason nobody does it in that order.

      19
      Share
      Reply

      Answering anonymously — a moderator will review it first.

      Report
  • @otis_haverford · 3h ago

    Speaking as someone who has been on the receiving end: the thing that made me dispute rather than email was that there was no reply address. Whatever you send, send it from something a human reads for the next 60 days.

    9
    Share
    Reply

    Answering anonymously — a moderator will review it first.

    Report