Pular para o conteúdo

Evitar Boletos Duplicados

Em sistemas de produção, problemas de rede, timeouts ou retentativas podem causar a criação de boletos duplicados. O Boleto Cloud oferece um mecanismo de idempotência para evitar esse problema.

┌─────────────────────────────────────────────────────────────┐
│ Cenário sem idempotência: │
│ │
│ 1. Sistema envia requisição para criar boleto │
│ 2. Boleto é criado com sucesso │
│ 3. Timeout na resposta (rede lenta) │
│ 4. Sistema não recebe confirmação │
│ 5. Sistema reenvia a requisição │
│ 6. NOVO boleto é criado (DUPLICADO!) │
│ │
└─────────────────────────────────────────────────────────────┘

Use o campo boleto.tokenControleUsuario com um valor único para cada boleto. Se a requisição for reenviada com o mesmo token, o Boleto Cloud retorna o boleto existente ao invés de criar um novo.

┌─────────────────────────────────────────────────────────────┐
│ Cenário com idempotência: │
│ │
│ 1. Sistema envia requisição com tokenControleUsuario=ABC │
│ 2. Boleto é criado com sucesso │
│ 3. Timeout na resposta (rede lenta) │
│ 4. Sistema não recebe confirmação │
│ 5. Sistema reenvia com MESMO tokenControleUsuario=ABC │
│ 6. API detecta duplicidade e retorna boleto existente │
│ │
└─────────────────────────────────────────────────────────────┘
Terminal window
curl -X POST "https://sandbox.boletocloud.com/api/v1/boletos" \
-u "api-key_SUA-API-KEY:token" \
-d "boleto.conta.token=TOKEN_DA_CONTA" \
-d "boleto.tokenControleUsuario=pedido-12345-parcela-1" \
-d "boleto.emissao=2024-01-15" \
-d "boleto.vencimento=2024-01-30" \
-d "boleto.documento=PED-12345" \
-d "boleto.titulo=DM" \
-d "boleto.valor=299.90" \
-d "boleto.pagador.nome=Marcos Silva" \
-d "boleto.pagador.cprf=000.000.000-00" \
-d "boleto.pagador.endereco.cep=00000-000" \
-d "boleto.pagador.endereco.uf=SP" \
-d "boleto.pagador.endereco.localidade=São Paulo" \
-d "boleto.pagador.endereco.bairro=Vila Mariana" \
-d "boleto.pagador.endereco.logradouro=Rua Domingos de Morais" \
-d "boleto.pagador.endereco.numero=500" \
-o boleto.pdf
PráticaExemplo
Usar ID do pedidopedido-12345
Incluir parcelapedido-12345-parcela-1
Usar UUID550e8400-e29b-41d4-a716-446655440000
Combinar dadoscliente-789-fatura-2024-01
CenárioStatus HTTPComportamento
Primeira requisição201 CreatedBoleto criado normalmente
Requisição duplicada200 OKRetorna o boleto existente