Pular para o conteúdo

Criar Carnê de Pagamento

Gera múltiplos boletos organizados no formato carnê (3 boletos por página), ideal para parcelamentos e mensalidades. Diferente do endpoint /boletos, este é um processo de duas etapas: primeiro você envia os dados e recebe os tokens, depois busca o PDF consolidado.

  1. Recebe um array de boletos em formato JSON
  2. Valida os dados de cada boleto do lote
  3. Gera os boletos no Boleto Cloud
  4. Retorna tokens para cada boleto + token do carnê para obter o PDF
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ POST /carnes │─────▶│ Validar dados │─────▶│ Gerar boletos │
│ (JSON batch) │ │ de cada boleto │ │ individuais │
└──────────────────┘ └──────────────────┘ └──────────────────┘
┌───────────────────────────────────────────────────┘
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Retornar JSON │─────▶│ GET /carnes/ │─────▶│ Baixar PDF │
│ com tokens │ │ {token} │ │ consolidado │
└──────────────────┘ └──────────────────┘ └──────────────────┘

CenárioEndpoint RecomendadoLayout do PDF
Boleto avulsoPOST /boletos1 boleto por página, PDF na resposta
Parcelamentos/mensalidadesPOST /carnes3 boletos por página
Múltiplos boletos separadosPOST /batch/boletos1 boleto por página
CenárioRecomendação
Parcelamento de vendasSim
Mensalidades escolaresSim
Planos de pagamentoSim
FinanciamentosSim
Cobrança recorrente com boletos avulsosNão — use Boleto Individual

O POST /carnes é uma alternativa ao POST /boletos para quando você precisa de múltiplos boletos em formato carnê.

┌─────────────────────────────────────────────────────────────────────────────┐
│ CRIAÇÃO DOS BOLETOS │
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ POST /boletos │ │ ★ POST /carnes │ │
│ │ (individual) │ │ (múltiplos, 3/pág) │ │
│ └──────────┬──────────┘ └──────────┬──────────┘ │
│ │ │ │
│ └───────────┬───────────────┘ │
│ ▼ │
└──────────────────────[ CRIADO ]─────────────────────────────────────────────┘
(envio automático ou via CNAB)
┌──────────────────[ REGISTRO PENDENTE ]──────────────────────────────────────┐
│ │
│ Próximos endpoints para carnê: │
│ • GET /carnes/{token} → Obter PDF do carnê │
│ • GET /boletos/{token-individual} → Obter boleto específico │
│ • GET /boletos/{token}/registro → Status do registro │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Antes de usar este endpoint, certifique-se de ter:

  • Conta Boleto CloudCrie sua conta se ainda não tiver
  • API Key — Gerada na área de desenvolvedor da plataforma
  • Conta Bancária cadastrada — Com token de acesso gerado
  • Ambiente correto — Use Sandbox para desenvolvimento

POST https://sandbox.boletocloud.com/api/v1/carnes
AmbienteURL Base
Sandbox (desenvolvimento)https://sandbox.boletocloud.com/api/v1/carnes
Produçãohttps://app.boletocloud.com/api/v1/carnes

HeaderValorObrigatório
AuthorizationBasic {credenciais_base64}Sim
Content-Typeapplication/json; charset=utf-8Sim
Accept*/*Sim

O corpo da requisição contém um objeto batch com um array de boletos:

{
"batch": {
"boletos": [
{ /* boleto 1 */ },
{ /* boleto 2 */ },
{ /* boleto 3 */ }
]
}
}
CampoTipoExemploDescrição
conta.tokenstring"api-key_abc123..."Token da conta bancária cadastrada
emissaodate"2024-01-15"Data de emissão (AAAA-MM-DD)
vencimentodate"2024-02-15"Data de vencimento (AAAA-MM-DD)
documentostring"PARC-001"Número do documento/parcela
titulostring"DM"Tipo do título (ver tipos)
valordecimal500.00Valor do boleto
pagador.nomestring"Alberto Santos Dumont"Nome completo do pagador
pagador.cprfstring"111.111.111-11"CPF ou CNPJ do pagador
pagador.endereco.cepstring"36240-000"CEP do pagador
pagador.endereco.ufstring"MG"Estado (2 letras)
pagador.endereco.localidadestring"Santos Dumont"Cidade
pagador.endereco.bairrostring"Centro"Bairro
pagador.endereco.logradourostring"Rua Principal"Logradouro
pagador.endereco.numerostring"123"Número (use "s/n" se não houver)
CampoTipoExemploDescrição
pagador.endereco.complementostring"Apto 101"Complemento do endereço
numerostring"12345678901-P"NIB específico (se não informado, usa sequencial)
sequencialinteger1Sequencial para gerar NIB
instrucaoarray["Parcela 1 de 3"]Instruções ao caixa (até 3 linhas)
infoarray["Referente contrato #123"]Informações ao pagador
jurosdecimal1.00Taxa de juros ao mês (%)
multadecimal2.00Percentual de multa por atraso (%)
descontodecimal5.00Percentual de desconto até vencimento (%)
tokenControleUsuariostring"parcela-1-abc"Token para idempotência
{
"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"
}
},
"instrucao": ["Parcela 1 de 3"],
"emissao": "2024-01-15",
"vencimento": "2024-02-15",
"valor": 500.00,
"titulo": "DM",
"documento": "PARC-001",
"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"
}
},
"instrucao": ["Parcela 2 de 3"],
"emissao": "2024-01-15",
"vencimento": "2024-03-15",
"valor": 500.00,
"titulo": "DM",
"documento": "PARC-002",
"sequencial": 2
},
{
"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"
}
},
"instrucao": ["Parcela 3 de 3"],
"emissao": "2024-01-15",
"vencimento": "2024-04-15",
"valor": 500.00,
"titulo": "DM",
"documento": "PARC-003",
"sequencial": 3
}
]
}
}

O carnê foi criado com sucesso. O body contém o JSON com os tokens.

HeaderDescriçãoExemplo
Content-TypeTipo do conteúdoapplication/json; charset=UTF-8
X-BoletoCloud-TokenToken do carnê (para obter PDF)abc123def456...
LocationPath para obter o PDF do carnê/api/v1/carnes/abc123def456
X-BoletoCloud-VersionVersão da plataforma2.0.0
{
"batch": {
"token": "token-do-carne-para-obter-pdf",
"boletos": [
{ "token": "token-boleto-parcela-1" },
{ "token": "token-boleto-parcela-2" },
{ "token": "token-boleto-parcela-3" }
]
}
}
CampoDescrição
batch.tokenToken do carnê — use para buscar o PDF
batch.boletos[].tokenToken individual de cada boleto — use para operações em boletos específicos

Retornado quando já existe um boleto com o mesmo Nosso Número ou tokenControleUsuario.

{
"erro": {
"status": 409,
"tipo": "conflito",
"causas": [
{
"codigo": "2B257710",
"mensagem": "Campo (boleto.numero) - Conflito de dados, já existe um boleto com o mesmo conteúdo para este campo.",
"suporte": "https://developers.boleto.cloud/"
}
]
}
}

Retornado quando há problemas de validação nos dados enviados.

{
"erro": {
"status": 400,
"tipo": "requisicao",
"causas": [
{
"codigo": "842EF62A",
"mensagem": "Campo (boleto.vencimento) - O valor informado não corresponde com o formato válido (AAAA-MM-DD).",
"suporte": "https://developers.boleto.cloud/"
}
]
}
}
CampoFormato IncorretoFormato Correto
emissao15/01/20242024-01-15
vencimento15-02-20242024-02-15
valor1.500,001500.00
pagador.cprf11111111111111.111.111-11

Após a criação dos boletos do carnê, a comunicação com o banco funciona da mesma forma que boletos individuais:

Tipo de ComunicaçãoComportamento
API/Webservice (automático)Os boletos são enviados automaticamente para registro no banco
Arquivo CNAB (manual)Os boletos são incluídos no próximo arquivo de remessa

Após criar o carnê, use o token retornado para obter o PDF:

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

Para evitar a criação de boletos duplicados em cenários de retry, use o campo tokenControleUsuario em cada boleto:

{
"batch": {
"boletos": [
{
"tokenControleUsuario": "pedido-123-parcela-1",
...
},
{
"tokenControleUsuario": "pedido-123-parcela-2",
...
}
]
}
}

Terminal window
curl -v "https://sandbox.boletocloud.com/api/v1/carnes" \
-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"
}
},
"instrucao": ["Parcela 1 de 3"],
"emissao": "2024-01-15",
"vencimento": "2024-02-15",
"valor": 500.00,
"titulo": "DM",
"documento": "PARC-001",
"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"
}
},
"instrucao": ["Parcela 2 de 3"],
"emissao": "2024-01-15",
"vencimento": "2024-03-15",
"valor": 500.00,
"titulo": "DM",
"documento": "PARC-002",
"sequencial": 2
},
{
"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"
}
},
"instrucao": ["Parcela 3 de 3"],
"emissao": "2024-01-15",
"vencimento": "2024-04-15",
"valor": 500.00,
"titulo": "DM",
"documento": "PARC-003",
"sequencial": 3
}
]
}
}'
# O token do carnê estará no header X-BoletoCloud-Token
# Use esse token para buscar o PDF: GET /carnes/{token}