---
title: "Delete a product"
method: DELETE
path: "/v1/products/{id}"
---

# Delete a product

`DELETE /v1/products/{id}`

Delete a product. Deleting a product is only possible if it has no prices associated with it. Additionally, deleting a product with `type=good` is only possible if it has no SKUs associated with it.

## Path parameters

- `id` string, required

## Response `200`

Successful response.

- DeletedProduct
  - `deleted` true, required — Always true for a deleted object
  - `id` string, required — Unique identifier for the object.
  - `object` 'product', required — String representing the object's type. Objects of the same type share the same value.

## Other responses

- `default` — Error response.

## Changes

> 51 revisions in range; 14 not diffed, 6 could not be searched.

- **2026-07-01** `e24a26de4188` — 3 breaking
  - removed the required property `error/payment_intent/latest_charge/anyOf[subschema #2: Charge]/application_fee/anyOf[subschema #2: PlatformFee]/balance_transaction/anyOf[subschema #2: BalanceTransaction]/source/anyOf[subschema #6: Dispute]/payment_method_details/card/network` from the response with the `default` status
  - removed the required property `error/payment_intent/latest_charge/anyOf[subschema #2: Charge]/balance_transaction/anyOf[subschema #2: BalanceTransaction]/source/anyOf[subschema #6: Dispute]/payment_method_details/card/network` from the response with the `default` status
  - removed the required property `error/payment_intent/latest_charge/anyOf[subschema #2: Charge]/failure_balance_transaction/anyOf[subschema #2: BalanceTransaction]/source/anyOf[subschema #6: Dispute]/payment_method_details/card/network` from the response with the `default` status
  - …this revision’s changelog is incomplete
- **2025-11-05** `62e8dc4ed869` — 1 info
  - added the optional property `error/payment_intent/payment_method_options/anyOf[subschema #1: PaymentIntentPaymentMethodOptions]/card_present/anyOf[subschema #1: payment_method_options_card_present]/capture_method` to the response with the `default` status
- …earlier changes not shown

[Full history](https://skmtc.dev/stripe/apis/spec3/changes/v1/products/:id/delete.md)

---

[API](https://skmtc.dev/stripe/apis/spec3.md) · [All operations](https://skmtc.dev/stripe/apis/spec3/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/stripe/spec3/revisions/f0e0fc8fffbf/schema)
