---
title: "Accept being the authorized signer"
method: POST
path: "/compliance/signer_changes/{id}/accept"
tags: ["compliance", "kyb", "customer-session"]
---

# Accept being the authorized signer

`POST /compliance/signer_changes/{id}/accept`

## 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/{id}/accept`
- Auth: none declared

The member a request names accepts, from their own session, and submits the identity details Stable Sea must verify for a new authorized signer: citizenship, date of birth, a US Social Security Number or a passport (a United States citizen gives an SSN; anyone else says whether they have a US SSN), and an address. The name comes from the member's record. Only that member can accept; the request then waits for a compliance operator, who reads the details with the SSN or passport number masked and can reveal the whole value, on the record. The details are sealed on the request and are never returned to the business: not to its admins and not in this answer. A body that does not match this schema (a missing field, a wrong type, a value over its length cap) is refused as invalid_field; a detail the schema accepts and the rules refuse (an ITIN, a date of birth that is not a real day or makes the signer younger than 18, a field the identifier class does not allow) is refused as signer_change_invalid. Neither refusal repeats a submitted value.

## Path parameters

- `id` string, required

## Request body

- ComplianceAcceptSignerChangeBody
  - `address_city` string, required
  - `address_country` string, required: A country name like those in the KYB form's country list (only presence and length are checked).
  - `address_state` string: Required when address_country is United States, as a state name from the KYB form's state list.
  - `address_street` string, required
  - `address_street_2` string
  - `address_zip` string, required
  - `citizenship` string, required: The signer's country of citizenship, as a country name like those in the KYB form's country list (only presence and length are checked), for example United States.
  - `date_of_birth` string, required: The signer's date of birth, YYYY-MM-DD. The signer must be at least 18 years old.
  - `holds_us_ssn` string: Whether the signer has a US Social Security Number: Yes or No, as on the KYB form. Required when citizenship is not United States; refused when it is.
  - `passport_country` string: The country that issued the passport, as a country name like those in the KYB form's country list (only presence and length are checked).
  - `passport_number` string: The signer's passport number. Required, with passport_country, when the signer is not a United States citizen and has no US SSN; refused otherwise.
  - `ssn` string: The signer's US Social Security Number. Required when the signer is a United States citizen or has a US SSN; refused otherwise. An ITIN is not accepted.

## 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
- `404`: Not Found
- `409`: Conflict
- `default`: Error response.

## Changes

- **2026-10-29** `e003c8a67b62`: 6 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 `404` status
  - …2 more
- **2026-10-17** `d126a185a9cf`: 1 info
  - added the required property `kind` to the response with the `200` status
- **2026-10-16** `4e0ab46d8f82`: 2 info
  - added optional request body
  - added the non-success response with the status `400`
- **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/:id/accept/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)
