Autorização - Jornada 4
Envio de Qr Code para o cliente pagador com pagamento imediato e adesão opcional.
Caso de uso: A Jornada 4 foi pensada para casos de uso onde o fluxo de pagamento é obrigatório, porém a adesão ao Pix Automático é opcional.
Um exemplo de uso da Jornada 4 é um caso de pagamento de fatura de luz ou água, onde o cliente pagador realizará o pagamento do serviço daquele mês, mas pode não desejar aderir ao Pix Automático para os próximos meses.
Neste fluxo, o cliente recebedor envia um Qr Code Pix Automático para que o cliente pagador realize o pagamento e, se desejar, a adesão ao Pix Automático.
Neste fluxo, é possível que a oferta de Pix Automático seja por valor fixo (igual em todas as cobranças futuras por Pix Automático) ou por valor variável. Importante que no caso de cobranças com valor variável, o cliente pagador sempre irá definir um valor máximo (teto) para que os agendamentos sejam realizados.
Se no momento do consentimento de uma conta de luz o usuário pagador determine, por exemplo, que o valor máximo que ele deseja pagar através de Pix Automático é de R$ 200,00, em qualquer mês que a empresa recebedora tentar enviar uma ordem de valor máximo acima de R$ 200,00, essa cobrança de Pix Automático será rejeitada pelo banco do cliente pagador, que deverá pagar sua fatura de outra forma, manualmente.
Nos casos onde o valor enviado de uma cobrança é superior ao valor máximo definido pelo cliente, somente o agendamento daquela cobrança específica não ocorrerá, porém o consentimento de Pix Automático continuará ativo para todas as cobranças futuras, até que o cliente pagador cancele o consentimento em si.
Para adesões de Pix Automático através da Jornada 4, o pagamento é obrigatório, mas a adesão é opcional.
A Jornada 4 ocorre por meio da criação de um QR Code composto com uma location do tipo COBVR. Esse QR Code possui tanto os dados da cobrança com vencimento quanto da recorrência.
- Criando o location em separado e depois associando esse location a um QR Code.
O aceite é nesse caso é opcional, após efetivar o pagamento a instituição recebedora pergunta se o cliente deseja aceitar a recorrência. Quando o processo seja aceito disparamos o webhook de completed para o recebedor, se o cliente não aceitar não enviamos nenhum webhook.
Cenário 1: Criando o location separado e depois associando esse location a um QR Code.
Passos para Integrar
- Autenticar na API: Obtenha o token de autenticação. - [API Reference]
- Criar o Location: Registre o novo location - [API Reference]
- Criar e Vincular location a um QR Code do tipo Duedate- [API Reference]
- Quando o pagamento for efetuado você receberá 2 webhooks
- Webhook de Cash in (evento: )
- Webhook de Confirmação de recorrência (evento: ) (caso a recorrência seja aceita)
Fluxo de integração - Jornada 4 - Autorização da Recorrência - Cenário 1
Solicita a criação do location
JSON de Exemplo
POST /location
Request:
{
"clientRequestId": "a016bc8bd89a4f62be995fa0ebb91d77",
"type": "COBVR",
"merchant": {
"postalCode": "01201005",
"city": "Barueri",
"merchantCategoryCode": 0,
"name": "Celcoin"
}
}cURL da chamada
curl --location --request POST 'https://sandbox.openfinance.celcoin.dev/pix/v1/location' \
--header 'accept: application/json' \
--header 'Content-Type: application/json-patch+json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{
"clientRequestId": "a016bc8bd89a4f62be995fa0ebb91d77",
"type": "COBVR",
"merchant": {
"postalCode": "01201005",
"city": "Barueri",
"merchantCategoryCode": 0,
"name": "Celcoin"
}
}'Perceba que o campo type, deve ser preenchido com o valor COBVR (cobrança com vencimento recorrente), para indicar que é de um tipo pix automático.
Exemplo de retorno
Sucesso 200
{
"locationId": 12345,
"status": "ACTIVE",
"clientRequestId": "dc8de35155df4cf6a86c6cf960b797cb",
"url": "qrcode-h.teste.com.brv1/location/cobv/dc8de35155df4cf6a86c6cf960b797cb",
"emv": "00020101021226930014br.gov.bcb.pix2571qrcode- h.teste.com.brv1/location/cob/dc8de35155df4cf6a86c6cf960b797cb5204000053039865802BR5907Celcoin6007Barueri623605322b39d30a0dc84ed9bb9d0d79261af1076404D1B6",
"type": "COBVR",
"merchant": {
"postalCode": "01201005",
"city": "Barueri",
"merchantCategoryCode": 0,
"name": "Celcoin"
},
"recurrencyUrl": "qrcode-h.teste.com.brv1/location/cobv/dc8de35155df4cf6a86c6cf960b797cb"
}
Error 400
{
"version": "1.0.0",
"status": "ERROR",
"error": {
"errorCode": "",
"message": ""
}
}Associar o location tipo COBVR a um novo QR Code
JSON de Exemplo
Neste momento são informados os dados da recorrência do pix automático, como a frequência, os campos allowsNewAttemptsAfterExpiration que é se terá ou não retentativas após o vencimento e allowAutoSendingPaymentInstructions se é cobrança de valor variável ou não. Caso seja de valor variável, deverá preencher o campo como = false e o recebedor terá que todo mês enviar qual será o valor.
Se for valor fixo = true, a própria Celcoin iniciará o fluxo de cobrança e só enviará o webhook informando se foi aceita ou não.
POST /collection/duedate
Request:
{
"clientRequestId": "e978fafe-1374-4e34-b419-f5b0f459e85f",
"expirationAfterPayment": 10,
"duedate": "2025-07-07",
"debtor": {
"name": "Fulano de Tal",
"cpf": "11122233366",
"city": "Barueri",
"publicArea": "Avenida Brasil",
"state": "SP",
"postalCode": "01202003",
"email": "[email protected]"
},
"receiver": {
"name": "João da Silva",
"cpf": "11122233366",
"postalCode": "01202003",
"city": "Barueri",
"publicArea": "Avenida Brasil",
"state": "SP"
},
"locationId": 234545,
"amount": 5.55,
"key": "5d000ece-b3f0-47b3-8bdd-c183e8875862",
"recurrency":{
"clientRequestId":"2005630c-cd0a-4467-9b3f-adc473fb7ea0",
"interval":{
"start":"2025-07-07",
"frequencyType":"WEEKLY"
},
"amount":299.90,
"creditParty":{
"branch":"1234",
"account":"1234567",
"taxId":"01234567000189",
"name":"Comércio Digital Ltda."
},
"debtor":{
"personType":"LEGAL_PERSON",
"taxId":"09876543000121",
"name":"Pague Tudo Serviços S.A."
},
"contract":{
"number":"CONTRATO-2025-ABCD",
"description":"Assinatura mensal de plataforma"
},
"allowsNewAttemptsAfterExpiration":true,
"allowAutoSendingPaymentInstructions":true
}
}cURL da chamada
curl --location --request POST 'https://sandbox.openfinance.celcoin.dev/pix/v1/collection/duedate' \
--header 'accept: application/json' \
--header 'Content-Type: application/json-patch+json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{
"clientRequestId": "9b26edb7cf254db09f5449c94bf13abc",
"expirationAfterPayment": 10,
"duedate": "2021-04-29 00:00:00",
"debtor": {
"name": "Fulano de Tal",
"cpf": "11122233366",
"cnpj": "1112223300100",
"city": "Barueri",
"publicArea": "Avenida Brasil",
"state": "SP",
"postalCode": "01202003",
"email": "[email protected]"
},
"receiver": {
"name": "João da Silva",
"cpf": "11122233366",
"cnpj": "1112223300100",
"postalCode": "01202003",
"city": "Barueri",
"publicArea": "Avenida Brasil",
"state": "SP",
"fantasyName": "Nome de Comercial"
},
"locationId": 55845,
"amount": 15.63,
"amountDiscount": {
"discountDateFixed": [
{
"date": "2021-04-29",
"amountPerc": "1.00"
}
],
"hasDiscount": false,
"hasDicount": true,
"modality": "FIXED_VALUE_UNTIL_THE_DATES_INFORMED",
"amountPerc": "0.00"
},
"amountDicount": {
"discountDateFixed": [
{
"date": "2021-04-29",
"amountPerc": "1.00"
}
],
"hasDiscount": false,
"hasDicount": true,
"modality": "FIXED_VALUE_UNTIL_THE_DATES_INFORMED",
"amountPerc": "0.00"
},
"amountAbatement": {
"hasAbatement": false,
"amountPerc": "0.00",
"modality": "FIXED_VALUE"
},
"amountFine": {
"hasFine": false,
"amountPerc": "0.00",
"modality": "FIXED_VALUE"
},
"amountInterest": {
"hasInterest": false,
"amountPerc": "0.00",
"modality": "VALUE_CALENDAR_DAYS"
},
"additionalInformation": [
{
"value": "Assinatura de serviço",
"key": "Produto 1"
}
],
"payerQuestion": "pagamento referente a...",
"key": "5d000ece-b3f0-47b3-8bdd-c183e8875862",
"recurrency: {
// Se recurrencyId for informado, os demais não podem estar presentes
"recurrencyId": "id da recorrência, seguindo o formato: RRxxxxxxxxyyyyMMddkkkkkkkkkkk",
"interval": {
"start": "datetime",
"end": "datetime",
"frequencyType": "integer (enum FrequencyType)"
},
"amount": "decimal | null",
"creditParty": {
"bank": "string",
"taxId": "string",
"name": "string"
},
"debitParty": {
"ispb": string,
"personType": string,
"taxId": string,
"bank": string | null,
"account": string,
"stateCode": string
},
"debtor": {
"personType": string,
"taxId": string,
"name": string
},
"contract": {
"number": "string",
"description": "string | null"
},
"allowsNewAttemptsAfterExpiration": boolean
"maxValueFloor": decimal | null,
"allowAutoSendingPaymentInstructions": bool
}
}'Exemplo de retorno
Sucesso 200
{
"transactionIdentification": "kk6g232xel65a0daee4dd13kk4000278871",
"transactionId": 4000278871,
"clientRequestId": "54805e92-37fc-4936-b5cd-2ecfdc6f56f3",
"status": "ACTIVE",
"lastUpdate": null,
"payerQuestion": null,
"additionalInformation": null,
"debtor": {
"name": "Fulano de Tal",
"cpf": "11122233366",
"cnpj": null,
"city": "Barueri",
"publicArea": "Avenida Brasil",
"state": "SP",
"postalCode": "01202003",
"email": "[email protected]"
},
"amount": {
"original": 5.55,
"discount": null,
"abatement": null,
"fine": null,
"interest": null
},
"location": {
"merchant": {
"postalCode": "06416230",
"city": "barueri",
"merchantCategoryCode": "5651",
"name": "Teste testando"
},
"url": "qrcode-h.pix.celcoin.com.br/pixqrcode/v2/cobv/2dcb1bc1b1807edf3a112eac643954",
"emv": "00020101021226980014br.gov.bcb.pix2576qrcode-h.pix.celcoin.com.br/pixqrcode/v2/cobv/2dcb1bc1b1807edf3a112eac6439545204000053039865802BR5914Teste testando6007barueri62070503***63040354",
"type": "COBV",
"locationId": "4000928439",
"id": "4000928439"
},
"key": "[email protected]",
"receiver": {
"name": "Joao da Silva",
"cpf": "11122233366",
"cnpj": null,
"postalCode": "01202003",
"city": "Barueri",
"publicArea": "Avenida Brasil",
"state": "SP",
"fantasyName": null
},
"calendar": {
"expirationAfterPayment": "10",
"createdAt": "2025-07-04T10:56:49.52229Z",
"dueDate": "2025-07-07T00:00:00Z"
},
"createAt": "2025-07-04T10:56:49.52229Z",
"recurrency": {
"recurrencyId": "RR139358932025060794206870902",
"clientRequestId": "f7819ce5-6ed0-4972-a3a9-492ce1d435e4",
"interval": {
"start": "2025-07-07T00:00:00",
"end": null,
"frequencyType": "WEEKLY"
},
"status": "CREATED",
"journeys": [
{
"status": "PENDING",
"type": 4,
"createDate": "2025-06-07T09:45:00-03:00"
}
],
"amount": 299.9,
"creditParty": {
"bank": "13935893",
"branch": "1234",
"account": "1234567",
"taxId": "01234567000189",
"name": "Comércio Digital Ltda."
},
"debtor": {
"personType": "LEGAL_PERSON",
"taxId": "09876543000121",
"name": "Pague Tudo Serviços S.A."
},
"contract": {
"number": "CONTRATO-2025-ABCD",
"description": "null"
},
"allowsNewAttemptsAfterExpiration": true,
"recurrencyMaxAmount": null,
"createDate": "2025-06-07T09:45:00-03:00",
"allowAutoSendingPaymentInstructions": true
}
}
Error 400
{
"version": "1.0.0",
"status": "ERROR",
"error": {
"errorCode": "",
"message": ""
}
}Webhook de completed (disparado quando pagador aceita ou recusa a recorrência)
Evento: pix-automatic-recurrency-completed
{
"body": {
"recurrencyId": "RR1393589320250820fqpb80CzMdC",
"clientRequestId": "e5ade67eabf6494f2dc063520a9d81bafdf7d979",
"interval": {
"start": "2025-09-19T00: 00: 00.0000000",
"end": null,
"frequencyType": "MONTHLY"
},
"status": "CONFIRMED",
"journeys": [
{
"status": "ACCEPTED",
"type": 4,
"createDate": "2025-09-12T00: 00: 00.0000000"
}
],
"amount": null,
"creditParty": {
"bank": "13935893",
"branch": "0001",
"account": "000123456789",
"taxId": "12345678901",
"name": "Jo\u00e3o da Silva"
},
"debitparty": {
"bank": "10203040",
"personType": "NATURAL_PERSON",
"taxId": "00011122233",
"name": null,
"branch": "10203040",
"account": "98765-4",
"accountType": "CACC",
"stateCode": "3505708"
},
"debtor": {
"personType": "NATURAL_PERSON",
"taxId": "36057484061",
"name": "Jo\u00e3o da Silva"
},
"contract": {
"number": "102",
"description": "Assinatura carro"
},
"allowsNewAttemptsAfterExpiration": true,
"recurrencyMinAmount": null,
"recurrencyMaxAmount": null,
"createDate": "2025-09-12T00: 00: 00.0000000",
"updateDate": "2025-09-12T13: 07: 45.0842771",
"allowAutoSendingPaymentInstructions": true,
"cancellation": null
},
"entity": "pix-automatic-recurrency-completed",
"createTimeStamp": "2025-09-12T13: 07: 45.0843698",
"status": "CONFIRMED",
"webhookId": "4c8a48b4518a433a99c0446963ef75de"
}
Nenhum fluxo de Pix Automático garante ao Recebedor a certeza de recebimento. Em todos os cenários, mesmo que após a adesão, é permitido que o cliente pagador cancele seu consentimento do Pix Automático, que cancele um agendamento ou que o pagamento não seja realizado na data por falta de saldo em conta.
Diferença de QR code.
Tabela de apoio
Para verificar maiores informações, consulte nossaAPI completa.
Os campos que tiverem (*) são obrigatórios.
Campo | Descrição | Tipo |
|---|---|---|
start * | A data de início da recorrência | Date |
end * | A data fim da recorrência | Date |
frequencyType * | Weekly = ("WEEKLY") | Enum |
amount | O valor do pagamento para cada ocorrência da recorrência. | Decimal |
branch * | Agência bancária | String |
account * | Conta bancária | String |
name * | O nome completo ou razão social | String |
taxId * | CNPJ ou CPF | String |
bank * | ISPB do banco | String |
personType * | LEGAL_PERSON , PERSONAL_PERSON | String |
number * | número do contrato | String |
description | descrição do contrato | String |
allowsNewAttemptsAfterExpiration* | indica se terá retentativas de cobranças após a data de vencimento | Boolean |
allowAutoSendingPaymentInstructions* | indica se terá valor variável ou fixo da recorrência, sendo valor fixo a Celcoin já realiza o envio automaticamente. Caso seja variável, o recebedor sempre nos enviará o valor a ser cobrado a cada ciclo. | Boolean |
recurrencyMinAmount | Valor mínimo que o recebedor indica para o pagador, em casos de recorrências com valores variáveis. Exemplo conta de luz, recebedor diz que o mínimo para o pagador customizar o valor será de R$30,00. Então o Pagador só poderá customizar o valor máximo que seja maior ou igual a R$30,00. | Decimal |
Possíveis status de consentimento
| Status | Descrição | Quando é utilizado |
|---|---|---|
| ACCEPTED | A solicitação de adesão do usuário foi aceita. | O cliente aceitou a adesão ao Pix Automático e a instituição confirmou a adesão com sucesso. |
| DENIED | A solicitação de adesão do usuário foi recusada. | O cliente explicitamente recusou participar do Pix Automático durante o fluxo de adesão. |
| PENDING | A solicitação de adesão está aguardando ação do cliente. | A instituição iniciou o processo de adesão, mas o cliente ainda não aceitou nem recusou a solicitação. |
| CANCELLING | A adesão existente está em processo de cancelamento. | O cliente ou a instituição iniciou o cancelamento da adesão, mas ele ainda não foi finalizado. |
| CANCELLED | A adesão foi cancelada com sucesso. | O processo de cancelamento foi concluído e o cliente não está mais vigente para aquele contrato de Pix Automático. |
Objeto journey
Campo | Descrição | Tipo |
|---|---|---|
status* | Status da jornada | Enum |
type* | Versão do payload | Enum |
accepetedDate | Data em que foi aceita. | string (ISO 8601) |
denyDate | Data em que foi negada. | string (ISO 8601) |
Objeto Interval
Campo | Descrição | Tipo |
|---|---|---|
start* | Início da recorrência. | string (ISO 8601) |
end | Fim da recorrência.. | string (ISO 8601) |
frequencyType* | Frequência da recorrência | Enum |
Objeto CreditParty
| Campo | Descrição | Tipo |
|---|---|---|
| taxId* | CNPJ do Recebedor | string |
| name* | Nome do recebedor | string |
| bank* | ISPB do banco recebedor | string |
Objeto do DebitParty
Campo | Descrição | Tipo |
|---|---|---|
personType* | Tipo de pessoa pagador | Enum |
taxId* | CPF/CNPJ do pagador | string |
bank* | ISPB do banco | string |
account* | numero da conta | string |
branch | Agência | string |
stateCode | Código de município do usuário pagador no IBGE. | string |
Objeto debtor
Campo | Descrição | Tipo |
|---|---|---|
personType* | Tipo de pessoa do devedor | Enum |
taxId* | CPF/CNPJ do devedor | string |
nome* | nome do devedor | string |
Objeto contract
| Campo | Descrição | Tipo |
|---|---|---|
| number* | Número do contrato vinculado. | string |
| description | descrição do contrato | string |
Objeto cancellation
Campo | Descrição | Tipo |
|---|---|---|
id* | ID do cancelamento. | string |
cancelledBy | Quem cancelou(credit = recebedor , debit = pagador) | Enum |
personType | Tipo da pessoa que cancelou (PF ou PJ) | Enum |
taxId | CPF/CNPJ de quem cancelou | string |
reason | Motivo do cancelamento | Enum |
date | Data do cancelamento | string (ISO 8601) |
Updated 15 days ago