New `setup_link_inactive` error code replaces wrong-domain `webhook_subscription_disabled` on customer setup links
Released: June 5, 2026
PATCH /v1/customers/{id}/setup_links/{link_id} Changed
Section titled “PATCH /v1/customers/{id}/setup_links/{link_id} ”When the setup link being patched is no longer in the active state
(it’s consumed, expired, or revoked), the API now returns the
new setup_link_inactive error code instead of
webhook_subscription_disabled. Status code stays 409 conflict.
DELETE /v1/customers/{id}/setup_links/{link_id} Changed
Section titled “DELETE /v1/customers/{id}/setup_links/{link_id} ”Same change for the revoke endpoint: a non-active link now surfaces
as setup_link_inactive rather than the previous wrong-domain
webhook_subscription_disabled.
The old code was confusing for SDK consumers: receiving
webhook_subscription_disabled while operating on a customer setup
link suggested a webhook subscription was involved when it wasn’t.
The new code lives in the same conflict bucket and carries
identical retry semantics — generate a fresh setup link to recover.
Migration
Section titled “Migration”If you were branching on error.code === 'webhook_subscription_disabled'
in your setup link integration, switch to
error.code === 'setup_link_inactive'. Webhook subscription endpoints
continue to return webhook_subscription_disabled as before — no
change there.