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

# Incorporar un Cliente con Perfiles de Verificación

> Crea un cliente con los perfiles de verificación que necesita, proporciona los requisitos de cada perfil y agrega un perfil a un cliente existente más tarde.

Esta guía recorre la incorporación de un cliente individual a dos perfiles de verificación a la vez, y luego cómo agregar un perfil a un cliente que fue creado con uno solo. Para la lista completa de requisitos por perfil, consulta la [descripción general](/es/concepts/onboarding/verification-profile#requisitos-por-perfil).

## Incorporar un cliente nuevo

El ejemplo incorpora a un individuo mexicano a los perfiles A y C.

<Steps>
  <Step title="Crea el cliente con los perfiles seleccionados">
    Envía todos los campos que ya tengas. Los campos requeridos por cualquiera de los dos perfiles cuentan una sola vez para ambos.

    ```bash theme={"dark"}
    curl -X POST https://api.spherepay.co/v2/customer \
      -H "Authorization: Bearer $SPHERE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "type": "individual",
        "firstName": "Ana",
        "lastName": "García",
        "email": "ana.garcia@example.com",
        "phone": "+525551234567",
        "dateOfBirth": "1990-05-15",
        "address": {
          "line1": "Avenida Reforma 222",
          "city": "Ciudad de Mexico",
          "state": "CMX",
          "postalCode": "06600",
          "country": "MEX"
        },
        "enabledVerificationProfiles": ["a", "c"],
        "personalInformation": {
          "nationality": "MEX",
          "countryOfBirth": "MEX",
          "residencyCountry": "MEX",
          "taxIdentificationNumber": "GAAA900515AB1",
          "taxIdentificationNumberType": "rfc",
          "taxIdentificationNumberCountry": "MEX",
          "gender": "female",
          "occupationSocCode": "151252",
          "sourceOfFunds": "salary",
          "accountPurpose": "receive_salary",
          "expectedMonthlyPayments": "5000_9999",
          "employmentStatus": "employed",
          "actingAsIntermediary": false
        }
      }'
    ```
  </Step>

  <Step title="Lee qué necesita todavía cada perfil">
    La respuesta lista ambos perfiles como `incomplete`. Solo faltan documentos.

    ```json theme={"dark"}
    {
      "id": "customer_244a09f15e254288886e419071c92da6",
      "enabledVerificationProfiles": ["a", "c"],
      "verificationProfiles": [
        {
          "name": "kyc_profile_a",
          "status": "incomplete",
          "criteria": {
            "required": ["identity_document", "liveness_report_document", "source_of_funds_document"]
          }
        },
        {
          "name": "kyc_profile_c",
          "status": "incomplete",
          "criteria": {
            "required": ["identity_document", "proof_of_address_document", "w8_ben_document", "source_of_funds_document", "liveness_report_document"]
          }
        }
      ]
    }
    ```
  </Step>

  <Step title="Sube los documentos">
    Sube cada tipo de documento una sola vez. Un documento que aparece en `required` en ambos perfiles satisface a ambos.

    ```bash theme={"dark"}
    curl -X POST https://api.spherepay.co/v2/document \
      -H "Authorization: Bearer $SPHERE_API_KEY" \
      --form 'target="customer"' \
      --form 'targetId="customer_244a09f15e254288886e419071c92da6"' \
      --form 'documentType="id_card"' \
      --form 'country="MEX"' \
      --form 'side="front"' \
      --form 'file=@id-front.jpg'
    ```

    Repite para el reverso de la identificación y para `proof_of_address_document`, `w8_ben_document`, `source_of_funds_document` y `liveness_report_document`.
  </Step>

  <Step title="Espera la decisión de cada perfil">
    Una vez que todos los perfiles habilitados tienen `criteria.required` vacío, SpherePay envía al cliente a revisión y ambos perfiles pasan a `pending`. No se necesita ninguna llamada de envío. Cada perfil se decide de forma independiente, así que consulta `GET /v2/customer/{id}` periódicamente y actúa por perfil. O suscríbete a los [eventos de webhook de clientes](/es/concepts/webhooks/event-catalog): se emite un evento por perfil por cambio de estado, con el nombre del perfil en `data.verificationProfile`.

    ```json theme={"dark"}
    {
      "verificationProfiles": [
        { "name": "kyc_profile_a", "status": "pending" },
        { "name": "kyc_profile_c", "status": "approved" }
      ]
    }
    ```

    El cliente puede operar con los productos que el perfil C desbloquea tan pronto como `kyc_profile_c` esté en `approved`, incluso mientras `kyc_profile_a` sigue en `pending`.
  </Step>
</Steps>

<Warning>
  El envío espera a **todos** los perfiles habilitados. Si seleccionas A y C pero solo proporcionas los requisitos de A, ninguno de los dos perfiles sale de `incomplete`. Proporciona los requisitos de todos los perfiles seleccionados, o selecciona menos perfiles.
</Warning>

## Agregar un perfil más tarde

Cuando un cliente creado con un perfil necesita otro — por ejemplo, SpherePay habilita el perfil C para tu aplicación y el cliente quiere enviar USD al extranjero — envía el arreglo nuevo completo.

<Steps>
  <Step title="Amplía la selección">
    ```bash theme={"dark"}
    curl -X PATCH https://api.spherepay.co/v2/customer/customer_244a09f15e254288886e419071c92da6 \
      -H "Authorization: Bearer $SPHERE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{ "enabledVerificationProfiles": ["a", "c"] }'
    ```
  </Step>

  <Step title="Proporciona solo lo que el nuevo perfil aún necesita">
    El nuevo perfil aparece en `verificationProfiles`. Los campos ya proporcionados para A se trasladan como `complete`; los documentos que ya subiste se vuelven a revisar para C y se listan en `criteria.pending` hasta que termine esa revisión. Solo los requisitos específicos de C quedan en `required`: `sex`, `country_of_birth`, `nationality`, `proof_of_address_document` y `w8_ben_document` para un cliente que completó A.

    ```bash theme={"dark"}
    curl -X PATCH https://api.spherepay.co/v2/customer/customer_244a09f15e254288886e419071c92da6 \
      -H "Authorization: Bearer $SPHERE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "personalInformation": {
          "gender": "female",
          "countryOfBirth": "MEX",
          "nationality": "MEX"
        }
      }'
    ```

    Luego sube `proof_of_address_document` y `w8_ben_document` como en la sección anterior.
  </Step>

  <Step title="Espera al nuevo perfil">
    `kyc_profile_c` pasa a `pending` por sí solo y se decide de forma independiente. El perfil A no se vuelve a revisar.
  </Step>
</Steps>

<Note>
  Esto funciona ya sea que el perfil A esté en `incomplete`, `pending` o `approved`. Los campos que A ya evaluó permanecen bloqueados mientras A esté en `pending` o `approved`; un `PATCH` que toque uno de ellos devuelve 400 `customer/field-locked-by-verification-profile`. Consulta [Cuándo se pueden actualizar los datos del cliente](/es/concepts/onboarding/verification-profiles/updating-customer-data).
</Note>

***

## Guías relacionadas

<CardGroup cols={2}>
  <Card title="Seleccionar perfiles" icon="list-checks" href="/es/concepts/onboarding/verification-profiles/eligibility">
    Qué acepta y devuelve `enabledVerificationProfiles`.
  </Card>

  <Card title="Eliminar un perfil" icon="user-minus" href="/es/concepts/onboarding/verification-profiles/remove-profile">
    Quita un perfil que el cliente ya no necesita.
  </Card>
</CardGroup>
