Skip to main content

Emissão de boleto único (padrão)

Importante

Para registrar bolePix, é necessário que exista uma chave Pix aleatória ativa na conta em que os boletos serão registrados.

No fluxo padrão de registro de boleto, caso a requisição seja bem sucedida, a resposta retorna um boleto com o status accepted (o boleto foi aceito pela QI Tech). Após a confirmação/rejeição da Nuclea/CIP, o boleto passa para o status registered ou rejected.

Atenção!

Como trata-se de um registro assíncrono, o solicitante é notificado via webhook assim que o boleto mudar de status de accepted para registered ou rejected.

Request

ENDPOINT
/account/ACCOUNT_KEY/requester_profile/REQUESTER_PROFILE_KEY/bank_slip
METHOD
POST

Path parameters

CampoTipoDescriçãoCaracteres
account_keyuuidv4Chave única de identificação da conta, no formato uuid v436
requester_profile_keyuuidv4Chave única de identificação da carteira, no formato uuid v436
Request Body
{
"request_control_key": "0d496b4d-01f6-48cd-8ec9-9ead1e43f156",
"our_number": 123456789,
"document_number": "DOC4561237",
"amount": 5000.00,
"expiration": "2025-01-01",
"bank_teller_instructions": "Confirm payment",
"protest_data": {"days_to_protest": 7},
"bankruptcy_protest_data": {"days_to_bankruptcy_protest": 14},
"max_payment_days": 45,
"fine_data": {"fine_type": "absolute", "fine_amount": 100.00, "days_to_fine": 10},
"interest_data": {
"interest_type": "workdays_daily_amount",
"interest_amount": 10.00,
"days_to_interest": 2,
},
"write_off_data": {"days_to_write_off": 365},
"rebate_amount": 200.00,
"discounts_data": [
{
"discount_amount": 50.00,
"discount_number": 1,
"discount_type": "absolute",
"discount_limit_date": "2024-12-01",
}
],
"payer_data": {
"name": "Global Tech",
"contact": {
"email": "finance@globaltech.com",
"phone": {"international_dial_code": "055", "area_code": "11", "number": "987654321"},
},
"address": {
"street": "101 High St.",
"neighborhood": "Tech Park",
"number": "202",
"postal_code": "01001000",
"city": "Innovation City",
"state": "SP",
"complement": "Building A",
},
"document_number": "12345678000195",
"person_type": "legal",
},
"guarantor_data": {
"name": "Jane Doe",
"contact": {
"email": "jane.doe@qitech.com.br",
"phone": {"international_dial_code": "055", "area_code": "11", "number": "999999999"},
},
"address": {
"street": "202 Elm St.",
"neighborhood": "Quiet Neighborhood",
"number": "303",
"postal_code": "01001000",
"city": "Peaceful Town",
"state": "RJ",
"complement": "House 1",
},
"document_number": "23456789012",
"person_type": "natural",
},
"pix_key": "4d25d8fc-0074-42bb-b0a4-dd12b1cd0e98",
}

Request Body

CampoTipoDescriçãoCaracteres
request_control_key *uuidv4Chave única de identificação da request utilizada pelo cliente no formato uuid v436
our_number *integerNúmero único de identificação do boleto junto à carteira. Pode ser enviado pelo cliente e, caso não seja, a QI Tech irá gerar um11
document_number *stringNúmero de identificação do boleto. Pode ser o número da nota fiscal eletrônica10
amount *floatValor base do boleto-
expiration *stringData de vencimento10
bank_teller_instructionsstringObservações ao pagador do boleto320
rebate_amountfloatValor de abatimento do boleto, que será aplicado em cima do valor base-
max_payment_days *integerMáximo de dias corridos que o boleto ficará disponível para pagamento, após o vencimento (pode ser no máximo 365)-
write_off_dataobjectConfiguração de baixaObject write_off_data
protest_dataobjectConfiguração de protestoObject protest_data
bankruptcy_protest_dataobjectConfiguração de protesto falimentarObject bankruptcy_protest_data
fine_dataobjectConfiguração de multaObject fine_data
interest_dataobjectConfiguração de jurosObject interest_data
discounts_dataobject arrayDescontosObject discount
payer_data *objectDados do pagadorObject payer_data
guarantor_data *objectDados do sacador avalistaObject guarantor_data
pix_keyuuidv4Chave pix do tipo aleatória36
Atenção!

Caso o objeto qr_code_settings seja enviado na request, essa carteira terá como configuração padrão a geração de bolePix. BolePix são boletos cujo pagamento é vinculado a um QR Code Pix. Sendo assim, o pagador pode realizar o pagamento dos boletos tanto utilizando as linhas digitáveis dos mesmos, quanto através da leitura dos QR Codes Pix vinculados. Caso o pagamento seja feito via QR Code, a liquidação financeira se dá instantaneamente. Já em relação às notificações, são enviados dois webhooks: um no ato da transferência PIX (aviso de pagamento, boleto vai para o status payment_notice); e outro alguns segundos ou minutos depois, após a confirmação da baixa na CIP/Nuclea (pago, boleto vai para o status paid).

Atenção!

Caso cada um dos campos max_payment_days, write_off_data, protest_data, bankruptcy_protest_data, fine_data, interest_data e pix_key não sejam enviados na request e a carteira possua configurações padrão (i.e. max_payment_days, write_off_settings, protest_settings, bankruptcy_protest_settings, fine_settings, interest_settings e qr_code_settings, respectivamente, no configuration_data do requester_profile), serão utilizadas tais configurações padrão para a emissão do título.

Object write_off_data

CampoTipoDescriçãoCaracteres
days_to_write_off *integerDias, após o vencimento, para que o boleto seja baixado automaticamente-

Object protest_data

CampoTipoDescriçãoCaracteres
days_to_protest *integerDias, após o vencimento, para que o boleto seja protestado automaticamente-

Object bankruptcy_protest_data

CampoTipoDescriçãoCaracteres
days_to_bankruptcy_protest *integerDias, após o vencimento, para que o boleto seja protestado automaticamente-

Object fine_data

Opção 1: multa em valor absoluto (fine_type=absolute)
CampoTipoDescriçãoCaracteres
fine_type *stringTipo da multaEnumeradores fine_type
fine_amount *floatValor absoluto da multa-
days_to_fine *integerDias, após o vencimento, para que a multa seja cobrada-
Opção 2: multa em valor percentual (fine_type=percentage)
CampoTipoDescriçãoCaracteres
fine_type *stringTipo da multaEnumeradores fine_type
fine_percentage *integerValor percentual da multa, de 1 a 100-
days_to_fine *integerDias, após o vencimento, para que a multa seja cobrada-

Enumeradores fine_type

EnumeradorDescrição
absolutevalor absoluto
percentagevalor percentual

Object interest_data

Opção 1: juros utilizando valores absolutos (interest_type=calendar_days_daily_amount ou interest_type=workdays_daily_amount)
CampoTipoDescriçãoCaracteres
interest_type *stringTipo de jurosEnumeradores interest_type
interest_amount *floatValor a ser cobrado por unidade de tempo determinada (dias úteis ou corridos)-
days_to_interest *integerDias, após o vencimento, para que comece a cobrar os juros-
Opção 2: juros utilizando valores percentuais (interest_type=calendar_days_monthly_percentage)
CampoTipoDescriçãoCaracteres
interest_type *stringTipo de jurosEnumeradores interest_type
interest_percentage *integerPorcentagem a ser cobrada por unidade de tempo determinada (dias úteis ou corridos)-
days_to_interest *integerDias, após o vencimento, para que comece a cobrar os juros-

Enumeradores interest_type

EnumeradorDescrição
calendar_days_daily_amountValor diário sobre dias corridos
workdays_daily_amountValor diário sobre dias úteis
calendar_days_monthly_percentagePorcentagem de juros cobrados mensalmente, com base em dias corridos

Object discount

Opção 1: descontos utilizando valores absolutos (discount_type in ["absolute", "anticipation_calendar_days_daily_amount", "anticipation_workdays_daily_amount"])
CampoTipoDescriçãoCaracteres
discount_amount *floatValor absoluto de desconto por unidade de tempo-
discount_number *integerNúmero do desconto-
discount_type *stringConfiguração do desconto em valores absolutosEnumerador discount_type
discount_limit_date *stringData limite para aplicação do desconto10
Opção 2: descontos utilizando valores percentuais (discount_type in ["percentage", "anticipation_calendar_days_daily_percentage", "anticipation_workdays_daily_percentage"])
CampoTipoDescriçãoCaracteres
discount_percentage *floatValor percentual de desconto por unidade de tempo-
discount_number *integerNúmero do desconto-
discount_type *stringConfiguração do desconto em valores percentuaisEnumerador discount_type
discount_limit_date *stringData limite para aplicação do desconto10
Atenção!

O boleto pode ter até três descontos, sendo que os descontos devem ser todos do mesmo tipo, isto é, devem ter o mesmo discount_type. Os descontos devem ser numerados de 1 a 3, de maneira crescente e começando necessariamente em 1. Ou seja, caso sejam enviados dois descontos na requisição, devem necessariamente ser numerados com 1 e 2.

Enumeradores discount_type

EnumeradorDescrição
absoluteValor fixo
anticipation_calendar_days_daily_amountValor diário de desconto de antecipação, sobre dias corridos
anticipation_workdays_daily_amountValor diário de desconto de antecipação, sobre dias úteis
percentagePorcentagem fixa
anticipation_calendar_days_daily_percentagePorcentagem mensal de desconto de antecipação, com base em dias corridos
anticipation_workdays_daily_percentagePorcentagem anual de desconto de antecipação, com base em dias úteis

Objects payer_data e guarantor_data

CampoTipoDescriçãoCaracteres
name *stringNome completo100
document_number *stringNúmero do documento (CPF/CNPJ)11 ou 14
person_type *stringTipo da pessoa (física ou jurídica)Enumeradores person_type
contactobjectInformações de contatoObject contact
addressobjectEndereçoObject address

Enumeradores person_type

EnumeradorDescrição
naturalpessoa física
legalpessoa jurídica

Object contact

CampoTipoDescriçãoCaracteres
emailstringE-mail de contato320
phoneobjectTelefone de contatoObject phone

Object phone

CampoTipoDescriçãoCaracteres
international_dial_code *stringCódigo DDI (Discagem Direta Internacional)3
area_code *stringCódigo DDD (Discagem Direta à Distância)2
number *stringComplemento9

Object address

CampoTipoDescriçãoCaracteres
street *stringLogradouro500
number *stringNúmero6
complementstringComplemento500
neighborhood *stringBairro100
postal_code *stringCEP8
city *stringCidade100
state *stringEstado (UF)Enumerador state

Enumeradores state

EnumeradorDescrição
ACAcre
ALAlagoas
AMAmazonas
APAmapá
BABahia
CECeará
DFDistrito federal
ESEspírito Santo
GOGoiás
MAMaranhão
MGMinas Gerais
MSMato Grosso do Sul
MTMato Grosso
PAPará
PBParaíba
PEPernambuco
PIPiauí
PRParaná
RJRio de Janeiro
RNRio Grande do Norte
RORondônia
RRRoraima
RSRio Grande do Sul
SCSanta Catarina
SESergipe
SPSão Paulo
TOTocantins
EXExceção

Response

STATUS
202
Response Body
{
"request_control_key": "0d496b4d-01f6-48cd-8ec9-9ead1e43f156",
"bank_slip_key": "8cb70dea-9fb0-4a68-9572-99a72849c8d6",
"bank_slip_status": "accepted"
}

Response Body Params

CampoTipoDescriçãoCaracteres
request_control_key *uuidv4Chave única de identificação da request utilizada pelo cliente no formato uuid v436
bank_slip_key *uuidv4Chave única de identificação do boleto no formato uuid v436
bank_slip_status *stringStatus do boletoEnumeradores bank_slip_status

Enumeradores bank_slip_status

EnumeradorDescrição
acceptedBoleto aceito mas ainda não registrado

Error Response

STATUS
4xx
Response Body: Error
{
"title": "titulo",
"description": "description in English",
"translation": "descrição em portugues",
"code": "codigo",
"extra_fields": {}
}
Código HTTP
status
Código QI
code
Título
title
Descrição (eng)
description
Descrição (pt-br)
translation
400QIT000001Bad RequestSchema ErrorSchema Inválido
404BKS000004Not FoundPix key not found: {pix_key}Chave pix não encontrada: {pix_key}
403BKS000005ForbiddenUser is not allowed to do this actionUsuário não tem autorização para fazer essa ação
404BKS000006Not FoundThe source account key was not found.A chave da conta de origem não foi encontrada.
400BKS000007Bad RequestIt was not possible to consult the source account at this time. Please try again in a few minutes.Não foi possível consultar a conta de origem neste momento. Por favor, tente novamente em alguns minutos.
400BKS000008Bad RequestThe source account is closed.A conta de origem está fechada.
400BKS000009Bad RequestThe source account is blocked.A conta de origem está bloqueada.
403BKS000010ForbiddenThe pix key owner does not match the account owner.O proprietário da chave pix não corresponde ao proprietário da conta.
404BKS000013Not FoundRequester profile not foundCarteira não encontrada
409BKS000014ConflictRequest control key already sent or duplicated sent: {request_control_key}Chave de controle da requisição já utilizada ou enviada duplicada: {request_control_key}
400BKS000016Bad RequestExpiration date must be greater than the current date and have a maximum of 3650 days from the current date.A data de vencimento deve ser maior que a data atual e possuir no máximo 3650 dias corridos a partir da data atual.
409BKS000017ConflictOur number already used or duplicated sent: {our_number}Nosso número já utilizado ou enviado duplicado: {our_number}
400BKS000018Bad RequestThe discount dates must be less than the expiration date and increasing.A data dos descontos devem ser menores que a de expiração e crescentes.
400BKS000019Bad RequestPayer address is required for protest.Endereço do pagador é obrigatório para protesto.
500BKS000021Internal Server ErrorError while trying to generate QR Code.Erro ao tentar gerar QR Code de pagamento.
400BKS000022Bad RequestRequester profile is not opened.Carteira não está aberta.
400BKS000026Bad RequestGuarantor address is required for protest.Endereço do sacador é obrigatório para protesto.
404BKS000028Not FoundNotary office attended region not found for postal code: {postal_code}Região de cartório não encontrada para o CEP: {postal_code}
400BKS000043Bad RequestInvalid discount numbering. Discounts must be numbered in ascending order and start on 1.Numeração dos descontos inválida. Os descontos devem ser numerados em ordem crescente e começar em 1.
400BKS000045Bad RequestRebate amount cannot be greater than the bank slip amount.O valor do rebate não pode ser maior que o valor do boleto.
400BKS000047Bad RequestIt was not possible to consult the sent pix key at this time. Please try again in a few minutes.Não foi possível consultar a chave pix enviada no momento. Por favor, tente novamente em alguns minutos.