Agendamento de recorrência

Este endpoint possibilita que o parceiro Bankly efetue o agendamento de uma cobrança recorrente para seu cliente.

O parceiro deverá informar os seguintes dados da contratação da recorrência:

  • Data da contratação;
  • Dia da postagem da cobrança na fatura;
  • Frequência da cobrança;
  • Quantidade de cobranças;
  • Valor e moeda;
  • Dados de desconto (se houver);
  • Como deseja que a cobrança aconteça, ou seja, se devemos persistir uma cobrança mesmo para um cartão bloqueado ou sem limite;
  • Dados do titular da cobrança e do produto contratado.
🚧

Importante

Atualmente, a cobrança recorrente é postada somente em faturas.

Pré-requisitos

Para que seja possível utilizar este endpoint, é necessário que:

  • O cliente do parceiro tenha contratado um produto/serviço que requeira pagamento periódico em intervalos regulares;
  • O parceiro tenha definido um programa para seus cartões;
  • O cartão do cliente do parceiro possua o status APPROVED;
  • O cliente do parceiro possua uma conta ativa.

Requisição (Request)

Requisição HTTP

POST 'https://api-mtls.sandbox.bankly.com.br/cards/invoices/recurrencies'
--request POST \
  --url 'https://api-mtls.sandbox.bankly.com.br/cards/invoices/recurrencies' 
  --header 'Content-Type: application/json' \ 
	--header 'api-version: 1.0' \
  --header 'Authorization: Bearer {Token}' \
  --header 'x-correlation-id: {Guid}'
  --data '{ 
       "hiringDate": "2024-01-01", 
       "billingType": "", 
       "recurrency": { 
         "postDate": 4, 
         "mustChargeOnHiringDate": false, 
         "frequency": "ANNUALY", 
         "quantity": 12, 
         "amount": { 
         "value": 101.5, 
         "currency": "BRL" 
       }, 
       "discount": { 
         "value": 2.00, 
         "currency": "BRL" 
       }, 
       "chargeOptions": { 
         "forceLimit": false, 
         "blockedAccount": false
         } 
       }, 
       "user": { 
         "documentNumber": { 
         "value": "47742663023", 
         "type": "CPF" 
       }, 
       "contract": { 
         "id": "12345678", 
         "type": "Credit" 
       } 
       }, 
       "product": { 
         "id": "1234", 
         "type": "Seguros", 
         "description": "Seguro Auto", 
         "transactionType": "SEGUROS_DEB" 
       } 
     }'

Autorização

Para garantir a segurança nas requisições, todos os endpoints do Bankly utilizam scopes como parte do seu fluxo de autorização.

Esta requisição requer o scope descrito a seguir:

ScopeDescrição
recurrency.writeConcede acesso para realizar o agendamento de uma recorrência de cobrança.

Cabeçalhos (Headers)

NomeDescrição
api-versionObrigatório. Versão da API. Atualmente estamos na versão 1.0.
AuthorizationObrigatório. Token de autorização do tipo Bearer.
x-correlation-idInforme um GUID, sendo um novo cada requisição.

Parâmetros da rota (Path)

Não é necessário enviar parâmetros no path desta requisição.

Corpo da requisição (Body)

No body, envie os seguintes campos em formato JSON:

NomeTipoDescriçãoEspecificação
hiringDatestringObrigatório. Data da contratação do produto que deverá ser cobrado de forma recorrente.Formato "yyyy-mm-dd"
billingTypestringObrigatório. Tipo de cobrança.Preencha este campo com "" ou com null.
recurrencyobjectObrigatório. Objeto que deverá conter informações sobre a recorrência.
recurrency.postDateintDia em que deverá ser realizada a postagem de recorrência na fatura. Importante: caso este campo não seja preenchido, será considerada a data informada em hiringDate.
recurrency.mustChargeOnHiringDatebooleanObrigatório. Indica se a cobrança deverá ser realizada no mesmo dia da contratação (true) ou não (false). Importante: caso este campo seja preenchido com TRUE, o valor informado no campo postDate será desconsiderado.
recurrency.frequencystringObrigatório. Frequência em que a recorrência deverá ocorrer, que pode ser "ANNUALY" (Anualmente), "MONTHLY" (Mensalmente) ou "WEEKLY" (Semanalmente).
recurrency.quantityintObrigatório. Quantidade de cobranças da recorrência. Este campo deverá indicar quantas vezes será realizada a cobrança dentro da frequência informada.
recurrency.amountobjectObrigatório. Objeto que deverá conter informações sobre o valor da cobrança recorrente.
recurrency.amount.currencystringObrigatório. Código da moeda com base na ISO 3361.
recurrency.amount.valuenumberObrigatório. Valor da cobrança recorrente.
recurrency.discountobjectObjeto que deverá conter informações sobre o desconto aplicado na cobrança, caso exista. Importante: caso este objeto seja enviado, seus subcampos devem ser preenchidos obrigatoriamente.
recurrency.discount.currencystringCódigo da moeda com base na ISO 3361.
recurrency.discount.valuenumberValor do desconto.
recurrency.chargeOptionsobjectObrigatório. Objeto que deverá conter informações sobre o formato de cobrança.
recurrency.chargeOptions.forceLimitbooleanObrigatório. Indica se a cobrança recorrente deverá ocorrer para cartão sem limite (true) ou não (false).
recurrency.chargeOptions.blockedAccountbooleanObrigatório. Indica se a cobrança recorrente deverá ocorrer para contas bloqueadas (true) ou não (false).
userobjectObrigatório. Objeto que deverá conter informações sobre o titular do cartão.
user.documentNumberobjectObrigatório. Objeto que deverá conter informações sobre o documento do titular.
user.documentNumber.valuestringObrigatório. Número do documento.Informe somente números.
user.documentNumber.typestringObrigatório. Tipo de documento, que pode ser "CPF" ou "CNPJ".
user.contractobjectObrigatório. Objeto que deverá conter informações sobre o contrato de crédito do titular do cartão.
user.contract.idstringObrigatório. Identificador único do contrato, o qual pode ser um número de proposta, contrato etc. relativo ao produto que o cliente do parceiro contratou.
user.contract.typestringObrigatório. Tipo de contrato, que pode ser "Credit" ou "Debit".
productobjectObrigatório. Objeto que deverá conter informações sobre o produto contratado que será cobrado de forma recorrente.
product.idstringObrigatório. Identificador único do contrato do produto.
product.typestringObrigatório. Tipo do produto que será cobrado.
product.descriptionstringObrigatório. Descrição do produto. Essa mensagem será apresentada na postagem da cobrança.
product.transactionTypestringObrigatório. Código da transação.

{ 
       "hiringDate": "2024-01-01", 
       "billingType": "", 
       "recurrency": { 
         "postDate": 4, 
         "mustChargeOnHiringDate": false, 
         "frequency": "ANNUALY", 
         "quantity": 12, 
         "amount": { 
         "value": 101.5, 
         "currency": "BRL" 
       }, 
       "discount": { 
         "value": 2.00, 
         "currency": "BRL" 
       }, 
       "chargeOptions": { 
         "forceLimit": false, 
         "blockedAccount": false
         } 
       }, 
       "user": { 
         "documentNumber": { 
         "value": "47742663023", 
         "type": "CPF" 
       }, 
       "contract": { 
         "id": "12345678", 
         "type": "Credit" 
       } 
       }, 
       "product": { 
         "id": "1234", 
         "type": "Seguros", 
         "description": "Seguro Auto", 
         "transactionType": "SEGUROS_DEB" 
       } 
     }

Possíveis códigos de transação

transactionTypeDescrição
SEGUROS_DEBIdentificador de uma cobrança recorrente de seguros que gera débito na fatura.
SEGUROS_CREDIdentificador de um estorno de cobrança recorrente de seguros.

Resposta (Response)

status code 201 indicará que a solicitação foi aceita e o agendamento de recorrência da cobrança foi criado.

Sendo bem-sucedido, o retorno irá trazer os seguintes campos em formato JSON:

NomeTipoDescriçãoNúmero máximo de caracteres
valueobjectObjeto que contém informações sobre a recorrência agendada.
value.codestringCódigo personalizado da mensagem de sucesso.
value.messagestringDescrição do código de sucesso.
value.recurrencyIdstringIdentificador único da recorrência agendada. Importante: o parceiro deve armazenar essa informação, pois ela poderá ser utilizada para atualizações e cancelamentos de recorrências.
value.productTypestringDescrição do produto enviado na requisição.

{    
  "value": { 
    "code": "RECURRENCY_CREATED", 
    "message": "Recurrency created successfully.", 
    "recurrencyId": "COMPANY_KEY-edd874f6-6f00-4984-aa76-e50dabdba8a5", 
    "productType": "Seguros"
  } 
}
👍

Dica

Para simular uma requisição nesse endpoint, acesse o API Reference.

Erros

Este endpoint pode retornar erros específicos, conforme a tabela a seguir:

Status CodeCódigoMensagemDescrição
400REQUEST_VALIDATION_ERROR'{parâmetro}' must not be emptyO campo não pode ser enviado vazio. O parâmetro entre chaves pode ser referente aos campos: hiringDate , user.documentNumber.value, user.documentNumber.type, user.contract.id, user.contract.type, product.id, product.type, product.description e product.transactionType.
400REQUEST_VALIDATION_ERROR'{parâmetro}' must be true or falseO valor do campo deve ser True ou False. O parâmetro entre chaves pode ser referente aos campos: recurrency.mustChargeOnHiringDate , recurrency.chargeOptions.forceLimit e recurrency.chargeOptions.blockedAccount.
400REQUEST_VALIDATION_ERROR'{parâmetro}' must be greater than 0O valor desse campo não pode ser igual a 0. O parâmetro entre chaves pode ser referente aos campos: recurrency.postDate, recurrency.quantity e recurrency.amount.value.
400REQUEST_VALIDATION_ERROR'recurrency.amount.currency' must be 'BRL' or 'USD’A moeda do valor da cobrança deve ser BRL ou USD.
400REQUEST_VALIDATION_ERROR'recurrency.frequency' must be 'ANNUALY', 'MONTHLY' or 'WEEKLY’Informe uma frequência válida: ANNUALLY, MONTHLY ou WEEKLY.
406CARD_NOT_ACTIVEThe requested card is not active.O cartão informado não está ativo.

Válido lembrar que a API também poderá retornar erros comuns entre todos os endpoints.

Eventos

Este endpoint não possui eventos relacionados a ele.

Copyright © 2021 Acesso Soluções de Pagamento S.A - Todos os direitos reservados