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 pororder, 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 ostatus 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 comoREQUESTED.
policy — o que as políticas dizem sobre ele como ele está agora:
_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:
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.
Etapa 3a: Confirmar o pagamento
Quando o veredito forAPPROVE, confirme o pagamento. Não envie corpo:
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 forNONE, envie o pagamento para aprovação. Não envie corpo:
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:
- 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é opolicyRequestIddo pagamento. ComapprovalHierarchy: 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
CONFIRMEDe depois aPAID(ou aSCHEDULED, se for para um dia futuro). Se o pagamento for recusado nesse momento — por saldo insuficiente, por exemplo —, ele passa aFAILED, com o motivo emfailReason. - 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
executionStatusda solicitação de aprovação volta aWAITING). Qualquer outra falha — inclusive um timeout ou um erro do banco durante a recarga — encerra a solicitação comexecutionStatus: FAILEDe o motivo emexecutionFailReason, e o pagamento ficaPENDING_APPROVALaté o prazo, quando passa a aparecer comoEXPIRED. 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 aEXPIRED.
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.
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 empolicy, 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
policyigual a{ "error": "POLICY_EVALUATION_UNAVAILABLE" }; - enviar para aprovação e confirmar respondem
503 POLICY_EVALUATION_UNAVAILABLEe não alteram nada — tente de novo em instantes. A confirmação de um administrador da organização segue adiante, compolicy: 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
amountque 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émcategoryna 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 comPUT, que também permite mudar o valor, o dia ou os campos personalizados. - Um boleto confirmado fica
PAIDna hora — ele não passa porCONFIRMED. Quando uma solicitação de aprovação é aprovada, o pagamento passa aPAID(ou aSCHEDULED, se for para um dia futuro), ou aFAILED, 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 é odebitParty, edaysToDueDateconta 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.
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.