---
title: "Request an authorized signer change"
method: POST
path: "/compliance/signer_changes"
tags: ["compliance", "kyb", "customer-session"]
---

# Request an authorized signer change

`POST /compliance/signer_changes`

## Request

- Base URL: `https://api.stablesea.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.stablesea.com/compliance/signer_changes`
- Auth: none declared

A member with `signers_manage` in enforced mode or `permissions_manage` in legacy mode names an active member as the new authorized signer, or as an additional authorized signer (kind add, beside the current one), and says why. The named member must accept, then a compliance operator approves; nothing on the KYB form changes until then. A replace (the default) changes the signer on the KYB form, who is the business's controller at its custodian. An add records a second signer, changes neither the form nor the controller, and has its KYC sent to WisdomTree by compliance. Refused when the member is not an active member of the business, the kind is neither replace nor add, the business already has an open request, the member is already the signer a replace would name (signer_change_already_signer), or the member is already an authorized signer in a way the request cannot change (signer_change_member_already_signer): for an add, the signer on the KYB form or an additional signer already; for a replace, an additional signer. Opens a re-verification record that the request's approval, rejection or cancellation settles, and tells the business's admins and the new signer by email, and, for a replace, the outgoing signer.

## Request body

- ComplianceCreateSignerChangeInput
  - `job_title` string, required
  - `kind` 'replace' | 'add'
  - `new_signer_id` string, required
  - `reason` string, required

## Response `200`

OK

- ComplianceSignerChangeView
  - `group_id` string, required
  - `id` string, required
  - `incoming` ComplianceSignerChangeSigner, required
    - `email` string, required
    - `first_name` string, required
    - `job_title` string, required
    - `last_name` string, required
  - `kind` 'replace' | 'add', required
  - `new_signer_id` string, required
  - `outgoing` ComplianceSignerChangeSigner, required
    - `email` string, required
    - `first_name` string, required
    - `job_title` string, required
    - `last_name` string, required
  - `reason` string, required
  - `requested_by` string, required
  - `requested_by_name` string
  - `requested_ts` string, date-time, required
  - `signer_confirmed_ts` string, date-time, nullable
  - `state` 'awaiting_signer' | 'awaiting_approval' | 'approved' | 'rejected' | 'cancelled', required

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `409`: Conflict
- `default`: Error response.

## Changes

- **2026-10-29** `e003c8a67b62`: 5 info
  - added the optional property `error/authorization` to the response with the `400` status
  - added the optional property `error/authorization` to the response with the `401` status
  - added the optional property `error/authorization` to the response with the `403` status
  - added the optional property `error/authorization` to the response with the `409` status
  - …1 more
- **2026-10-17** `d126a185a9cf`: 2 info
  - added the new optional request property `kind`
  - added the required property `kind` to the response with the `200` status
- **2026-10-16** `d8ab48e744d6`: 1 info
  - api tag `customer-session` added
- **2026-10-15** `10bd70ce0477`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/stablesea/apis/stable-sea-backend/changes/compliance/signer_changes/post.md)

---

[API](https://skmtc.dev/stablesea/apis/stable-sea-backend.md) - [All operations](https://skmtc.dev/stablesea/apis/stable-sea-backend/llms.txt) - [OpenAPI document](https://skmtc.dev/stablesea/apis/stable-sea-backend/revisions/772c80d83658?raw)
