Emissão de boleto

deprecated

📘

Nota

A documentação da nova versão deste endpoint está disponível na aba v2 deste manual. Para acessá-la, basta selecionar a versão desejada (v2) no menu suspenso localizado no canto superior esquerdo da página.

Este endpoint permite que o parceiro Bankly emita boletos de depósito (Deposit) ou cobrança (Levy).

🚧

Importante

Para que seja possível utilizar o boleto emitido (gerar o pdf, realizar cancelamento, pagamento etc) , é necessário verificar se o status do boleto é Registered por meio do endpoint Consulta por authenticationCode.

Pré-requisito

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

  • O parceiro Bankly aguarde no mínimo 10 minutos após a criação da conta, para que ela esteja apta a emitir boletos.

Requisição

Requisição HTTP

POST https://api-mtls.sandbox.bankly.com.br/bankslip
--location --request POST 'https://api-mtls.sandbox.bankly.com.br/bankslip' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'api-version: 1.0' \
--header 'Authorization: Bearer {{Token}} '
--data-raw 
'{
    "account": {
        "number": "15164",
        "branch": "0001"
    },
    "documentNumber": "47742663023",
    "amount": 20,
    "minimumAmount": 5,
    "dueDate": "2022-02-15",
    "closePayment": "2022-03-15",
    "type": "levy",
    "alias": "Boleto da compra dos livros",
    "payer": {
        "document": "47742663023",
        "tradeName": "Editora Nísia Floresta",
        "name": "Editora Nísia Floresta",
        "address": {
            "addressLine": "Rua 6 de Março",
            "city": "Santarém",
            "state": "PA",
            "zipCode": "68060100"
        }
    },
    "interest": {
        "startDate": "2022-03-12",
        "value": 0.50,
        "type": "AmountPerCalendaryDay"
    },
    "fine": {
        "startDate": "2022-03-12",
        "value": 10,
        "type": "FixedAmount"
    },
    "discounts": {
        "limitDate": "2022-03-10",
        "value": 10,
        "type": "FixedAmountUntilLimitDate"
    }
}'

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
boleto.createConcede acesso para emitir um boleto.

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.

Parâmetros da rota (Path)

Não é necessário enviar campos no path desta requisição.

Corpo da requisição (Body)

No body, envie os seguintes campos em formato JSON:

NomeTipoDescriçãoEspecificação
accountobjectObrigatório. Objeto que contém informações sobre a conta do emissor do boleto.---
account.numberobjectObrigatório. Número da conta.---
account.branchstringObrigatório. Número da agência.---
documentNumberstringObrigatório. Número do documento (CPF ou CNPJ) do emissor.Insira somente números.
amountnumberObrigatório. Valor do boleto.---
minimumAmountnumberValor mínimo do pagamento do boleto (específico e obrigatório para boletos de cartão de crédito).---
dueDatestringObrigatório. Data de vencimento do boleto.Formato yyyy-MM-dd.
closePaymentstringData limite para o pagamento do boleto após o seu vencimento. Esse campo é de preenchimento obrigatório para a aplicação de juros e/ou multas. Em caso de juros, o valor informado nesse campo corresponde à data em que os juros param de incidir sobre o valor do boleto.Formato yyyy-MM-dd.
typestringTipo de boleto, o qual pode ser "Deposit" (boleto de depósito), "Levy" (boleto de cobrança) ou "Invoice" (boleto de cartão de crédito). Caso o campo type não seja especificado, nosso sistema gerará um boleto de depósito (deposit) e vai desconsiderar as informações do pagador, assim como os campos referentes a juros e multas.---
aliasstringNome para identificar o boleto externamente.---
payerobjectObjeto que contém informações sobre o pagador, que devem ser preenchidas obrigatoriamente na emissão de boleto de cobrança (Levy). Somente nesse caso os dados são considerados.---
payer.documentstringNúmero do documento (CPF ou CNPJ) do pagador.Insira somente números.
payer.tradeNamestringNome fantasia do pagador.Máximo de 100 caracteres.
payer.namestringNome do pagador.Máximo de 60 caracteres.
payer.addressobjectObjeto que contém informações sobre o endereço do pagador.---
payer.address.addressLinestringLogradouro (Nome da rua, avenida etc.).Máximo de 60 caracteres.
payer.address.citystringNome da cidade.Máximo de 40 caracteres. Deve-se evitar acentos e outros caracteres especiais.
payer.address.statestringNome do estado Deve-se respeitar o formato proposto pela ISO 3166-2:BR. Exemplo: SP.---
payer.address.zipCodestringCódigo postal do endereço.---
interestobjectObjeto que contém informações sobre o juros aplicado no boleto de cobrança (Levy). Este objeto somente é obrigatório para especificações da incidência de juros após o vencimento. Caso esse objeto não seja preenchido, considera-se que não há incidência de juros no boleto.---
interest.startDatestringData de início para cálculo dos juros. Os juros serão aplicados a pagamentos realizados a partir da data informada nesse campo.Formato yyyy-MM-dd.
interest.valuenumberValor monetário ou percentual dos juros, dependendo da configuração do campo interest.type.Quando o campo interest.type apresentar o valor "FixedAmount", o valor a ser preenchido neste campo deve ser inteiro.
interest.typestringRegra para cálculo dos juros. Confira as possíveis regras referentes a juros na tabela abaixo.---
fineobjectObjeto que contém informações sobre a multa aplicada no boleto de cobrança (Levy). Este objeto somente é obrigatório para especificações da incidência de multa após vencimento. Caso esse objeto não seja preenchido, considera-se que não há incidência de multa no boleto.---
fine.startDatestringData de início para cálculo da multa. A multa será aplicada a pagamentos realizados a partir da data informada nesse campo.Formato yyyy-MM-dd.
fine.valuenumberValor monetário ou percentual da multa, dependendo da configuração do campo fine.type.---
fine.typestringTipo da regra aplicada a multa. Confira as possíveis regras referentes a multa na tabela abaixo.---
discountsobjectObjeto que contém informações sobre os descontos aplicados no boleto de cobrança (Levy). Este objeto somente é obrigatório para especificações da incidência de descontos para pagamento em até um dia antes da data de vencimento. Caso esse objeto não seja preenchido, considera-se que não há incidência de descontos no boleto.---
discounts.limitDatestringData limite para incidência de desconto (considera-se desde a data de emissão até um dia antes do vencimento).Formato yyyy-MM-dd.
discounts.valuenumberValor monetário ou percentual do desconto, dependendo da configuração do campo discounts.type.---
discounts.typestringTipo da regra para cálculo do desconto. Confira as possíveis regras referentes a descontos na tabela abaixo.---

📘

Nota

É possível aplicar juros e multa ao mesmo título.

{
    "account": {
        "number": "15164",
        "branch": "0001"
    },
    "documentNumber": "47742663023",
    "amount": 20,
    "minimumAmount": 5,
    "dueDate": "2022-02-15",
    "closePayment": "2022-03-15",
    "type": "levy",
    "alias": "Boleto da compra dos livros",
    "payer": {
        "document": "47742663023",
        "tradeName": "Editora Nísia Floresta",
        "name": "Editora Nísia Floresta",
        "address": {
            "addressLine": "Rua 6 de Março",
            "city": "Santarém",
            "state": "PA",
            "zipCode": "68060100"
        }
    },
    "interest": {
        "startDate": "2022-03-12",
        "value": 0.50,
        "type": "AmountPerCalendaryDay"
    },
    "fine": {
        "startDate": "2022-03-12",
        "value": 10,
        "type": "FixedAmount"
    },
    "discounts": {
        "limitDate": "2022-03-10",
        "value": 10,
        "type": "FixedAmountUntilLimitDate"
    }
}

🚧

Importante

Se o boleto não possuir juros ou multa, o campo closePayment será preenchido automaticamente com o valor da data de vencimento (dueDate).

📘

Nota

Caso a data informada nos campos closePayments, startDate ou LimitDate corresponda a um dia de final de semana ou feriado, ela será alterada automaticamente para o primeiro dia útil subsequente.

Regras de juros, multa e descontos

Juros (Interest)Multa (Fine)Descontos (Discounts)
AmountPerCalendaryDay: valor monetário por dia corrido (sem distinção de fins de semana e feriados). Esse campo aceita apenas números inteiros.FixedAmount: valor monetário fixo.FixedAmountUntilLimitDate: valor fixo até a data limite
PercentPerMonth: percentual ao mês.Percent: percentual sobre o valor do título.FixedPercentUntilLimitDate: percentual fixo até a data limite.
Free: indica a não incidência de juros no boleto.Free: indica a não incidência de multa.Free: indica que não há incidência de desconto no boleto.
AmountPerBusinessDay: valor monetário por dia útil.------
PercentPerMonthBusinessDay: percentual ao mês (considerando apenas os dias úteis).------

Resposta (Response)

O status code 202 indicará que o boleto foi emitido com sucesso.

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

NomeTipoDescrição
accountobjectObjeto que contém informações sobre a conta do pagador.
account.numberstringNúmero da conta.
account.branchstringNúmero da agência.
authenticationCodestringIdentificador único do boleto.
{
  "account": {
    "number": "string",
    "branch": "string"
  },
  "authenticationCode": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Após a solicitação da emissão de um boleto, em background, ocorrerá o processo de registro que demora cerca de 10 segundos. Inicialmente o status do boleto será Processed.

🚧

Importante

Enquanto o boleto não estiver com o status Registered (registrado), não será possível efetuar seu pagamento, emitir o pdf ou realizar seu cancelamento.

Portanto, é preciso consultar o status do boleto para dar continuidade ao processo de emissão.

👍

Dica

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

Consulta de status

Como explicitado anteriormente, somente é possível dar continuidade ao processo de emissão quando o boleto apresentar o status Registered (registrado).

Realize a consulta do status por meio do endpoint consulta por authenticationCode

Erros

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

Status codeCódigoMensagemDescrição
400ACCOUNT_VALIDATE---Agência ou conta inválida.
400REGISTEREDNAME_INVALID---Nome de cadastro incorreto.
400ADDRESS_INVALID---Esse erro retorna quando o emissor não tem endereço cadastrado previamente.
400ACCOUNT_INTERNAL_ERROR---Há algum erro na requisição. Verifique o preenchimento dos campos.
400SCOUTER_QUANTITY---Limite de boletos emitidos excedido.
400SCOUTER_MAXIMUM_AMOUNT---Valor acima do máximo permitido para boleto.
400SCOUTER_MINIMUM_AMOUNT---Valor abaixo do mínimo permitido para boleto.
400INVALID_PARAMETERClose Payment must be greater than or equal to 'dd/mm/aaaa 00:00:00.A data limite de pagamento precisa ser maior ou igual à data de vencimento. A mensagem de erro trará a data de vencimento somada a um dia.
400INVALID_PARAMETERClose Payment must be greater than or equal to 'dd/mm/aaaa 00:00:00.A data limite de pagamento precisa ser maior que a data de início de aplicação dos juros.
400INVALID_PARAMETERClose Payment must be greater than or equal to 'dd/mm/aaaa 00:00:00.A data limite de pagamento precisa ser maior que a data de início de aplicação da multa.
400INVALID_PARAMETERFine. Start Date' must be greater than or equal to 'dd/mm/aaaa 00:00:00.A data de início de aplicação da multa precisa ser maior que a data de vencimento.
400INVALID_PARAMETERFine. Value' must be greater than 0.O valor da multa não pode ser negativo.
400INVALID_PARAMETERFine. Value' must be between 0 and 100. You entered XXX.O percentual da multa não pode ser maior que 100.
400INVALID_PARAMETERInterest. Start Date' must be greater than or equal to 'dd/mm/aaaa 00:00:00,A data de início de aplicação dos juros precisa ser maior que a data de vencimento.
400INVALID_PARAMETERInterest.Value' must be greater than 0.O valor dos juros não pode ser negativo.
400INVALID_PARAMETERInterest. Value' must be between 0 and 100. You entered XXX.O percentual dos juros não pode ser maior que 100.
400INVALID_PARAMETERDiscounts. Limit Date' must be less than or equal to 'dd/mm/aaaa 00:00:00.A data limite de desconto precisa ser inferior à data de vencimento.
400INVALID_PARAMETERDiscounts. Value' must be less than or equal to 'XXX.O valor do desconto precisa ser menor que o valor do boleto.
400INVALID_PARAMETERDiscounts. Value' must be between 0 and 100. You entered XXX.O percentual do desconto não pode ser maior que 100.
400INVALID_PARAMETERMinimum Amount' must be less than or equal to XValor mínimo do boleto de cartão de crédito deve ser menor que o valor do boleto.
400INVALID_PARAMETERMinimum Amount' must be equal to '0'Boleto de depósito ou cobrança não deve ter valor mínimo (ou deve ser igual a zero).
400INVALID_PARAMETERMinimum Amount' must be greater than '0'Boleto de cartão de crédito deve ter valor mínimo maior que zero.
400INVALID_PARAMETERFine. 'Type' must be equal to 'Free'Boleto de depósito não permite multa.
400INVALID_PARAMETERInterest. Type' must be equal to 'Free'Boleto de depósito não permite juros.
400INVALID_PARAMETERDiscounts. Type' must be equal to 'Free'Boleto de depósito não permite desconto.
400INVALID_PARAMETER'Payer' must not be empty.Boleto de cobrança e boleto de cartão de crédito precisam de informação do pagador.
400BNF_NOT_FOUND---Beneficiário não encontrado.
401BANKSLIP_UNAUTHORIZED---Acesso não autorizado.
403BLOCKED_BY_RISK_ANALYSIS---Bloqueio por análise de fraude.
403BLOCKED_BY_BNF---Houve um bloqueio devido a beneficiário inativo ou excluído.

Recordamos que esta API também poderá retornar erros comuns entre todos os endpoints. Portanto, recomendamos a consulta da documentação de erros, onde é possível encontrar as mensagens comuns em inglês que acompanham os erros 400.

Eventos

Caso o parceiro deseje receber mensagens referentes aos eventos relacionados a esse endpoint, é preciso configurar o webhook. Os eventos são:

Nome do evento (name)Descrição
BOLETO_WAS_REGISTEREDO boleto está apto para pagamento.