DELETE
Remove a variant's price in one currency

Authorizations

Authorization
string
header
required

A secret API key. Publishable keys cannot reach this API. A key may carry an expiry, and an expired key is refused exactly like an unknown one, with a 401 that names no reason; check the key's expires_at in the dashboard rather than inferring it from a response. When a merchant rolls a key's secret they choose a grace window of up to 3 days, and for its duration BOTH the new secret and the one it replaced authenticate, so an integration moves over on its own deploy schedule instead of at the instant the button is pressed. Move before the window closes: after it, the old secret is refused. Nothing else about this contract moves with a roll. The key keeps its id and its scopes, so the only thing an integration updates is the credential itself.

Headers

Idempotency-Key
string
required

A unique key per logical write. Replaying a request with the same key returns the first response byte for byte instead of applying the write twice.

Path Parameters

variantId
string
required
currencyCode
string
required

Body

application/json

Takes no parameters, and an empty body is expected. The price is addressed by its natural key in the path. The body is still READ AND VALIDATED, so a client that assumes this route takes a reason or a filter is told rather than having the field silently ignored: amount_minor, amount and compare_at_amount_minor are refused BY NAME because a delete carries no amount, and variant_id and currency_code are refused because both are already in the path. THE VARIANT DOES NOT BECOME UNPRICED, IT FALLS BACK, and the fallback is usually a different number applied with no further request. In the store's default currency it reverts to the variant's base price, the one read_products serves as price_minor. In any other currency it reverts to an FX conversion of that base price, or the variant becomes unpriceable and disappears from checkout in that currency entirely. IT IS NOT UNDONE BY A REPLAY: the previous amount is gone, this family emits no event anyone could replay, and there is no soft delete and no restore. Restoring means knowing the old amount and sending the PUT again. That is why this route takes write_pricing:delete on top of write_pricing while the PUT beside it takes write_pricing alone. 204 whether or not a row was removed. Reporting the miss as 404 would fail a retry after a lost 204 for a request that had SUCCEEDED, and would make this route an existence oracle for prices in stores the key cannot read. "This variant has no explicit price in this currency" is the state the caller asked for either way.

Response

Success. The response has no body.