Decisão, limites e regras¶
Para: Dev · Fin — Conferido em 2026-10-18.
Toda criação de depósito e de saque passa pelo motor de regras da sua operação. O resultado é um de três: automático (segue), revisão (uma pessoa decide) ou bloqueio (recusa na hora, com 422). Esta página explica a ordem da decisão, o catálogo de motivos (decision.reasons) e cada família de limite. Os valores dos limites são da sua operação: leia-os em GET /v1/rules.
O que é¶
| Resultado | Quando | O que você recebe |
|---|---|---|
| Automático | Nenhuma regra de bloqueio nem de revisão disparou, e o horário permite | Saque approved (segue para o envio) ou depósito criado normalmente |
| Revisão | Alguma regra de revisão disparou | Saque under_review com decision.reasons; depósito pago under_review com review_reasons |
| Bloqueio | Alguma regra de bloqueio disparou | 422 sem criar objeto. Devolva a reserva ao jogador |
Um quarto resultado existe só no saque: aguardar. O saque é aprovado, mas está fora do horário do automático (outside_policy igual a defer). Ele fica approved e espera a abertura (veja Dia, fuso e horários).
Quando usar¶
Use esta página para:
- traduzir
decision.reasonsem mensagem de suporte (nunca ao jogador); - decidir o que pedir ao Dracma quando os limites da operação ficarem apertados ou frouxos;
- montar a pré-checagem do seu conector, que só pode endurecer a decisão.
Nunca revele ao jogador o motivo de uma revisão ou bloqueio: o suporte vê, o jogador não. Mostre uma mensagem genérica.
Como funciona¶
Ordem da decisão¶
- As regras de bloqueio rodam em ordem fixa e param na primeira: o
422traz um únicocode. - As regras de revisão rodam todas:
decision.reasonstraz todos os motivos que se aplicam, sem repetir, na ordem do catálogo. - Se um valor igual ou acima do limite de dupla aprovação (ou um motivo que exija duas pessoas) aparecer, entra
DUAL_APPROVAL_REQUIREDe a revisão precisa de dois revisores. Caso contrário, basta um. - O depósito segue um caminho mais curto: valor mínimo e máximo, documento, lista de bloqueio, janela de depósitos e depósitos não pagos. As revisões do depósito acontecem quando o pagamento chega (veja Ciclo do depósito).
Recusas síncronas (422)¶
code do 422 |
Motivo interno | Quando |
|---|---|---|
amount_below_minimum |
AMOUNT_BELOW_MINIMUM |
Abaixo do mínimo da operação |
amount_above_maximum |
AMOUNT_ABOVE_MAXIMUM |
Acima do máximo da operação |
document_invalid |
DOCUMENT_INVALID |
CPF ou CNPJ com dígito errado |
document_mismatch |
PLAYER_DOCUMENT_CHANGED, DOCUMENT_MISMATCH |
Documento diferente do já fixado para o jogador, ou chave PIX de outro titular |
player_blocked |
PLAYER_BLOCKED |
Jogador (documento, referência, IP ou device) em lista de bloqueio |
destination_blocked |
DESTINATION_BLOCKED |
Chave PIX em lista de bloqueio |
velocity_exceeded |
VELOCITY_HARD_LIMIT, WINDOW_HARD_LIMIT, DEPOSIT_WINDOW_EXCEEDED, DEPOSIT_VELOCITY_UNPAID |
Limite duro de janela ou de velocidade, no saque ou no depósito |
insufficient_operation_balance |
INSUFFICIENT_OPERATION_BALANCE |
O caixa livre da operação não cobre o saque |
Nunca revele ao jogador que ele está em uma lista. A mesma Idempotency-Key repete o mesmo 422; para tentar de novo, use external_id e chave novos (veja Idempotência).
Catálogo de decision.reasons¶
Os códigos são estáveis e só crescem. Um código desconhecido deve ser tratado como "revisão", sem efeito de dinheiro. Tipo R é revisão (under_review); B é bloqueio (rejected ou 422).
| Código | Tipo | Significado para o operador |
|---|---|---|
AUTO_MULTIPLIER_EXCEEDED |
R | O saque, somado aos anteriores (inclusive pendentes), passa de X vezes o que o jogador depositou e o Dracma liquidou |
NO_SETTLED_DEPOSIT |
R | O jogador não tem depósito liquidado pelo Dracma nesta moeda |
AUTO_DISABLED |
R | Automático desligado na moeda (multiplicador zero) |
OPERATION_AUTO_SUSPENDED |
R | Automático suspenso na operação inteira (interruptor de emergência) |
AUTO_MAX_PER_WITHDRAWAL_EXCEEDED |
R | Acima do teto do automático por saque |
FIRST_WITHDRAWAL |
R | Primeiro saque pago do jogador na operação: sempre humano, se a operação assim configurou |
OPERATOR_REVIEW_REQUESTED |
R | Você enviou review_requested: true ou review_reasons |
OWNERSHIP_UNVERIFIED |
R | Titularidade da chave não confirmada. Inclui saque sem player.ip |
DICT_UNAVAILABLE |
R | Consulta da chave PIX indisponível por mais de cerca de 5 minutos |
BALANCE_UNAVAILABLE |
R | O caixa da operação não pôde ser lido (livro fora do ar): na dúvida, revisão |
RULES_UNAVAILABLE, RULES_INVALID_RESPONSE |
R | O motor de regras estava fora ou devolveu resposta incoerente: na dúvida, revisão |
WINDOW_DAY_AMOUNT_EXCEEDED, WINDOW_DAY_COUNT_EXCEEDED |
R | Soma ou quantidade de saques do jogador no dia civil passou do limiar de revisão |
WINDOW_7D_AMOUNT_EXCEEDED, WINDOW_7D_COUNT_EXCEEDED |
R | Idem, na janela móvel de 7 dias |
WINDOW_30D_AMOUNT_EXCEEDED, WINDOW_30D_COUNT_EXCEEDED |
R | Idem, na janela móvel de 30 dias |
VELOCITY_WITHDRAWALS |
R | Muitos pedidos em pouco tempo |
PIX_KEY_CHANGED |
R | Chave PIX nova para o jogador, ou ainda em carência |
DESTINATION_CHANGED |
R | Idem para destinos que não são PIX |
NEW_CONTEXT |
R | Acompanha PIX_KEY_CHANGED: IP ou device nunca vistos para o jogador |
DESTINATION_CHURN |
R | Destinos distintos demais em 30 dias |
SHARED_DESTINATION |
R | A mesma chave PIX aparece em saques de jogadores diferentes |
SHARED_DOCUMENT |
R | O mesmo documento aparece em mais de uma referência de jogador |
IP_LISTED, DEVICE_LISTED |
R | IP ou device do jogador em lista de revisão |
VIP_LIMIT_EXCEEDED |
R | Jogador VIP passou do limite próprio |
OPERATION_AUTO_CAP_EXCEEDED |
R | Teto agregado de saques automáticos da operação atingido |
OUTSIDE_AUTO_HOURS |
R | Fora do horário do automático, com política review |
DUAL_APPROVAL_REQUIRED |
R | Valor ou motivo que exige duas pessoas |
AML_STRUCTURING |
R | Fracionamento de valores que lembra evasão de limite de reporte |
AML_RAPID_TURNAROUND |
R | Saque logo depois de um depósito, de forma repetida |
AML_NO_PLAY_REPORTED |
R | Você informou resultado de jogo igual a zero com depósitos |
AML_SHARED_PAYER, AML_MANY_PAYERS |
R | Pagador compartilhado entre jogadores, ou muitos pagadores para um jogador |
DOCUMENT_MISMATCH |
B | Chave PIX de outro titular descoberta depois do 201: o saque vai a rejected |
PLAYER_BLOCKED, DESTINATION_BLOCKED |
B | Lista atualizada antes do envio: o saque vai a rejected |
BLOCKLIST_HIT_AT_DISPATCH |
B | Lista bateu no momento do envio de um saque approved: vai a cancelled |
OP:<texto> |
Nenhum | Só exibição: os seus review_reasons, com prefixo |
Códigos fora do catálogo de regras
BALANCE_UNAVAILABLE, RULES_UNAVAILABLE e RULES_INVALID_RESPONSE são extensões: aparecem em decision.reasons quando o Dracma não consegue avaliar uma regra, e nunca liberam o saque. Os critérios que levam aos códigos de AML não são publicados.
Para o depósito, os motivos de revisão são PAYER_MISMATCH, PAYER_UNKNOWN, PAYER_BLOCKED, AMOUNT_MISMATCH, PAID_AFTER_EXPIRY, RULES_UNAVAILABLE e RULES_INVALID_RESPONSE. Veja Ciclo do depósito.
Quais limites existem¶
Cada operação tem um conjunto de regras versionado, lido em GET /v1/rules (com ETag). Os limites abaixo existem por moeda.
Os valores são da sua operação
Os valores de partida de uma operação nova não são publicados neste guia. Eles são ajustáveis e mudam por operação. A fonte da verdade é GET /v1/rules. Use GET /v1/players/{ref}/limits para ver a posição de um jogador.
| Campo | O que limita |
|---|---|
deposit_min, deposit_max |
Valor mínimo e máximo de um depósito |
withdrawal_min, withdrawal_max |
Valor mínimo e máximo de um saque |
auto_max_per_withdrawal |
Maior saque que sai no automático |
auto_max_per_day |
Soma diária que o automático libera por jogador |
max_withdrawals_per_day |
Quantos saques por dia o jogador faz no automático |
dual_approval_above |
Valor a partir do qual a revisão exige duas pessoas |
auto_multiplier |
O X do automático (veja abaixo) |
windows.day, windows.d7, windows.d30 |
Janelas de revisão e duras de saque |
deposit_windows.day, deposit_windows.d30 |
Janelas duras de depósito |
velocity |
Quantidade de saques e de depósitos não pagos por intervalo de minutos |
operation_auto_cap |
Teto agregado do automático da operação, por hora e por dia |
first_withdrawal_manual |
Se o primeiro saque pago de cada jogador vai sempre para revisão |
pix_key_change_cooldown_hours |
Carência de uma chave PIX nova |
destination.max_distinct_30d |
Destinos distintos permitidos por jogador em 30 dias |
Janelas: revisão e duras¶
Cada janela de saque (dia, 7 dias, 30 dias) tem dois níveis:
| Nível | Efeito | Códigos |
|---|---|---|
| Revisão | O saque vai a under_review |
WINDOW_*_AMOUNT_EXCEEDED, WINDOW_*_COUNT_EXCEEDED |
| Duro | 422 velocity_exceeded |
WINDOW_HARD_LIMIT |
- O "dia" é o dia civil no fuso da operação. As janelas de 7 e 30 dias são móveis (168 e 720 horas). Veja Dia, fuso e horários.
- No dia, se
auto_max_per_dayewindows.day.review_amountestiverem ambos definidos, vale o menor; o mesmo vale para a contagem (max_withdrawals_per_dayewindows.day.review_count). - A velocidade (
velocity) conta pedidos num intervalo de minutos:VELOCITY_WITHDRAWALSleva à revisão eVELOCITY_HARD_LIMIT, ao422. Para depósito,DEPOSIT_VELOCITY_UNPAIDlimita depósitos criados e não pagos num intervalo. Os valores são da operação. - Para depósitos,
DEPOSIT_WINDOW_EXCEEDEDaplica o limite duro das janelasdeposit_windows. Elas vêm desligadas por padrão.
O X do automático¶
O automático libera um saque só se, depois dele, o total sacado não passa de X vezes o total depositado e liquidado:
(S + W) <= D * X
| Letra | Significa |
|---|---|
D |
Soma dos depósitos paid do jogador nesta moeda, liquidados pelo Dracma. Se a operação define auto_multiplier_window_days, só os pagos nessa janela contam |
S |
Soma dos saques anteriores do jogador que não terminaram em rejected, failed ou cancelled: inclui os pendentes, os pagos e os returned |
W |
O saque atual |
X |
O auto_multiplier da moeda ("0" desliga o automático) |
Exemplo com X = 1: o jogador depositou R$ 100,00. Um saque de R$ 80,00 passa. O seguinte, de R$ 30,00, soma R$ 110,00 e vai a revisão com AUTO_MULTIPLIER_EXCEEDED.
Consequências para quem migra jogadores de outro sistema:
- Só conta depósito liquidado pelo Dracma. Depósitos antigos feitos fora do Dracma não entram em
D. - Um jogador sem depósito
paidno Dracma recebeNO_SETTLED_DEPOSITno primeiro saque: ele vai para revisão, mesmo que tenha saldo no seu sistema. - Nenhum ajuste de
Dé feito pela API. Planeje que o primeiro saque de cada jogador migrado passe por revisão, ou combine uma regra com o Dracma no onboarding.
Teto agregado da operação¶
operation_auto_cap limita quanto o automático libera na operação inteira, por hora e por dia (moeda a moeda). Quando um saque faria a soma passar do teto, ele vai a revisão com OPERATION_AUTO_CAP_EXCEEDED. O efeito é coletivo: enquanto o teto estiver estourado, todos os jogadores recebem revisão nos saques seguintes, até a hora ou o dia virar. Os valores estão em GET /v1/rules.
Interruptor de emergência¶
A operação pode suspender o automático inteiro. Com ele suspenso, todo saque vai a under_review com OPERATION_AUTO_SUSPENDED. O interruptor é acionado no painel ("Suspender automático") e é uma mudança que endurece a regra, então vale na hora. Reativar é uma mudança que afrouxa a regra e segue o fluxo de aprovação. Veja Painel: regras e listas.
Pré-checagem do seu conector¶
O seu conector pode endurecer a decisão, nunca afrouxá-la. Dois campos do POST /v1/withdrawals fazem isso:
| Campo | Efeito |
|---|---|
review_requested |
Com true, o saque vai sempre a revisão (OPERATOR_REVIEW_REQUESTED). |
review_reasons |
Texto livre dos seus motivos. Aparecem no painel com o prefixo OP: e não viram código do Dracma. |
player_context |
total_deposited, total_withdrawn, account_created_at, net_gaming_result. É informativo e nunca libera o automático. |
Exemplo de uso: o seu sistema marca review_requested quando o jogador tem bônus ativo, quando há suspeita de fraude ou quando a conta é muito nova. O Dracma não conhece essas regras do seu negócio.
Bônus e regras comerciais ficam fora da API
Regras de bônus do operador não vão ao Dracma. Só o valor e os dados do jogador entram no pedido. Marque review_requested se quiser que uma pessoa olhe.
{
"id": "wdr_0192a3b40c6d7e8f9a0b1c2d3e4f5a6d",
"external_id": "wdr_0192a3b4-5c6d-7e8f-9a0b-1c2d3e4f5a6d",
"status": "under_review",
"version": 1,
"amount": { "amount": "5000", "currency": "BRL" },
"fee": null,
"method": "pix",
"player_ref": "0192a3b4-0000-7000-8000-000000000001",
"decision": {
"mode": "manual",
"reasons": ["FIRST_WITHDRAWAL", "PIX_KEY_CHANGED", "NEW_CONTEXT"],
"ruleset_version": 7,
"decided_by": [],
"decided_at": null
},
"psp_reference": null,
"failure_code": null,
"created_at": "2026-10-18T15:00:00Z",
"updated_at": "2026-10-18T15:00:00Z",
"paid_at": null
}
Exemplos¶
GET /v1/players/{ref}/limits?currency=BRL mostra a posição de um jogador: total_deposited, total_withdrawn, auto_multiplier, auto_withdrawal_remaining e blocked. auto_withdrawal_remaining é o quanto ainda cabe no X; outras regras (primeiro saque, chave nova, janelas, IP ausente) ainda podem mandar o saque para revisão. A forma da resposta está em Referência: limites do jogador e saldos.
Erros e casos de borda¶
- Motor de regras fora do ar na criação do saque. Não é
503: o saque é criado emunder_reviewcomRULES_UNAVAILABLE. Mantenha a reserva. No depósito, o motor fora devolve503. player.ipeplayer.device_identram no risco. O IP é por saque (o IP do jogador no momento do pedido, nunca o do seu servidor); o PSP de saque exige o IP do titular, e sem ele o saque vai aunder_reviewcomOWNERSHIP_UNVERIFIED. No depósito o IP é opcional. Odevice_identra nas listas de device e noNEW_CONTEXT. Mande os dois sempre que souber.- Limites de taxa por jogador. Além das regras, a API limita pedidos por jogador (depósitos e saques por hora). Veja Limites e quotas.
- Mudar um limite. A API do operador não altera regra diretamente.
POST /v1/rules/change-requests(escoporules:propose) cria um pedido que responde202 pending_approvale só vale depois de aprovado no painel. Mudanças que apertam a regra valem na hora; as que afrouxam esperam aprovação e um tempo de espera. Veja Referência: regras e Painel: regras e listas.