Skip to content

Status do split de pagamentos ​

Referência consolidada de todos os status que um integrador pode observar no fluxo de split da Appmax — status de recebedor (retornado por GET /recipient/{hash}/status) e status de solicitação de saque (retornado por endpoints de withdraw-request). Use esta página como dicionário de enum: o que cada valor significa, quando aparece, o que esperar depois e qual a ação indicada para cada caso.

Para o fluxo completo e exemplos de código, veja Split de pagamentos. Para dúvidas operacionais recorrentes, veja Perguntas frequentes.

Status do recebedor (Recipient) ​

O status do recebedor é retornado pelo endpoint GET /recipient/{recipient_hash}/status como uma string no campo data. Existem três valores possíveis, sempre em inglês.

StatusSignificadoPode participar de split?Próxima ação esperada
Awaiting face match completionRecebedor criado, aguardando o usuário concluir o facematch via SMS.NãoDisparar ou reenviar link de facematch e aguardar o usuário concluir pelo celular.
Onboarding on verificationFacematch concluído. Análise de KYC em andamento ou retida por algum check.NãoAguardar a liberação automática. Se permanecer além de 24-48h úteis, abrir chamado com o suporte.
Onboarding completedOnboarding aprovado. Recebedor habilitado a receber splits e sacar.SimUsar o recipient_hash em POST /orders/{orderId}/split-order.

Transições entre estados ​

Transições que não existem ​

  • Não há transição de volta de Onboarding completed para os estados anteriores. Uma vez aprovado, o recebedor permanece aprovado.
  • Não há transição de Onboarding on verification de volta para Awaiting face match completion. Chamar POST /facematch-link novamente nesse estado não reinicia a análise — a mensagem é aceita mas o status não muda.
  • Não existe estado público de rejeição ou bloqueio (rejected, denied, blocked). Recebedores reprovados permanecem em Onboarding on verification.

Onboarding on verification em detalhe ​

Este é o estado que mais gera dúvida porque acumula dois cenários distintos sob o mesmo label:

  1. Análise em andamento — facematch foi recebido e o pipeline de KYC ainda está processando. Janela típica: minutos a poucas horas.
  2. Análise retida por falha de check — o pipeline já processou, mas algum critério de KYC não foi atendido. O recebedor fica nesse estado indefinidamente até ação manual da Appmax.

O endpoint GET /recipient/{hash}/status não distingue os dois casos. Não existe campo reason, não existe status rejected e não há webhook que avise a mudança.

Motivos típicos que causam retenção ​

Entre os critérios verificados no onboarding:

  • CPF ou CNPJ não validado na Receita Federal
  • CNPJ sem o CPF do responsável no QSA (quadro societário)
  • PEP (Pessoa Exposta Politicamente)
  • OFAC (lista de sanções do Tesouro dos EUA)
  • CSNU (lista de sanções do Conselho de Segurança da ONU)
  • Score do facematch abaixo do limite mínimo
  • Liveness (prova de vida) reprovada
  • Face do facematch não coincide com a foto do documento

Nem todos os motivos são reportados ao integrador. O que retorna é apenas o label Onboarding on verification.

Ausência de retry automático e timeout ​

O sistema não reprocessa automaticamente um recebedor travado em Onboarding on verification. Não há timeout para sair desse estado, não há retry periódico e não há notificação de reprovação. Chamar POST /facematch-link novamente não reativa a análise dos documentos — apenas dispara outro SMS de facematch, que por si só não destrava os outros checks.

Ação recomendada ​

  • Até 24-48h úteis no estado Onboarding on verification: aguardar. É janela normal de processamento.
  • Acima disso: abrir chamado com o suporte da Appmax informando o recipient_hash. O time interno verifica se é caso de reprocessamento, análise manual ou reprovação definitiva.
  • Não recriar o recebedor: o CNPJ retornará o erro company document number já se encontra utilizado.
  • Não travar o fluxo do usuário final: sinalize ao lojista que o cadastro está em análise e dê um caminho alternativo enquanto aguarda.

Status de solicitação de saque (WithdrawRequest) ​

Toda solicitação de saque — seja via saldo disponível ou via antecipação — carrega um campo status que representa onde ela está no ciclo de processamento financeiro.

A resposta imediata dos endpoints POST /withdraw-request/* sempre retorna 2 (PENDING), como um inteiro (ID). As transições subsequentes acontecem em background, no lado da Appmax. Para acompanhar o status atualizado, use GET /withdraw-request/{withdrawRequestId} — que retorna o status já traduzido como string (ex: pending, approved, refused). Não há webhook que notifique as transições; o acompanhamento é sempre via polling desse endpoint.

Esta seção documenta os 17 status possíveis que podem aparecer ao consultar uma solicitação, em relatórios, ou em chamados de suporte.

Status terminais ​

Estados que não transitam mais. Uma vez aqui, a solicitação está encerrada.

IDConstanteSignificadoAção do integrador
1REFUSEDSolicitação recusada (erro de validação, saldo insuficiente após lock, reprovação de análise, falha definitiva do provedor de pagamento).Investigar motivo via chamado. Se saldo voltou a estar disponível, criar nova solicitação.
5PAIDValor liquidado — saiu da conta Appmax para a conta bancária do recebedor.Nenhuma. Fluxo encerrado com sucesso.

Status em andamento ​

Estados intermediários. A solicitação ainda está sendo processada — aguardar transição natural.

IDConstanteSignificadoAção do integrador
2PENDINGCriado. Aguardando processamento ou aprovação interna. Este é o valor devolvido na resposta imediata do POST.Nenhuma. Aguardar.
3APPROVEDAprovado internamente. Aguardando envio ao provedor de pagamento.Nenhuma. Aguardar.
4PROCESSINGEm processamento no provedor (envio ao banco ou cash-out).Nenhuma. Aguardar.
7WAITING_RETURNAguardando retorno do provedor de pagamento.Nenhuma. Aguardar.
8INITIAL_ANALYSISEm análise inicial antes da aprovação.Nenhuma. Aguardar.
12PIX_INCLUSION_IN_RETRYInclusão da chave PIX em retry automático junto ao provedor.Nenhuma. Aguardar.
16PIX_PROCESSINGPagamento PIX em processamento no provedor.Nenhuma. Aguardar.
17PIX_VALIDATION_API_UNAVAILABLEAPI de validação PIX do provedor está temporariamente indisponível.Nenhuma. Aguardar ou abrir chamado se persistir.

Status que indicam ação da Appmax ​

Estados em que algo travou e depende de intervenção manual da Appmax para destravar. Se permanecer aqui por mais do que algumas horas, abra chamado.

IDConstanteSignificadoAção do integrador
6ON_HOLDBloqueio manual (análise de risco, verificação adicional).Abrir chamado se não desbloquear em janela razoável.
9PENDING_ACCREDITATIONRecebedor ainda não credenciado no provedor de cash-out.Aguardar. Abrir chamado se permanecer.
10APPROVED_BUT_NOT_INCLUDEDAprovado internamente mas não incluído em lote de pagamento.Abrir chamado.
11PIX_ACCOUNT_VALIDATION_FAILProvedor falhou ao validar a chave PIX do recebedor.Abrir chamado para validar dados bancários.
13PIX_EXPIRED_INCLUSIONA inclusão do PIX expirou antes de completar.Abrir chamado.
14PIX_INCLUDED_BUT_REPROVEDPIX foi incluído mas reprovado pelo provedor.Abrir chamado.
15PIX_MANUAL_PAYMENTRequer pagamento PIX manual pelo time financeiro da Appmax.Abrir chamado.

withdrawal_blocked — estado lateral invisível ​

Existe um bloqueio de saque que não aparece no status do recebedor nem na solicitação de saque em si. Trata-se de uma marcação lateral que pode ser ativada pela Appmax sobre a conta do recebedor por motivos como risco, investigação ou exigência regulatória. O efeito prático:

  • O recebedor aparece com status Onboarding completed normalmente.
  • Os saldos existem e podem ser consultados.
  • Mas toda tentativa de criar uma solicitação de saque responde HTTP 403 com erro Withdraw not allowed.

Se você receber 403 no POST /withdraw-request/available ou POST /withdraw-request/anticipation para um recebedor que deveria estar apto, trata-se provavelmente desse bloqueio — abra chamado com o suporte informando o recipient_hash.

Outro caso que também retorna 403 (ou 409 Withdraw request in progress) é quando já existe outra solicitação em andamento para o mesmo recebedor na mesma janela de processamento. Aguarde a finalização da solicitação anterior antes de criar nova.

Elegibilidade consolidada por status do recebedor ​

Tabela cruzada mostrando, para cada status de recebedor, o que é e o que não é permitido:

Status do recebedorReceber split em novo pedidoTer saldos (GET /balances)Sacar saldo disponívelAntecipar saldo a liberar
Awaiting face match completionNãoNão (retorna 404)NãoNão
Onboarding on verificationNãoNão (retorna 404)NãoNão
Onboarding completedSimSimSim, salvo withdrawal_blocked ou saque em progressoSim, salvo withdrawal_blocked ou saque em progresso

Observação sobre o GET /balances: antes de Onboarding completed, o endpoint GET /recipient/{hash}/balances retorna 404 Balance not found. Isso não significa que o recebedor não existe — significa apenas que os saldos ainda não foram provisionados. Use GET /status como fonte primária da existência e elegibilidade do recebedor.

O que o status não conta ​

Split não tem status próprio ​

A entidade split de pedido não possui ciclo de vida separado. O status efetivo de um split acompanha o status da order pai:

  • Order pendente → split criado e aguardando aprovação.
  • Order aprovado → split consolidado, valores entram no fluxo de saldo dos recebedores.
  • Order cancelado ou estornado → split descartado junto com a order.

Não existe endpoint GET /split-order/{id}/status nem campo split_status. Não existe webhook específico de split. Para saber se um split foi efetivado, consulte o status da order.

Não há webhook de mudança de status de recebedor ​

Hoje não existe evento que notifique transição de recebedor entre Awaiting face match completion, Onboarding on verification e Onboarding completed. O integrador precisa fazer polling do endpoint GET /status. Também não há webhook para transições de WithdrawRequest.

Recomendações:

  • Fazer polling em intervalos razoáveis (ex: a cada 1-5 minutos durante o onboarding ativo, reduzindo para horário após a primeira hora).
  • Evitar polling agressivo (mais de 1 chamada por segundo) — a API tem rate limit.
  • Para recebedores em Onboarding on verification há mais de 24h úteis, parar o polling e partir para suporte.

Estornos parciais são bloqueados em pedidos com split ​

Pedidos com split só aceitam estorno total. Tentar um estorno parcial em uma order com split retorna erro de validação. Essa é uma regra de produto, não um status — detalhada em Criar split de pedido.

Perguntas que só o suporte responde ​

Alguns dados não aparecem na API e não estão publicamente documentados — exigem chamado de suporte para obter resposta caso a caso:

  • Qual provedor de KYC é usado no facematch e nas checagens documentais. Não é exposto na API.
  • Por que um recebedor específico caiu em Onboarding on verification. O motivo detalhado (qual check falhou) não é retornado.
  • SLA de conclusão da análise de um recebedor específico. Apenas a janela típica (24-48h úteis) é pública.
  • Previsão de transição de um WithdrawRequest específico entre os estados. O tempo varia por provedor e janela bancária.
  • Motivo de withdrawal_blocked ter sido ativado em uma conta. Exige chamado com o recipient_hash.

Em todos esses casos, ao abrir chamado, inclua sempre o recipient_hash (ou withdraw_request_id quando aplicável) — isso permite ao suporte localizar o registro imediatamente.

Veja também ​