Segunda Via com Encargos
Obter PDF Atualizado (GET)
Seção intitulada “Obter PDF Atualizado (GET)”Recupera o PDF do boleto com valores recalculados para uma nova data de vencimento, incluindo juros e multa por atraso. Esta operação não altera o registro original do boleto — apenas recalcula os valores para exibição.
Diferença entre PDF Original e PDF Atualizado
Seção intitulada “Diferença entre PDF Original e PDF Atualizado”| Aspecto | PDF Original | PDF Atualizado |
|---|---|---|
| Valor | Original (sem recálculo) | Recalculado com juros e multa |
| Vencimento | Original | Nova data informada |
| Instruções de desconto | Mantidas | Removidas (prazo expirado) |
| Registro no banco | Não altera | Não altera |
| Uso principal | 2ª via simples | Boleto em atraso |
Quando Usar
Seção intitulada “Quando Usar”| Cenário | Recomendação |
|---|---|
| Disponibilizar boleto em atraso com encargos já calculados | Sim |
| Facilitar o pagamento exibindo o valor atualizado ao pagador | Sim |
| Gerar 2ª via sem mensagens de desconto (pois o prazo já expirou) | Sim |
| Alterar permanentemente o vencimento do boleto | Não (use Alterar Vencimento) |
| Disponibilizar 2ª via com dados originais | Não (use PDF Original) |
Endpoint
Seção intitulada “Endpoint”GET https://sandbox.boletocloud.com/api/v1/boletos/{token_do_boleto}/atualizado/vencimento/{novo_vencimento}Parâmetros da URL
Seção intitulada “Parâmetros da URL”| Parâmetro | Tipo | Descrição |
|---|---|---|
token_do_boleto | string | Token identificador do boleto |
novo_vencimento | date | Nova data de vencimento no formato AAAA-MM-DD |
Como Funciona
Seção intitulada “Como Funciona”O sistema retorna um PDF do boleto com os valores recalculados:
- Valor original do boleto
- + Multa (percentual configurado no boleto)
- + Juros (calculados por dia de atraso)
- = Novo valor para o vencimento informado
Exemplo de Cálculo
Seção intitulada “Exemplo de Cálculo”Considerando um boleto com:
- Token:
123 - Valor: R$ 100,00
- Vencimento original: 2024-07-01
- Multa: 2%
- Juros ao dia: 0,0333%
Para obter o boleto atualizado para o vencimento 2024-08-30:
GET /api/v1/boletos/123/atualizado/vencimento/2024-08-30O PDF retornado conterá os valores calculados para a data 2024-08-30.
Regras de Negócio
Seção intitulada “Regras de Negócio”| Cenário | Resultado |
|---|---|
| Vencimento informado anterior à data atual | Erro 400 Bad Request |
| Vencimento informado superior à data atual, mas inferior ao vencimento original | Retorna o boleto original (sem atraso) |
| Vencimento informado superior ao vencimento original | Retorna boleto com juros e multa calculados |
Códigos de Resposta
Seção intitulada “Códigos de Resposta”| Código | Descrição |
|---|---|
200 OK | PDF do boleto atualizado retornado com sucesso |
400 Bad Request | Vencimento informado é anterior à data atual |
Exemplos de Código
Seção intitulada “Exemplos de Código”curl -v "https://sandbox.boletocloud.com/api/v1/boletos/{token_do_boleto}/atualizado/vencimento/2024-08-30" \ -u "api-key_SUA-API-KEY:token" \ -o boleto-atualizado.pdfimport javax.ws.rs.client.ClientBuilder;import javax.ws.rs.core.Response;import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;import java.io.InputStream;import java.nio.file.Files;import java.nio.file.Paths;import static javax.ws.rs.core.MediaType.WILDCARD;import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
public class SegundaViaAtualizada { public static void main(String[] args) throws Exception { String tokenBoleto = "TOKEN_DO_BOLETO"; String novoVencimento = "2024-08-30"; Response response = ClientBuilder.newClient() .target("https://sandbox.boletocloud.com/api/v1/boletos") .path("/" + tokenBoleto + "/atualizado/vencimento/" + novoVencimento) .register(HttpAuthenticationFeature.basic("api-key_SUA-API-KEY", "token")) .request(WILDCARD) .get();
if (response.getStatus() == 200) { Files.copy(response.readEntity(InputStream.class), Paths.get("boleto-atualizado.pdf"), REPLACE_EXISTING); System.out.println("Boleto atualizado salvo com sucesso!"); } else { System.out.println("Erro: " + response.getStatus()); } }}import okhttp3.Credentialsimport okhttp3.OkHttpClientimport okhttp3.Requestimport java.io.File
fun main() { val tokenBoleto = "TOKEN_DO_BOLETO" val novoVencimento = "2024-08-30" val client = OkHttpClient() val credential = Credentials.basic("api-key_SUA-API-KEY", "token")
val request = Request.Builder() .url("https://sandbox.boletocloud.com/api/v1/boletos/$tokenBoleto/atualizado/vencimento/$novoVencimento") .header("Authorization", credential) .build()
client.newCall(request).execute().use { response -> if (response.isSuccessful) { File("boleto-atualizado.pdf").writeBytes(response.body!!.bytes()) println("Boleto atualizado salvo com sucesso!") } else { println("Erro: ${response.code}") } }}using System;using System.IO;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Threading.Tasks;
class Program { static async Task Main(string[] args) { var tokenBoleto = "TOKEN_DO_BOLETO"; var novoVencimento = "2024-08-30"; using var client = new HttpClient(); var credentials = Convert.ToBase64String( Encoding.ASCII.GetBytes("api-key_SUA-API-KEY:token")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);
var response = await client.GetAsync( $"https://sandbox.boletocloud.com/api/v1/boletos/{tokenBoleto}/atualizado/vencimento/{novoVencimento}");
if (response.IsSuccessStatusCode) { var pdf = await response.Content.ReadAsByteArrayAsync(); await File.WriteAllBytesAsync("boleto-atualizado.pdf", pdf); Console.WriteLine("Boleto atualizado salvo com sucesso!"); } else { Console.WriteLine($"Erro: {(int)response.StatusCode}"); } }}const https = require('https');const fs = require('fs');
const tokenBoleto = 'TOKEN_DO_BOLETO';const novoVencimento = '2024-08-30';const options = { hostname: 'sandbox.boletocloud.com', path: `/api/v1/boletos/${tokenBoleto}/atualizado/vencimento/${novoVencimento}`, method: 'GET', auth: 'api-key_SUA-API-KEY:token'};
const req = https.request(options, (res) => { if (res.statusCode === 200) { const file = fs.createWriteStream('boleto-atualizado.pdf'); res.pipe(file); file.on('finish', () => console.log('Boleto atualizado salvo com sucesso!')); } else { console.log(`Erro: ${res.statusCode}`); }});
req.end();package main
import ( "fmt" "io" "net/http" "os")
func main() { tokenBoleto := "TOKEN_DO_BOLETO" novoVencimento := "2024-08-30" url := fmt.Sprintf("https://sandbox.boletocloud.com/api/v1/boletos/%s/atualizado/vencimento/%s", tokenBoleto, novoVencimento)
req, _ := http.NewRequest("GET", url, nil) req.SetBasicAuth("api-key_SUA-API-KEY", "token")
resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close()
if resp.StatusCode == 200 { file, _ := os.Create("boleto-atualizado.pdf") defer file.Close() io.Copy(file, resp.Body) fmt.Println("Boleto atualizado salvo com sucesso!") } else { fmt.Printf("Erro: %d\n", resp.StatusCode) }}<?php$tokenBoleto = 'TOKEN_DO_BOLETO';$novoVencimento = '2024-08-30';$url = "https://sandbox.boletocloud.com/api/v1/boletos/$tokenBoleto/atualizado/vencimento/$novoVencimento";$api_key = 'api-key_SUA-API-KEY';
$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);curl_setopt($ch, CURLOPT_USERPWD, "$api_key:token");curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($ch);
if ($http_code == 200) { file_put_contents('boleto-atualizado.pdf', $response); echo "Boleto atualizado salvo com sucesso!\n";} else { echo "Erro ($http_code)\n";}?>import requestsfrom requests.auth import HTTPBasicAuth
token_boleto = 'TOKEN_DO_BOLETO'novo_vencimento = '2024-08-30'response = requests.get( f'https://sandbox.boletocloud.com/api/v1/boletos/{token_boleto}/atualizado/vencimento/{novo_vencimento}', auth=HTTPBasicAuth('api-key_SUA-API-KEY', 'token'))
if response.status_code == 200: with open('boleto-atualizado.pdf', 'wb') as f: f.write(response.content) print('Boleto atualizado salvo com sucesso!')else: print(f'Erro: {response.status_code}')require 'net/http'require 'uri'
token_boleto = 'TOKEN_DO_BOLETO'novo_vencimento = '2024-08-30'uri = URI("https://sandbox.boletocloud.com/api/v1/boletos/#{token_boleto}/atualizado/vencimento/#{novo_vencimento}")
Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| request = Net::HTTP::Get.new(uri) request.basic_auth('api-key_SUA-API-KEY', 'token')
response = http.request(request) if response.code == '200' File.write('boleto-atualizado.pdf', response.body) puts 'Boleto atualizado salvo com sucesso!' else puts "Erro: #{response.code}" endend(require '[clj-http.client :as client])
(let [token-boleto "TOKEN_DO_BOLETO" novo-vencimento "2024-08-30" response (client/get (str "https://sandbox.boletocloud.com/api/v1/boletos/" token-boleto "/atualizado/vencimento/" novo-vencimento) {:basic-auth ["api-key_SUA-API-KEY" "token"] :as :byte-array})] (if (= 200 (:status response)) (do (clojure.java.io/copy (:body response) (clojure.java.io/file "boleto-atualizado.pdf")) (println "Boleto atualizado salvo com sucesso!")) (println "Erro:" (:status response))))Veja Também
Seção intitulada “Veja Também” Obter PDF Original Boletos com dados originais (incluindo descontos)
Alterar Vencimento Alterar permanentemente o vencimento
Status do Registro Verificar se foi registrado no banco
Baixar/Cancelar Boleto Cancelar a cobrança do boleto