Cobrança com QR Code dinâmico (pagamento imediato)
Requisição
POST 'https://apisandbox.delbank.com.br/baas/api/v2/pix/qrcode/dynamic
curl --location 'https://apisandbox.delbank.com.br/baas/api/v2/pix/qrcode/dynamic' \
--header 'x-delbank-api-key: PJPyJ2xGmyB9oDHyNIUwNOt1dgpgolBwcE16ybaKD5rYEc8ujLtarBP0nNw2FKdgK+5YJFciFwTdORlZsdaTzjEbKN5ut+Ag4xGy69bbtXJmzkzRDHry9ubYbMW4xFMb' \
--header 'Content-Type: application/json' \
--data '{
"correlationId": "{{guid}}",
"amount": 0.10
}'
Cabeçalhos (Headers)
Nome | Descrição |
---|---|
x-delbank-api-key | Obrigatório. Chave de API |
Corpo da requisição (Body)
Apenas o correlactionId e o amount são obrigatórios
Nome | Tipo | Descrição |
---|---|---|
correlationId | string | Obrigatório. Id de correlação para conciliação com o sistema cliente Este valor será retornado nas integração via webhook e pode ser utilizado para consultar a cobrança e pagamentos |
description | string | Descrição interna da cobrança |
amount | number | ObrigatórioValor da cobrança |
formatResponse | enum | ONLY_PAYLOAD valor padrão caso não seja diretamente passado. E o PAYLOAD_AND_QRCODE que contém a imagem com resolução 250x250. |
expiresIn | number | Limite para expiração do QRCode, com granularidade de segundos, para que o pagamento da cobrança possa ser realizado, a partir da data-hora de criação ou do vencimento, se existir. Se não for informado, assume-se o valor default 86400 |
payer | object | Informações do cliente pagador |
payer.name | string | Nome do cliente pagador |
payer.document | string | Documento (CPF/CNPJ) do cliente pagador |
payer.validate | string | Flag indicando que o pagador deve ser validado durante o processo de caixa. Com esta flag habilitada, o QR Code só pode ser pago por este pagador. |
address | object | Informações do endereço onde é efetuada a transação |
address.cityName | string | Nome da Cidade onde é efetuada transação |
address.zipCode | string | CEP da localidade onde é efetuada transação |
address.state | string | Unidade Federativa onde é efetuada transação |
address.street | string | Rua ou bairro onde é efetuada a transação |
address.complement | string | Complemento onde é efetuada a transação caso necessário |
additionalInfos | object | Objeto contendo informações adicionais visíveis ao pagador |
additionalInfos.name | string | Nome da informação adicional ou descrição que você deseja adicionar |
additionalInfos.value | string | A informação adicional ou descrição que você deseja adicionar |
Exemplo básico
A forma mais simples de gerar um QR Code Dinâmico é da seguinte forma:
{
"correlationId": "{{$guid}}",//guid gerado pelo cliente
"amount": 0.10
}
Além das informações acima, é possível enviar um tempo de expiração (caso não informado, será considerado o valor default de 86400
.
{
"correlationId": "{{$guid}}",
"amount": 0.10,
"expiresIn": 1800,
"formatResponse": "ONLY_PAYLOAD"
}
Segue alguns exemplos de payload válidos com adição de informações opcionais no corpo da requisição;
{
"correlationId": "{{$guid}}",
"amount": 0.10,
"expiresIn": 1800,
"formatResponse": "ONLY_PAYLOAD",
"address": {
"zipcode": "49000000",
"cityName": "SAO PAULO",
"state": "SP"
}
}
{
"correlationId": "{{$guid}}",
"amount": 0.10,
"expiresIn": 1800,
"formatResponse": "ONLY_PAYLOAD",
"address": {
"zipcode": "49000000",
"cityName": "SAO PAULO",
"state": "SP"
},
"payer": {
"document": "47779921018",
"name": "PAYER NAME",
"validate": true
}
}
{
"correlationId": "{{$guid}}",
"amount": 0.10,
"pixKey": "+5511999975734",
"expiresIn": 1800,
"formatResponse": "PAYLOAD_AND_QRCODE",
"address": {
"zipcode": "49000000",
"cityName": "SAO PAULO",
"state": "SP"
},
"payer": {
"document": "47779921018",
"name": "PAYER NAME",
"validate": true
},
"additionalInfos": [
{
"name": "INFO 01",
"value": "INFO VALUE 01"
}
]
}
Resposta (Response)
O status code 200
indicará sucesso na transação.
Sendo bem-sucedido, o retorno irá trazer os seguintes campos em formato JSON:
Nome | Tipo | Descrição |
---|---|---|
correlationId | string | Id de correlação para conciliação com o sistema cliente |
transactionId | string | Id do QR code |
amount | number | Valor da cobrança |
allowChangeAmount | boolean | Deixar o pagador alterar o valor de pagamento |
expiresIn | number | Limite para expiração do QRCode, com granularidade de segundos, para que o pagamento da cobrança possa ser realizado, a partir da data-hora de criação ou do vencimento, se existir. Se não for informado, assume-se o valor default 86400 |
status | enum | Status do QR code |
payer | object | Informações do cliente pagador |
payer.name | string | Nome do cliente pagador |
payer.document | string | Documento (CPF/CNPJ) do cliente pagador |
payer.validate | boolean | Flag indicando que o pagador deve ser validado durante o processo de caixa. Com esta flag habilitada, o QR Code só pode ser pago por este pagador. |
address | object | Informações do endereço onde é efetuada a transação |
createdAt | datetime | Data e hora de criação |
updatedAt | datetime | Data e hora de atualização |
expiresAt | datetime | Data e hora de expiração |
payloadPix | string | Pix copia e cola |
qrCodeImageBase64 | string | Imagem 250x250 em base 64 (Verificar a leitura do qrcode) |
additionalInfos | object | Objeto contendo informações adicionais visíveis ao pagador |
{
"correlationId": "40ede975-031d-4517-bdd4-31472d3f00a4",
"transactionId": "vchargeffab8b4c963344c283e491f5e",
"amount": 0.10,
"allowChangeAmount": false,
"expiresIn": 1800,
"status": "ACTIVE",
"payer": {
"name": "PAYER NAME",
"document": "***799210**",
"validate": true
},
"address": {
"cityName": "SAO PAULO",
"zipCode": "49000000",
"uf": "SP",
"state": "SP",
"street": "LOGRADOURO"
},
"createdAt": "2024-12-10T13:19:26.501Z",
"updatedAt": "2024-12-10T13:19:26.501Z",
"expiresAt": "2024-12-10T13:49:26.501Z",
"payloadPix": "00020101021226820014br.gov.bcb.pix2560pix-h.delbank.com.br/v2/cob/vchargeffab8b4c963344c283e491f5e5204000053039865802BR5907DELBANK6009SAO PAULO62070503***6304CB42",
"qrCodeImageBase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAZfElEQVR4Xu3SwY4jORJEwcH+/z/",
"additionalInfos": [
{
"name": "INFO 01",
"value": "INFO VALUE 01"
}
]
}
Cobrança com QR Code Dinâmico com Data de Vencimento
Um QR Code Dinâmico com Data de Vencimento possibilita a utilização de informações como juros, multas e descontos, além do valor a ser pago.
Requisição
POST 'https://apisandbox.delbank.com.br/baas/api/v2/pix/qrcode/due-date
curl --location 'https://apisandbox.delbank.com.br/baas/api/v2/pix/qrcode/due-date' \
--header 'x-delbank-api-key: PJPyJ2xGmyB9oDHyNIUwNOt1dgpgolBwcE16ybaKD5rYEc8ujLtarBP0nNw2FKdgK+5YJFciFwTdORlZsdaTzjEbKN5ut+Ag4xGy69bbtXJmzkzRDHry9ubYbMW4xFMb' \
--header 'Content-Type: application/json' \
--data '{
"correlationId": "{{$guid}}",
"amount": 80,
"dueDate": "2025-12-30",
"formatResponse": "PAYLOAD_AND_QRCODE",
"payer": {
"name": "João Alves",
"document": "07034346593"
},
"address": {
"cityName": "ARACAJU",
"zipCode": "49000000",
"uf": "SE",
"state": "SE",
"street": "LOGRADOURO"
},
"taxes": {
"rebateType": "FIXED_AMOUNT",
"rebateAmount": 1,
"discountType": "FIXED_AMOUNT",
"discountAmount": 1,
"interestType": "FIXED_AMOUNT",
"interestAmount": 1,
"fineType": "PERCENTAGE",
"fineAmount": 10
}
}'
Corpo da requisição (Body)
Observe que os descontos/multas devem ser de um dos seguintes tipos:
Name | Description |
---|---|
FIXED_AMOUNT | Valor do desconto/multa fixo, portanto a cada dia de atraso incorrerá nesta taxa de juros |
PERCENTAGE | Desconto/multa percentual definido por dia, portanto, a cada dia de atraso incorrerá nesta taxa de juros |
FIXED_AMOUNT_CALENDAR_DAY | Somente para interest. O mesmo que FIXED_AMOUNT |
PERCENTAGE_PER_DAY_CALENDAR_DAY | Somente para interest. O mesmo que PERCENTAGE |
PERCENTAGE_PER_MONTH_CALENDAR_DAY | Somente para interest. Porcentagem definida por mês, portanto um pagamento feito com 15 dias de atraso com juros de 100%, terá juros de 50% |
PERCENTAGE_PER_YEAR_CALENDAR_DAY | Somente para interest. Porcentagem definida por ano, portanto, um pagamento feito com 6 meses de atraso com juros de 100%, terá juros de 50% |
Here are the attributes that can be passed for Due Date QR code:
Name | Type | Description |
---|---|---|
dueDate | datetime | Obrigatório. Data em que o código QR deve ser pago |
maxDaysOverdue | number | Quantidade de dias em que o código QR ainda poderá ser pago |
taxes | object | Objeto utilizado para configurar os descontos/multas |
taxes.rebateType | enum | FIXED_AMOUNT ou PERCENTAGE |
taxes.rebateAmount | number | Este valor será descontado do valor total |
taxes.discountType | enum | FIXED_AMOUNT ou PERCENTAGE |
taxes.discountAmount | number | Não pode ser usado com discountsDueDate. Este valor será deduzido do valor total somente se pago antes do vencimento |
taxes.discountsDueDate | object | Não pode ser usado com discountsDueDate. Objeto contendo até 3 datas de desconto diferentes, caso você queira adicionar incentivos de pagamento antecipado. |
taxes.discountsDueDate.dueDate | datetime | Não pode ser usado com discountsDueDate. A data de vencimento de até 3 descontos diferentes que podem ser oferecidos |
taxes.discountsDueDate.amount | number | Não pode ser usado com discountsDueDate. O valor de até 3 descontos diferentes que podem ser oferecidos |
taxes.interestType | enum | FIXED_AMOUNT_CALENDAR_DAY , PERCENTAGE_PER_DAY_CALENDAR_DAY , PERCENTAGE_PER_MONTH_CALENDAR_DAY ou PERCENTAGE_PER_YEAR_CALENDAR_DAY |
taxes.interestAmount | number | Valor a ser adicionado após o vencimento, dependendo do tipo de conjunto |
taxes.fineType | enum | FIXED_AMOUNT ou PERCENTAGE |
taxes.fineAmount | number | Valor a ser adicionado após o vencimento |
correlationId | string | Obrigatório. Os IDs de correlação são para conciliação com o sistema do cliente . Este valor será retornado para a integração por meio de um webhook e pode ser usado para consultas sobre cobranças e pagamentos. |
description | string | Descrição interna da cobrança (para uma descrição visível para o cliente use o objeto additionalInfos |
amount | number | Obrigatório Valor da cobrança |
formatResponse | enum | ONLY_PAYLOAD valor padrão caso não seja diretamente passado. E o PAYLOAD_AND_QRCODE que contém a imagem com resolução 250x250. |
expiresIn | number | Limite para expiração do QRCode, com granularidade de segundos, para que o pagamento da cobrança possa ser realizado, a partir da data-hora de criação ou do vencimento, se existir. Se não for informado, assume-se o valor default 86400 . |
payer | object | Obrigatório. Informações do cliente pagador |
payer.name | string | Nome do cliente pagador |
payer.document | string | Documento (CPF/CNPJ) do cliente pagador |
payer.validate | boolean | Flag indicando que o pagador deve ser validado durante o processo de caixa. Com esta flag habilitada, o QR Code só pode ser pago por este pagador. |
address | object | Required. Informações da cidade onde é efetuada a transação |
address.cityName | string | Nome da Cidade onde é efetuada transação |
address.zipCode | string | CEP da localidade onde é efetuada transação |
address.uf | string | Unidade Federativa onde é efetuada transação |
address.state | string | Unidade Federativa onde é efetuada transação |
address.street | string | Nome da rua onde é efetuada a transação. |
additionalInfos | object | Objeto contendo informações adicionais visíveis ao pagador |
additionalInfos.name | string | Nome da informação adicional ou descrição que você deseja adicionar |
additionalInfos.value | string | A informação adicional ou descrição que você deseja adicionar |
Uma maneira simples de criar um QR code com data de vencimento com todos os descontos/multas é a seguinte:
{
"correlationId": "{{$guid}}",
"amount": 80,
"dueDate": "2025-12-30",
"formatResponse": "PAYLOAD_AND_QRCODE",
"payer": {
"name": "João Alves",
"document": "07034346593"
},
"address": {
"cityName": "ARACAJU",
"zipCode": "49000000",
"uf": "SE",
"state": "SE",
"street": "LOGRADOURO"
},
"taxes": {
"rebateType": "FIXED_AMOUNT",
"rebateAmount": 1,
"discountType": "FIXED_AMOUNT",
"discountAmount": 1,
"interestType": "PERCENTAGE_PER_DAY_CALENDAR_DAY",
"interestAmount": 1,
"fineType": "PERCENTAGE",
"fineAmount": 10
}
}
Aqui está outra maneira, aqui você pode adicionar até 3 datas de desconto:
{
"correlationId": "{{$guid}}",
"amount": 80,
"dueDate": "2025-12-30",
"payer": {
"name": "João Alves",
"document": "07034346593"
},
"address": {
"cityName": "ARACAJU",
"zipCode": "49000000",
"uf": "SE",
"state": "SE",
"street": "LOGRADOURO"
},
"taxes": {
"rebateType": "FIXED_AMOUNT",
"rebateAmount": 1,
"discountType": "FIXED_AMOUNT",
"discountsDueDate": [
{
"dueDate": "2025-05-16",
"amount": 20
},
{
"dueDate": "2025-06-16",
"amount": 10
}
],
"interestType": "PERCENTAGE_PER_DAY_CALENDAR_DAY",
"interestAmount": 1,
"fineType": "PERCENTAGE",
"fineAmount": 10
},
"additionalInfos": [
{
"name": "INFO 01",
"value": "INFO VALUE 01"
}
]
}
Resposta (Response)
O código de status 200
indica sucesso na transação
{
"correlationId": "ac7a235a-1a91-47b0-8da5-0eb75abf3617",
"transactionId": "wcharge0aac4378c3cf4c37b0ec16c7c",
"amount": 59.00,
"originalAmount": 80,
"dueDate": "2025-12-30",
"maxDaysOverdue": 30,
"taxes": {
"rebateType": "FIXED_AMOUNT",
"rebateAmount": 1,
"discountType": "FIXED_AMOUNT",
"discountsDueDate": [
{
"dueDate": "2025-05-16",
"amount": 20.00
},
{
"dueDate": "2025-06-16",
"amount": 10.00
}
],
"interestType": "PERCENTAGE_PER_DAY_CALENDAR_DAY",
"interestAmount": 1,
"fineType": "PERCENTAGE",
"fineAmount": 10
},
"status": "ACTIVE",
"revision": 0,
"payer": {
"name": "JOAO ALVES",
"document": "***343465**"
},
"address": {
"cityName": "ARACAJU",
"zipCode": "49000000",
"uf": "SE",
"state": "SE",
"street": "LOGRADOURO"
},
"createdAt": "2024-12-17T12:22:02.757Z",
"updatedAt": "2024-12-17T12:22:02.757Z",
"expiresAt": "2026-01-29T23:59:59.000Z",
"payloadPix": "00020101021226830014br.gov.bcb.pix2561pix-h.delbank.com.br/v2/cobv/wcharge0aac4378c3cf4c37b0ec16c7c5204000053039865802BR5907DELBANK6007ARACAJU62070503***63040F7B",
"additionalInfos": [
{
"name": "INFO 01",
"value": "INFO VALUE 01"
}
]
}