Validação do título

stable

A validação do título ocorre por meio da linha digitável e é a primeira etapa do processo de pagamento de conta, pois ela verifica se o título está apto a ser pago.

Neste momento, verificamos se o título:

  • já foi pago anteriormente;
  • é recebível na instituição;
  • está dentro da data mínima para adiantamento;
  • possibilita pagamento parcial;
  • não atingiu o limite de pagamentos parciais;
  • exige pagamento mínimo ou máximo;
  • está dentro da data limite de pagamento;
  • pode ser pago após a data de vencimento;
  • possui multa, juros e/ou descontos;
  • está dentro do valor máximo que pode ser pago, sendo o valor de R$249.999,99 para ficha de compensação e R$950.000,00 para concessionária, tributos e convênio.

Também checamos se o beneficiário do boleto está apto para receber o pagamento.

📘

Nota

A quantidade de pagamentos parciais que um boleto aceita é configurável no momento do seu registro.

Pré-requisito

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

  • O título esteja registrado na CIP (Câmara Interbancária de Pagamentos).

Requisição

Requisição HTTP

POST https://api-mtls.sandbox.bankly.com.br/bill-payment/validate
--curl --request POST \
--url 'https://api-mtls.sandbox.bankly.com.br/bill-payment/validate' \
--header 'accept: application/json' \
--header 'api-version: 1.0' \
--header 'authorization: Bearer {{Token}}' \
--header 'content-type: application/*+json' \
--header 'x-correlation-id: GUID' \
--data '{
   "code":"{{linha digitável}}"
}'

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
payment.validateConcede acesso para validar um título.

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-idObrigatório. Informe 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 o seguintes campo em formato JSON:

NomeTipoDescrição
codestringObrigatório. Linha digitável.
{ 
  "code": "{{linha digitável}}",
}

Resposta (Response)

O status code 200 indicará que a linha digitável foi validada com sucesso.

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

NomeTipoDescrição
idstringIdentificador único que será necessário no momento de confirmar o pagamento. Importante: O valor retornado neste campo somente será válido por 30 minutos. Após esse tempo, será necessário gerar outro id.
assignorstringNome do cedente.
recipientobjectObjeto que contém informações sobre o recebedor do pagamento.
recipient.namestringNome do recebedor.
recipient.documentNumberstringNúmero do documento do recebedor.
payerobjectObjeto que contém informações sobre o cedente.
payer.namestringNome do cedente.
payer.documentNumberstringNúmero do documento do cedente.
businessHoursobjectObjeto que contém informações sobre a faixa de horário permitida para pagamento. Importante: O sistema Bankly somente recebe pagamentos de boletos de depósito ou cobrança emitidos pelo próprio Bankly até as 20h.
businessHours.startstringHorário mínimo para realizar o pagamento.
businessHours.endstringHorário máximo para realizar o pagamento.
dueDatestringData de vencimento, no formato ISO 8601 - UTC. Importante: No caso de contas concessionárias (contas de consumo, como água, luz, telefone) e de tributos (como IPVA, IPTU), é esperado que este campo retorne nulo.
settleDatestringData em que o pagamento será liquidado, no formato ISO 8601 - UTC. Caso a data de vencimento coincida com feriados ou finais de semana, esse campo informará a data do próximo dia útil.
nextSettlebooleanIndica se o título será liquidado no próximo dia útil.
originalAmountnumberValor original, sem encargos.
amountnumberValor a ser pago. Importante: Caso haja alguma incidência de juros, multas ou descontos, o valor a pagar já vem atualizado.
chargesobjectObjeto que contém informações sobre os encargos aplicados na transação.
charges.interestAmountCalculatednumberValor dos juros.
charges.fineAmountCalculatednumberValor da multa.
charges.discountAmountnumberValor do desconto.
maxAmountnumberMáximo valor permitido por pagamento.
minAmountnumberMínimo valor permitido por pagamento.
allowChangeAmountbooleanIndica se é permitido pagamento parcial.
digitablestringLinha digitável.

📘

Nota

O campo settleDate apresenta um valor dinâmico, pois exibe a data em que será feita a conciliação do pagamento. Por exemplo, caso o boleto seja pago no dia 03/10/2022 (dia útil) dentro do horário limite, o settleDate apresentará o valor 03/10/2022, que é o dia em que o pagamento será liquidado. No entanto, se o boleto for pago no dia 01/10/2022 (sábado), o settleDate apresentará o valor 03/10/2022, que é o próximo dia útil que permitirá sua liquidação.

{
   "id": "61854f59-7379-4a3b-b699-91899c6f6743",
   "assignor": "Acesso Soluções de Pagamento S.A.",
   "recipient": {
      "name": "Maria Quitéria de Jesus",
      "documentNumber": "099.922.200-74"
   },
   "payer": {
      "name": "Nísia Floresta",
      "documentNumber": "477.426.630-23"
   },
   "businessHours": {
      "start": "07:00",
      "end": "23:00"
   },
   "dueDate": "2022-03-20T00:00:00",
   "settleDate": "2022-03-17T00:00:00",
   "nextSettle": false,
   "originalAmount": null,
   "amount": 895.59,
   "charges": {
      "interestAmountCalculated": 0,
      "fineAmountCalculated": 0,
      "discountAmount": 0
   },
   "maxAmount": 1791.09,
   "minAmount": 0.08,
   "allowChangeAmount": true,
   "digitable": "00190000090280316401743442449222100000000000000"
}

👍

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
400BILL_CODE_REQUIREDRequest without barcode or digitable lineO código de barras não pode estar vazio.
400BANKSLIP_CANCELED Bankslip has been canceled in the banking institutionTentativa de validação de um boleto cancelado.
400INVALID_BILL_BAR_CODE Invalid bill bar codeO código de barras deve ter:
- pelo menos 44 caracteres;
- no máximo 48 caracteres quando iniciar com o número "8";
- no máximo 47 caracteres quando não iniciar com o número '8'.
400PAYMENT_OPERATION_NOT_ALLOWEDPayment not madePagamento não efetuado. Não conseguimos receber pagamentos desta instituição. Favor entrar em contato com a instituição emissora e identificar se há restrições de locais de pagamento.
400MAXIMUM_NUMBER_OF_DAYS_DELAYED_EXCEEDEDPayment not madePagamento não efetuado. Número de dias de atraso excedido.
400DOCUMENT_CANNOT_BE_RECEIVEDPayment cannot be received by this institutionO pagamento não pode ser recebido por essa instituição. Verificar com a instituição emissora do boleto se ele pode ser pago em apenas algumas instituições restritas.
400EXPIRED_DOCUMENTDocument has expiredA data de pagamento está expirada.
400PAYMENT_NOT_ALLOWED Payment not allowedPagamento não permitido, favor entrar em contato com a instituição emissora do boleto.
400TRANSACTION_NOT_FOUNDTransaction not foundTransação não foi encontrada. Caso a linha digitável esteja correta, entre em contato com a instituição emissora para mais detalhes.
400CONNECTION_FAILURE There was a connection problemFalha na conexão, tente novamente mais tarde.
400PAYMENT_AWAIT_CONFIRMATIONPayment await confirmationPagamento aguardando confirmação, efetivação do pagamento ainda não foi concluída.
400IMPOSSIBLE_CALCULATE_PAYMENT_AMOUNT_TAXIt was not possible to calculate interest/feesProblema com o emissor do boleto. Favor contactar a instituição emissora.
400IMPOSSIBLE_CALCULATE_PAYMENT_AMOUNT- It was not possible to calculate amount of paymentProblema com o emissor. Favor contactar a instituição emissora.
400BANKSLIP_SETTLEDBankslip already been settledBoleto bancário já quitado.
400MERCHANT_NOT_ENABLEThe merchant is not considered enabled to receive by the emitting institutionO emissor não é considerado habilitado a receber o pagamento, entre em contato com a instituição emissora.
400MERCHANT_NOT_REGISTERED Merchant is not registeredO emissor não está registrado para receber o pagamento, entre em contato com a instituição emissora.
400MERCHANT_IN_ANALYSISMerchant is under analysis by the emitting institutionO emissor não é considerado habilitado a receber o pagamento, entre em contato com a instituição emissora.
400PARTIAL_PAYMENT_LIMIT_HAS_EXCEEDEDPartial payment limit has exceededTentativa de validação de um boleto que já excedeu a quantidade de pagamentos parciais.
400DUPLICITY_PAYMENTDuplicity of a bankslip that does not allow partial paymentsTentativa de pagamento de um boleto que já foi liquidado.
400PARTIAL_PAYMENT_NOT_ALLOWEDExisting record of a bankslip that does not allow partial paymentsRegistro existente de boleto bancário que não permite pagamentos parciais.
400PARTIAL_PAYMENT_BALANCE_HAS_EXCEEDEDBankslip has exceed the available balance for partial payment for calculation modelO boleto ultrapassou o saldo disponível para pagamento parcial para modelo de cálculo.
400PAYMENT_AFTER_EXPIRANCY_DATE_NOT_ALLOWEDBankslip can not be paid after it expiracy dateO boleto bancário não pode ser pago após a data de vencimento.
400SETTLEMENT_DATE_AFTER_DUE_DATEA payment is being made outside the settlement schedule, and the next settlement window has expiredO pagamento está sendo realizado fora da grade horária de liquidação, e a próxima janela de liquidação já expirou.
400BAR_CODE_NOT_FOUNDBar Code not foundCódigo de barras não encontrado na CIP/NUCLEA. É possível que o boleto ainda não tenha sido registrado pela instituição emissora.
400PAYMENT_FOR_BENEFICIARY_NOT_ALLOWEDA payment for the informed beneficiary is not allowedProblema com o emissor do boleto. Favor contactara instituição emissora.
400PAYMENT_PROVIDER_ERRORAn error ocurred while executing operation, please contact the provider for further informationOcorreu um erro durante a execução da operação. Entre em contato com o provedor para obter mais informações.
400INTERMITTENCE_OCCURREDAn intermittent issue has occurred. Please try again later.O serviço está apresentando instabilidade. Tente novamente em alguns minutos.
400REQUEST_WITHOUT_CORRELATION_IDRequest without correlation idcorrelationId não informado.
404NOT_FOUNDBill Payment transaction not found for supplied IdBoleto não encontrado.

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.

🚧

Importante

Por segurança, o parceiro tem até 20 minutos a partir da validação para confirmar o pagamento. Caso contrário, irá receber o erro 404 - BILL_PAYMENT_NOT_FOUND_FOR_SUPPLIED_ID e precisará realizar a validação novamente para prosseguir.

Eventos

Este endpoint não possui eventos relacionados a ele.