# Gestionar la verificación con la API Descubre cómo las plataformas Connect usan los webhooks y la API para gestionar la verificación de las cuentas conectadas. Las plataformas Connect que integran cuentas conectadas a través de la API deben facilitar a Stripe la información requerida a los fines de [Conozca a su cliente](https://support.stripe.com/questions/know-your-customer) (KYC) y para habilitar las [funcionalidades de cuenta](https://docs.stripe.com/connect/account-capabilities.md). Deben recopilar la información y utilizar las API Accounts y Persons para proporcionársela a Stripe. Luego, verificamos la información y solicitamos más detalles cuando sea necesario. Las plataformas responsables también deben monitorear los estados de los requisitos de sus cuentas conectadas y [gestionar cualquier actualización](https://docs.stripe.com/connect/handle-verification-updates.md) de manera oportuna. ## Proceso de verificación Antes de habilitar cargos y *transferencias a cuentas bancarias* (A payout is the transfer of funds to an external account, usually a bank account, in the form of a deposit) para una cuenta conectada, Stripe necesita determinada información que varía según: - El país de origen de las cuentas conectadas - El [tipo de contrato de servicio](https://docs.stripe.com/connect/service-agreement-types.md) que se aplica a las cuentas conectadas - Las [funcionalidades](https://docs.stripe.com/connect/account-capabilities.md) solicitadas para las cuentas conectadas - El [business_type](https://docs.stripe.com/api/accounts/object.md#account_object-business_type) (por ejemplo, unipersonal o empresa) y [company.structure](https://docs.stripe.com/api/accounts/object.md#account_object-company-structure) (por ejemplo, `public_corporation` o `private_partnership`) Las plataformas deben elegir el [flujo de onboarding](https://docs.stripe.com/connect/identity-verification.md#onboarding-flows) adecuado para su empresa y las cuentas conectadas deben cumplir los requisitos de KYC. Esto implica proporcionar toda la información necesaria en un solo paso o de a poco. De cualquiera de las dos maneras, configura tu integración para prestar atención a las solicitudes de Stripe. 1. Establece una URL de [webhook Connect](https://docs.stripe.com/connect/webhooks.md) en tu [configuración de webhook](https://dashboard.stripe.com/account/webhooks) para estar atento a la actividad, especialmente a los eventos `account.updated`. Cuando uses la [API Persons](https://docs.stripe.com/api/persons.md), también debes estar atento a los eventos `person.updated`. 1. Inmediatamente después de crear una cuenta, comprueba si hay requisitos adicionales en el atributo [requirements.currently_due](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-currently_due) del objeto `Cuenta`. Obtén la información necesaria de la cuenta conectada y actualiza la `Cuenta`. Mientras `requirements.currently_due` no esté vacío, la `Cuenta` tiene requisitos pendientes que podrían restringir sus funcionalidades. 1. Sigue observando las notificaciones de eventos `account.updated` para ver si cambia el hash `requirements` y solicita información adicional a la cuenta conectada según sea necesario. Cuando proporcionas información adicional, no es necesario volver a enviar los datos ya verificados. Por ejemplo, si ya se ha verificado la `fecha de nacimiento`, no es necesario volver a proporcionar este dato, a menos que se produzca un cambio. ### Requisitos para revisar riesgos Stripe Las revisiones de riesgo de una cuenta conectada de Stripe pueden agregar requisitos adicionales, que no puedes proporcionar usando la API. Puedes [tomar medidas en tu Dashboard](https://docs.stripe.com/connect/dashboard/managing-individual-accounts.md#actions-required) o la cuenta conectada puede proporcionarlos a través de [un componente integrado de Connect](https://docs.stripe.com/connect/supported-embedded-components.md#onboarding-and-compliance), [onboarding alojado en Stripe](https://docs.stripe.com/connect/hosted-onboarding.md) o un [enlace de rectificación](https://docs.stripe.com/connect/dashboard/remediation-links.md). ## Determina si es necesaria la verificación Los atributos `charges_enabled` y `payouts_enabled` de un objeto `Cuenta` indican si puede crear cargos y aceptar transferencias. Si alguno de esos atributos es falso, comprueba el hash de `requisitos` de la `cuenta` con el fin de determinar qué información se necesita para habilitar los cargos y las transferencias. El hash `requirements` contiene las siguientes propiedades: | Propiedad | Descripción | | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `current_deadline` | Fecha límite para resolver los requisitos de `currently_due` a fin de mantener la cuenta `activa`. Representa el plazo más breve entre todas las funcionalidades solicitadas por la cuenta y los requisitos de riesgo, incluidas las funcionalidades ocultas. | | `currently_due` | Una matriz que contiene los requisitos que debes resolver antes del `current_deadline` para que la cuenta siga `activa`. | | `disabled_reason` | Una descripción de por qué la cuenta no está habilitada y por qué no puede procesar cargos o transferencias. | | `errores` | Una matriz contiene detalles sobre los requisitos `currently_due` con errores que debes resolver. Obtén más información en la sección [Errores de validación y verificación](https://docs.stripe.com/connect/handling-api-verification.md#validation-and-verification-errors). | | `eventually_due` | Una matriz contiene los requisitos que podrían ser necesarios para resolver, según cuando se alcanzan los umbrales correspondientes. Cuando uno de estos requisitos potenciales pasa a ser obligatorio, también aparece en las matrices `eventually_due` y `currently_due`. Si un requisito se vuelve obligatorio y su fecha de vencimiento es anterior a la `current_deadline` existente, la `current_deadline` cambia a la fecha de aplicación del umbral correspondiente. | | `past_due` | La matriz contiene requisitos que deshabilitaron funcionalidades porque no se resolvieron antes de la `current_deadline`. La matriz `past_due` es un subconjunto de `currently_due`. | | `pending_verification` | Una matriz que contiene los requisitos que se están revisando o que podrían pasar a ser obligatorios establecidos en función de la revisión. Esta matriz está vacía salvo que haya una verificación asincrónica pendiente. Una verificación insatisfactoria mueve un requisito a `eventually_due`, `currently_due`, `alternative_fields_due` o `past_due`. Un requisito que falló y está pendiente de verificación también puede permanecer en `pending_verification`. | El siguiente ejemplo muestra cómo se vería el hash `requirements` si una cuenta tuviera alguna información `currently_due`, alguna información `eventually_due` y alguna información que planteara `errores` de verificación. ```json { "id": ""{{CONNECTED_ACCOUNT_ID}}"", "object": "account", "requirements": { "alternatives": [], "current_deadline": 1529085600, "currently_due": [ "company.tax_id", "company.verification.document", "tos_acceptance.date", "tos_acceptance.ip" ], "disabled_reason": null, "errors": [ { "requirement": "company.verification.document", "reason": "The company name on the account couldn't be verified. Either update your business name or upload a document containing the business name.", "code": "failed_name_match" } ], "eventually_due": [ "company.address.city", "company.address.line1", "company.address.postal_code", "company.address.state", "company.tax_id", "company.verification.document", "external_account", "tos_acceptance.date", "tos_acceptance.ip" ], "past_due": [], "pending_verification": [] }, ... } ``` Si `requirements.currently_due` contiene entradas, marca `requirements.current_deadline`, la cual es una marca de tiempo Unix. Stripe suele deshabilitar las transferencias a la cuenta si no recibimos la información antes del `current_deadline`. Sin embargo, en algunas situaciones pueden aplicarse otras consecuencias. Por ejemplo, si las transferencias ya están deshabilitadas y la cuenta no responde a nuestras consultas, Stripe también podría deshabilitar la capacidad de procesar pagos. Por separado, la propiedad [requirements.disabled_reason](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-disabled_reason) puede contener una cadena que describa por qué la cuenta tiene ciertas funcionalidades deshabilitadas. En algunas situaciones, las plataformas y las cuentas conectadas pueden enviar un formulario para resolver o apelar el motivo. - Las cuentas conectadas con acceso al Dashboard de Stripe completo, incluidas las cuentas Standard, pueden acceder a información adicional (si está disponible) en el Dashboard. - Las plataformas pueden buscar el `disabled_reason` de una cuenta en la página [Cuentas conectadas](https://docs.stripe.com/connect/dashboard/review-actionable-accounts.md). Es posible que puedas proporcionar información adicional en nombre de tus cuentas conectadas. Si el motivo deshabilitado está asociado a una apelación, puedes generar un enlace a un formulario para que la cuenta resuelva la apelación. | Motivo | Significado | | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `action_required.requested_capabilities` | Debes [solicitar funcionalidades](https://docs.stripe.com/connect/account-capabilities.md#requesting-unrequesting) para la cuenta conectada. | | `listed` | La cuenta podría estar en una lista de personas o empresas prohibidas. Stripe investiga y rechaza o restablece la cuenta según corresponda. | | `rejected.fraud` | Se rechaza la cuenta por sospecha de fraude o actividades ilegales. | | `rejected.incomplete_verification` | La cuenta se rechaza por requisitos de verificación incompletos dentro del umbral requerido. | | `rejected.listed` | Se rechaza la cuenta porque está en la lista de personas o empresas prohibidas de un tercero. Por ejemplo, un proveedor de servicios financieros o el Gobierno. | | `rejected.other` | Se rechaza la cuenta por otro motivo. | | `rejected.terms_of_service` | Se rechaza la cuenta por presuntas violaciones a las condiciones de uso. | | `requirements.past_due` | Se requiere información adicional de verificación para habilitar las funcionalidades en esta cuenta. | | `requirements.pending_verification` | Stripe está verificando en este momento información sobre la cuenta conectada. No se requiere ninguna acción. Inspecciona la matriz [requirements.pending_verification](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-pending_verification) para ver qué información se está verificando. | | `under_review` | La cuenta está siendo revisada por Stripe. | ## Errores de validación y verificación El objeto `Cuenta` incluye una matriz [requirements.errors](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-errors) que explica por qué no se cumplieron los requisitos de validación o verificación. Debes cumplir estos requisitos para habilitar las funcionalidades de la cuenta. La matriz de `errores` tiene los siguientes atributos: | Atributo | Descripción | | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `código` | Indica el tipo de error que se produjo. Consulta la [referencia de API](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-errors-code) para ver todos los códigos de errores posibles. | | `motivo` | Un mensaje en lenguaje sencillo que explica por qué se produjo el error y cómo resolverlo. | | `requisito` | Especifica qué información de las listas `currently_due` o `alternative_fields_due` se necesita. | En el siguiente ejemplo, se muestra una matriz de `errores` para una cuenta con requisitos `currently_due`, el motivo por el que la información enviada no se puede usar a fin de habilitar la cuenta y cómo resolver el error. ```json { "id": ""{{CONNECTED_ACCOUNT_ID}}"", "object": "account", "requirements": { "current_deadline": 1234567800, "currently_due": [ "company.address.line1", "{{PERSON_ID}}.verification.document" ], "errors": [ { "requirement": "company.address.line1", "code": "invalid_street_address", "reason": "The provided street address cannot be found. Please verify the street name and number are correct in \"10 Downing Street\"" }, { "requirement": "{{PERSON_ID}}.verification.document", "code": "verification_document_failed_greyscale", "reason": "Greyscale documents cannot be read. Please upload a color copy of the document." } ] }, ... } ``` Si la verificación o validación falla, los requisitos pueden reaparecer en `currently_due`, `alternative_fields_due` o `eventually_due` con información de error. Para recibir notificación de estos requisitos, establece un [webhook Connect](https://docs.stripe.com/connect/webhooks.md) a fin de escuchar el evento `account.updated`. ## Información de la empresa Stripe verifica toda la información presentada sobre una empresa. Por ejemplo, si la URL de la empresa es válida, si se puede acceder a ella e incluye información sobre la empresa. Para comprobar el estado de la verificación, puedes recuperar el hash `requirements` en el objeto `Cuenta`. Los siguientes errores se relacionan con la verificación de información de la empresa: | Error | Solución | | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- | | `invalid_business_profile_name` | Los nombres de las empresas deben tener palabras reconocibles y ser fáciles de entender. | | `invalid_business_profile_name_denylisted` | El nombre de la empresa debe coincidir con la empresa de la cuenta y no puede ser un nombre genérico o conocido. | | `invalid_product_description_length` | La descripción del producto debe tener al menos 10 caracteres. | | `invalid_product_description_url_match` | La descripción del producto debe ser distinta de la URL de la empresa. | Consulta [Gestionar errores de verificación de URL ](https://docs.stripe.com/connect/handling-api-verification.md#url-verification) para resolver los siguientes errores de URL: - `invalid_url_denylisted` - `invalid_url_format` - `invalid_url_web_presence_detected` - `invalid_url_website_business_information_mismatch` - `invalid_url_website_empty` - `invalid_url_website_inaccessible` - `invalid_url_website_inaccessible_geoblocked` - `invalid_url_website_inaccessible_password_protected` - `invalid_url_website_incomplete` - `invalid_url_website_incomplete_cancellation_policy` - `invalid_url_website_incomplete_customer_service_details` - `invalid_url_website_incomplete_legal_restrictions` - `invalid_url_website_incomplete_refund_policy` - `invalid_url_website_incomplete_return_policy` - `invalid_url_website_incomplete_terms_and_conditions` - `invalid_url_website_incomplete_under_construction` - `invalid_url_website_other` ## Representantes de la empresa Debes cobrar y enviar información sobre las personas asociadas a una cuenta conectada. El proceso depende de si tus cuentas conectadas son empresas, particulares o ambos. En el caso de las empresas, usa la [API Persons](https://docs.stripe.com/api/persons.md) para agregar la información a un objeto `Person` asociado al objeto `Cuenta`. Con el objetivo de agregar documentos al hash [verification](https://docs.stripe.com/api/persons/object.md#person_object-verification) en el objeto `Person`, primero usa la [API Files](https://docs.stripe.com/api/files.md) a fin de cargar los archivos de documentos en los servidores de Stripe. Para particulares, puedes crear una `Person` o agregar la información al hash [individual](https://docs.stripe.com/api/accounts/object.md#account_object-individual) en el objeto `Cuenta`. Si tus cuentas conectadas incluyen tanto empresas como particulares, crea objetos `Person` para poder procesarlos de la misma manera. Para controlar el estado de verificación de una `Cuenta`, puedes recuperar el hash de [requirements](https://docs.stripe.com/api/persons/object.md#person_object-requirements). Los siguientes errores están relacionados con la verificación de identidad: | Error | Solución | | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | `invalid_address_city_state_postal_code` | Stripe no pudo validar la combinación de ciudad, estado y código postal en la dirección proporcionada. | | `invalid_address_highway_contract_box` | La dirección de la persona debe ser una dirección física válida desde la que la cuenta haga negocios y no puede ser un apartado de contratos de autopista. | | `invalid_address_private_mailbox` | La dirección de la persona debe ser una dirección física válida desde la que la cuenta haga negocios y no puede ser un buzón privado. | | `invalid_dob_age_under_minimum` | La persona debe tener al menos 13 años de edad. | | `invalid_dob_age_over_maximum` | La fecha de nacimiento de la persona debe estar dentro del período de los últimos 120 años. | | `invalid_phone_number` | Stripe no pudo validar el número de teléfono de la cuenta. Asegúrate de que el formato coincida con el país de la persona. | | `invalid_street_address` | Stripe no pudo validar el nombre de la calle o el número en la dirección proporcionada. | | `invalid_tax_id` `invalid_tax_id_format` | La identificación fiscal debe ser un conjunto único de 9 números sin guiones ni ningún otro carácter especial. | ## Documentos aceptados para la verificación Los tipos de documentos de identidad que acepta Stripe para las cuentas conectadas varían según el país y son [los mismos que para otras cuentas de Stripe](https://docs.stripe.com/acceptable-verification-documents.md). ## Información de la empresa Durante el proceso de verificación, es posible que tengas que recopilar información sobre la empresa para una cuenta. Para comprobar el estado de verificación, puedes recuperar el subhash [company.verification](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification) en el objeto `Cuenta`. ```json { "id": ""{{CONNECTED_ACCOUNT_ID}}"", "object": "account", ... "company": { "verification": { "document": null }, ... }, ... } ``` Puedes buscar la definición de cada atributo de verificación en el objeto `Account`. ## Descripciones de los cargos en el extracto bancario Stripe valida la [descripción del cargo en el extracto bancario y el prefijo de la descripción del cargo en el extracto bancario](https://docs.stripe.com/connect/statement-descriptors.md) cuando los estableces en una `Cuenta`. Por ejemplo, podemos verificar que los primeros 22 caracteres, que se proporcionan a las redes de tarjeta, coincidan con la descripción de la empresa. Verificamos si coinciden estrechamente con el `business_profile.name`, `business_profile.url` de la `Cuenta` o con el nombre de la empresa o particular. Para comprobar el estado de verificación de la descripción del cargo en el extracto bancario, puedes recuperar el hash `requirements` en el objeto `Cuenta`. Los siguientes errores se relacionan con la verificación de la descripción del cargo en el extracto bancario: | Error | Solución | | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `invalid_statement_descriptor_length` | La descripción del cargo en el extracto bancario debe tener al menos 5 caracteres. | | `invalid_statement_descriptor_business_mismatch` | La descripción del cargo en el extracto bancario debe parecerse al nombre de la empresa, el nombre de la entidad jurídica o la URL de la empresa. | | `invalid_statement_descriptor_denylisted` `invalid_statement_descriptor_prefix_denylisted` | La descripción del cargo en el extracto bancario no puede coincidir con un nombre de la empresa genérico o conocido. | | `invalid_statement_descriptor_prefix_mismatch` | El prefijo de la descripción del cargo en el extracto bancario debe parecerse a la descripción del cargo en tu extracto bancario, el nombre de tu empresa, el nombre de tu entidad jurídica o tu URL. | ## Cómo gestionar problemas durante la verificación de documentos Consulta la siguiente tabla para resolver los errores comunes de verificación de requisitos relacionados con los archivos de documentos cargados. Si la verificación falla, no vuelvas a enviar el mismo archivo. Las cargas duplicadas fallan automáticamente. | Tipo de verificación | Código | Solución | | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Empresa | `verification_failed_keyed_match`, `verification_failed_document_match` | No pudimos verificar la información que aparece en la cuenta. El usuario de tu cuenta puede cargar un documento de verificación o actualizar su información. | | Empresa | `verification_failed_tax_id_not_issued`, `verification_failed_tax_id_match` | El IRS (Servicio de Impuestos Internos de los Estados Unidos) no pudo verificar la información proporcionada por el usuario de tu cuenta. Pídale que corrija cualquier error que pueda haber en el nombre o la identificación fiscal de la empresa o carga un documento que los verifique. (Solo EE. UU.) | | Empresa | `verification_failed_id_number_match`, `verification_failed_name_match`, `verification_failed_address_match` | La información que aparece en el documento no coincide con la información proporcionada por el usuario de la cuenta. Pídele que verifique su información y que la corrija o que cargue un documento que coincida. | | Empresa | `verification_document_address_missing`, `verification_document_id_number_missing`, `verification_document_name_missing` | Al documento cargado le falta información obligatoria. Pídele al usuario de tu cuenta que cargue otro documento que contenga la información faltante. | | Empresa | `verification_legal_entity_structure_mismatch` | El tipo de empresa o la estructura parece incorrecta. Proporciona el tipo de empresa y la estructura correctos para esta cuenta. | | Identidad | `verification_failed_keyed_identity` | No se pudo verificar el nombre de la cuenta. Pídele al usuario que verifique si ha especificado su nombre legal completo y que proporcione un documento de identidad con foto, emitido por un organismo público que coincida con ese nombre. | | Identidad | `verification_document_name_mismatch`, `verification_document_dob_mismatch`, `verification_document_address_mismatch`, `verification_document_id_number_mismatch`, `verification_document_photo_mismatch` | La información del documento de identidad no coincide con la información proporcionada por el usuario de la cuenta. Pídele que verifique y corrija la información proporcionada. | | Identidad | `verification_document_fraudulent`, `verification_document_manipulated` | Es posible que el documento haya sido alterado. Ponte en contacto con el soporte de Stripe para saber por qué falló la verificación. | | Relación | `information_missing` | Consulta el mensaje de error para ver la información que falta en el documento o los datos ingresados. Si está relacionada con sociedades de cartera con titularidad significativa, el código de error también identifica a las sociedades de cartera faltantes. Obtén más información sobre la verificación de [beneficiarios efectivos para sociedades de cartera](https://support.stripe.com/questions/beneficial-ownership-verification-for-holding-companies). | | Relación | `verification_failed_authorizer_authority` | No pudimos verificar la autoridad del autorizador proporcionado. Cambia el autorizador a una persona que esté registrada como representante autorizado. Obtén más información sobre la [verificación de autoridad](https://support.stripe.com/questions/representative-authority-verification). | | Relación | `verification_failed_representative_authority` | No pudimos verificar la autoridad del representante de la cuenta. Agrega un autorizador a la cuenta y proporciona una carta de autorización firmada por el autorizador. Obtén más información sobre la [verificación de autoridad del representante](https://support.stripe.com/questions/representative-authority-verification). | | Relación | `verification_missing_owners` | No se proporcionó el titular de la empresa. Proporciona información sobre todos los titulares de empresas. | | Relación | `verification_missing_directors` | No se proporcionaron los directores. Actualiza la cuenta y carga un documento de registro con los directores actuales. | | Relación | `verification_document_directors_mismatch` | Los directores mencionados en el documento faltan en la cuenta. Actualiza la cuenta y carga un documento de registro con los directores actuales. | | Relación | `verification_rejected_ownership_exemption_reason` | Rechazamos la exención de titularidad. Elige otro motivo de exención o carga un comprobante de beneficiario efectivo final. | | Cargar | `verification_document_corrupt`, `verification_document_copy`, `verification_document_greyscale`, `verification_document_incomplete`, `verification_document_not_readable`, `verification_document_not_uploaded`, `verification_document_not_signed`, `verification_document_missing_back`, `verification_document_missing_front`, `verification_document_too_large` | La carga falló debido a un problema relacionado con el archivo. Pídale al usuario de la cuenta que cargue un nuevo archivo que cumpla con los siguientes requisitos: - Imagen en color (8,000 pixeles por 8,000 pixeles, como mínimo) - 10 MB o menos - Los documentos de identidad están en formato JPG o PNG - Las constancias de dirección o documentación de la entidad jurídica están en formato JPG, PNG o PDF - La documentación de entidades jurídicas debe tener todas las páginas - No debe tener protección con contraseña | | Cargar | `verification_document_country_not_supported`, `verification_document_invalid`, `verification_document_type_not_supported` | El archivo proporcionado no es una [forma aceptable de identificación de un país admitido](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) o no es un tipo de documento de entidad jurídica esperado. Pídele al usuario de tu cuenta que proporcione un nuevo archivo que cumpla con ese requisito. | | Cargar | `verification_document_verification_failed_other`, `verification_document_failed_other` | Ponte en contacto con el soporte de Stripe para saber por qué falló la verificación de identidad. | | Cargar | `verification_document_expired`, `verification_document_issue_or_expiry_date_missing` | Falta la fecha de emisión o vencimiento en el documento o el documento está vencido. La fecha de vencimiento en un documento de identidad debe ser posterior a la fecha en que se envió el documento. Si es una constancia de domicilio, la fecha de emisión debe estar dentro de los últimos seis meses. | ## Gestiona errores de verificación de la URL Las Condiciones de uso de Stripe exigen que todas las empresas ecommerce completen la propiedad [businesss_profile.url](https://docs.stripe.com/api/accounts/object.md#account_object-business_profile-url) de su `Cuenta` con una URL válida del sitio web de su empresa cuando soliciten la funcionalidad `card_payments`. Una cuenta conectada se considera una empresa de ecommerce si promociona o vende productos o servicios a través de un sitio web en línea, perfil de redes sociales o aplicación móvil. Obtén más información con las [preguntas frecuentes sobre la activación de cuentas de sitios web de empresas](https://support.stripe.com/questions/business-website-for-account-activation-faq). Si la cuenta conectada no opera un sitio web para promocionar su empresa, vender productos o aceptar pagos, debe proporcionar en su lugar el [business_profile.product_description](https://docs.stripe.com/api/accounts/object.md#account_object-business_profile-product_description). La descripción del producto debe detallar el tipo de productos que se venden y la forma en que la empresa cobra a sus clientes (por ejemplo, transacciones en persona). Las URL para las empresas ecommerce deben ajustarse a determinadas normas de las redes de tarjetas. A fin de poder cumplirlas, Stripe realiza varias verificaciones al revisar las URL. Obtén información sobre las [prácticas recomendadas](https://docs.stripe.com/get-started/checklist/website.md) para las URL y los elementos comunes de las empresas ecommerce. En muchos casos, puedes resolver los errores de verificación de URL si haces cualquiera de las siguientes acciones: - [Generar un enlace de rectificación](https://docs.stripe.com/connect/dashboard/remediation-links.md) desde el Dashboard. - Cuando se actualiza la [empresa_profile.url](https://docs.stripe.com/api/accounts/update.md#update_account-business_profile-url) en el objeto `Cuenta`. Si resuelves el error de otra manera (por ejemplo, utilizando el sitio web de la empresa para solucionar un problema), debes volver a realizar la verificación cambiando la URL del objeto `Cuenta` a cualquier otro valor y, a continuación, volviéndola a cambiar de inmediato. No puedes usar la API para resolver todos los problemas relacionados con la URL. Ciertos errores de verificación de URL requieren información, por ejemplo, cómo acceder al sitio web de la cuenta conectada o para certificar que la cuenta está exenta de los requisitos de URL. Estos problemas requieren que tú o tu cuenta conectada proporcionen información complementaria. Si no puedes resolver el problema, solicita a tu cuenta conectada que se [ponga en contacto con el soporte de Stripe](https://support.stripe.com/contact). Consulta la siguiente tabla para resolver los errores de verificación de URL. | Error | Solución | | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `invalid_url_denylisted` | La URL proporcionada coincide con el sitio web genérico de una empresa que Stripe cree que no está relacionada con la cuenta. Proporciona una URL específica para la empresa. | | `invalid_url_format` | La URL proporcionada tiene un formato incorrecto. Proporciona una URL con el formato correcto, como `https://example.com`. | | `invalid_url_web_presence_detected` | Detectamos que la cuenta utiliza un sitio web, perfil de redes sociales o aplicación móvil para vender o promocionar productos o servicios, pero no se proporcionó una URL. Proporciona una URL. | | `invalid_url_website_business_information_mismatch` | La información del sitio web en la URL proporcionada no coincide con la información de la cuenta de Stripe. | | `invalid_url_website_empty` | No podemos verificar el sitio web en la URL proporcionada porque el sitio web no tiene contenido. | | `invalid_url_website_inaccessible` | No podemos acceder al sitio web en la URL proporcionada. Si bloqueas ciertas regiones para que no vean tu sitio web, elimina temporalmente el bloqueador hasta que podamos verificar tu sitio web. | | `invalid_url_website_inaccessible_geoblocked` | No podemos verificar el sitio web en la URL proporcionada porque ciertas regiones tienen bloqueado el acceso a él. Si bloqueas que ciertas regiones vean tu sitio web, elimina temporalmente el bloqueador hasta que podamos verificar tu sitio web. | | `invalid_url_website_inaccessible_password_protected` | No podemos verificar el sitio web en la URL proporcionada porque el sitio web está protegido con contraseña. | | `invalid_url_website_incomplete` | En el sitio web que figura en la URL proporcionada falta el nombre de la empresa o una descripción clara de los bienes y servicios ofrecidos. | | `invalid_url_website_incomplete_cancellation_policy` | El sitio web no contiene una Política de cancelaciones. | | `invalid_url_website_incomplete_customer_service_details` | El sitio web no contiene datos de servicio al cliente. | | `invalid_url_website_incomplete_legal_restrictions` | El sitio web no contiene divulgaciones aplicables para productos y servicios que están sujetos a restricciones legales o de exportación. | | `invalid_url_website_incomplete_refund_policy` | El sitio web no contiene una Política de reembolso. | | `invalid_url_website_incomplete_return_policy` | El sitio web no contiene una política y proceso de devolución. | | `invalid_url_website_incomplete_terms_and_conditions` | El sitio web no contiene Términos y condiciones. | | `invalid_url_website_incomplete_under_construction` | No podemos verificar el sitio web en la URL proporcionada porque el sitio web aún está en construcción. | | `invalid_url_website_other` | No podemos verificar la empresa de la cuenta con el uso de un sitio web, perfil de redes sociales o aplicación móvil en la URL proporcionada. | ## Gestiona los requisitos de vida Una cuenta puede tener uno o más objetos [Person](https://docs.stripe.com/api/persons.md) con el requisito `proof_of_liveness`. Un requisito `proof_of_liveness` puede requerir la obtención de una credencial de identificación electrónica como [MyInfo](https://www.singpass.gov.sg/main/individuals/) en Singapur o usar Stripe Identity para recopilar un documento o selfie. Te recomendamos usar onboarding alojado o integrado en Stripe a fin de satisfacer todas las variaciones del requisito `proof_of_liveness`. #### Alojado [Onboarding alojado en Stripe](https://docs.stripe.com/connect/hosted-onboarding.md) puede completar todas las variaciones de los requisitos de `proof_of_liveness`. [Crear un enlace de cuenta](https://docs.stripe.com/connect/hosted-onboarding.md#create-account-link) con el ID de la cuenta conectada y envía la cuenta a la `url` devuelta. ```curl curl https://api.stripe.com/v1/account_links \ -u "<>:" \ -d "account={{CONNECTEDACCOUNT_ID}}" \ --data-urlencode "refresh_url=https://example.com/refresh" \ --data-urlencode "return_url=https://example.com/return" \ -d type=account_onboarding \ -d "collection_options[fields]=currently_due" ``` La cuenta recibe una solicitud para completar el requisito `proof_of_liveness`, junto con cualquier otro requisito que venza actualmente. Recibe notificaciones del evento `account.updated` enviado a tu punto de conexión de webhooks para que te notifiquen cuando la cuenta complete los requisitos y actualice su información. Después de que la cuenta completa el requisito, se la redirige a la `return_url` especificada. #### Integrado El [onboarding integrado](https://docs.stripe.com/connect/embedded-onboarding.md) puede completar todos los formularios de requisitos `proof_of_liveness`. Al [crear una sesión de Cuenta](https://docs.stripe.com/api/account_sessions/create.md), habilita el onboarding de la cuenta especificando `account_onboarding` en el parámetro `components`. Si no necesitas recopilar información de cuentas bancarias, deshabilita `external_account_collection`. Por lo general, esto se aplica a las plataformas Connect que quieren usar proveedores de recopilación de cuentas externas. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d "account={{CONNECTEDACCOUNT_ID}}" \ -d "components[account_onboarding][enabled]=true" \ -d "components[account_onboarding][features][external_account_collection]=false" ``` Después de crear la sesión de la cuenta e [inicializar ConnectJS](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions), puedes representar el componente de onboarding de la cuenta en el front-end: #### JavaScript ```js // Include this element in your HTML const accountOnboarding = stripeConnectInstance.create('account-onboarding'); accountOnboarding.setOnExit(() => { console.log('User exited the onboarding flow'); }); container.appendChild(accountOnboarding); // Optional: make sure to follow our policy instructions above // accountOnboarding.setFullTermsOfServiceUrl('{{URL}}') // accountOnboarding.setRecipientTermsOfServiceUrl('{{URL}}') // accountOnboarding.setPrivacyPolicyUrl('{{URL}}') // accountOnboarding.setCollectionOptions({ // fields: 'eventually_due', // futureRequirements: 'include', // requirements: { // exclude: ['business_profile.product_description'] // } // }) // accountOnboarding.setOnStepChange((stepChange) => { // console.log(`User entered: ${stepChange.step}`); // }); ``` La cuenta recibe una solicitud para completar el requisito `proof_of_liveness`, junto con cualquier otro requisito que venza actualmente. Recibe notificaciones del evento `account.updated` enviado a tu punto de conexión de webhooks para que te notifiquen cuando la cuenta complete los requisitos y actualice su información. Una vez que la cuenta completa los requisitos, ConnectJS llama a tu controlador de JavaScript `onExit`. #### Identity Puedes usar [Stripe Identity](https://docs.stripe.com/identity.md) para cumplir con el requisito `proof_of_liveness` de un objeto `Person` obteniendo un documento y una selfie. [Crea una VerificationSession](https://docs.stripe.com/api/identity/verification_sessions/create.md). Especifica el parámetro `related_person` para asociar los datos de verificación recopilados con el objeto `Person` que requiere la `proof_of_liveness`, como se muestra en el siguiente ejemplo. ```curl curl https://api.stripe.com/v1/identity/verification_sessions \ -u "<>:" \ -d type=document \ -d "options[document][require_matching_selfie]=true" \ -d "related_person[account]={{CONNECTEDACCOUNT_ID}}" \ -d "related_person[person]={{PERSON_ID}}" ``` Después de crear la `VerificationSession`, usa el `cliente_secret` devuelto para [mostrar el modal de identidad al usuario](https://docs.stripe.com/identity/verify-identity-documents.md?platform=web&type=modal#show-modal) o redirigir al usuario a la `url`. La verificación completada actualiza automáticamente la cuenta. Enviamos un evento `account.updated` a tu punto de conexión de webhooks cuando la cuenta completa la comprobación de identidad y actualiza su información. ## Gestiona la verificación de identidad Según la información de identidad que hayamos verificado para una cuenta, es posible que te pidamos que cargues uno o más documentos. Estos aparecerán en el hash `requirements` del objeto `Cuenta`. Debes cargar los documentos que aparecen en `requirements.currently_due`: - `person.verification.document`: se solicita una copia escaneada o una foto en color de una forma de identificación aceptable. - `person.verification.additional_document`: se solicita una copia escaneada o una foto en color de un documento que conste la dirección del usuario, como una factura de servicios públicos. - `company.verification.document`: carga un comprobante de un documento de entidad que conste el número de ID de entidad de la empresa, como los estatutos de constitución de esta. Cuando `requirements.alternatives.alternative_fields_due` incluye requisitos `verification.document`, estos pueden utilizarse como alternativa a `requirements.alternatives.original_fields_due`. Por razones de seguridad, Stripe no acepta documentos de identidad por correo electrónico. La carga de un documento es un proceso de dos pasos: 1. [Cargar el archivo en Stripe](https://docs.stripe.com/connect/handling-api-verification.md#upload-a-file). 1. [Adjuntar el archivo a la cuenta](https://docs.stripe.com/connect/handling-api-verification.md#attach-a-file). ### Cargar un archivo Con el objetivo de cargar un archivo, llama a la API Files para [crearlo](https://docs.stripe.com/api/files/create.md). El archivo cargado debe cumplir con los siguientes requisitos: - Imagen en color (8,000 pixeles por 8,000 pixeles, como mínimo) - 10 MB o menos - Los documentos de identidad están en formato JPG o PNG - Las constancias de dirección o documentación de la entidad jurídica están en formato JPG, PNG o PDF Especifica los datos del archivo en el parámetro `archivo` y establece el parámetro [propósito](https://docs.stripe.com/api/files/create.md#create_file-purpose) de acuerdo con el objeto `Account` o `Person` que retendrá el documento. Para identificar el propósito, busca la propiedad en la referencia de la API. #### curl ```bash curl https://files.stripe.com/v1/files \ -u <>: \ -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \ -F "purpose"="identity_document" \ -F "file"="@/path/to/a/file" ``` La siguiente solicitud carga el archivo y devuelve un token: ```json { "id": ""{{FILE_ID}}"", "created": 1403047735, "size": 4908 } ``` Usa el valor `id` del token para adjuntar el archivo a una cuenta conectada para la verificación de identidad. ### Adjuntar el archivo Después de cargar el archivo y recibir un token representativo, actualiza el objeto `Account` o `Person` e ingresa la ID del archivo en el parámetro correspondiente. El siguiente ejemplo es para un documento de identidad emitido por un organismo público: ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTEDACCOUNT_ID}}/persons/{{PERSON_ID}} \ -u "<>:" \ -d "verification[document][front]={{FILE_ID}}" ``` El siguiente ejemplo es para un documento de la empresa: ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTEDACCOUNT_ID}} \ -u "<>:" \ -d "company[verification][document][front]={{FILE_ID}}" ``` Esta actualización cambia el `verification.status` a `pendiente`. Si tienes que verificar a otra persona, utiliza la [API Persons](https://docs.stripe.com/api/persons.md) para actualizarla. ### Confirma la verificación de la identidad Si cumpliste con todos los requisitos de verificación de identidad de una persona o empresa, se envía una notificación de webhooks `v2.core.account_person.updated` o `v2.core.account[identity].updated` que indica que el proceso de verificación finalizó. Stripe puede tardar desde unos minutos hasta unos días hábiles en verificar una imagen, según su legibilidad. Si el intento de verificación falla, la entrada de requisito asociada contiene un error con un `código` y una `descripción` que explican la causa. La `descripción` es un mensaje en lenguaje sencillo no localizado, como «La imagen suministrada no es legible», que puedes presentar al usuario de tu cuenta. El valor del `código` es una cadena, como `verification_document_not_readable`, que puedes usar a fin de localizar mensajes de errores para los usuarios de tu cuenta. El error de verificación también desencadena una notificación de webhooks `v2.core.account_person.updated` o `v2.core.account[identity].updated`. ### Recopilación de documentos alojados con Stripe Identity Puedes usar [Stripe Identity](https://docs.stripe.com/identity.md) para cumplir con un requisito de `person.verification.document` obteniendo un documento y adjuntándolo directamente a la cuenta. Sin embargo, no puedes usar Stripe Identity para cumplir con los requisitos de `person.verification.additional_document` o `company.verification.document`. [Crea una VerificationSession](https://docs.stripe.com/api/identity/verification_sessions/create.md). Especifica el parámetro `related_person` para asociar los datos de verificación recopilados al objeto `Person` que requiere el `documento`, como se muestra en el siguiente ejemplo: ```curl curl https://api.stripe.com/v1/identity/verification_sessions \ -u "<>:" \ -d type=document \ -d "related_person[account]={{CONNECTEDACCOUNT_ID}}" \ -d "related_person[person]={{PERSON_ID}}" ``` Después de crear la `VerificationSession`, usa el `cliente_secret` devuelto para [mostrar el modal de identidad al usuario](https://docs.stripe.com/identity/verify-identity-documents.md?platform=web&type=modal#show-modal) o redirigir al usuario a la `url`. La verificación completada actualiza automáticamente la cuenta. Enviamos un evento `account.updated` a tu punto de conexión de webhooks cuando la cuenta completa la comprobación de identidad y actualiza su información. ## Gestionar requisitos establecidos en formularios o soporte Stripe informa los requisitos de riesgo y cumplimiento de la normativa en el hash [requirements](https://docs.stripe.com/api/accounts/object.md#account_object-requirements). Estos requisitos tienen el formato `.`. - `ID`: identifica de manera única la información que Stripe o nuestros socios financieros necesitan. Este identificador siempre tiene el prefijo `interv_` para indicar que es un requisito de verificación de riesgos. - `requirement_description`: describe específicamente la información necesaria para completar el requisito, como `identity_verification`, `rejection_appeal`, etc. - `resolution_path`: especifica cómo tú o tu cuenta conectada pueden proporcionar la información solicitada: - `desafío`: la cuenta conectada debe responder directamente a las indicaciones de desafío, que a menudo requieren información confidencial (como una cuenta bancaria) o información que solo el titular de la cuenta puede proporcionar (como una selfie). - `formulario`: la cuenta conectada puede completar las solicitudes de formulario o puedes completarlas en su nombre. - `aviso`: la cuenta conectada debe resolver el problema a través de un tercero, por ejemplo, hacer que un titular de gravamen envíe un aviso de liberación a Stripe. - `soporte`: el requisito no es directamente procesable. Ponte en contacto con el [soporte de Stripe](https://support.stripe.com/). - `underwriting_case`: Stripe solicitó información adicional acerca de la cuenta conectada en el Dashboard de evaluación de riesgos. ```json { "id": ""{{CONNECTED_ACCOUNT_ID}}"", "object": "account", "requirements": { "current_deadline": 1234567800, "currently_due": [ "{{REQUIREMENT_ID}}.restricted_or_prohibited_industry_diligence.form" ], "pending_verification": [], ... }, ... } ``` Después de cumplir con una ruta de resolución, el valor de la ruta de resolución del requisito puede cambiar a `support` y el requisito también aparece en la sección `pending_verification` del hash de requirements. Stripe verifica la información enviada y descarta el requisito como resuelto o publica un nuevo requisito actualmente pendiente. ```json { "id": ""{{CONNECTED_ACCOUNT_ID}}"", "object": "account", "requirements": { "current_deadline": 1234567800, "currently_due": [], "pending_verification": [ "{{REQUIREMENT_ID}}.restricted_or_prohibited_industry_diligence.support" ], ... }, ... } ``` Puedes corregir los requisitos de riesgo y cumplimiento de la normativa de cualquiera de las siguientes maneras, en función del tipo de requisito: - **Componentes integrados de Connect**: [integra componentes Connect](https://docs.stripe.com/connect/get-started-connect-embedded-components.md) en tu sitio web y dirige a tus usuarios al componente integrado de [onboarding de cuentas](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md), en el cual se les solicitará que completen los requisitos de interfaz de usuario (IU) pendientes. Como alternativa, utiliza el componente integrado [notification.banner](https://docs.stripe.com/connect/supported-embedded-components/notification-banner.md) a fin de solicitar a tus usuarios los requisitos pendientes. - **Onboarding alojado por Stripe**: genera enlaces para dirigir a tus cuentas conectadas y completar los requisitos pendientes mediante programación con enlaces de cuenta o manualmente en el [Dashboard de tu plataforma](https://docs.stripe.com/connect/dashboard/review-actionable-accounts.md). - **Completa en nombre de tus cuentas**: puedes usar el [Dashboard de tu plataforma](https://docs.stripe.com/connect/dashboard/review-actionable-accounts.md) para identificar y completar requisitos de riesgo establecidos en formularios en nombre de tus cuentas desde la página de datos de la cuenta conectada. La siguiente tabla proporciona más información sobre los requisitos relacionados con el riesgo y el cumplimiento de la normativa. | Valor | Descripción | | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `business_model_verification` | Requerimos más información sobre la naturaleza de la empresa para verificar que podemos dar soporte a la cuenta. | | `restricted_or_prohibited_industry_diligence` | La empresa puede operar en una [categoría restringida](https://stripe.com/legal/restricted-businesses) (por ejemplo, venta de alcohol, seguros o productos financieros). Es posible que necesitemos más información sobre la naturaleza de la empresa o sobre la información de la licencia para verificar el soporte de la cuenta. | | `intellectual_property_usage` | Es posible que la empresa esté vendiendo productos o servicios que están protegidos por derechos de autor. Requerimos más información para verificar que la cuenta esté autorizada a vender esos productos. | | `supportability_rejection_appeal` | Las condiciones de uso de Stripe prohíben dar soporte a la empresa. La cuenta puede apelar esta determinación. | | `other_supportability_inquiry` | Necesitamos más información para verificar que podemos dar soporte a la cuenta. | | `credit_review` | Requerimos más información sobre la naturaleza de la empresa para verificar que podemos dar soporte a la cuenta. | | `reserve_appeal` | Aplicamos una reserva a la cuenta, lo que no afecta la capacidad de la cuenta para aceptar pagos con Stripe. La cuenta puede apelar esta determinación. | | `identity_verification` | El responsable de la cuenta debe verificar su identidad cargando un documento de identidad emitido por un organismo público y una selfie. | | `url_inquiry` | La URL de la empresa debe reflejar los productos y servicios que proporciona. Es posible que necesitemos un cambio en la URL antes de dar soporte a la cuenta. | | `address_verification` | Debemos verificar la dirección de la empresa mediante la carga de documentos. | | `bank_account_verification` | Debemos verificar los datos de la cuenta bancaria asociada a la empresa. | | `customer_service_contact` | Debemos verificar la información de contacto de servicio al cliente asociada a la empresa. | | `domain_verification` | Debemos verificar que el titular de la cuenta controla la URL o el dominio que proporcionó. | | `fulfillment_policy` | Debemos verificar la Política de gestión logística de la empresa. | | `other_compliance_inquiry` | Necesitamos más información sobre el cumplimiento de la normativa que no se ajuste a ninguna de las otras descripciones. | | `other_business_inquiry` | Necesitamos más información de la empresa que no se ajuste a ninguna de las otras descripciones. | | `platform_concern` | La plataforma inició una intervención (real o una prueba de integración API) en su propia cuenta conectada. | | `product_description` | La cuenta de Stripe de la empresa debe incluir una descripción precisa del producto. | | `rejection_appeal` | Las Condiciones de uso de Stripe prohíben apoyar a la empresa debido al nivel de riesgo que presenta. La cuenta puede apelar esta determinación. | | `statement_descriptor` | Necesitamos que la descripción del cargo en el extracto bancario refleje con precisión la empresa. | | `sanctions_review` | Debemos verificar que la empresa no esté involucrada con una persona o jurisdicción sancionada. | | `pep_review` | Debemos verificar que la empresa no esté involucrada con una persona de interés o una persona expuesta políticamente. | | `legal_hold` | Stripe está obligado a retener fondos por cuestiones legales. Cumplir con el requisito puede implicar remitir fondos a un tercero. | ### Recupera requisitos por funcionalidad Puedes recuperar los requisitos de riesgo y cumplimiento de la normativa específicos de cada funcionalidad con la [API Capabilities](https://docs.stripe.com/api/capabilities.md). Cada funcionalidad tiene un hash de `requisitos` para indicar qué requisitos específicos afectan a esa funcionalidad. Esto puede ayudarte a comprender el estado de una funcionalidad determinada. ## See also - [Verificación de identidad para cuentas conectadas](https://docs.stripe.com/connect/identity-verification.md) - [Tokens de cuenta](https://docs.stripe.com/connect/account-tokens.md) - [Cómo probar Connect](https://docs.stripe.com/connect/testing.md) - [Cómo probar la verificación de identidad de la cuenta](https://docs.stripe.com/connect/testing-verification.md) - [Información de verificación obligatoria](https://docs.stripe.com/connect/required-verification-information.md)