O limite noturno do Pix é o teto que o banco de quem paga aplica entre 20h e 6h. Pela norma do Banco Central, ele é de R$ 1.000 quando o pagador é pessoa física e o recebedor também, salvo se o cliente pediu outro valor. Quando o recebedor é uma empresa, a regra é outra: o banco do pagador define um limite por dia. Para quem cobra por API, o efeito é o mesmo nos dois casos: uma cobrança alta, gerada à noite, pode ficar pending até expirar porque o banco do cliente não deixou o Pix sair. Abaixo, o que a norma diz e o que a sua integração pode fazer.
O que o Banco Central define
As regras estão na Instrução Normativa BCB nº 512, de 30/8/2024, em vigor desde a publicação, em 3/9/2024, com a redação dada pela Instrução Normativa BCB nº 669, em vigor desde 30/9/2025. Ela vale para os limites que os bancos aplicam a clientes pessoa física. O Banco Central resume as mesmas regras na pergunta Limites de valor para as transações Pix, consultada em 25/10/2026.
| Situação | O que a norma diz |
|---|---|
| Pagador pessoa física, recebedor pessoa física, das 20h às 6h | Limite de R$ 1.000, salvo pedido expresso do cliente |
| Pagador pessoa física, recebedor pessoa física, das 6h às 20h | Limite definido pelo banco, com base no perfil de risco e de comportamento |
| Pagador pessoa física, recebedor pessoa jurídica | Limite por dia, definido pelo banco |
| Início da noite | O banco pode oferecer a opção de começar às 22h; a mudança vale entre 24 e 48 horas depois |
| Pedido de aumento | O banco pode aceitar ou não; se aceitar, vale entre 24 e 48 horas depois |
| Pedido de redução | Vale na hora, inclusive para zero |
| Celular sem localização | O banco pode aplicar limites menores, inclusive zero |
Três detalhes da norma mudam a conta de quem cobra. Os limites são por conta e por período, não por transação. Os limites para recebedores pessoa física e pessoa jurídica são independentes entre si. E o horário pode ser o do endereço do cliente ou o de Brasília, a critério de cada banco. Para pagadores pessoa jurídica, a norma não fixa esses valores: cada banco define o limite pelos critérios de risco do Regulamento do Pix, art. 37.
Por que uma cobrança alta à noite pode não ser paga
- O recebedor é pessoa física. Se a conta que recebe o Pix é de CPF, o teto da noite é R$ 1.000 para o pagador pessoa física que não pediu outro valor.
- O limite diário para empresas acabou ou é baixo. O banco define esse valor pelo perfil do cliente, e outros pagamentos do dia consomem o mesmo limite.
- O cliente reduziu o próprio limite, ou está num celular cuja localização o banco não identifica.
- O aumento não sai na hora. Mesmo que o cliente peça mais limite, a mudança leva de 24 a 48 horas, se o banco aceitar.
Para a sua integração, essa recusa é invisível. O banco do pagador barra o Pix antes de enviá-lo, então nenhum evento chega à xFlow. A cobrança continua pending até ser paga ou passar a expired. O roteamento por regras da xFlow pode mandar as cobranças da noite para outra adquirente, mas não muda o limite do banco do cliente.
O que a sua integração pode fazer
Avisar o pagador antes do QR Code
Um aviso na tela evita o cliente que tenta, falha e desiste sem falar com ninguém. Mostre o aviso quando a cobrança for alta e o horário estiver entre 20h e 6h:
function horaEmBrasilia(agora = new Date()) {
return Number(new Intl.DateTimeFormat("pt-BR", {
timeZone: "America/Sao_Paulo", hour: "numeric", hourCycle: "h23",
}).format(agora));
}
function deveAvisar(valorCentavos, patamarCentavos, agora = new Date()) {
const h = horaEmBrasilia(agora);
return (h >= 20 || h < 6) && valorCentavos >= patamarCentavos;
}
// deveAvisar(250000, 100000) às 22h em Brasília → trueUm texto possível: "À noite, o seu banco pode limitar o valor do Pix. Se o pagamento não passar, pague de outra conta, divida em partes ou pague a partir das 6h." O patamar é escolha sua. Se quem recebe é pessoa física, R$ 1.000 é a referência da norma. Se é empresa, não há número fixo: use o seu histórico. Liste as cobranças expiradas com GET /api/v1/charges?status=expired&from=...&to=... e compare o valor (amountCents) e a hora de criação (createdAt) com as pagas. Se as cobranças acima de certo valor expiram mais à noite, esse é o seu patamar.
Dividir o valor em mais de um Pix
O Regulamento do Pix proíbe limite de quantidade de transações (art. 37-A), mas o limite de valor é por período em cada conta. Por isso, dividir só ajuda quando as partes são pagas de contas diferentes ou em dias diferentes. Para o cliente que paga parte hoje e parte amanhã, ou parte de cada banco, crie uma cobrança por parte:
const AUTH = "Basic " + Buffer.from(
`${process.env.XFLOW_PUBLIC_KEY}:${process.env.XFLOW_SECRET_KEY}`,
).toString("base64");
async function criarPartes(pedido, partesCentavos) {
const total = partesCentavos.length;
const cobrancas = [];
for (const [i, valor] of partesCentavos.entries()) {
const res = await fetch("https://app.xflowpayments.com/api/v1/charges", {
method: "POST",
headers: {
Authorization: AUTH,
"Content-Type": "application/json",
"Idempotency-Key": `${pedido.id}-parte-${i + 1}-de-${total}`,
},
body: JSON.stringify({
amountCents: valor,
customer: pedido.cliente,
description: `Pedido #${pedido.id} (parte ${i + 1} de ${total})`,
external_reference: pedido.id,
}),
});
cobrancas.push(await res.json());
}
return cobrancas;
}Todas as partes levam o mesmo external_reference, que não precisa ser único. Para saber se o pedido foi quitado, some as partes pagas:
async function pedidoQuitado(pedidoId, totalCentavos) {
const url = new URL("https://app.xflowpayments.com/api/v1/charges");
url.searchParams.set("external_reference", pedidoId);
url.searchParams.set("status", "paid");
const { data } = await (await fetch(url, { headers: { Authorization: AUTH } })).json();
return data.reduce((soma, c) => soma + c.amountCents, 0) >= totalCentavos;
}Chame essa função no handler do transaction.paid e libere o pedido só quando ela der true. Cada parte respeita o valor mínimo e o máximo por cobrança da conta: fora da faixa, a API responde 400 validation. Se o pedido for cancelado com partes já pagas, devolva cada uma com o estorno Pix por API, que é total por cobrança.
Dar tempo ao pagador
A documentação da xFlow não traz parâmetro para definir a validade da cobrança nem informa um prazo padrão. Então a integração não estica o prazo do QR Code. O que ela pode fazer é manter o pedido aberto por mais tempo que a cobrança: quando o cliente voltar, de manhã ou depois que o banco aumentar o limite, consulte a cobrança e, se estiver expired, gere outra com uma Idempotency-Key nova e o mesmo external_reference. O passo a passo está em cobrança Pix expirada.
Conferir o status, não adivinhar
Cobrança pending à noite não é falha. Libere o pedido pelo webhook transaction.paid e use GET /api/v1/charges/{id} como reserva, como mostra o guia de como saber se o Pix foi pago pela API. Não existe webhook de expiração: uma varredura das cobranças pending antigas mostra quem ficou para trás e merece um contato.
O que evitar
- Prometer que o limite sobe hoje. A norma dá ao banco de 24 a 48 horas para responder, e o banco pode recusar.
- Gerar cobranças em sequência na mesma tela. Vários Pix pagos da mesma conta, na mesma noite, somam no mesmo limite.
- Tratar o
pendingnoturno como recusa. O cliente pode pagar de outra conta minutos depois.
Conteúdo informativo, atualizado em 25/10/2026. Não substitui orientação jurídica.
Perguntas frequentes
O limite noturno de R$ 1.000 vale para cobranças de empresa?
Pela Instrução Normativa BCB nº 512, o limite noturno de R$ 1.000 vale quando o recebedor é pessoa física. Quando o recebedor é pessoa jurídica, o banco do pagador pessoa física aplica um limite por dia, definido com base no perfil de risco do cliente.
A API avisa quando o banco do pagador barra o Pix pelo limite?
Não. O banco do pagador recusa antes de enviar o Pix, então nada chega a quem cobra. Na API, a cobrança continua pending até ser paga ou expirar.
Dividir a cobrança em vários Pix resolve o limite?
Só em parte. Os limites são por período ou por dia em cada conta, então vários Pix da mesma conta na mesma noite somam no mesmo limite. A divisão ajuda quando as partes são pagas em dias diferentes ou de contas diferentes.
Em quanto tempo o pagador consegue aumentar o limite?
O banco pode aceitar ou não o pedido. Se aceitar, a resposta e a mudança acontecem entre 24 e 48 horas depois do pedido, segundo a norma do Banco Central. Pedidos de redução valem na hora.