Fluxo
Etapa 1: Criar o pagamento
Envie a linha digitável do boleto (47 dígitos para um boleto bancário, 48 para uma conta de consumo ou guia de tributo) ou o seu código de barras (44 dígitos) embarcode. Envie só os dígitos; os dígitos verificadores precisam estar corretos.
O boleto é consultado no banco e o pagamento é criado como
REQUESTED — nada é pago ainda. Revise quem você está pagando (payee, payeeDocument) e quanto (txnUpdatedAmount) antes de continuar:
_id do pagamento — ele é o {boletoId} de todas as próximas etapas. txnUpdatedAmount é o valor nominal (txnOriginalAmount) com o desconto, a multa e os juros de hoje aplicados. pendingConfirmation guarda o que será pago, e policy, o que as políticas de negócio da sua organização dizem sobre ele.
type distingue os dois tipos de boleto: GENERIC é um boleto bancário, com vencimento; UTILITY_BILL é uma conta de consumo ou guia de tributo (energia, água, telefone, impostos).
Referência: Criar um pagamento de boleto
Etapa 2: Definir os detalhes, se faltar algum
A confirmação paga exatamente o que está empendingConfirmation, então exige o valor e a categoria de saldo. O valor costuma ser conhecido depois da criação — o que você enviou ou, senão, o que o boleto cobra (txnUpdatedAmount, ou o valor de face quando ele é 0); só um boleto que não informa valor nenhum o deixa de fora. Se o pagamento já tem os dois, pule esta etapa. Caso contrário — ou para pagar outro valor, mudar o dia ou preencher campos personalizados —, defina-os:
amount e category são obrigatórios aqui, e o que você envia substitui o que estava armazenado. Um boleto que aceita uma faixa de valores recebe um valor entre txnMinAmount e txnMaxAmount; o banco verifica o valor quando o pagamento é confirmado. A resposta traz uma policy atualizada.
Referência: Definir os detalhes de um pagamento de boleto
Etapa 3: Confirmar o pagamento
Quandopolicy.actions.autoAction for APPROVE, confirme o pagamento — sem corpo:
200 com o pagamento PAID: o dinheiro saiu da carteira, e confirmedAmount e confirmedAt registram isso. Se o banco recusar o pagamento — por saldo insuficiente ou por um limite, por exemplo —, ele passa a FAILED, com o motivo em failReason, e você recebe o erro. Um pagamento FAILED não pode ser tentado de novo: crie outro.
Quando autoAction for NONE, o pagamento precisa de aprovação: envie-o para aprovação em vez de confirmá-lo. Com DENY, as políticas o recusam.
Referência: Confirmar um pagamento de boleto
Pagar em um dia futuro
EnviescheduledAt (YYYY-MM-DD) ao criar o pagamento, ou com PUT, para pagar em um dia futuro. A confirmação então responde 201 com o agendamento, e o pagamento passa a SCHEDULED; nesse dia, um novo pagamento é criado a partir do mesmo código de barras e pago.
- Um boleto bancário (
GENERIC) só pode ser agendado para o vencimento — ou, quando o vencimento cai em um fim de semana ou feriado, para o próximo dia útil. Qualquer outro dia futuro é recusado com422 SCHEDULED_AT_NOT_ALLOWED, cuja mensagem informa o dia permitido. Um boleto bancário sem vencimento pode ser agendado para qualquer dia útil. - Uma conta de consumo ou guia de tributo (
UTILITY_BILL) pode ser agendada para qualquer dia futuro. - Um dia anterior a hoje é recusado com
422 INVALID_SCHEDULED_AT. Na criação, com o dia de hoje ou semscheduledAt, o pagamento é feito assim que é confirmado. ComPUT, deixarscheduledAtde fora mantém o dia já definido; envie o dia de hoje para voltar a pagar assim que for confirmado. - Nesse dia, o novo pagamento é debitado da categoria de saldo de uso geral (
FLEX_INTERNATIONAL), qualquer que seja acategoryque você definiu, e não leva nenhum dos campos personalizados do pagamento — por isso ele falha se a sua organização tiver um campo personalizado de transação obrigatório. Nesses casos, pague o boleto no próprio dia. - O valor de um pagamento para um dia futuro precisa ser um que o boleto aceite (entre
txnMinAmountetxnMaxAmount, quando ele os informa); senão a confirmação é recusada com400 INVALID_AMOUNTe nada é agendado.
Cancelar um pagamento
Um pagamento que ainda não foi pago —REQUESTED, aguardando aprovação ou SCHEDULED — pode ser cancelado. Cancelar um pagamento agendado também cancela o agendamento dele:
Erros comuns
Os erros vêm no envelope de erro, com umcode estável. Quando o banco recusa um boleto, code traz o motivo do banco — alguns motivos vêm em minúsculas, com a mensagem Unknown error, então baseie sua lógica no code, não na mensagem.
A página de referência de cada endpoint lista todos os erros que ele pode retornar.
Acompanhar um pagamento
Consulte o pagamento para ver ostatus dele, ou liste os pagamentos de boleto de uma carteira — filtre por status, por exemplo ?status=PAID,FAILED. Para ser notificado, assine o webhook BANK_SLIP_PAID, enviado quando um boleto é pago a partir de uma carteira.
Próximos passos
Políticas de negócio e aprovações
Envie pagamentos para aprovação quando as políticas da sua organização exigirem.
Enviar um pagamento Pix
Pague por chave Pix, QR Code ou dados bancários.