Pular para o conteúdo

Criar Boletos em Batch

Cria múltiplos boletos de uma só vez, gerando um PDF com 1 boleto por página. Ideal para emissão em massa de boletos diversos (diferentes pagadores, valores ou vencimentos).

  1. Recebe array de boletos no formato JSON
  2. Valida os dados de cada boleto
  3. Cria os boletos na plataforma
  4. Retorna JSON com tokens para buscar o PDF
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ POST /batch/ │─────▶│ Validar e │─────▶│ Retornar │
│ boletos │ │ criar boletos │ │ tokens (JSON) │
└──────────────────┘ └──────────────────┘ └──────────────────┘
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Retornar PDF │◀─────│ Gerar PDF │◀─────│ GET /batch/ │
│ (1 por página) │ │ consolidado │ │ boletos/{token} │
└──────────────────┘ └──────────────────┘ └──────────────────┘

CenárioDescrição
Emissão em massaGerar vários boletos de uma vez para diferentes clientes
Cobranças diversasBoletos com valores, vencimentos ou pagadores diferentes
Integração automatizadaProcessos batch que geram múltiplos boletos periodicamente
EndpointLayout PDFPlanoLimiteUso Típico
POST /batch/boletos1 boleto/páginaPersonalizado300/reqEmissão em massa
POST /carnes3 boletos/páginaPersonalizado300/reqParcelamentos
POST /boletos1 boleto (direto)Gratuito/Personalizado1/reqBoleto individual

POST https://sandbox.boletocloud.com/api/v1/batch/boletos
AmbienteURL Base
Sandboxhttps://sandbox.boletocloud.com/api/v1/batch/boletos
Produçãohttps://app.boletocloud.com/api/v1/batch/boletos

HeaderValorObrigatório
Content-Typeapplication/json; charset=utf-8Sim
Accept*/*Não
AuthorizationBasic {credenciais_base64}Sim
{
"batch": {
"boletos": [
{
"conta": {"token": "api-key_TOKEN-DA-CONTA"},
"pagador": {
"nome": "Cliente 1",
"cprf": "111.111.111-11",
"endereco": {
"cep": "36240-000",
"uf": "MG",
"localidade": "Santos Dumont",
"bairro": "Centro",
"logradouro": "Rua Principal",
"numero": "100"
}
},
"emissao": "2024-01-15",
"vencimento": "2024-02-15",
"valor": 150.00,
"documento": "DOC-001",
"sequencial": 1
},
{
"conta": {"token": "api-key_TOKEN-DA-CONTA"},
"pagador": {
"nome": "Cliente 2",
"cprf": "222.222.222-22",
"endereco": {
"cep": "01310-100",
"uf": "SP",
"localidade": "São Paulo",
"bairro": "Paulista",
"logradouro": "Av. Paulista",
"numero": "1000"
}
},
"emissao": "2024-01-15",
"vencimento": "2024-02-20",
"valor": 250.00,
"documento": "DOC-002",
"sequencial": 2
}
]
}
}

O lote foi criado com sucesso. A resposta contém os tokens necessários para buscar o PDF.

HeaderDescriçãoExemplo
X-BoletoCloud-VersionVersão da plataforma2.0.0
X-BoletoCloud-TokenToken do lote (para buscar PDF)abc123...
LocationURL para buscar o PDF/api/v1/batch/boletos/abc123...
Content-TypeTipo do conteúdoapplication/json; charset=UTF-8
{
"batch": {
"token": "xYz789AbCdEfGhIjKlMnOpQrStUvWxYz-A1B2C3D4E5F=",
"boletos": [
{ "token": "token-boleto-1-abc123..." },
{ "token": "token-boleto-2-def456..." }
]
}
}
CampoDescrição
batch.tokenToken para buscar o PDF consolidado via GET
batch.boletos[].tokenToken individual de cada boleto (para operações específicas)

Retornado quando já existe um boleto com os mesmos dados únicos.

{
"erro": {
"status": 409,
"tipo": "conflito",
"causas": [
{
"codigo": "XXXXXXXX",
"mensagem": "Boleto já existe com esses dados.",
"suporte": "https://developers.boleto.cloud/"
}
]
}
}

Retornado quando há erros nos dados enviados.

{
"erro": {
"status": 400,
"tipo": "validacao",
"causas": [
{
"codigo": "XXXXXXXX",
"mensagem": "Campo obrigatório não informado.",
"suporte": "https://developers.boleto.cloud/"
}
]
}
}

Após criar o lote, use o token retornado para buscar o PDF consolidado:

GET https://sandbox.boletocloud.com/api/v1/batch/boletos/{token}

Os boletos criados via lote seguem o mesmo ciclo de vida de boletos individuais:

┌─────────────────────────────────────────────────────────────────────────────────┐
│ CRIAÇÃO DOS BOLETOS │
│ │
│ POST /batch/boletos │
│ ► Boletos criados com status: CRIADO │
│ ► PDF gerado e disponível via GET /batch/boletos/{token} │
│ │
└────────────────────────────────────┬────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────┐
│ REGISTRO NO BANCO / PSP │
│ │
│ Via CNAB Remessa, API Bancária ou VAN │
│ ► Boletos enviados para registro │
│ ► Status: REGISTRADO (após confirmação) │
│ │
└────────────────────────────────────┬────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────┐
│ PAGAMENTO │
│ │
│ Pagador efetua pagamento via boleto ou PIX │
│ ► Status: LIQUIDADO │
│ ► Informação disponível via CNAB Retorno ou Webhook │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
Terminal window
curl -v "https://sandbox.boletocloud.com/api/v1/batch/boletos" \
-H "Content-Type: application/json; charset=utf-8" \
-H "Accept: */*" \
-X "POST" \
-u "api-key_SUA-API-KEY:token" \
-d '{
"batch": {
"boletos": [
{
"conta": {"token": "api-key_SEU-TOKEN-DA-CONTA"},
"pagador": {
"nome": "Alberto Santos Dumont",
"cprf": "111.111.111-11",
"endereco": {
"cep": "36240-000",
"uf": "MG",
"localidade": "Santos Dumont",
"bairro": "Casa Natal",
"logradouro": "BR-499",
"numero": "s/n"
}
},
"emissao": "2024-01-15",
"vencimento": "2024-02-15",
"valor": 150.43,
"titulo": "DM",
"documento": "EX1",
"sequencial": 1
},
{
"conta": {"token": "api-key_SEU-TOKEN-DA-CONTA"},
"pagador": {
"nome": "Alberto Santos Dumont",
"cprf": "111.111.111-11",
"endereco": {
"cep": "36240-000",
"uf": "MG",
"localidade": "Santos Dumont",
"bairro": "Casa Natal",
"logradouro": "BR-499",
"numero": "s/n"
}
},
"emissao": "2024-01-15",
"vencimento": "2024-02-15",
"valor": 150.43,
"titulo": "DM",
"documento": "EX2",
"sequencial": 2
}
]
}
}' \
-o batch-response.json
Terminal window
curl -v "https://sandbox.boletocloud.com/api/v1/batch/boletos/{token_do_batch}" \
-u "api-key_SUA-API-KEY:token" \
-o boletos-batch.pdf

Os tokens individuais retornados para cada boleto permitem operações específicas:

OperaçãoEndpointDescrição
Segunda viaGET /boletos/{token}PDF de um boleto específico
Status do registroGET /boletos/{token}/registroVerificar se foi registrado
BaixaPUT /boletos/{token}/baixaCancelar boleto específico