Emitir boleto de cobrança na conta titular: o POST cria a cobrança (visível em Cobranças inteligentes) e já devolve os dados do boleto.
Pré-requisito: Login da conta. Scopes baas.charges.bankslips.write (criar) e baas.charges.bankslips.read (consultar, listar, PDF). HMAC em todos os pedidos. Algoritmo: Autenticação da plataforma BaaS (Bearer da conta).
A emissão cabe em um único pedido. POST /api/v2/baas/charges/bankslips cria a cobrança e o boleto e responde 201 com linha digitável, código de barras, status, id (numérico do boleto), charge_id (UUID da cobrança) e checkout_url. O corpo não traz PDF.
Guarde o id do boleto. Com ele, GET /api/v2/baas/charges/bankslips/{id} devolve o mesmo JSON (consulta de status, código de barras após atualização, etc.), também sem PDF.
Se precisar do arquivo para impressão ou anexo, chame GET /api/v2/baas/charges/bankslips/{id}/pdf. Se o PDF ainda não existir, a API inicia a geração e responde 202 pedindo espera. Quando estiver pronto, o mesmo GET devolve { "pdf": "<base64>" }. No POST, o PDF só começa se generate_pdf for true (padrão: não gerar).
Para buscar vários boletos da conta (painel, conciliação), use GET /api/v2/baas/charges/bankslips com os filtros de query. Cada item da lista segue o mesmo formato da consulta por id, sem PDF.
Autenticação: sem HMAC, 401. Scope trocado (.read no POST ou .write nos GETs), 403. {id} de outra conta ou inexistente, 404.
| Método | POST |
| Path | /api/v2/baas/charges/bankslips |
| Scope | baas.charges.bankslips.write |
Bearer da conta, HMAC. Corpo JSON idêntico na assinatura.
| Campo | Regra |
|---|---|
reference_id | Identificador do pedido no seu sistema |
amount | Total em centavos se não houver items |
due_date | Vencimento YYYY-MM-DD |
customer.name | Nome do pagador |
customer.tax_id | CPF ou CNPJ do pagador |
customer.email | Email do pagador |
customer.address | Objeto JSON obrigatório |
Campos dentro de customer.address:
| Campo | Regra |
|---|---|
postal_code | CEP, até 8 caracteres |
street | Logradouro |
number | Número |
neighborhood | Bairro |
city | Cidade |
state | UF com 2 letras |
complement | Opcional |
| Campo | Uso |
|---|---|
description | Texto da cobrança |
observations | Observações internas ou para o pagador |
shipping_fee | Frete em centavos (entra no valor cobrado) |
discount | Desconto (objeto; mesmo padrão do checkout) |
late_fee | Multa em percentual (0 a 2) |
items | Itens do pedido (code, name, quantity, unit_amount) |
redirect_url | URL de retorno após o pagamento |
notification_url | URL do webhook de status |
notification_secret | Se informado, o webhook usa Authorization: Bearer com esse valor |
generate_pdf | Dispara geração do PDF no create (ver abaixo) |
Com items: o total dos itens é quantity × unit_amount em cada linha. Se você enviar amount junto, ele deve ser só essa soma. shipping_fee e discount não entram no amount dos itens; entram no valor final cobrado.
generate_pdf: booleano. Omitido ou false (padrão): o POST não gera PDF. true: a API enfileira a geração em segundo plano. O 201 sempre vem sem chave pdf; busque o arquivo depois em GET .../{id}/pdf (pode responder 202 enquanto processa).
201 com dados do boleto (barcode, digitable_line, our_number, valores, datas, status do boleto), id numérico, charge_id (uuid da cobrança) e checkout_url. Sem chave pdf.
status na resposta é o do boleto (pending, paid, canceled, expired).
{
"id": 999001,
"charge_id": "018f1b2c-3d4e-7a89-b012-3456789abcde",
"checkout_url": "https://pagamento-h.nuvende.com.br/018f1b2c-3d4e-7a89-b012-3456789abcde",
"barcode": "38293120500000259654765254329385806906458038",
"digitable_line": "38294765265432938580869064580389312050000025965",
"our_number": "O1",
"your_number": "Y1",
"status": "pending",
"value_total": 100.5,
"value_original": 100.5,
"due_date": "2026-09-20T00:00:00+00:00",
"payer_name": "Maria Silva",
"payer_document": "00000000000"
}
Valores value_total / value_original vêm em reais. O amount do pedido em centavos.
| Método | GET |
| Path | /api/v2/baas/charges/bankslips/{id} |
| Scope | baas.charges.bankslips.read |
Bearer da conta, HMAC. Corpo [] na assinatura.
{id} = campo id numérico da resposta do POST.
200 com o mesmo objeto do POST (sem chave pdf).
{
"id": 999001,
"charge_id": "018f1b2c-3d4e-7a89-b012-3456789abcde",
"checkout_url": "https://pagamento-h.nuvende.com.br/018f1b2c-3d4e-7a89-b012-3456789abcde",
"barcode": "38293120500000259654765254329385806906458038",
"digitable_line": "38294765265432938580869064580389312050000025965",
"our_number": "O1",
"your_number": "Y1",
"status": "pending",
"value_total": 100.5,
"value_original": 100.5,
"due_date": "2026-09-20T00:00:00+00:00",
"payer_name": "Maria Silva",
"payer_document": "00000000000"
}
404.| Método | GET |
| Path | /api/v2/baas/charges/bankslips/{id}/pdf |
| Scope | baas.charges.bankslips.read |
Bearer da conta, HMAC. Corpo [] na assinatura.
Se o PDF já estiver pronto: 200 com JSON { "pdf": "<base64>" }. Decodifique o base64 para obter o arquivo.
Se ainda não houver geração em andamento para aquele boleto, a API inicia o print e responde 202:
{
"message": "O PDF do boleto ainda está sendo gerado. Tente novamente em instantes."
}
Repita o GET até receber 200. Se já existir geração em andamento, o GET não dispara outra geração de PDF: consulta o mesmo pedido e devolve 202 enquanto estiver pendente, ou 200 quando concluir.
Falha definitiva na geração: 502. Consulte o JSON (GET .../{id}) e tente o PDF de novo.
{
"pdf": "JVBERi0xLjQK..."
}
| Método | GET |
| Path | /api/v2/baas/charges/bankslips |
| Scope | baas.charges.bankslips.read |
Bearer da conta, HMAC. Corpo [] na assinatura. A query da URL entra na linha QUERY da mensagem HMAC.
Filtros e paginação vão na URL, após o ?. Cada parâmetro usa nome=valor. Combine vários com &. Todos são opcionais.
Exemplo completo:
GET /api/v2/baas/charges/bankslips?status=pending&per_page=10&page=1
Outros exemplos: ?reference_id=PED-123, ?due_date_from=2026-01-01&due_date_to=2026-12-31, ?document=11144477735.
| Parâmetro na URL | Valor |
|---|---|
status | pending, paid, canceled ou expired |
due_date_from / due_date_to | Vencimento (YYYY-MM-DD) |
created_at_from / created_at_to | Criação (YYYY-MM-DD) |
our_number | Nosso número |
reference_id | Pedido no seu sistema |
document | CPF ou CNPJ do pagador (mesmo valor de customer.tax_id no POST) |
barcode | Código de barras (busca exata) |
page / per_page | Paginação; per_page no máximo 100 |
200 com JSON paginado (data, current_page, per_page, total). Cada item em data segue o mesmo formato da consulta por {id} acima, sem chave pdf.
| HTTP | Causa típica |
|---|---|
401 | Sem HMAC, assinatura inválida ou token expirado |
403 | Scope ausente ou o inverso (.read no POST, .write no GET) |
404 | {id} de outra conta ou inexistente |
422 | Sem customer.email, sem endereço ou campo inválido no corpo |
202 | PDF ainda em geração; repetir o GET após alguns segundos |
502 | Falha ao gerar PDF; boleto continua válido |