Docs
Saques e saldo

Acompanhe e cancele saques

Estados do saque, consulta por identificador, listagem com filtros e cancelamento de um saque ainda em análise.

Saques não têm webhook. Para saber o desfecho, consulte o saque ou liste os saques em andamento em intervalos regulares, por exemplo a cada minuto.

Estados

Estados do saque: começa em processando e termina em transferido, rejeitado, cancelado, expirado ou falha
statusFinal?SignificadoO valor reservado
processandoNãoEm análise, aprovado ou em envio.Continua reservado.
transferidoSimO Pix foi enviado. pixEndToEndId identifica a transferência.Saiu da conta.
rejeitadoSimA análise recusou o saque. O motivo está em rejectionReason.Volta ao saldo.
canceladoSimVocê cancelou o saque.Volta ao saldo.
expiradoSimO saque não pôde ser executado, por exemplo depois de repetidas falhas na transferência.Volta ao saldo.
falhaSimA transferência foi recusada de forma definitiva. Veja failureCode e failureMessage.Volta ao saldo.
devolvidoSimReservado para Pix devolvido pelo banco de destino. Hoje não é emitido.Volta ao saldo.

Depois de rejeitado, cancelado ou expirado, a devolução do valor ao saldo leva alguns segundos para aparecer.

Os estados são escritos em português e em minúsculas, exatamente como na tabela. Trate um estado desconhecido como não final.

Consulte um saque

GET/api/v1/withdrawals/{id}
Terminal
curl "$DM_API_BASE/api/v1/withdrawals/01932f5e-7c3a-7b21-9f4e-2d8c6a1b0e47" \
  -H "Authorization: $DM_API_KEY"
200 OK
{
  "id": "01932f5e-7c3a-7b21-9f4e-2d8c6a1b0e47",
  "status": "transferido",
  "amount": 25000,
  "currencyCode": "BRL",
  "pixKeyType": "CNPJ",
  "pixKey": "************81",
  "createdAt": "2026-11-02T14:58:03.412718Z",
  "pixEndToEndId": "E00000000202611021508Ab12Cd34Ef5",
  "transferredAt": "2026-11-02T15:08:41.090233Z",
  "rejectedAt": null,
  "rejectionReason": null,
  "rejectionSource": null,
  "failedAt": null,
  "failureCode": null,
  "failureMessage": null
}
CampoPreenchido emDescrição
amountsempreValor em centavos.
pixKeyTypesempreCPF, CNPJ, EMAIL, PHONE ou EVP. Repare que difere da grafia do pedido.
pixKeysempreChave mascarada: documentos e telefone mostram só os dois últimos caracteres, e-mail aparece como f***@***e.com e chave aleatória como ***.
pixEndToEndId, transferredAttransferidoIdentificador do Pix no Banco Central e momento do envio.
rejectedAtrejeitado, expiradoMomento da rejeição ou da expiração.
rejectionReasonrejeitadoMotivo informado pela análise.
rejectionSourcerejeitadoQuem rejeitou: operator.
failedAt, failureCode, failureMessagefalhaMomento e detalhes da falha. failureCode e failureMessage são informativos: não monte lógica sobre os valores.

Campos que não se aplicam ao estado vêm como null. Um saque de outra conta responde 404, igual a um inexistente.

Liste saques

GET/api/v1/withdrawals
Terminal
curl "$DM_API_BASE/api/v1/withdrawals?status=processando&page=1&pageSize=50" \
  -H "Authorization: $DM_API_KEY"
ParâmetroPadrãoDescrição
statustodosUm estado da tabela acima.
dateFrom—Criados a partir desta data (2026-11-01 ou data e hora). Sem fuso, vale UTC.
dateTo—Criados até esta data. Uma data sem hora vai até 23:59:59 UTC do dia. Envie dateTo maior ou igual a dateFrom.
page1Página, a partir de 1.
pageSize20Itens por página, de 1 a 100.
200 OK
{
  "items": [
    {
      "id": "01932f5e-7c3a-7b21-9f4e-2d8c6a1b0e47",
      "status": "processando",
      "amount": 25000,
      "currencyCode": "BRL",
      "pixKeyType": "CNPJ",
      "pixKey": "************81",
      "createdAt": "2026-11-02T14:58:03.412718Z",
      "pixEndToEndId": null,
      "transferredAt": null,
      "rejectedAt": null,
      "rejectionReason": null,
      "rejectionSource": null,
      "failedAt": null,
      "failureCode": null,
      "failureMessage": null
    }
  ],
  "totalCount": 1,
  "page": 1,
  "pageSize": 50,
  "totalPages": 1
}

Os saques vêm do mais recente para o mais antigo. A paginação é por número de página: se novos saques forem criados enquanto você percorre a lista, itens podem se deslocar entre páginas. Para conciliação, filtre por período fechado.

Para acompanhar saques em andamento, uma chamada de listagem com status=processando substitui várias consultas individuais e economiza o limite de requisições.

Cancele um saque

POST/api/v1/withdrawals/{id}/cancel

Um saque pode ser cancelado enquanto ainda está em análise. A requisição não tem corpo.

Terminal
curl -X POST "$DM_API_BASE/api/v1/withdrawals/01932f5e-7c3a-7b21-9f4e-2d8c6a1b0e47/cancel" \
  -H "Authorization: $DM_API_KEY"
200 OK
{
  "withdrawalId": "01932f5e-7c3a-7b21-9f4e-2d8c6a1b0e47",
  "status": "cancelado",
  "reversalTransactionId": null
}
  • O cancelamento é idempotente: cancelar de novo um saque cancelado responde 200 igual.
  • A devolução do valor ao saldo é assíncrona e leva alguns segundos. reversalTransactionId vem null.
  • O estado processando não diz se o saque ainda está em análise ou já foi aprovado. Se ele já foi aprovado, o cancelamento é recusado com 409 withdrawal.cannot_cancel: trate essa resposta como "não é mais possível cancelar" e continue acompanhando o saque até o desfecho.

Nesta página