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ário Endpoint Recomendado Layout do PDF
Boleto avulso POST /boletos 1 boleto por página, PDF na resposta
Parcelamentos/mensalidades POST /carnes 3 boletos por página
Múltiplos boletos separados POST /batch/boletos 1 boleto por página
Cenário Recomendação
Parcelamento de vendas Sim
Mensalidades escolares Sim
Planos de pagamento Sim
Financiamentos Sim
Cobrança recorrente com boletos avulsos Nã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
Ambiente URL Base
Sandbox (desenvolvimento) https://sandbox.boletocloud.com/api/v1/carnes
Produção https://app.boletocloud.com/api/v1/carnes

Header Valor Obrigatório
Authorization Basic {credenciais_base64} Sim
Content-Type application/json; charset=utf-8 Sim
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 */ }
]
}
}
Campo Tipo Exemplo Descrição
conta.token string "api-key_abc123..." Token da conta bancária cadastrada
emissao date "2024-01-15" Data de emissão (AAAA-MM-DD)
vencimento date "2024-02-15" Data de vencimento (AAAA-MM-DD)
documento string "PARC-001" Número do documento/parcela
titulo string "DM" Tipo do título (ver tipos)
valor decimal 500.00 Valor do boleto
pagador.nome string "Alberto Santos Dumont" Nome completo do pagador
pagador.cprf string "111.111.111-11" CPF ou CNPJ do pagador
pagador.endereco.cep string "36240-000" CEP do pagador
pagador.endereco.uf string "MG" Estado (2 letras)
pagador.endereco.localidade string "Santos Dumont" Cidade
pagador.endereco.bairro string "Centro" Bairro
pagador.endereco.logradouro string "Rua Principal" Logradouro
pagador.endereco.numero string "123" Número (use "s/n" se não houver)
Campo Tipo Exemplo Descrição
pagador.endereco.complemento string "Apto 101" Complemento do endereço
numero string "12345678901-P" NIB específico (se não informado, usa sequencial)
sequencial integer 1 Sequencial para gerar NIB
instrucao array ["Parcela 1 de 3"] Instruções ao caixa (até 3 linhas)
info array ["Referente contrato #123"] Informações ao pagador
juros decimal 0.0333 Taxa diária de juros, em percentual ao dia. Para ~1% a.m., envie 0.0333 (taxa mensal ÷ 30)
multa decimal 2.00 Percentual de multa por atraso (%)
desconto decimal 5.00 Percentual de desconto até vencimento (%)
tokenControleUsuario string "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.

Header Descrição Exemplo
Content-Type Tipo do conteúdo application/json; charset=UTF-8
X-BoletoCloud-Token Token do carnê (para obter PDF) abc123def456...
Location Path para obter o PDF do carnê /api/v1/carnes/abc123def456
X-BoletoCloud-Version Versão da plataforma 2.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" }
]
}
}
Campo Descrição
batch.token Token do carnê — use para buscar o PDF
batch.boletos[].token Token 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/"
}
]
}
}
Campo Formato Incorreto Formato Correto
emissao 15/01/2024 2024-01-15
vencimento 15-02-2024 2024-02-15
valor 1.500,00 1500.00
pagador.cprf 11111111111 111.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ção Comportamento
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}