Pular para o conteúdo principal
Os administradores de uma organização escrevem políticas de negócio — regras como “pagamentos Pix acima de R$ 1.000 precisam da aprovação do time financeiro” ou “nenhum pagamento da carteira de Marketing nos fins de semana”. Todo pagamento Pix e de boleto feito a partir das carteiras da organização é verificado contra essas políticas, e a política correspondente decide o que acontece com ele. Este guia mostra como ler essa decisão e agir de acordo: crie o pagamento, defina seus detalhes e então confirme-o na hora ou envie-o para aprovação.
As etapas abaixo usam um pagamento Pix. Pagamentos de boleto seguem as mesmas políticas e o mesmo fluxo — criar → definir os detalhes → enviar para aprovação ou confirmar —, com seus próprios endpoints e códigos de erro. Veja Pagamentos de boleto.Solicitações de transferência entre carteiras passam pelas mesmas políticas e pelas mesmas etapas de enviar para aprovação ou confirmar, com seus próprios endpoints e códigos de erro. As principais diferenças: o valor e a categoria de saldo são definidos na criação — para mudá-los, cancele a solicitação e crie outra — e só administradores da organização podem cancelá-las.

O que uma política decide

As políticas da organização são avaliadas na ordem definida por order, e a primeira cujas condições correspondem ao pagamento decide. As condições leem o pagamento como ele está: o valor, a categoria de saldo debitada, o destinatário, a carteira pagadora, quem o criou, seus campos personalizados e quantos dias faltam para o vencimento. A decisão é o actions.autoAction da política: Uma política também pode recarregar a carteira antes de pagar (actions.moveBalance): o valor do pagamento é primeiro movido de outra carteira para a carteira pagadora e, então, pago. Isso acontece automaticamente quando um pagamento aprovado pela política é confirmado, e quando uma solicitação de aprovação é aprovada — você não precisa fazer nada a mais. Um administrador da organização que confirma um pagamento que a política enviaria para aprovação, ou recusaria, não tem recarga. Um pagamento para um dia futuro (scheduledAt) que você confirma diretamente não é recarregado — garanta que a carteira tenha o dinheiro nesse dia; um que passa por aprovação é recarregado quando é aprovado. Os administradores gerenciam as políticas no aplicativo do Portão 3 ou pelos endpoints de políticas de negócio da API do Rule Engine.

O fluxo

Toda etapa responde com o pagamento, então você sempre sabe o status dele.

Etapa 1: Criar o pagamento

Crie o pagamento Pix com o destinatário — uma chave Pix, um Pix Copia e Cola / QR Code ou dados bancários. Nada é pago ainda: o pagamento começa como REQUESTED.
A resposta traz o pagamento e policy — o que as políticas dizem sobre ele como ele está agora:
Use o _id como {pixId} nas próximas etapas.

Etapa 2: Definir os detalhes e ler o veredito

pendingConfirmation guarda o que será pago — o valor, a categoria de saldo debitada e uma descrição. Enviar para aprovação e confirmar não recebem detalhes próprios: usam estes. Se você enviou amount e category na criação (como acima), eles já estão definidos e policy já os reflete — vá para a etapa 3. Caso contrário — normalmente um QR Code, cujo valor você só conhece depois de lê-lo, ou uma criação sem category —, defina os detalhes:
A resposta traz o pagamento atualizado e uma policy nova. Leia policy.actions.autoAction da resposta mais recente para escolher entre a etapa 3a, a 3b ou nenhuma (DENY). Você pode chamar o PUT quantas vezes precisar enquanto o pagamento estiver REQUESTED.
A menos que o QR Code tenha valor aberto (txnAllowAmountChange: true), amount deve ser o txnUpdatedAmount do pagamento (uma cobrança COBV agendada para o vencimento também pode pagar o seu txnOriginalAmount). Preencha aqui também todos os campos personalizados obrigatórios da transação — confirmar e enviar para aprovação recusam um pagamento em que falte algum deles.

Etapa 3a: Confirmar o pagamento

Quando o veredito for APPROVE, confirme o pagamento. Não envie corpo:
As políticas são avaliadas mais uma vez, com os detalhes armazenados. Se elas ainda aprovarem, o dinheiro é movimentado: a resposta é 200 com o pagamento CONFIRMED — ele passa a PAID quando a rede Pix o liquida. Se o pagamento for para um dia futuro (scheduledAt), a resposta é 201 com o agendamento, e o pagamento passa a SCHEDULED. Se agora uma política exigir aprovação, a confirmação é recusada com 403 PIX_REQUIRES_APPROVAL — envie o pagamento para aprovação. Se uma política recusar o pagamento, você recebe 403 PIX_POLICY_DENIED.

Etapa 3b: Enviar o pagamento para aprovação

Quando o veredito for NONE, envie o pagamento para aprovação. Não envie corpo:
O pagamento passa a PENDING_APPROVAL, e uma solicitação de aprovação é aberta para os aprovadores que a política indica. A resposta traz essa solicitação em policyRequest:
A partir daqui:
  • Os detalhes ficam congelados. Os aprovadores aprovam exatamente o valor, a categoria e a descrição que o pagamento tinha quando foi enviado. Para alterá-los, cancele o pagamento — a solicitação de aprovação dele também é cancelada — e crie um novo.
  • Os aprovadores decidem. Eles são notificados no aplicativo do Portão 3 e aprovam ou negam por lá, ou pela API do Rule Engine, ao aprovar ou negar a solicitação de aprovação cujo id é o policyRequestId do pagamento. Com approvalHierarchy: true, eles decidem um depois do outro, em ordem. Administradores da organização podem decidir qualquer solicitação sozinhos: forçar a aprovação ou forçar a negação.
  • Aprovado → pago. Quando todas as aprovações são dadas, o Portão 3 confirma o pagamento por você, com os detalhes aprovados — sem nenhuma chamada sua. Ele passa a CONFIRMED e depois a PAID (ou a SCHEDULED, se for para um dia futuro). Se o pagamento for recusado nesse momento — por saldo insuficiente, por exemplo —, ele passa a FAILED, com o motivo em failReason.
  • Aprovado, mas não executado. Se a recarga da carteira prevista na política não puder ser feita depois da aprovação, o pagamento não é enviado. Alguns problemas detectados antes de qualquer dinheiro se mover são tentados de novo automaticamente (o executionStatus da solicitação de aprovação volta a WAITING). Qualquer outra falha — inclusive um timeout ou um erro do banco durante a recarga — encerra a solicitação com executionStatus: FAILED e o motivo em executionFailReason, e o pagamento fica PENDING_APPROVAL até o prazo, quando passa a aparecer como EXPIRED. A recarga pode ter acontecido: confira os saldos das carteiras antes de cancelar o pagamento e criar outro, e fale com o suporte se o dinheiro tiver sido movido.
  • Negado → cancelado. O pagamento passa a CANCELLED.
  • Prazo vencido → expirado. O prazo é approvalExpiresAt: 21h (horário de São Paulo) do dia do pagamento, e no mínimo uma hora depois do envio. Um pagamento que ainda estiver aguardando nesse momento passa a EXPIRED.
Enquanto aguarda, o pagamento não pode ser confirmado manualmente — nem por um administrador da organização (403 PIX_PENDING_APPROVAL): a solicitação de aprovação é o registro da decisão. Para acompanhar o resultado, consulte o pagamento até que o status dele saia de PENDING_APPROVAL, consulte a solicitação de aprovação para ver quem decidiu o quê ou assine o webhook PIX_OUT, enviado quando o pagamento sai.
Só envie um pagamento para aprovação quando o veredito for NONE. Com APPROVE, o envio é recusado com 403 PIX_APPROVAL_NOT_REQUIRED — confirme o pagamento em vez disso —, e com DENY, com 403 PIX_POLICY_DENIED.

Administradores da organização

Um administrador da organização pode confirmar um pagamento seja qual for a decisão das políticas: a confirmação dele dispensa a aprovação e ainda devolve o veredito em policy, para registro. Clientes de API atuam como administradores das suas organizações, então isso também vale para eles. A única exceção é um pagamento que já está aguardando aprovação, que só a solicitação de aprovação dele pode resolver — um administrador a resolve forçando a aprovação ou a negação.

Quando as políticas não podem ser avaliadas

Se as políticas não puderem ser avaliadas naquele momento:
  • criar o pagamento e definir seus detalhes continuam funcionando, com policy igual a { "error": "POLICY_EVALUATION_UNAVAILABLE" };
  • enviar para aprovação e confirmar respondem 503 POLICY_EVALUATION_UNAVAILABLE e não alteram nada — tente de novo em instantes. A confirmação de um administrador da organização segue adiante, com policy: null.

Erros do fluxo

Pagamentos de boleto

Um pagamento de boleto passa pelas mesmas etapas, nos seus próprios endpoints. Use o _id do pagamento como {boletoId}: O que muda para um boleto:
  • O valor costuma ser conhecido depois da criação — o amount que você enviou ou, se não enviou nenhum, o que o boleto cobra hoje (txnUpdatedAmount, ou o valor de face quando ele é 0). Envie também category na criação e você pode ir direto para a etapa 3; caso contrário — ou quando o boleto não informa valor nenhum —, defina-os com PUT, que também permite mudar o valor, o dia ou os campos personalizados.
  • Um boleto confirmado fica PAID na hora — ele não passa por CONFIRMED. Quando uma solicitação de aprovação é aprovada, o pagamento passa a PAID (ou a SCHEDULED, se for para um dia futuro), ou a FAILED, se o banco o recusar.
  • O que uma política enxerga: subjectType é BOLETO — então uma política pode se aplicar só a pagamentos de boleto —, o beneficiário (payee, payeeDocument) é o destinatário (creditParty), quem consta como pagador no boleto é o debitParty, e daysToDueDate conta os dias até o vencimento do boleto.
  • O dia do pagamento: o prazo de aprovação é 21h (horário de São Paulo) do dia em que o pagamento será feito — hoje, a menos que você defina scheduledAt. Um boleto bancário só pode ser agendado para o vencimento (ou para o próximo dia útil, quando o vencimento cai em um fim de semana ou feriado; qualquer dia útil, quando ele não tem vencimento).
  • Notificações: assine o webhook BANK_SLIP_PAID, enviado quando o boleto é pago.
Os mesmos erros, com os códigos do boleto:

Próximos passos

Enviar um pagamento Pix

Pague por chave Pix, QR Code ou dados bancários, passo a passo.

Pagar um boleto

Pague um boleto bancário ou uma conta de consumo pelo código de barras.

Receber webhooks

Seja notificado quando um pagamento sair.