Skip to content

New `setup_link_inactive` error code replaces wrong-domain `webhook_subscription_disabled` on customer setup links

Released: June 5, 2026

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.

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.

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.