Paso a paso para integrar el onboarding vía API

Esta guía describe cómo integrar el flujo de onboarding de compañías utilizando la API de Conekta. El proceso incluye:

Creación de la compañía

Envío y actualización de documentos

Seguimiento del estado de verificación mediante webhooks


1. Crea una company

Crea una company a través de API de companies

curl --location --request POST 'https://api.conekta.io/companies' \
--header 'Accept: application/vnd.conekta-v2.2.0+json' \
--header 'Content-Type: application/json' \
-u key_xxxxxxxxxxxxxx: \
--data-raw '
{
    "name": "test",
    "type_company": "owner",
    "comercial_info": {
        "website": "http://www.test.com",
        "mcc": "5812",
        "merchant_support_email": "[email protected]", 
        "merchant_support_phone": "5300000000"
    },
    "fiscal_info": {
        "business_phone": "5300000000",
        "fiscal_type": "moral"
    },
    "bank_account_info":{
        "clabe": "000000000000000000"
    }
}
'
{
    "id": "6827305a1ec60400015eb116",
    "name": "test",
    "active": false,
    "account_status": "signed_up",
    "parent_company_id": "680bf1da38716d00013543bc",
    "onboarding_status": "pending",
    "documents": [
        {
            "file_classification": "deposit_account_cover",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "cfdi",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "id_legal_representative",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "proof_of_address",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "id_legal_representative_back",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "power_of_attonery",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "constitutive_act_basic",
            "status": "pending",
            "file_name": null
        }
    ],
    "created_at": 1743712372,
    "object": "company"
}

Consulta de company

Si se necesita consultar la información de la company se puede utilizar lo siguiente API de companies

curl --location --request GET 'https://api.conekta.io/companies/:company_id' \
--header 'Accept: application/vnd.conekta-v2.2.0+json' \
--header 'Content-Type: application/json' \
-u key_xxxxxxxxxxxxxx: 
{
    "id": "6827305a1ec60400015eb116",
    "name": "test",
    "active": false,
    "account_status": "signed_up",
    "parent_company_id": "680bf1da38716d00013543bc",
    "onboarding_status": "pending",
    "documents": [
        {
            "file_classification": "deposit_account_cover",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "cfdi",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "id_legal_representative",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "proof_of_address",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "id_legal_representative_back",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "power_of_attonery",
            "status": "pending",
            "file_name": null
        },
        {
            "file_classification": "constitutive_act_basic",
            "status": "pending",
            "file_name": null
        }
    ],
    "created_at": 1743712372,
    "object": "company"
}

2. Cargar documento

Con la respuesta de la creación de la companies se devuelve los documentos necesarios para cargar se puede utilizar la siguiente API de document

curl --location --request POST 'https://api.conekta.io/companies/:company_id/document' \
--header 'Accept: application/vnd.conekta-v2.2.0+json' \
--header 'Content-Type: application/json' \
-u key_xxxxxxxxxxxxxx: \
--data-raw '
{
    "file_classification": "cfdi",
    "content_type": "application/pdf",
    "international": false,
    "file_name": "test.pdf",
    "file_data": "file data in base64"
}
'
{
    "file_classification": "id_legal_representative",
    "file_name": "prueba3.pdf",
    "status": "uploaded"
}

Tipos de file classification

Listado de file classification con los formatos aceptados

Tipo de archivoDescripciónFormatos aceptados
id_legal_representativeidentificación oficial frenteimage/jpeg image/png
id_legal_representative_backidentificación oficial atrásimage/jpeg image/png
cfdiPrueba de situación fiscalapplication/pdf
constitutive_act_basicActa constitutivaapplication/pdf image/jpeg image/png
proof_of_addressComprobante de domicilio del negocioapplication/pdf image/jpeg image/png
power_of_attoneryPoderes de representaciónapplication/pdf image/jpeg image/png
deposit_account_coverCarátula de la cuenta de depósitoapplication/pdf image/jpeg image/png
permit_casinoPermiso ante SEGOBapplication/pdf image/jpeg image/png
license_sanitationLicencia sanitaria de COFEPRISapplication/pdf image/jpeg image/png
registration_tourismInscripción ante el Registro Nacional de Turismo (SECTUR)application/pdf image/jpeg image/png

Consulta de documentos

Si se necesita consultar qué documentos que se tienen que cargar se puede utilizar lo siguiente API de documents

curl --location --request GET 'https://api.conekta.io/companies/:company_id/documents' \
--header 'Accept: application/vnd.conekta-v2.2.0+json' \
--header 'Content-Type: application/json' \
-u key_xxxxxxxxxxxxxx: 
[
    {
        "file_classification": "deposit_account_cover",
        "file_name": "",
        "status": "pending"
    },
    {
        "file_classification": "cfdi",
        "file_name": "prueba1.pdf",
        "status": "uploaded"
    },
    {
        "file_classification": "id_legal_representative",
        "file_name": "",
        "status": "pending"
    },
    {
        "file_classification": "proof_of_address",
        "file_name": "",
        "status": "pending"
    },
    {
        "file_classification": "id_legal_representative_back",
        "file_name": "",
        "status": "pending"
    },
    {
        "file_classification": "power_of_attonery",
        "file_name": "",
        "status": "pending"
    },
    {
        "file_classification": "constitutive_act_basic",
        "file_name": "",
        "status": "pending"
    }
]


3. Recepción de webhook con resultado del onboarding

Suscríbete a los webhooks para conocer el resultado del proceso de onboarding:

company.onboarding.success

company.onboarding.failed

Ejemplos

{
    "created_at": 1747401888,
    "data":
    {
        "object":
        {
            "account_status": "signed_up",
            "active": false,
            "created_at": 1747401888,
            "documents":
            [
                {
                    "file_classification": "deposit_account_cover",
                    "file_name": "prueba1.pdf",
                    "status": "uploaded"
                },
                {
                    "file_classification": "cfdi",
                    "file_name": "prueba1.pdf",
                    "status": "uploaded"
                },
                {
                    "file_classification": "id_legal_representative",
                    "file_name": "prueba2.jpeg",
                    "status": "uploaded"
                },
                {
                    "file_classification": "proof_of_address",
                    "file_name": "prueba1.pdf",
                    "status": "uploaded"
                },
                {
                    "file_classification": "id_legal_representative_back",
                    "file_name": "prueba1.jpeg",
                    "status": "uploaded"
                },
                {
                    "file_classification": "power_of_attonery",
                    "file_name": "prueba1.pdf",
                    "status": "uploaded"
                },
                {
                    "file_classification": "constitutive_act_basic",
                    "file_name": "prueba1.pdf",
                    "status": "uploaded"
                }
            ],
            "id": "68273b8e1ec60400015eb147",
            "name": "test",
            "object": "company",
            "onboarding_status": "in_review",
            "parent_company_id": "680bf1da38716d00013543bc"
        }
    },
    "id": "68273ca01ec60400015eb169",
    "livemode": true,
    "object": "event",
    "type": "company.onboarding.success",
    "webhook_logs":
    [
        {
            "failed_attempts": 0,
            "id": "webhl_2xzpCZB3Mka7SeMff",
            "last_attempted_at": 0,
            "last_http_response_status": -1,
            "object": "webhook_log",
            "response_data": null,
            "url": ""
        }
    ],
    "webhook_status": "pending"
}
{
    "created_at": 1747402149,
    "data":
    {
        "object":
        {
            "account_status": "signed_up",
            "active": false,
            "created_at": 1747401888,
            "documents":
            [
                {
                    "file_classification": "deposit_account_cover",
                    "file_name": "prueba1.pdf",
                    "status": "uploaded"
                },
                {
                    "file_classification": "cfdi",
                    "file_name": "prueba1.pdf",
                    "status": "failed"
                },
                {
                    "file_classification": "id_legal_representative",
                    "file_name": "prueba1.jpeg",
                    "status": "failed"
                },
                {
                    "file_classification": "proof_of_address",
                    "file_name": "prueba1.pdf",
                    "status": "uploaded"
                },
                {
                    "file_classification": "id_legal_representative_back",
                    "file_name": "prueba1.jpeg",
                    "status": "failed"
                },
                {
                    "file_classification": "power_of_attonery",
                    "file_name": "prueba1.pdf",
                    "status": "uploaded"
                },
                {
                    "file_classification": "constitutive_act_basic",
                    "file_name": "prueba1.pdf",
                    "status": "uploaded"
                }
            ],
            "id": "68273d2b1ec60400015eb16f",
            "name": "test",
            "object": "company",
            "onboarding_status": "pending",
            "parent_company_id": "680bf1da38716d00013543bc"
        }
    },
    "id": "68273da51ec60400015eb182",
    "livemode": true,
    "object": "event",
    "type": "company.onboarding.failed",
    "webhook_logs":
    [
        {
            "failed_attempts": 0,
            "id": "webhl_2xzpFsrtFnVRf8ZY6",
            "last_attempted_at": 0,
            "last_http_response_status": -1,
            "object": "webhook_log",
            "response_data": null,
            "url": ""
        }
    ],
    "webhook_status": "pending"
}

4. Update document

En caso de recibir un status: failed en un documento, puedes volver a enviarlo utilizando el endpoint API de document

curl --location --request PATCH 'https://api.conekta.io/companies/:company_id/document' \
--header 'Accept: application/vnd.conekta-v2.2.0+json' \
--header 'Content-Type: application/json' \
-u key_xxxxxxxxxxxxxx: \
--data-raw '
{
    "file_classification": "cfdi",
    "content_type": "application/pdf",
    "international": false,
    "file_name": "test.pdf",
    "file_data": "file data in base64"
}
'
{
    "file_classification": "id_legal_representative",
    "file_name": "prueba3.pdf",
    "status": "uploaded"
}

Consulta de documentos

Si se necesita consultar qué documentos que se tienen que cargar se puede utilizar lo siguiente API de documents

curl --location --request GET 'https://api.conekta.io/companies/:company_id/documents' \
--header 'Accept: application/vnd.conekta-v2.2.0+json' \
--header 'Content-Type: application/json' \
-u key_xxxxxxxxxxxxxx: 
[
    {
        "file_classification": "deposit_account_cover",
        "file_name": "",
        "status": "pending"
    },
    {
        "file_classification": "cfdi",
        "file_name": "prueba1.pdf",
        "status": "uploaded"
    },
    {
        "file_classification": "id_legal_representative",
        "file_name": "",
        "status": "pending"
    },
    {
        "file_classification": "proof_of_address",
        "file_name": "",
        "status": "pending"
    },
    {
        "file_classification": "id_legal_representative_back",
        "file_name": "",
        "status": "pending"
    },
    {
        "file_classification": "power_of_attonery",
        "file_name": "",
        "status": "pending"
    },
    {
        "file_classification": "constitutive_act_basic",
        "file_name": "",
        "status": "pending"
    }
]