Gestão de Emissão de Boletos

Esta funcionalidade permite que o cliente emita e gerencie um boleto, podendo atrelar ou não à uma Carteira (Wallet) criada anteriormente. Nesta API, poderá configurar parâmetros como: Beneficiário Original, Beneficiário Final, Pagador, valor nominal, data de vencimento, desconto, juros, multa, entre outros.


Pré requisitos para implementação:

  • Possuir uma chave api da Celcoin, para mais informações acessar esse link

  • Ter familiaridade com o padrão REST usando o protocolo OAuth 2.0.

  • Ter o produto/solução contratado e habilitado em produção.

    • Caso queira usar a funcionalidade em ambiente produtivo, por favor entre em contato com a nossa equipe comercial através do e-mail [email protected]. Para dúvidas técnicas, basta entrar em contato com o suporte através do link.
  • Possuir uma conta no BaaS da Celcoin (Conta essa responsável por receber o valor da cobrança)


Passos para Integrar

  1. Realizar autenticação na API - [API Reference]
  2. Emitir um Boleto - [API Reference]
  3. Cadastrar o Webhook para receber atualizações do boleto - Saiba Mais.

Caso seja necessário você pode consultar a cobrança manualmente.


2. Emitir um Boleto

cURL da chamada

curl --request POST \
     --url https://sandbox.openfinance.celcoin.dev/billissuance/v1/bill \
     --header 'accept: application/json' \
     --header 'content-type: application/*+json' \
     --data '
{
  "beneficiary": {
    "documentType": "CPF",
    "name": "Nome ou Razão Social do beneficiário original",
    "document": "51236721000136"
  },
  "beneficiaryFinal": {
    "documentType": "CPF",
    "name": "Nome ou Razão Social do beneficiário final",
    "document": "51236721000136"
  },
  "payer": {
    "documentType": "CPF",
    "name": "Nome ou Razão Social do pagador",
    "document": "17910432000132",
    "address": "Logradouro do pagador",
    "city": "São Paulo",
    "state": "SP",
    "zipCode": "08675040"
  },
  "documentKind": "DUPLICATA_MERCANTIL",
  "paymentType": "PARCIAL",
  "discount": {
    "discountType": "DATA_FIXA",
    "discountOne": {
      "value": 100,
      "limitDate": "2023-05-12"
    }
  },
  "fine": {
    "percentage": 20,
    "daysAmount": 10
  },
  "walletCode": 1,
  "requestId": "9b37e3f9-c59e-4b47-a93e-41f66e89df88",
  "nominalValue": 2500,
  "dueDate": "2024-06-10",
  "maxValue": 2600,
  "minValue": 10,
  "partials": 12,
  "deductionValue": 32.5,
  "interestPercentage": 10,
  "settleDaysAmount": 10
}
'

Descrição dos campos

CampoDescriçãoTipo Campo
walletCodeCódigo da carteiraint32
requestIdIdentificador único da requisiçãostring
beneficiary.nameNome ou Razão Social do beneficiário originalstring
beneficiary.documentTypeTipo de documento. Valores Aceitos: CPF ou CNPJstring
beneficiary.documentCPF ou CNPJ do beneficiário originalstring
beneficiaryFinal.nameNome ou Razão Social do beneficiário finalstring
beneficiaryFinal.documentTypeTipo de documento. Valores Aceitos: CPF ou CNPJstring
beneficiaryFinal.documentCPF ou CNPJ do beneficiário finalstring
payer.nameNome ou Razão Social do pagadorstring
payer.documentTypeTipo de documento. Valores Aceitos: CPF ou CNPJstring
payer.documentCPF ou CNPJ do pagadorstring
payer.addressRua, Número e Complemento do pagadorstring
payer.cityCidade do pagadorstring
payer.stateSigla da Unidade da Federação do pagadorstring
payer.zipCodeCEP do pagador.string
nominalValueValor nominal do boleto.double
dueDateData de vencimento do boleto.string
documentKindCódigo Espécie da cobrança. Valores aceitos:
  • DUPLICATA_MERCANTIL* - Duplicata Mercantil.
  • DUPLICATA_SERVICO *- Duplicata de Serviço.
  • OUTROS *- Outros.
  • DEPOSITO_APORTE *- Boleto de Depósito e Aporte.
string
paymentTypeTipo de Pagamento do boleto. Valores aceitos:
  • TOTAL *- Aceita apenas um único pagamento no valor total do boleto, incluindo juros, multas e descontos.
  • DIVERGENTE* - Aceita apenas um único pagamento no valor definido entre o intervalo dos campos maxValue e minValue.
  • PARCIAL *- Aceite a quantidade de pagamentos estipulada no campo partials no valor definido entre o intervalo dos campos maxValue e minValue.
string
maxValueValor Máximo aceito para pagamento.double
minValueValor Mínimo aceito para pagamentodouble
partialsQuantidade de pagamento parcialint32
discount.discountTypeCódigo de Desconto do pagamento. Valores aceitos:
  • DATA_FIXA *- Valor Fixo até a data informada.
    Permite até 3 registros de desconto, sendo obrigatório especificar o valor e a data limite.
  • DIA_CORRIDO *- Valor por antecipação dia corrido.
    Permite apenas um único registro de desconto (discountOne) e só o atributo value deve ser preenchido
  • DIA_UTIL *- Valor por antecipação dia útil.
    Permite apenas um único registro de desconto (discountOne) e só o atributo value deve ser preenchido
string
discount.discountOne.valueValor de Desconto do pagamento.double
discount.discountOne.limitDateData de Desconto do pagamento.string
discount.discountTwo.valueValor de Desconto do pagamento.double
discount.discountTwo.limitDateData de Desconto do pagamento.string
discount.discountThree.valueValor de Desconto do pagamento.double
discount.discountThree.limitDateData de Desconto do pagamento.string
deductionValueValor de Abatimento do valor nominal por antecipação do pagamento.double
fine.percentagePercentual de Multa do pagamentodouble
fine.daysAmountQuantidade de Dias de Multa após vencimento do pagamento.int32
interestPercentagePercentual de Juros do pagamento.double
settleDaysAmountQuantidade de Dias de Baixa após vencimentoint32
tagsarray of objects | null

Exemplo de retorno

👍

Sucesso 201

{
  "detailMessage": "string",
  "id": "6659cffd92bdd93b23773661",
  "walletCode": 103,
  "requestId": "9b37e3f9-c59e-4b47-a93e-41f66e89df88",
  "bankNumber": 1,
  "billNumber": 3024061305151269000,
  "billReferenceNumber": 3024061305151269000,
  "beneficiary": {
    "name": "Nome ou Razão Social do beneficiário",
    "documentType": "CNPJ",
    "document": "51236721000136"
  },
  "beneficiaryFinal": {
    "name": "Nome ou Razão Social do beneficiário",
    "documentType": "CNPJ",
    "document": "51236721000136"
  },
  "payer": {
    "name": "Nome ou Razão Social do pagador",
    "documentType": "CNPJ",
    "document": "17910432000132",
    "address": "Logradouro do pagador",
    "city": "São Paulo",
    "state": "SP",
    "zipCode": "08675040"
  },
  "barcode": "50997000000000000000000000000000000000000019",
  "digitableLine": "50990000090000000000000000000191700000000000000",
  "nominalValue": 2500,
  "paidValue": 0,
  "issueDate": "2024-05-18",
  "dueDate": "2024-06-10",
  "documentKind": "DUPLICATA_MERCANTIL",
  "paymentType": "PARCIAL",
  "status": "PROCESSAMENTO",
  "maxValue": 1200,
  "minValue": 10,
  "partials": 12,
  "discount": {
    "discountType": "DATA_FIXA",
    "discountOne": {
      "value": 100,
      "limitDate": "2023-05-12"
    },
    "discountTwo": {
      "value": 100,
      "limitDate": "2023-05-12"
    },
    "discountThree": {
      "value": 100,
      "limitDate": "2023-05-12"
    }
  },
  "deductionValue": 32.5,
  "fine": {
    "percentage": 20,
    "daysAmount": 10
  },
  "interestPercentage": 10,
  "settleDaysAmount": 10,
  "receivableScheduleDelay": 0,
  "tags": [
    {
      "key": "IDSAP",
      "value": "125262"
    }
  ],
  "created": "2025-10-20T17:54:50.962Z",
  "updated": "2025-10-20T17:54:50.962Z"
}

Descrição dos campos

CampoDescriçãoTipo Campo
detailMessagestring
idIdentificador único do boletostring
walletCodeCódigo da carteiraint32
requestIdIdentificador único da requisiçãostring
bankNumberIdentificador nosso númeroint64
billNumberNúmero de identificação do boletoint64
billReferenceNumberNúmero Referência Atual Cadastro Títuloint64
beneficiary.nameNome ou Razão Social do beneficiário originalstring
beneficiary.documentTypeTipo de documentostring
beneficiary.documentCPF ou CNPJ do beneficiário originalstring
beneficiaryFinal.nameNome ou Razão Social do beneficiário finalstring
beneficiaryFinal.documentTypeTipo de documentostring
beneficiaryFinal.documentCPF ou CNPJ do beneficiário finalstring
payer.nameNome ou Razão Social do pagador.string
payer.documentTypeTipo de documentostring
payer.documentCPF ou CNPJ do pagador.string
payer.addressRua, Número e Complemento do pagador.string
payer.cityCidade do pagador.string
payer.stateSigla da Unidade da Federação do pagador.string
payer.zipCodeCEP do pagador.string
barcodeNúmero código de barras.string
digitableLineNúmero Linha Digitável.string
nominalValueValor nominal do boleto.double
paidValueValor pago do boleto.double
issueDateData de emissão do boleto.string
dueDateData de Vencimento do boleto.string
documentKindCódigo Espécie da cobrança. Valores Retornados:
  • DUPLICATA_MERCANTIL* - Duplicata Mercantil.
  • DUPLICATA_SERVICO *- Duplicata de Serviço.
  • OUTROS *- Outros.
  • DEPOSITO_APORTE *- Boleto de Depósito e Aporte.
string
paymentTypeTipo de Pagamento do boleto. Valores Retornados:
  • TOTAL *- Aceita apenas um único pagamento no valor total do boleto, incluindo juros, multas e descontos.
  • DIVERGENTE *- Aceita apenas um único pagamento no valor definido entre o intervalo dos campos maxValue e minValue.
  • PARCIAL *- Aceite a quantidade de pagamentos estipulada no campo partials no valor definido entre o intervalo dos campos maxValue e minValue.
string
statusSituação do boleto. Valores Retornados:
  • PROCESSAMENTO *- Processamento.
  • REJEITADO* - Rejeitado.
  • REGISTRADO *- Registrado.
  • BAIXADO *- Baixado.
  • LIQUIDADO_PARCIAL *- Liquidado parcial.
  • LIQUIDADO_INTEGRAL* - Liquidado integral.
  • CANCELADO *- Cancelado.
  • EXPIRADO *- Expirado.
string
maxValueValor Máximo aceito para pagamento.double
minValueValor Mínimo aceito para pagamento.double
partialsQuantidade de pagamento parcial.int32
discount.discountTypeCódigo de Desconto do pagamento. Valores Retornados:
  • DATA_FIXA *- Valor Fixo até a data informada.
    Permite até 3 registros de desconto, sendo obrigatório especificar o valor e a data limite.
  • DIA_CORRIDO *- Valor por antecipação dia corrido.
    Permite apenas um único registro de desconto (discountOne) e só o atributo value deve ser preenchido
  • DIA_UTIL *- Valor por antecipação dia útil.
    Permite apenas um único registro de desconto (discountOne) e só o atributo value deve ser preenchido
string
discount.discountOne.valueValor de Desconto do pagamento.double
discount.discountOne.limitDateData de Desconto do pagamento.string
discount.discountTwo.valueValor de Desconto do pagamento.double
discount.discountTwo.limitDateData de Desconto do pagamento.string
discount.discountThree.valueValor de Desconto do pagamento.double
discount.discountThree.limitDateData de Desconto do pagamento.string
deductionValueValor de Abatimento do valor nominal por antecipação do pagamento.double
fine.percentagePercentual de Multa do pagamentodouble
fine.daysAmountQuantidade de Dias de Multa após vencimento do pagamento.int32
interestPercentagePercentual de Juros do pagamento.double
settleDaysAmountQuantidade de Dias de Baixa após vencimentoint32
receivableScheduleDelayAtraso do agendamento do recebimento.int32
tagsarray of objects | null
createdData de inclusão.date-time
updatedData de alteração.date-time
📘

A Emissão do Boleto é síncrona. Porém é necessário o registro do mesmo para ser possível efetuar o pagamento

Error 400

{
  "code": "string",
  "statusCode": 0,
  "message": "string",
  "details": [
    {
      "field": "string",
      "description": [
        "string"
      ]
    }
  ]
}

Para validar os cenários de erro dessa API, acesse a tabela de erros.

3. Webhooks

Para ser possível receber todas as atualizações referente aos boletos emitidos, como por exemplo: Registro do Boleto na Núclea, Registro de Pagamento e Baixa Por cancelamento, é necessário cadastrar os eventos, para isso, acesse aqui a documentação.

EventoDescrição
bill-registrationNotificação que é enviada para o solicitante no momento que temos a resposta final do registro do boleto na Núclea
bill-paymentO webhook de pagamento é a notificação que é enviada para o solicitante no momento em que a liberação de crédito é realizada na conta , após a identificação com sucesso da liquidação.
bill-settlementO webhook de baixa por cancelamento é a notificação que é enviada para o solicitante no momento que temos a resposta final do registro da baixa por cancelamento do boleto na Núclea.

bill-registration

{
  "entity": "bill-registration",
  "createTimestamp": "2024-06-17T18:09:19.0406704",
  "status": "SUCCESS",
  "body": {
    "billId": "60c72b2f9f1b2c4d5f8d2e1a",
    "requestId": "401943ae-b9d8-4e35-9816-eeecc1678357",
    "tenantId": "35c12b2f9f1b2c4d5f8d2099",
    "walletCode": 003,
    "bankNumber": 12345,
    "barcode": "50997000000000000000000000000000000000000680",
    "beneficiaryDocument": "51236721000000",
    "tags": []
  }
}

bill-payment

{
  "entity": "bill-payment",
  "createTimestamp": "2024-06-17T18:09:19.0406704",
  "status": "SUCCESS",
  "body": {
    "billId": "60c72b2f9f1b2c4d5f8d2e1a",
    "billNumber": 2023092622222113254,
    "billRequestId": "401943ae-b9d8-4e35-9816-eeecc1678357",
    "tenantId": "35c12b2f9f1b2c4d5f8d2099",
    "walletCode": 004,
    "bankNumber": 12345,
    "barcode": "07799707771500000100000029170110202309261131",
    "digitableLine": "07799707771500000100000029170110202309261131",
    "settlementOrigin": "INTERBANCARIA",
    "settlementType": "INTEGRAL",
    "settlementNumber": 2310180310102620251,
    "settlementChannel": 3,
    "receiverISPB": 34829992,
    "value": 980.44,
    "tags": []
  }

bill-settlement

{
    "entity": "bill-settlement",
    "createTimestamp": "2024-06-17T18:09:19.0406704",
    "status": "SUCCESS",
    "body": {
      "billId": "60c72b2f9f1b2c4d5f8d2e1a",
      "billRequestId": "401943ae-b9d8-4e35-9816-eeecc1678357",
      "tenantId": "35c12b2f9f1b2c4d5f8d2099",
      "walletCode": 003,
      "bankNumber": 12345,
      "barcode": "50997000000000000000000000000000000000000680",
      "beneficiaryDocument": "51236721000136",
      "settlementId": "60c72b2f9f1b2c4d5f8d2e1a",
      "settlementRequestId": "401943ae-b9d8-4e35-9816-eeecc1678357",
      "settlementNumber": 3024090203158932726,
      "tags": []
    }
  }