> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentcard.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# complete_kyc_transfer

> One-time transfer of a legacy identity verification into the current system

One-time transfer for users verified under the **legacy** hosted KYC flow (verified before July 2026): carries their existing, approved verification into the current identity system so funding checkouts can reuse it and skip re-verification. **Not** a new KYC: no documents, no face scan. Ask the user for their SSN (required; sent to the identity provider, never stored) and, only if the API reports missing fields, the specific fields it lists. Users verified under the current flow don't need this (the tool returns `already_transferred`).

<Note>
  **Advanced tool.** Not advertised in the default `tools/list`: it is an error-triggered migration step, usually prompted by a funding flow. It remains callable by name; see [tool gating](/companies/mcp/overview#tool-gating).
</Note>

## Parameters

| Parameter             | Type   | Required | Description                                                                                                                |
| --------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------- |
| `ssn`                 | string | Yes      | The user's 9-digit Social Security Number, any formatting. Forwarded to the identity provider only; never stored or logged |
| `first_name`          | string | No       | Legal first name (only when the API reported it missing)                                                                   |
| `last_name`           | string | No       | Legal last name (only when the API reported it missing)                                                                    |
| `date_of_birth`       | string | No       | `YYYY-MM-DD` (only when the API reported it missing)                                                                       |
| `address_line1`       | string | No\*     | Street address (only when the API reported the address missing)                                                            |
| `address_line2`       | string | No       | Apt/suite (optional)                                                                                                       |
| `address_city`        | string | No\*     | City                                                                                                                       |
| `address_region`      | string | No\*     | State, e.g. `DE`                                                                                                           |
| `address_postal_code` | string | No\*     | Postal code                                                                                                                |

\* The address is all-or-none: it is only forwarded when `address_line1`, `address_city`, `address_region`, and `address_postal_code` are **all** present (`address_line2` stays optional). A partial address is silently dropped and the API keeps reporting the address as missing.
\| `accepts_crossmint_privacy` | boolean | No | Set true only after showing the user this line: "By continuing you agree to Crossmint's privacy policy (crossmint.com/legal/privacy-policy)." Registers the transferred verification with the funding provider immediately so the next funding attempt skips the review wait; omit if the disclosure was not shown |

## Returns

A human-readable `message`: the transfer succeeded, `already_transferred` (nothing to do), or which fields are still missing; collect exactly those from the user and call again.

## Example

```json theme={null}
{ "name": "complete_kyc_transfer", "arguments": { "ssn": "123-45-6789" } }
```
