Introdução
Este guia irá orientá-lo na realização de sua primeira solicitação de pagamento por débito direto via a API. O fluxo geral é:
Criar um cliente
Você precisa criar um cliente para cada usuário de quem deseja receber fundos.Criar um método de pagamento para o cliente
Um método de pagamento consiste nas informações da conta bancária ou cartão de débito do seu cliente, de onde você irá retirar fundos.Enviar documentos de consentimento
Você deve enviar os documentos de consentimento do seu cliente, autorizando você a debitar fundos de sua conta.Importante: Acordos de usuário (consentimento)Antes de fazer qualquer solicitação de pagamento, você deve obter o consentimento explícito dos seus usuários autorizando você a debitar fundos de suas contas e enviá-lo para a Belvo via a API.
Criar uma solicitação de pagamento
Uma solicitação de pagamento é o valor real que você deseja debitar de um usuário.Ouvir por webhooks
Você receberá webhooks quando a instituição financeira confirmar que o método de pagamento está registrado e outro quando a solicitação de pagamento tiver sido processada (e os fundos tiverem sido debitados da conta do seu usuário).
Depois de ter criado inicialmente um Cliente, registrado sua conta (método de pagamento) e obtido seu consentimento para debitar fundos de suas contas, solicitações de débito direto subsequentes exigem apenas que você faça um POST Criar uma solicitação de pagamento.
Pré-requisitos
Antes de começar, certifique-se de:
- Gerar suas chaves de API.
- Configurar um webhook para escutar eventos.
- Configurar a Lista de IPs Permitidos
Criar um cliente
Para criar um cliente, faça uma chamada POST Create a Direct Debit customer com as seguintes informações principais:
{
"firstname": "John",
"lastname": "Doe",
"documentType": "mx_rfc",
"documentNumber": "11223344",
"email": "john.doe@me.com",
"phone": "573457865"
}
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
firstname | string | sim | O primeiro nome do seu usuário. |
lastname | string | sim | O sobrenome do seu usuário. |
documentType | string | sim | O tipo de documento de identificação do seu usuário. Para o México, pode ser um dos seguintes:
|
documentNumber | string | sim | O número do documento do usuário. |
email | string | sim | O email do usuário. |
phone | string | não | O número de telefone do usuário (incluindo o código do país). |
Você receberá a seguinte resposta da nossa API, confirmando que o cliente foi criado. Certifique-se de salvar o customerId
que você receber, pois este ID é necessário ao criar um método de pagamento.
{
"customerId": "0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c"
}
Criar um método de pagamento para o cliente
Após criar seu cliente, faça uma solicitação POST Create a payment method para seu cliente com o seguinte payload:
{
"customerId": "0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c",
"accountType": "savings",
"accountNumber": "445566790",
"bank": "mx_bancoppel",
"reference": "SAVINGS_445566790"
}
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
customerId | string | sim | O customerId para o qual você deseja criar o método de pagamento. |
accountType | string | sim | O tipo de conta bancária ou cartão. Pode ser: savings , checkings ou debit_card . |
accountNumber | string | sim | O número da conta bancária ou do cartão de débito. |
bank | string | sim | O nome do banco mexicano onde a conta ou cartão está registrado. Para uma lista completa de instituições, consulte nossa página dedicada a Instituições de Pagamento. |
reference | string | não | Uma descrição de referência opcional para a conta bancária. |
Você receberá a seguinte resposta da nossa API, confirmando que o Método de Pagamento foi criado. Certifique-se de salvar o paymentMethodId
que você receber, pois este ID é necessário ao gerar um Consentimento e posteriormente Solicitações de Pagamento.
{
"paymentMethodId": "0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c"
}
Crie um consentimento para o seu cliente
Você não pode criar Solicitações de Pagamento até que o consentimento seja confirmado. Cada Método de Pagamento requer seu próprio consentimento com status confirmed
antes que quaisquer fundos possam ser debitados.
Um Consentimento em Débito Direto é uma prova legal de que seu cliente autorizou você a debitar fundos de sua conta. Este consentimento deve incluir:
- Fotos do documento de identidade emitido pelo governo do cliente (frente e verso)
- Uma selfie do cliente
- Um contrato assinado autorizando o débito direto
Prazo: A revisão do consentimento geralmente leva de 1 a 2 dias úteis após todos os arquivos serem enviados.
Após criar seu método de pagamento, você precisa criar um consentimento para o seu cliente que seja composto por fotos do documento de identidade, uma selfie e um contrato assinado. Este consentimento é necessário para autorizar o débito direto.
O processo de criação do consentimento consiste nas seguintes etapas:
- Inicializar o Consentimento - Crie um registro de consentimento vinculado ao seu método de pagamento
- Enviar Arquivos Necessários - Envie fotos do documento de identidade, selfie e contrato assinado
- Aguardar Revisão e Atualização de Status - Especialistas da Belvo revisam os arquivos (1-2 dias úteis) e atualizam o status.
- O status pode ser
awaiting_information
,submitted
,incomplete_information
,confirmed
ourejected
.
- O status pode ser
Inicializar o Consentimento para um Método de Pagamento
Inicialize o Consentimento para um Método de Pagamento fazendo uma chamada POST Create a Direct Debit Consent com o seguinte payload:
{
"paymentMethodId": "43e5a5b1-b2c6-4f45-8c1f-f28fec707a4b"
}
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
paymentMethodId | string | sim | O paymentMethodId para o qual você deseja criar o consentimento. |
Nossa API responderá com o seguinte payload, confirmando que o consentimento foi criado. Certifique-se de salvar o consentId
que você receber, pois este ID é necessário ao fazer o upload dos arquivos de consentimento.
{
"consentId": "0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c",
"status": "awaiting_information",
"paymentMethodId": "0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c",
"isBankNotified": false
}
Upload Consent files
Após inicializar o consentimento, você precisa fazer o upload dos arquivos necessários. Faça uma chamada POST Upload Consent Files com o seguinte payload:
curl -i -X POST \
'baseURL/consents/{consentId}/files' \
-H 'Content-Type: multipart/form-data' \
-H 'api-key-id: YOUR_API_KEY_HERE' \
-H 'api-key-secret: YOUR_API_KEY_HERE' \
-F id_front=string \
-F id_back=string \
-F selfie=string \
-F contract=string
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
id_front | string (binário) | sim | O lado frontal do documento de identidade do cliente. Pode ser uma foto ou uma imagem escaneada em formato JPEG, PNG ou PDF. O tamanho máximo do arquivo é 20MB. |
id_back | string (binário) | sim | O lado traseiro do documento de identidade do cliente. Pode ser uma foto ou uma imagem escaneada em formato JPEG, PNG ou PDF. O tamanho máximo do arquivo é 20MB. |
selfie | string (binário) | sim | Uma selfie do cliente (idealmente segurando seu documento de identidade). Pode ser uma foto ou uma imagem escaneada em formato JPEG, PNG ou PDF. O tamanho máximo do arquivo é 20MB. |
contract | string (binário) | sim | O contrato assinado pelo cliente. Pode ser uma foto ou uma imagem escaneada em formato JPEG, PNG ou PDF. O tamanho máximo do arquivo é 20MB. |
Nossa API responderá com o seguinte payload, confirmando que os arquivos de consentimento foram carregados com sucesso (um objeto por arquivo de Consentimento carregado):
[
{
"type": "id_front",
"consentFileId": "8c56b4e7-d025-4b1a-a303-dd472b24f431",
"consentId": "0494baff-3bbb-43c7-bb58-67ac6cba3e54"
}
]
Monitorar Status do Consentimento
Depois de ter carregado todos os arquivos necessários, o status do consentimento mudará para submitted
e então será revisado por nossos especialistas. Uma vez que a revisão esteja completa, o status mudará para confirmed
ou rejected
. Você pode verificar o status do consentimento fazendo uma chamada GET Get a Direct Debit Consent.
// Exemplo de resposta
{
"consentId": "0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c",
"status": "submitted",
"paymentMethodId": "0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c",
"isBankNotified": false
}
Status Possíveis:
awaiting_information
: Aguardando upload de arquivossubmitted
: Todos os arquivos carregados, em revisãoincomplete_information
: Arquivos necessários ausentesconfirmed
: ✅ Aprovado - você pode agora criar solicitações de pagamentorejected
: ❌ Negado - verifique o motivo da rejeição e envie novamente
Para mais detalhes sobre os estados dos consentimentos, confira nosso artigo dedicado Estados de Entidade.
Criar uma solicitação de pagamento
Antes de criar uma solicitação de pagamento, certifique-se de que:
- O método de pagamento foi criado
- O status do consentimento é
confirmed
Se o consentimento não estiver confirmado, sua solicitação de pagamento será rejeitada.
Após o consentimento ser confirmado, faça uma chamada POST Create a payment request:
{
"paymentMethodId": "43e5a5b1-b2c6-4f45-8c1f-f28fec707a4b",
"currency": "mxn",
"amount": "100000",
"reference": "Monthly Subscription"
}
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
paymentMethodId | string | sim | O paymentMethodId do qual você deseja debitar os fundos. |
currency | string | sim | O código de moeda de três letras ISO 4217 da transação. Pode ser: mxn ou usd . |
amount | string | sim | O valor da transação. |
reference | string | sim | Uma descrição para o débito direto (para aparecer no extrato do cliente). |
Isso retornará o seguinte payload da nossa API:
{
"paymentRequestId": "0d1a377b-b4c5-4a94-9e2e-83e59d1f6a9c"
}
A solicitação de pagamento permanecerá no status initial
até que o método de pagamento se torne active
. Você receberá webhooks indicando quando o método de pagamento foi registrado com sucesso (active
) e, em seguida, um webhook indicando que a solicitação de pagamento foi processada com sucesso.
Ouvir eventos de webhook
Você receberá webhooks quando a instituição financeira confirmar que o método de pagamento está registrado (payment_method_registration_successful
) e outro quando a solicitação de pagamento tiver sido processada (payment_request_successful
), indicando que os fundos foram debitados da conta do seu usuário.
payment_method_registration_successful
O webhook payment_method_registration_successful
indica que o método de pagamento está registrado na instituição financeira do usuário. Assim que você receber este webhook, sua solicitação de pagamento será processada.
payment_request_successful
O webhook payment_request_successful
indica que a solicitação de pagamento foi processada e os fundos foram debitados da conta do usuário.
Parabéns! Você acabou de configurar seu primeiro débito direto para um usuário. Débitos subsequentes para o mesmo usuário exigirão apenas que você envie uma solicitação de pagamento e ouça o webhook payment_request_successful
.