{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","settings":"","results":{"codes":[]},"params":[]},"next":{"description":"","pages":[]},"title":"Endpoints","type":"basic","slug":"api-pix-endpoints","excerpt":"Informações sobre os Endpoints da API Pix Gerencianet","body":"Nesta página você encontrará todos os endpoints disponíveis na API Pix Gerencianet. Recomendamos que [participe da nossa comunidade no Discord](https://discord.gg/ptGHMtczcV) para acompanhar a evolução da API, incluindo a disponibilização de novos endpoints.\n\nUtilize o sumário abaixo para navegar rapidamente entre os grupos de endpoints da API.\n\n**Sumário**\n1. [Cobranças](#section-cobran-as)\n    1.1 [Criar cobrança imediata (sem txid)](#section-criar-cobran-a-imediata-sem-txid-)\n    1.2 [Criar cobrança imediata (com txid)](#section-criar-cobran-a-imediata-com-txid-)\n    1.3 [Revisar cobrança](#section-revisar-cobran-a)\n    1.4 [Consultar cobrança](#section-consultar-cobran-a)\n    1.5 [Consultar lista de cobranças](#section-consultar-lista-de-cobran-as)\n2. [Pix](#section-pix)\n    2.1 [Consultar Pix](#section-consultar-pix)\n    2.2 [Consultar Pix recebidos](#section-consultar-pix-recebidos)\n    2.3 [Requisitar envio de Pix](#section-requisitar-envio-de-pix)\n    2.4 [Solicitar devolução](#section-solicitar-devolu-o)\n    2.5 [Consultar devolução](#section-consultar-devolu-o)\n3. [Payload locations](#section-payload-locations)\n    3.1 [Criar location do payload](#section-criar-location-do-payload)\n    3.2 [Consultar locations cadastradas](#section-consultar-locations-cadastradas)\n    3.3 [Recuperar location do payload](#section-recuperar-location-do-payload)\n    3.4 [Gerar QR Code de um location](#section-gerar-qrcode-de-um-location)\n    3.5 [Desvincular um txid de uma location](#section-desvincular-um-txid-de-uma-location)\n4. [Webhooks](#section-webhooks)\n    4.1 [Entendendo o padrão mTLS](#section-entendendo-o-padr-o-mtls)\n    4.2 [Exemplos de configuração de servidor](#section-exemplos-de-configura-es-de-servidor)\n    4.3 [Configurar o webhook Pix](#section-configurar-o-webhook-pix)\n    4.4 [Exibir informações do wehook Pix](#section-exibir-informa-es-do-wehook-pix)\n    4.5 [Consultar lista de webhooks](#section-consultar-lista-de-webhooks)\n    4.6 [Cancelar o webhook Pix](#section-cancelar-o-webhook-pix)\n    4.7 [Recebendo Callbacks](#section-recebendo-callbacks)\n5. [Endpoints exclusivos Gerencianet](#section-endpoints-exclusivos-gerencianet)\n    5.1 [Criar chave evp](#section-criar-chave-evp)\n    5.2 [Listar chaves evp](#section-listar-chaves-evp)\n    5.3 [Remover chave evp](#section-remover-chave-evp)\n    5.4 [Buscar o saldo da conta](#section-buscar-o-saldo-da-conta)\n    5.5 [Criar/modificar configurações da conta](#section-criar-modificar-configura-es-da-conta)\n    5.6 [Listar configurações da conta](#section-listar-configura-es-da-conta)\n\n<hr>\n\n## Cobranças\n\nO conjunto de endpoints a seguir é responsável pela gestão de cobranças. As cobranças, no contexto da API Pix representam uma transação financeira entre um pagador e um recebedor, cuja forma de pagamento é o Pix.\n\n### Criar cobrança imediata (sem txid)\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method post\\\">POST</span>\\n    <span class=\\\"endpoint\\\">/v2/cob</span>\\n</div>\"\n}\n[/block]\nEndpoint para criar uma cobrança imediata sem informar um `txid`.\n\nEm geral, o `txid` é criado pelo usuário recebedor e está sob sua responsabilidade. Este endpoint é uma exceção a essa regra e, neste caso, o `txid` será definido pela Gerencianet.\n\n**Requer autorização para o escopo**: **`cob.write`** \n\n#### Requisição\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"calendario\\\": {\\n    \\\"expiracao\\\": 3600\\n  },\\n  \\\"devedor\\\": {\\n    \\\"cpf\\\": \\\"12345678909\\\",\\n    \\\"nome\\\": \\\"Francisco da Silva\\\"\\n  },\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"123.45\\\"\\n  },\\n  \\\"chave\\\": \\\"71cdf9ba-c695-4e3c-b010-abb521a3f1be\\\",\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 1\"\n    },\n    {\n      \"code\": \"{\\n  \\\"calendario\\\": {\\n    \\\"expiracao\\\": 3600\\n  },\\n  \\\"devedor\\\": {\\n    \\\"cnpj\\\": \\\"12345678000195\\\",\\n    \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n  },\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"37.00\\\"\\n  },\\n  \\\"chave\\\": \\\"ac107ed7-97cd-4fe7-8df5-a5f5659bf2f3\\\",\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\",\\n  \\\"infoAdicionais\\\": [\\n    {\\n      \\\"nome\\\": \\\"Campo 1\\\",\\n      \\\"valor\\\": \\\"Informação Adicional1 do PSP-Recebedor\\\"\\n    },\\n    {\\n      \\\"nome\\\": \\\"Campo 2\\\",\\n      \\\"valor\\\": \\\"Informação Adicional2 do PSP-Recebedor\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 2\"\n    }\n  ]\n}\n[/block]\n\nDados para geração da cobrança.\n\n<div class=\"tab2\">(*) Atributo obrigatório</div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"**calendario**\",\n    \"0-1\": \"Os campos aninhados sob o identificador **calendário **organizam informações a respeito de controle de tempo da cobrança.\\n\\ncalendario:\\n<div class=\\\"tab2\\\">`criacao*`// Timestamp que indica o momento em que foi criada a cobrança. Respeita o formato definido na RFC 3339. Mínimo de 1 caractere e máximo de 255 caracteres (String).\\n\\n`apresentacao*`// Timestamp que indica o momento em que o payload JSON que representa a cobrança foi recuperado. Ou seja, idealmente, é o momento em que o usuário realizou a captura do QR Code para verificar os dados de pagamento. Respeita o formato definido na RFC 3339. string date-time (Timestamp de apresentação do QR Code)\\n\\n`expiracao`// Tempo de vida da cobrança, especificado em segundos a partir da data de criação (Calendario.criacao). Recebe um numero com valor mínimo de 1 e máximo integer int32, passado como integer.</div>\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"object (Calendário)\",\n    \"1-0\": \"**devedor**\",\n    \"1-1\": \"Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo pagador.cpf e campo pagador.cnpj estejam preenchidos ao mesmo tempo. Se o campo pagador.cnpj está preenchido, então o campo pagador.cpf não pode estar preenchido, e vice-versa. Se o campo pagador.nome está preenchido, então deve existir ou um pagador.cpf ou um campo pagador.cnpj preenchido.\\n\\ndevedor:\\n<div class=\\\"tab2\\\">`cpf*`// CPF do usuário pagador.string `/^\\\\d{11}$/`\\n\\n`nome*`// Nome do usuário pagador. string (Nome) `≤ 200 characters`</div>\",\n    \"1-2\": \"Não\",\n    \"1-3\": \"Pessoa Física (object) or Pessoa Jurídica (object)\",\n    \"2-0\": \"**valor** \",\n    \"2-1\": \"Todos os campos que indicam valores monetários obedecem ao formato do ID 54 da especificação EMV/BR Code para QR Codes. O separador decimal é o caractere ponto. Não é aplicável utilizar separador de milhar. Exemplos de valores aderentes ao padrão: “0.00”, “1.00”, “123.99”, “123456789.23”\\n\\n<br>\\n\\nvalor:\\n<div class=\\\"tab2\\\">  `original*`// Valor original da cobrança.string `\\\\d{1,10}\\\\.\\\\d{2}`</div>\",\n    \"2-2\": \"Sim\",\n    \"2-3\": \"object\",\n    \"3-0\": \"**chave** \",\n    \"3-1\": \"O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.\",\n    \"3-2\": \"Sim\",\n    \"3-3\": \"string (Chave DICT do recebedor) `≤ 77 characters`\",\n    \"4-0\": \"**solicitacaoPagador** \",\n    \"4-1\": \"O campo `solicitacaoPagador*`, opcional, determina um texto a ser apresentado ao pagador para que ele possa digitar uma informação correlata, em formato livre, a ser enviada ao recebedor. Esse texto será preenchido, na pacs.008, pelo PSP do pagador, no campo RemittanceInformation . O tamanho do campo na pacs.008 está limitado a 140 caracteres.\",\n    \"4-2\": \"Não\",\n    \"4-3\": \"string (Solicitação ao pagador)`≤ 140 characters`\",\n    \"5-0\": \"**infoAdicionais** \",\n    \"5-1\": \"Cada respectiva informação adicional contida na lista (nome e valor) deve ser apresentada ao pagador.\\n\\ninfoAdicionais:\\n<div class=\\\"tab2\\\">`nome*`// Nome do campo string (Nome) `≤ 50 characters`\\n\\n`valor*`// Dados do campo string (Valor) `≤ 200 characters` </div>\",\n    \"5-2\": \"Não\",\n    \"5-3\": \"Array of objects (Informações adicionais) `≤ 50`\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(201) e Falhas/erros do consumo.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"calendario\\\": {\\n    \\\"criacao\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n    \\\"expiracao\\\": 3600\\n  },\\n  \\\"txid\\\": \\\"7978c0c97ea847e78e8849634473c1f1\\\",\\n  \\\"revisao\\\": 0,\\n  \\\"loc\\\": {\\n    \\\"id\\\": 789,\\n    \\\"location\\\": \\\"pix.example.com/qr/v2/9d36b84fc70b478fb95c12729b90ca25\\\",\\n    \\\"tipoCob\\\": \\\"cob\\\"\\n  },\\n  \\\"location\\\": \\\"pix.example.com/qr/v2/9d36b84fc70b478fb95c12729b90ca25\\\",\\n  \\\"status\\\": \\\"ATIVA\\\",\\n  \\\"devedor\\\": {\\n    \\\"cnpj\\\": \\\"12345678000195\\\",\\n    \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n  },\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"567.89\\\"\\n  },\\n  \\\"chave\\\": \\\"a1f4102e-a446-4a57-bcce-6fa48899c1d1\\\",\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"201\"\n    },\n    {\n      \"code\": \"InvalidOperationError\\n{\\n  \\\"nome\\\": \\\"documento_bloqueado\\\",\\n  \\\"mensagem\\\": \\\"O documento desta conta tem bloqueios que impedem a emissão\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"DuplicatedRegisterError\\n{\\n  \\\"nome\\\": \\\"txid_duplicado\\\",\\n  \\\"mensagem\\\": \\\"Campo txid informado já foi utilizado em outra cobrança\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"409\"\n    },\n    {\n      \"code\": \"ApplicationError\\n{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao validar a chave\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Criar cobrança imediata (com txid)\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method put\\\">PUT</span>\\n    <span class=\\\"endpoint\\\">/v2/cob/<span class=\\\"variable\\\">:txid</span></span>\\n</div>\"\n}\n[/block]\nEndpoint para cadastrar uma cobrança com um identificador de transação (`txid`).\n\n**Requer autorização para o escopo**: **`cob.write`** \n\n#### Requisição\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"calendario\\\": {\\n    \\\"expiracao\\\": 3600\\n  },\\n  \\\"devedor\\\": {\\n    \\\"cpf\\\": \\\"12345678908\\\",\\n    \\\"nome\\\": \\\"Francisco da Silva\\\"\\n  },\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"123.45\\\"\\n  },\\n  \\\"chave\\\": \\\"71cdf9ba-c695-4e3c-b010-abb521a3f1be\\\",\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 1\"\n    },\n    {\n      \"code\": \"{\\n  \\\"calendario\\\": {\\n    \\\"expiracao\\\": 3600\\n  },\\n  \\\"devedor\\\": {\\n    \\\"cnpj\\\": \\\"12345678000195\\\",\\n    \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n  },\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"37.00\\\"\\n  },\\n  \\\"chave\\\": \\\"ac107ed7-97cd-4fe7-8df5-a5f5659bf2f3\\\",\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\",\\n  \\\"infoAdicionais\\\": [\\n    {\\n      \\\"nome\\\": \\\"Campo 1\\\",\\n      \\\"valor\\\": \\\"Informação Adicional1 do PSP-Recebedor\\\"\\n    },\\n    {\\n      \\\"nome\\\": \\\"Campo 2\\\",\\n      \\\"valor\\\": \\\"Informação Adicional2 do PSP-Recebedor\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 2\"\n    }\n  ]\n}\n[/block]\n\n<div class=\"tab2\">(*) Atributo obrigatório</div>\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"**txid** \",\n    \"0-1\": \"**Identificador da transação** \\nO campo txid determina o identificador da transação. Para mais detalhes [clique aqui](doc:api-pix-glossario).\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string (Id da Transação)`^[a-zA-Z0-9]{26,35}$`\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\nDados para geração da cobrança.\n\n<div class=\"tab2\">(*) Atributo obrigatório</div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"**calendario**\",\n    \"0-1\": \"Os campos aninhados sob o identificador **calendário **organizam informações a respeito de controle de tempo da cobrança.\\n\\ncalendario:\\n<div class=\\\"tab2\\\">`criacao*`// Timestamp que indica o momento em que foi criada a cobrança. Respeita o formato definido na RFC 3339. Mínimo de 1 caractere e máximo de 255 caracteres (String).\\n\\n`apresentacao*`// Timestamp que indica o momento em que o payload JSON que representa a cobrança foi recuperado. Ou seja, idealmente, é o momento em que o usuário realizou a captura do QR Code para verificar os dados de pagamento. Respeita o formato definido na RFC 3339. string date-time (Timestamp de apresentação do QR Code)\\n\\n`expiracao`// Tempo de vida da cobrança, especificado em segundos a partir da data de criação (Calendario.criacao). Recebe um numero com valor mínimo de 1 e máximo integer int32, passado como integer.</div>\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"object (Calendário)\",\n    \"1-0\": \"**devedor**\",\n    \"1-1\": \"Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo pagador.cpf e campo pagador.cnpj estejam preenchidos ao mesmo tempo. Se o campo pagador.cnpj está preenchido, então o campo pagador.cpf não pode estar preenchido, e vice-versa. Se o campo pagador.nome está preenchido, então deve existir ou um pagador.cpf ou um campo pagador.cnpj preenchido.\\n\\ndevedor:\\n<div class=\\\"tab2\\\">`cpf*`// CPF do usuário pagador.string `/^\\\\d{11}$/`\\n\\n`nome*`// Nome do usuário pagador. string (Nome) `≤ 200 characters`</div>\",\n    \"1-2\": \"Não\",\n    \"1-3\": \"Pessoa Física (object) or Pessoa Jurídica (object)\",\n    \"2-0\": \"**valor** \",\n    \"2-1\": \"Todos os campos que indicam valores monetários obedecem ao formato do ID 54 da especificação EMV/BR Code para QR Codes. O separador decimal é o caractere ponto. Não é aplicável utilizar separador de milhar. Exemplos de valores aderentes ao padrão: “0.00”, “1.00”, “123.99”, “123456789.23”\\n\\n<br>\\n\\nvalor:\\n<div class=\\\"tab2\\\">  `original*`// Valor original da cobrança.string `\\\\d{1,10}\\\\.\\\\d{2}`</div>\",\n    \"2-2\": \"Sim\",\n    \"2-3\": \"object\",\n    \"3-0\": \"**chave** \",\n    \"3-1\": \"O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.\",\n    \"3-2\": \"Sim\",\n    \"3-3\": \"string (Chave DICT do recebedor) `≤ 77 characters`\",\n    \"4-0\": \"**solicitacaoPagador** \",\n    \"4-1\": \"O campo `solicitacaoPagador*`, opcional, determina um texto a ser apresentado ao pagador para que ele possa digitar uma informação correlata, em formato livre, a ser enviada ao recebedor. Esse texto será preenchido, na pacs.008, pelo PSP do pagador, no campo RemittanceInformation . O tamanho do campo na pacs.008 está limitado a 140 caracteres.\",\n    \"4-2\": \"Não\",\n    \"4-3\": \"string (Solicitação ao pagador)`≤ 140 characters`\",\n    \"5-0\": \"**infoAdicionais** \",\n    \"5-1\": \"Cada respectiva informação adicional contida na lista (nome e valor) deve ser apresentada ao pagador.\\n\\ninfoAdicionais:\\n<div class=\\\"tab2\\\">`nome*`// Nome do campo string (Nome) `≤ 50 characters`\\n\\n`valor*`// Dados do campo string (Valor) `≤ 200 characters` </div>\",\n    \"5-2\": \"Não\",\n    \"5-3\": \"Array of objects (Informações adicionais) `≤ 50`\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(201) e Falhas/erros do consumo.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"calendario\\\": {\\n    \\\"criacao\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n    \\\"expiracao\\\": 3600\\n  },\\n  \\\"txid\\\": \\\"7978c0c97ea847e78e8849634473c1f1\\\",\\n  \\\"revisao\\\": 0,\\n  \\\"loc\\\": {\\n    \\\"id\\\": 789,\\n    \\\"location\\\": \\\"pix.example.com/qr/v2/9d36b84fc70b478fb95c12729b90ca25\\\",\\n    \\\"tipoCob\\\": \\\"cob\\\"\\n  },\\n  \\\"location\\\": \\\"pix.example.com/qr/v2/9d36b84fc70b478fb95c12729b90ca25\\\",\\n  \\\"status\\\": \\\"ATIVA\\\",\\n  \\\"devedor\\\": {\\n    \\\"cnpj\\\": \\\"12345678000195\\\",\\n    \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n  },\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"567.89\\\"\\n  },\\n  \\\"chave\\\": \\\"a1f4102e-a446-4a57-bcce-6fa48899c1d1\\\",\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"201\"\n    },\n    {\n      \"code\": \"InvalidOperationError\\n{\\n  \\\"nome\\\": \\\"documento_bloqueado\\\",\\n  \\\"mensagem\\\": \\\"O documento desta conta tem bloqueios que impedem a emissão\\\"\\n}\\n\\nOu\\n\\n{\\n  \\\"nome\\\": \\\"chave_invalida\\\",\\n  \\\"mensagem\\\": \\\"A chave informada não faz referência à conta Gerencianet autenticada\\\"\\n}\\n\\nInvalidValueError\\n{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"Campo valor.original deve ser maior que zero\\\"\\n}\\n\\nOu\\n\\n{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"Campo calendario.expiracao deve ser maior que zero\\\"\\n}\\n\\nOu\\n\\n{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"Documento CPF em devedor.cpf é inválido\\\"\\n}\\n\\n{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"Documento CNPJ em devedor.cnpj é inválido\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"DuplicatedRegisterError\\n{\\n  \\\"nome\\\": \\\"txid_duplicado\\\",\\n  \\\"mensagem\\\": \\\"Campo txid informado já foi utilizado em outra cobrança\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"409\"\n    },\n    {\n      \"code\": \"ApplicationError\\n{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao validar a chave\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Revisar cobrança\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method put\\\">PATCH</span>\\n    <span class=\\\"endpoint\\\">/v2/cob/<span class=\\\"variable\\\">:txid</span></span>\\n</div>\"\n}\n[/block]\nEndpoint para revisar (modificar) uma cobrança a partir do seu `txid`.\n\n**Requer autorização para o escopo**: **`cob.write`** \n\n#### Requisição\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"loc\\\": {\\n    \\\"id\\\": 7768\\n  },\\n  \\\"devedor\\\": {\\n    \\\"cpf\\\": \\\"12345678909\\\",\\n    \\\"nome\\\": \\\"Francisco da Silva\\\"\\n  },\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"123.45\\\"\\n  },\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 1\"\n    },\n    {\n      \"code\": \"{\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"567.89\\\"\\n  },\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 2\"\n    },\n    {\n      \"code\": \"{\\n  \\\"status\\\": \\\"REMOVIDA_PELO_USUARIO_RECEBEDOR\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 3\"\n    }\n  ]\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"**txid** \",\n    \"0-1\": \"**Identificador da transação** \\nO campo txid determina o identificador da transação. Para mais detalhes [clique aqui](doc:api-pix-glossario).\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string (Id da Transação)`^[a-zA-Z0-9]{26,35}$`\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\nDados para alteração da cobrança.\n\n<div class=\"tab2\">(*) Atributo obrigatório</div>\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"**calendario** \",\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-1\": \"Os campos aninhados sob o identificador calendário organizam informações a respeito de controle de tempo da cobrança.\\n\\ncalendario:\\n<div class=\\\"tab2\\\">`criacao*` // Timestamp que indica o momento em que foi criada a cobrança. Respeita o formato definido na RFC 3339. Mínimo de 1 caractere e máximo de 255 caracteres (String).\\n\\n`apresentacao*` // Timestamp que indica o momento em que o payload JSON que representa a cobrança foi recuperado. Ou seja, idealmente, é o momento em que o usuário realizou a captura do QR Code para verificar os dados de pagamento. Respeita o formato definido na RFC 3339. string date-time (Timestamp de apresentação do QR Code)\\n\\n `expiracao` // Tempo de vida da cobrança, especificado em segundos a partir da data de criação (Calendario.criacao). Recebe um numero com valor mínimo de 1 e máximo integer int32, passado como integer.</div>\",\n    \"0-2\": \"Não\",\n    \"0-3\": \"object (Calendário)\",\n    \"1-0\": \"**status** \",\n    \"1-1\": \"Enum: `\\\"ATIVA\\\"`,\\n\\n`\\\"CONCLUIDA\\\"`,\\n\\n`\\\"REMOVIDA_PELO_USUARIO_RECEBEDOR\\\"`,\\n\\n`\\\"REMOVIDA_PELO_PSP\\\"`\",\n    \"1-2\": \"Não\",\n    \"1-3\": \"string (Status da Cobrança)\",\n    \"2-0\": \"**devedor** \",\n    \"2-1\": \"Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo pagador.cpf e campo pagador.cnpj estejam preenchidos ao mesmo tempo. Se o campo pagador.cnpj está preenchido, então o campo pagador.cpf não pode estar preenchido, e vice-versa. Se o campo pagador.nome está preenchido, então deve existir ou um pagador.cpf ou um campo pagador.cnpj preenchido.\\n\\n*devedor:* \\n<div class=\\\"tab2\\\">`cpf*` // CPF do usuário pagador.string` /^\\\\d{11}$/`\\n\\n`nome*` // Nome do usuário pagador. string (Nome) `≤ 200 characters`</div>\",\n    \"3-0\": \"<b>valor</b>\",\n    \"3-1\": \"Todos os campos que indicam valores monetários obedecem ao formato do ID 54 da especificação EMV/BR Code para QR Codes. O separador decimal é o caractere ponto. Não é aplicável utilizar separador de milhar. Exemplos de valores aderentes ao padrão: “0.00”, “1.00”, “123.99”, “123456789.23”<br><br> <em>valor:</em><br>`original*` // Valor original da cobrança. string `\\\\d{1,10}\\\\.\\\\d{2}`\",\n    \"3-2\": \"Não\",\n    \"3-3\": \"object\",\n    \"5-0\": \"<b>solicitacaoPagador</b>\",\n    \"5-1\": \"O campo solicitacaoPagador, opcional, determina um texto a ser apresentado ao pagador para que ele possa digitar uma informação correlata, em formato livre, a ser enviada ao recebedor. Esse texto será preenchido, na pacs.008, pelo PSP do pagador, no campo RemittanceInformation . O tamanho do campo na pacs.008 está limitado a 140 caracteres.\",\n    \"5-2\": \"Não\",\n    \"5-3\": \"string (Solicitação ao pagador)`<= 140 characters`\",\n    \"7-0\": \"<b>infoAdicionais</b>\",\n    \"7-1\": \"Cada respectiva informação adicional contida na lista (nome e valor) deve ser apresentada ao pagador.<br/><br> <em>infoAdicionais:</em><br>`nome*` // Nome do campo string (Nome) `< 50 characters`<br><br> `valor*`// Dados do campo string (Valor) `< 200 characters`\",\n    \"7-2\": \"Não\",\n    \"7-3\": \"Array of objects (Informações adicionais)`<= 50`\",\n    \"2-2\": \"Não\",\n    \"2-3\": \"Pessoa Física (object) or Pessoa Jurídica (object)\",\n    \"6-0\": \"<b>chave</b>\",\n    \"6-1\": \"O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.\",\n    \"6-2\": \"Não\",\n    \"6-3\": \"string (Chave DICT do recebedor) `≤ 77 characters`\",\n    \"4-0\": \"<b>loc</b>\",\n    \"4-1\": \"Identificador da localização do payload.\\n\\n<em>loc:</em><br>`id*` // ID da location a ser associada a cobrança. int32\",\n    \"4-2\": \"Não\",\n    \"4-3\": \"object\"\n  },\n  \"cols\": 4,\n  \"rows\": 8\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"status\\\": \\\"ATIVA\\\",\\n  \\\"calendario\\\": {\\n    \\\"criacao\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n    \\\"expiracao\\\": 3600\\n  },\\n  \\\"location\\\": \\\"pix.example.com/qr/9d36b84f-c70b-478f-b95c-12729b90ca25\\\",\\n  \\\"txid\\\": \\\"7978c0c97ea847e78e8849634473c1f1\\\",\\n  \\\"revisao\\\": 1,\\n  \\\"devedor\\\": {\\n    \\\"cnpj\\\": \\\"12345678000195\\\",\\n    \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n  },\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"567.89\\\"\\n  },\\n  \\\"chave\\\": \\\"a1f4102e-a446-4a57-bcce-6fa48899c1d1\\\",\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"UnknownRegisterError\\n{\\n  \\\"nome\\\": \\\"cobranca_nao_encontrada\\\",\\n  \\\"mensagem\\\": \\\"Nenhuma cobrança encontrada para o txid informado\\\"\\n}\\n\\nInvalidOperationError\\n{\\n  \\\"nome\\\": \\\"status_cobranca_invalido\\\",\\n  \\\"mensagem\\\": \\\"A cobrança não está mais com o status ATIVA\\\"\\n}\\n\\nOu\\n\\n{\\n  \\\"nome\\\": \\\"chave_invalida\\\",\\n  \\\"mensagem\\\": \\\"A chave informada não faz referência à conta Gerencianet autenticada\\\"\\n}\\n\\n\\nInvalidValueError\\n{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"Campo calendario.expiracao deve ser maior que zero\\\"\\n}\\n\\nOu\\n\\n{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"Documento CPF em devedor.cpf é inválido\\\"\\n}\\n\\nOu\\n\\n{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"Documento CNPJ em devedor.cnpj é inválido\\\"\\n}\\n\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"DuplicatedRegisterError\\n{\\n  \\\"nome\\\": \\\"txid_duplicado\\\",\\n  \\\"mensagem\\\": \\\"Campo txid informado já foi utilizado em outra cobrança\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"409\"\n    },\n    {\n      \"code\": \"ApplicationError\\n{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao validar a chave\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Consultar cobrança\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/cob/<span class=\\\"variable\\\">:txid</span></span>\\n</div>\"\n}\n[/block]\nEndpoint para consultar uma cobrança a partir do `txid`.\n\nTambém é possível consultar informações de uma revisão específica de uma cobrança. Para isso é necessário informar o *query param* `revisao`. Exemplo: `/v2/cob/:txid/?revisao=1`. Quando o parâmetro não é informado, a revisão mais recente é retornada como padrão.\n\n**Requer autorização para o escopo**: **`cob.read`** \n\n#### Requisição\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<b>txid</b>\",\n    \"0-1\": \"<b>Identificador da transação</b><br>O campo txid determina o identificador da transação. Para mais detalhes [clique aqui](doc:api-pix-glossario).\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string (Id da Transação)`^[a-zA-Z0-9]{26,35}$`\",\n    \"1-0\": \"<b>revisao</b>\",\n    \"1-1\": \"Permite recuperar revisões anteriores de uma cobrança. Na ausência desse parâmetro, sempre será retornada a cobrança conforme consta em sua última revisão.\",\n    \"1-3\": \"integer($int32)\",\n    \"1-2\": \"Não\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"status\\\": \\\"ATIVA\\\",\\n  \\\"calendario\\\": {\\n    \\\"criacao\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n    \\\"expiracao\\\": \\\"3600\\\"\\n  },\\n  \\\"location\\\": \\\"pix.example.com/qr/9d36b84f-c70b-478f-b95c-12729b90ca25\\\",\\n  \\\"txid\\\": \\\"7978c0c97ea847e78e8849634473c1f1\\\",\\n  \\\"revisao\\\": 1,\\n  \\\"devedor\\\": {\\n    \\\"cnpj\\\": \\\"12345678000195\\\",\\n    \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n  },\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"567.89\\\"\\n  },\\n  \\\"chave\\\": \\\"a1f4102e-a446-4a57-bcce-6fa48899c1d1\\\",\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 1 (200)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"status\\\": \\\"CONCLUIDA\\\",\\n  \\\"calendario\\\": {\\n    \\\"criacao\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n    \\\"expiracao\\\": \\\"3600\\\"\\n  },\\n  \\\"location\\\": \\\"qrcodes-pix.gerencianet.com.br/1dd7f893-a58e-4172-8702-8dc33e21a403\\\",\\n  \\\"txid\\\": \\\"655dfdb1-a451-4b8f-bb58-254b958913fb\\\",\\n  \\\"revisao\\\": 1,\\n  \\\"devedor\\\": {\\n    \\\"cnpj\\\": \\\"12345678000195\\\",\\n    \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n  },\\n  \\\"valor\\\": {\\n    \\\"original\\\": \\\"100.00\\\"\\n  },\\n  \\\"chave\\\": \\\"40a0932d-1918-4eee-845d-35a2da1690dc\\\",\\n  \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\",\\n  \\\"pix\\\": [\\n    {\\n      \\\"endToEndId\\\": \\\"E12345678202009091221kkkkkkkkkkk\\\",\\n      \\\"txid\\\": \\\"655dfdb1-a451-4b8f-bb58-254b958913fb\\\",\\n      \\\"valor\\\": \\\"110.00\\\",\\n      \\\"horario\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n      \\\"infoPagador\\\": \\\"0123456789\\\",\\n      \\\"devolucoes\\\": [\\n        {\\n          \\\"id\\\": \\\"123ABC\\\",\\n          \\\"rtrId\\\": \\\"Dxxxxxxxx202009091221kkkkkkkkkkk\\\",\\n          \\\"valor\\\": \\\"10.00\\\",\\n          \\\"horario\\\": {\\n            \\\"solicitacao\\\": \\\"2020-09-09T20:15:00.358Z\\\"\\n          },\\n          \\\"status\\\": \\\"EM_PROCESSAMENTO\\\"\\n        }\\n      ]\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 2 (200)\"\n    },\n    {\n      \"code\": \"UnknownRegisterError\\n{\\n  \\\"nome\\\": \\\"cobranca_nao_encontrada\\\",\\n  \\\"mensagem\\\": \\\"Nenhuma cobrança encontrada para o txid informado\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n\n### Consultar lista de cobranças\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/cob/</span>\\n</div>\"\n}\n[/block]\nEndpoint para consultar várias cobranças.\n\nEste endpoint possui filtros para afunilar os resultados da busca, tais como CPF/CNPJ e *status*. Dentre todos os filtros disponíveis, os filtros `inicio` e `fim` são obrigatórios e representam o intervalo de datas em que as cobranças consultadas devem estar compreendidas.\n\n**Requer autorização para o escopo**: **`cob.read`** \n\n#### Requisição\n\nO trecho de código abaixo ilustra o consumo do endpoint em uma requisição com o mínimo de parâmetros possível (o intervalo de datas `inicio` e `fim`) e o formato em que esses parâmetros devem ser repassados.\n\n```\n/v2/cob?inicio=2020-10-22T16:01:35Z&fim=2020-11-30T20:10:00Z\n```\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<b>inicio</b>\",\n    \"0-1\": \"Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339.\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string <date-time>\",\n    \"1-0\": \"<b>fim</b>\",\n    \"1-1\": \"Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339.\",\n    \"1-2\": \"Sim\",\n    \"1-3\": \"string <date-time>\",\n    \"2-0\": \"<b>cpf</b>\",\n    \"2-1\": \"Filtro pelo CPF do pagador. Não pode ser utilizado ao mesmo tempo que o CNPJ.\",\n    \"2-2\": \"Não\",\n    \"2-3\": \"string `/^\\\\d{11}$/`\",\n    \"3-0\": \"<b>cnpj</b>\",\n    \"3-1\": \"Filtro pelo CNPJ do pagador. Não pode ser utilizado ao mesmo tempo que o CPF.\",\n    \"3-2\": \"Não\",\n    \"3-3\": \"string`/^\\\\d{14}$/`\",\n    \"4-0\": \"<b>status</b>\",\n    \"4-1\": \"Enum: `\\\"ATIVA\\\"`,`\\\"CONCLUIDA\\\"`,<br> `\\\"REMOVIDA_PELO_USUARIO_RECEBEDOR\\\"`,<br> `\\\"REMOVIDA_PELO_PSP\\\"`\\n Filtro pelo status da cobrança.\",\n    \"4-2\": \"Não\",\n    \"4-3\": \"string\",\n    \"5-0\": \"<b>paginacao.paginaAtual</b>\",\n    \"5-1\": \"Default: `0`<br> Página a ser retornada pela consulta. Se não for informada, o PSP assumirá que será 0.\",\n    \"5-2\": \"Não\",\n    \"5-3\": \"integer {int32} (Página atual)  `>= 0`\",\n    \"6-0\": \"<b>paginacao.itensPorPagina</b>\",\n    \"6-1\": \"Default: `100`<br> Quantidade máxima de registros retornados em cada página. Apenas a última página pode conter uma quantidade menor de registros.\",\n    \"6-2\": \"Não\",\n    \"6-3\": \"integer {int32} (Página atual)  `[1 .. 1000]`\"\n  },\n  \"cols\": 4,\n  \"rows\": 7\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"parametros\\\": {\\n    \\\"inicio\\\": \\\"2020-04-01T00:00:00Z\\\",\\n    \\\"fim\\\": \\\"2020-04-02T10:00:00Z\\\",\\n    \\\"paginacao\\\": {\\n      \\\"paginaAtual\\\": 0,\\n      \\\"itensPorPagina\\\": 100,\\n      \\\"quantidadeDePaginas\\\": 1,\\n      \\\"quantidadeTotalDeItens\\\": 2\\n    }\\n  },\\n  \\\"cobs\\\": [\\n    {\\n      \\\"status\\\": \\\"ATIVA\\\",\\n      \\\"calendario\\\": {\\n        \\\"criacao\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n        \\\"expiracao\\\": \\\"3600\\\"\\n      },\\n      \\\"location\\\": \\\"qrcodes-pix.gerencianet.com.br/9d36b84f-c70b-478f-b95c-12729b90ca25\\\",\\n      \\\"txid\\\": \\\"7978c0c97ea847e78e8849634473c1f1\\\",\\n      \\\"revisao\\\": 1,\\n      \\\"devedor\\\": {\\n        \\\"cnpj\\\": \\\"12345678000195\\\",\\n        \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n      },\\n      \\\"valor\\\": {\\n        \\\"original\\\": \\\"567.89\\\"\\n      },\\n      \\\"chave\\\": \\\"a1f4102e-a446-4a57-bcce-6fa48899c1d1\\\",\\n      \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\"\\n    },\\n    {\\n      \\\"status\\\": \\\"CONCLUIDA\\\",\\n      \\\"calendario\\\": {\\n        \\\"criacao\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n        \\\"expiracao\\\": \\\"3600\\\"\\n      },\\n      \\\"location\\\": \\\"qrcodes-pix.gerencianet.com.br/1dd7f893-a58e-4172-8702-8dc33e21a403\\\",\\n      \\\"txid\\\": \\\"655dfdb1a4514b8fbb58254b958913fb\\\",\\n      \\\"revisao\\\": 1,\\n      \\\"devedor\\\": {\\n        \\\"cnpj\\\": \\\"12345678000195\\\",\\n        \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n      },\\n      \\\"valor\\\": {\\n        \\\"original\\\": \\\"100.00\\\"\\n      },\\n      \\\"chave\\\": \\\"40a0932d-1918-4eee-845d-35a2da1690dc\\\",\\n      \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\",\\n      \\\"pix\\\": [\\n        {\\n          \\\"endToEndId\\\": \\\"E12345678202009091221kkkkkkkkkkk\\\",\\n          \\\"txid\\\": \\\"655dfdb1a4514b8fbb58254b958913fb\\\",\\n          \\\"valor\\\": \\\"110.00\\\",\\n          \\\"horario\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n          \\\"pagador\\\": {\\n            \\\"cnpj\\\": \\\"12345678000195\\\",\\n            \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n          },\\n          \\\"infoPagador\\\": \\\"0123456789\\\",\\n          \\\"devolucoes\\\": [\\n            {\\n              \\\"id\\\": \\\"123ABC\\\",\\n              \\\"rtrId\\\": \\\"Dxxxxxxxx202009091221kkkkkkkkkkk\\\",\\n              \\\"valor\\\": \\\"10.00\\\",\\n              \\\"horario\\\": {\\n                \\\"solicitacao\\\": \\\"2020-09-09T20:15:00.358Z\\\"\\n              },\\n              \\\"status\\\": \\\"EM_PROCESSAMENTO\\\"\\n            }\\n          ]\\n        }\\n      ]\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 1 (200)\"\n    },\n    {\n      \"code\": \" \\\"parametros\\\": {\\n    \\\"inicio\\\": \\\"2020-04-01T00:00:00Z\\\",\\n    \\\"fim\\\": \\\"2020-04-01T23:59:59Z\\\",\\n    \\\"paginacao\\\": {\\n      \\\"paginaAtual\\\": 0,\\n      \\\"itensPorPagina\\\": 100,\\n      \\\"quantidadeDePaginas\\\": 1,\\n      \\\"quantidadeTotalDeItens\\\": 1\\n    }\\n  },\\n  \\\"cobs\\\": [\\n    {\\n      \\\"status\\\": \\\"ATIVA\\\",\\n      \\\"calendario\\\": {\\n        \\\"criacao\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n        \\\"expiracao\\\": \\\"3600\\\"\\n      },\\n      \\\"location\\\": \\\"qrcodes-pix.gerencianet.com.br/9d36b84f-c70b-478f-b95c-12729b90ca25\\\",\\n      \\\"txid\\\": \\\"7978c0c9-7ea8-47e7-8e88-49634473c1f1\\\",\\n      \\\"revisao\\\": 1,\\n      \\\"devedor\\\": {\\n        \\\"cnpj\\\": \\\"12345678000195\\\",\\n        \\\"nome\\\": \\\"Empresa de Serviços SA\\\"\\n      },\\n      \\\"valor\\\": {\\n        \\\"original\\\": \\\"567.89\\\"\\n      },\\n      \\\"chave\\\": \\\"a1f4102e-a446-4a57-bcce-6fa48899c1d1\\\",\\n      \\\"solicitacaoPagador\\\": \\\"Informe o número ou identificador do pedido.\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 2 (200)\"\n    }\n  ]\n}\n[/block]\n\n## Pix\n\nOs endpoints a seguir trazem as funcionalidades disponíveis para a gestão das transações Pix, isto é, a manutenção dos recebimentos e envios de valores através do arranjo de pagamentos Pix.\n\n### Consultar Pix\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/pix/<span class=\\\"variable\\\">:e2eId</span></span>\\n</div>\"\n}\n[/block]\nEndpoint para consultar um Pix através de um *End to End ID* (`e2eid`).\n\n**Requer autorização para o escopo**: **`pix.read`** \n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Atenção!\",\n  \"body\": \"Este endpoint retorna apenas informações sobre **Pix recebidos**.\"\n}\n[/block]\n\n#### Requisição\n\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"<b>e2eid</b>\",\n    \"0-1\": \"EndToEndIdentification que transita na PACS002, PACS004 e PACS008\",\n    \"0-2\": \"Sim\",\n    \"h-2\": \"Obrigatório\",\n    \"h-1\": \"Descrição\",\n    \"h-0\": \"Atributo\",\n    \"h-3\": \"Tipo\",\n    \"0-3\": \"string (Id fim a fim da transação) \\n`32 characters` \\n`^[a-zA-Z0-9]{32}`\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"endToEndId\\\": \\\"E12345678202009091221abcdef12345\\\",\\n  \\\"txid\\\": \\\"cd1fe328c875481285a6f233ae41b662\\\",\\n  \\\"valor\\\": \\\"100.00\\\",\\n  \\\"horario\\\": \\\"2020-09-10T13:03:33.902Z\\\",\\n  \\\"infoPagador\\\": \\\"Reforma da casa\\\",\\n  \\\"devolucoes\\\": [\\n    {\\n      \\\"id\\\": \\\"000AAA111\\\",\\n      \\\"rtrId\\\": \\\"D12345678202009091000abcde123456\\\",\\n      \\\"valor\\\": \\\"11.00\\\",\\n      \\\"horario\\\": {\\n        \\\"solicitacao\\\": \\\"2020-09-10T13:03:33.902Z\\\"\\n      },\\n      \\\"status\\\": \\\"EM_PROCESSAMENTO\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 1 (200)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"endToEndId\\\": \\\"E12345678202009091221ghijk78901234\\\",\\n  \\\"txid\\\": \\\"5b933948f3224266b1050ac54319e775\\\",\\n  \\\"valor\\\": \\\"200.00\\\",\\n  \\\"horario\\\": \\\"2020-09-10T13:03:33.902Z\\\",\\n  \\\"infoPagador\\\": \\\"Revisão do carro\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 2 (200)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"pix_nao_encontrado\\\",\\n  \\\"mensagem\\\": \\\"Nenhum pix encontrado para o identificador informado\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao buscar o pix\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Consultar Pix recebidos\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/pix</span>\\n</div>\"\n}\n[/block]\nEndpoint para consultar vários Pix recebidos.\n\n**Requer autorização para o escopo**: **`pix.read`** \n\n#### Requisição\n\nEste endpoint dispõe de filtros para afunilar os resultados. Todos os filtros são do tipo *query params* , portanto devem ser enviados pela URL, como exemplificado no trecho de código abaixo.\n\n```\n/v2/pix?inicio=2020-04-01T00:00:00Z&fim=2020-04-01T23:59:59Z\n```\n\nOs filtros `inicio` e `fim` definem um intervalo de datas em que os Pix devem estar compreendidos para serem retornados. Esses filtros são obrigatórios.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<b>inicio</b>\",\n    \"1-0\": \"<b>fim</b>\",\n    \"2-0\": \"<b>txid</b>\",\n    \"3-0\": \"<b>txIdPresente</b>\",\n    \"4-0\": \"<b>devolucaoPresente</b>\",\n    \"5-0\": \"<b>cpf</b>\",\n    \"6-0\": \"<b>cnpj</b>\",\n    \"7-0\": \"<b>paginacao.paginaAtual</b>\",\n    \"8-0\": \"<b>paginacao.itensPorPagina</b>\",\n    \"0-1\": \"Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339.\",\n    \"0-3\": \"string <date-time> (Data de início)\",\n    \"1-1\": \"Filtra os registros cuja data de criação seja menor ou igual que a data de fim. Respeita RFC 3339.\",\n    \"1-3\": \"string <date-time> (Data de início)\",\n    \"2-1\": \"<b>Identificador da transação</b><br>O campo txid determina o identificador da transação. O objetivo desse campo é ser um elemento que possibilite ao PSP do recebedor apresentar ao usuário recebedor a funcionalidade de conciliação de pagamentos.\\n\\nNa pacs.008, é referenciado como  `TransactionIdentification <txid>` ou  `idConciliacaoRecebedor`.\\n\\nEm termos de fluxo de funcionamento, o txid é lido pelo aplicativo do PSP do pagador e, depois de confirmado o pagamento, é enviado para o SPI via pacs.008. Uma pacs.008 também é enviada ao PSP do recebedor, contendo, além de todas as informações usuais do pagamento, o txid. Ao perceber um recebimento dotado de txid, o PSP do recebedor está apto a se comunicar com o usuário recebedor, informando que um pagamento específico foi liquidado.\\n\\nO txid é criado exclusivamente pelo usuário recebedor e está sob sua responsabilidade. O txid, no contexto de representação de uma cobrança, é único por CPF/CNPJ do usuário recebedor. Cabe ao PSP recebedor validar essa regra na API Pix.\",\n    \"2-3\": \"`[a-zA-Z0-9]{26,35}`\",\n    \"3-1\": \"boolean\",\n    \"4-1\": \"boolean\",\n    \"5-3\": \"string (CPF) `/^\\\\d{11}$/`\",\n    \"5-1\": \"Filtro pelo CPF do pagador. Não pode ser utilizado ao mesmo tempo que o CNPJ.\",\n    \"6-1\": \"Filtro pelo CNPJ do pagador. Não pode ser utilizado ao mesmo tempo que o CPF.\",\n    \"7-1\": \"Default: `0`\\nPágina a ser retornada pela consulta. Se não for informada, o PSP assumirá que será 0.\",\n    \"8-1\": \"Default: `100`\\nQuantidade máxima de registros retornados em cada página. Apenas a última página pode conter uma quantidade menor de registros.\",\n    \"6-3\": \"string (CNPJ) `/^\\\\d{14}$/`\",\n    \"7-3\": \"integer <int32> (Página atual) >= 0\",\n    \"8-3\": \"integer <int32> (Itens por Página) [ 1 .. 1000 ]\",\n    \"0-2\": \"Sim\",\n    \"1-2\": \"Sim\",\n    \"2-2\": \"Não\",\n    \"3-2\": \"Não\",\n    \"4-2\": \"Não\",\n    \"5-2\": \"Não\",\n    \"6-2\": \"Não\",\n    \"7-2\": \"Não\",\n    \"8-2\": \"Não\"\n  },\n  \"cols\": 4,\n  \"rows\": 9\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"parametros\\\": {\\n    \\\"inicio\\\": \\\"2020-04-01T00:00:00Z\\\",\\n    \\\"fim\\\": \\\"2020-04-01T23:59:59Z\\\",\\n    \\\"paginacao\\\": {\\n      \\\"paginaAtual\\\": 0,\\n      \\\"itensPorPagina\\\": 100,\\n      \\\"quantidadeDePaginas\\\": 1,\\n      \\\"quantidadeTotalDeItens\\\": 2\\n    }\\n  },\\n  \\\"pix\\\": [\\n    {\\n      \\\"$ref\\\": \\\"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/pixResponse1/value\\\"\\n    },\\n    {\\n      \\\"$ref\\\": \\\"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/pixResponse2/value\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"Campo de data fim deve ser maior ou igual ao campo de data inicio\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao buscar pix recebidos\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Requisitar envio de Pix\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method post\\\">POST</span>\\n    <span class=\\\"endpoint\\\">/v2/pix</span>\\n</div>\"\n}\n[/block]\n\nEndpoint destinado a realizar o envio direto de um Pix para uma chave Pix cadastrada em um PSP seja da Gerencianet ou outro.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Atenção\",\n  \"body\": \"Para habilitar o endpoint pix/enviar é necessário preencher [este formulário](https://www.cognitoforms.com/GerencianetPagamentos1/Formul%C3%A1rioDeSolicita%C3%A7%C3%A3oDePermiss%C3%A3oParaEnvioDeValoresPixViaAPI). Após o preenchimento, basta aguardar que entraremos em contato.\\n\\nLiberamos uma versão de testes por 15 dias que pode ser solicitada tanto por pessoa física quanto jurídica. O procedimento é o mesmo, preencher o formulário indicado.\"\n}\n[/block]\nO endpoint poderá sofrer alterações quando entrar no escopo de padronização do BACEN. Os clientes habilitados serão avisados com antecedência.\n\n**Requer autorização para o escopo**: **`pix.send`** \n\n#### Requisição\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"valor\\\": \\\"12.34\\\",\\n  \\\"pagador\\\": {\\n    \\\"chave\\\": \\\"19974764017\\\"\\n  },\\n  \\\"favorecido\\\": {\\n    \\\"chave\\\": \\\"joão:::at:::meuemail.com\\\"\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 1\"\n    },\n    {\n      \"code\": \"{\\n  \\\"valor\\\": \\\"99.99\\\",\\n  \\\"pagador\\\": {\\n    \\\"chave\\\": \\\"19974764017\\\",\\n    \\\"infoPagador\\\": \\\"Segue o pagamento da conta\\\"\\n  },\\n  \\\"favorecido\\\": {\\n    \\\"contaBanco\\\": {\\n      \\\"nome\\\": \\\"JOSE CARVALHO\\\",\\n      \\\"cpf\\\": \\\"10519952057\\\",\\n      \\\"codigoBanco\\\": \\\"09089356\\\",\\n      \\\"agencia\\\": \\\"1\\\",\\n      \\\"conta\\\": \\\"123453\\\",\\n      \\\"tipoConta\\\": \\\"cacc\\\"\\n    }\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 2\"\n    }\n  ]\n}\n[/block]\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<b>valor\",\n    \"0-1\": \"Valores monetários referentes à cobrança.\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string \\n`\\\\d{1,10}\\\\.\\\\d{2}`\",\n    \"1-0\": \"<b>pagador\",\n    \"1-1\": \"O campo pagador contém a chave Pix associada a conta autenticada que será debitado o valor definido.\\n\\npagador:\\n\\n`chave*` // O campo chave determina a chave Pix registrada no DICT que será utilizada identificar o pagador do Pix.\\nstring (Chave DICT do pagador) `≤ 77 characters`\\n\\n`infoPagador` // Informação do pagador sobre o Pix a ser enviado.\\n\\nstring `< 140`\",\n    \"1-2\": \"Sim\",\n    \"1-3\": \"object\",\n    \"2-0\": \"<b>favorecido</b>\",\n    \"2-2\": \"Sim\",\n    \"2-1\": \"O campo favorecido contém a chave Pix que será creditado o valor definido.\\n\\nAtributos favorecido:\\n\\n`chave` // O campo chave determina a chave Pix registrada no DICT que será utilizada identificar o recebedor do Pix.\\n\\n  string (Chave DICT do recebedor) `≤ 77 characters`\\n<br><br>\\n`contaBanco` // O campo contaBanco determina os dados bancários do recebedor do Pix.\\n\\n<em>Atributos contaBanco:</em>\\n<br>`nome (Obrigatório)`// Nome do recebedor (string) `<  200 characters`<br>\\n`cpf` // CPF do recebedor (string) `^[0-9]{11}$`<br>\\n`cnpj` // CNPJ do recebedor (string) `^[0-9]{14}$`<br>\\n`codigoBanco (Obrigatório)`// <a href=\\\"https://www.bcb.gov.br/pom/spb/estatistica/port/ASTR003.pdf\\\" target=\\\"_blank\\\">ISPB do Banco do recebedor</a> (string) `^[0-9]{8}$`<br>\\n`agencia (Obrigatório)` // Agência do recebedor no seu Banco, sem o dígito verificador (string) `^[0-9]{1,4}$`<br> \\n`conta (Obrigatório)`// Conta do recebedor no seu Banco com o dígito verificador, sem traço - (string) `^[0-9]+`\\n<br>\\n`tipoConta (Obrigatório)` // Tipo da conta do recebedor no seu Banco (string) `^[0-9]+`<br>Enum: `\\\"cacc\\\"` (Conta corrente),\\n`\\\"svgs\\\"` (poupança)\",\n    \"2-3\": \"object\",\n    \"3-0\": \"<b>status</b>\",\n    \"3-1\": \"O campo status no retorno do webhook representa a situação da requisição de envio direto de um Pix para uma chave Pix, podendo assumir os seguintes estados:\\n`\\\"EM_PROCESSAMENTO\\\"`, `\\\"REALIZADO\\\"`, `\\\"NAO_REALIZADO\\\"`\",\n    \"3-2\": \"Não\",\n    \"3-3\": \"string\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"e2eId\\\": \\\"E09089356202011251226APIff82f2e5\\\",\\n  \\\"valor\\\": \\\"12.31\\\",\\n  \\\"horario\\\": {\\n    \\\"solicitacao\\\": \\\"2020-11-25T12:26:42.905Z\\\"\\n  },\\n  \\\"status\\\": {\\n    \\\"type\\\": \\\"EM_PROCESSAMENTO\\\"\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n    \\\"nome\\\": \\\"chave_invalida\\\",\\n    \\\"mensagem\\\": \\\"A chave informada não faz referência à conta Gerencianet autenticada\\\"\\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"saldo_insuficiente\\\",\\n  \\\"mensagem\\\": \\\"Saldo insuficiente para realizar o pagamento\\\"\\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"A chave informada em favorecido.chave é inválida\\\"\\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"chave_nao_encontrada\\\",\\n  \\\"mensagem\\\": \\\"A chave informada não foi encontrada\\\"\\n}\\n\\n\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"pagamento_negado\\\",\\n  \\\"mensagem\\\": \\\"Pagamento negado por análises\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"422\"\n    },\n    {\n      \"code\": \"{\\n    \\\"nome\\\": \\\"erro_aplicacao\\\",\\n    \\\"mensagem\\\": \\\"Ocorreu um erro ao requisitar o pix\\\"\\n}\\n\\nOU\\n\\n//InvalidKey\\n{\\n    \\\"nome\\\": \\\"erro_aplicacao\\\",\\n    \\\"mensagem\\\": \\\"Ocorreu um erro ao buscar os dados da chave\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Solicitar devolução\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method put\\\">PUT</span>\\n    <span class=\\\"endpoint\\\">/v2/pix/<span class=\\\"variable\\\">:e2eId</span>/devolucao/<span class=\\\"variable\\\">:id</span></span>\\n</div>\"\n}\n[/block]\nEndpoint para solicitar uma devolução através de um `e2eid` do Pix e do ID da devolução. O motivo que será atribuído à PACS.004 será \"Devolução solicitada pelo usuário recebedor do pagamento original\" cuja sigla é \"MD06\" de acordo com a aba RTReason da PACS.004 que consta no Catálogo de Mensagens do Pix.\n\n**Requer autorização para o escopo**: **`pix.write`** \n\n#### Requisição\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"<b>e2eid</b>\",\n    \"1-0\": \"<b>id</b>\",\n    \"0-3\": \"string (Id fim a fim da transação) `32 characters` `[a-zA-Z0-9]{32}`\",\n    \"1-3\": \"string (Id da Devolução) `[a-zA-Z0-9]{1,35}`\",\n    \"0-1\": \"EndToEndIdentification que transita na PACS002, PACS004 e PACS008\",\n    \"1-1\": \"Id gerado pelo cliente para representar unicamente uma devolução.\",\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-2\": \"Sim\",\n    \"1-2\": \"Sim\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\nDados para pedido de devolução.\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<b>valor</b>\",\n    \"0-1\": \"Valor solicitado para devolução. A soma dos valores de todas as devolucões não podem ultrapassar o valor total do Pix.\",\n    \"0-3\": \"string (Valor) `\\\\d{1,10}\\\\.\\\\d{2}`\",\n    \"0-2\": \"Sim\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"123456\\\",\\n  \\\"rtrId\\\": \\\"D12345678202009091000abcde123456\\\",\\n  \\\"valor\\\": \\\"7.89\\\",\\n  \\\"horario\\\": {\\n    \\\"solicitacao\\\": \\\"2020-09-11T15:25:59.411Z\\\"\\n  },\\n  \\\"status\\\": \\\"EM_PROCESSAMENTO\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"201\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"pix_nao_encontrado\\\",\\n  \\\"mensagem\\\": \\\"Nenhum pix encontrado para o identificador informado\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"devolucao_id_duplicado\\\",\\n  \\\"mensagem\\\": \\\"O id informado já foi utilizado em outra devolução\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"409\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao solicitar devolução\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Consultar devolução\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/pix/<span class=\\\"variable\\\">:e2eId</span>/devolucao/<span class=\\\"variable\\\">:id</span></span>\\n</div>\"\n}\n[/block]\nEndpoint para consultar uma devolução através de um End To End ID do Pix e do ID da devolução.\n\n**Requer autorização para o escopo**: **`pix.read`** \n\n#### Requisição\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<b>e2eid</b>\",\n    \"1-0\": \"<b>id</b>\",\n    \"0-1\": \"EndToEndIdentification que transita na PACS002, PACS004 e PACS008\",\n    \"1-1\": \"Id gerado pelo cliente para representar unicamente uma devolução.\",\n    \"0-3\": \"string (Id fim a fim da transação) `32 characters` `[a-zA-Z0-9]{32}`\",\n    \"1-3\": \"string (Id da Devolução) `[a-zA-Z0-9]{1,35}`\",\n    \"0-2\": \"Sim\",\n    \"1-2\": \"Sim\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"123456\\\",\\n  \\\"rtrId\\\": \\\"D12345678202009091000abcde123456\\\",\\n  \\\"valor\\\": \\\"7.89\\\",\\n  \\\"horario\\\": {\\n    \\\"solicitacao\\\": \\\"2020-09-11T15:25:59.411Z\\\"\\n  },\\n  \\\"status\\\": \\\"EM_PROCESSAMENTO\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 1 (200)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"502\\\",\\n  \\\"rtrId\\\": \\\"D12345678202011111000fghij789012\\\",\\n  \\\"valor\\\": \\\"20.00\\\",\\n  \\\"horario\\\": {\\n    \\\"solicitacao\\\": \\\"2020-09-11T15:25:59.411Z\\\"\\n  },\\n  \\\"status\\\": \\\"NAO_REALIZADO\\\",\\n  \\\"motivo\\\": \\\"Negado por timeout\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo 2 (200)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"devolucao_nao_encontrada\\\",\\n  \\\"mensagem\\\": \\\"Nenhuma devolução encontrada para o identificador informado\\\"\\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"pix_nao_encontrado\\\",\\n  \\\"mensagem\\\": \\\"Nenhum pix encontrado para o identificador informado\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao buscar devolução\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n## Payload Locations\n\nO conjunto de endpoints abaixo são destinados a lidar com configuração e remoção de locations para uso dos payloads.\n\n### Criar location do payload\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method post\\\">POST</span>\\n    <span class=\\\"endpoint\\\">/v2/loc</span>\\n</div>\"\n}\n[/block]\n\nEndpoint para criar location do payload.\n\n**Requer autorização para o escopo**: **`payloadlocation.write`** \n\n#### Requisição\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n\\t\\\"tipoCob\\\": \\\"cob\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo\"\n    }\n  ]\n}\n[/block]\n\n#### Resposta\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n    \\\"id\\\": 66,\\n    \\\"location\\\": \\\"qrcodes-pix.gerencianet.com.br/v2/7796e273b8e447c2b2c0ac2c58fe1a13\\\",\\n    \\\"tipoCob\\\": \\\"cob\\\",\\n    \\\"criacao\\\": \\\"2021-01-15T20:13:39.462Z\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"201\"\n    },\n    {\n      \"code\": \"{\\n    \\\"nome\\\": \\\"json_invalido\\\",\\n    \\\"mensagem\\\": \\\"Valores ou tipos de campo inválidos\\\",\\n    \\\"erros\\\": [\\n        {\\n            \\\"chave\\\": \\\"enum\\\",\\n            \\\"caminho\\\": \\\".body.tipoCob\\\",\\n            \\\"mensagem\\\": \\\"deve ser igual a um dos valores predefinidos\\\"\\n        }\\n    ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n\n### Consultar locations cadastradas\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/loc</span>\\n</div>\"\n}\n[/block]\nEndpoint para consultar locations cadastradas.\n\n**Requer autorização para o escopo**: **`payloadlocation.read`** \n\n#### Requisição\n\nPara obter o resultado da consulta de locations é necessário informar os parâmetros `inicio` e `fim`, como exibido no trecho de código abaixo. Esses parâmetros restringem os resultados para os locations compreendidos nesse intervalo de datas.\n\n```\n/v2/loc/?inicio=2020-10-22T16:01:35Z&fim=2020-10-23T16:01:35Z\n```\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<b>inicio</b>\",\n    \"1-0\": \"<b>fim</b>\",\n    \"0-1\": \"Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339\",\n    \"1-1\": \"Filtra os registros cuja data de criação seja menor ou igual que a data de fim. Respeita RFC 3339.\",\n    \"0-2\": \"Sim\",\n    \"1-2\": \"Sim\",\n    \"0-3\": \"string <date-time>\",\n    \"1-3\": \"string <date-time>\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"parametros\\\": {\\n    \\\"inicio\\\": \\\"2020-04-01T00:00:00Z\\\",\\n    \\\"fim\\\": \\\"2020-04-01T23:59:59Z\\\",\\n    \\\"paginacao\\\": {\\n      \\\"paginaAtual\\\": 0,\\n      \\\"itensPorPagina\\\": 100,\\n      \\\"quantidadeDePaginas\\\": 1,\\n      \\\"quantidadeTotalDeItens\\\": 3\\n    }\\n  },\\n  \\\"loc\\\": [\\n    {\\n      \\\"$ref\\\": \\\"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/payloadLocationResponse1/value\\\"\\n    },\\n    {\\n      \\\"$ref\\\": \\\"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/payloadLocationResponse2/value\\\"\\n    },\\n    {\\n      \\\"$ref\\\": \\\"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/payloadLocationResponse3/value\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"Campo de data fim deve ser maior ou igual ao campo de data inicio\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n\n### Recuperar location do payload\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/loc/<span class=\\\"variable\\\">:id</span></span>\\n</div>\"\n}\n[/block]\nEndpoint para consultar locations cadastradas.\n\n**Requer autorização para o escopo**: **`payloadlocation.read`** \n\n#### Requisição\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"**id**\",\n    \"0-1\": \"Id da location cadastrada para servir um payload\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\": 7716,\\n  \\\"txid\\\": \\\"fda9460fe04e4f129b72863ae57ee22f\\\",\\n  \\\"location\\\": \\\"pix.example.com/qr/v2/cobv/2353c790eefb11eaadc10242ac120002\\\",\\n  \\\"tipoCob\\\": \\\"cobv\\\",\\n  \\\"criacao\\\": \\\"2020-03-11T21:19:51.013Z\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"location_nao_encontrada\\\",\\n  \\\"mensagem\\\": \\\"Nenhum location encontrado para o identificador informado\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n\n### Gerar QRCode de um location\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/loc/<span class=\\\"variable\\\">:id</span>/qrcode</span>\\n</div>\"\n}\n[/block]\nEndpoint para gerar QRCode de um location.\n\n**Requer autorização para o escopo**: **`payloadlocation.read`** \n\n#### Requisição\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-3\": \"string\",\n    \"0-2\": \"Sim\",\n    \"0-1\": \"Id da location cadastrada para servir um payload\",\n    \"0-0\": \"**id**\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n    \\\"qrcode\\\": \\\"00020126880014BR.GOV.BCB.PIX2566qrcodes-pix.gerencianet.com.b...\\\",\\n    \\\"imagemQrcode\\\": \\\"data:image/png;base64,iVBORw0KGgoAAAAOQAAADkCAYAAACIV4s...\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"location_nao_encontrada\\\",\\n  \\\"mensagem\\\": \\\"Nenhum location encontrado para o identificador informado\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n\n### Desvincular um txid de uma location\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method delete\\\">DELETE</span>\\n    <span class=\\\"endpoint\\\">/v2/loc/<span class=\\\"variable\\\">:id</span>/txid</span>\\n</div>\"\n}\n[/block]\nEndpoint utilizado para desvincular uma cobrança de uma location.\n\nSe executado com sucesso, a entidade `loc` não apresentará mais um txid, se apresentava anteriormente à chamada. Adicionalmente, a entidade `cob` ou `cobv` associada ao txid desvinculado também passará a não mais apresentar um location. Esta operação não altera o `status` da `cob` ou `cobv` em questão.\n\n**Requer autorização para o escopo**: **`payloadlocation.write`** \n\n#### Requisição\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"tipo\",\n    \"0-3\": \"string\",\n    \"0-2\": \"Sim\",\n    \"0-1\": \"Id da location cadastrada para servir um payload\",\n    \"0-0\": \"**id**\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\": 2316,\\n  \\\"location\\\": \\\"qrcodes-pix.gerencianet.com.br/v2/a8534e273ecb47d3ac30613104544466\\\",\\n  \\\"tipoCob\\\": \\\"cob\\\",\\n  \\\"criacao\\\": \\\"2020-05-31T19:39:54.013Z\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"location_nao_encontrada\\\",\\n  \\\"mensagem\\\": \\\"Nenhum location encontrado para o identificador informado\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n\n## Webhooks\n\nEsta seção reúne endpoints para gerenciamento de notificações por parte do PSP recebedor ao usuário recebedor.\n\n### Entendendo o padrão mTLS\n\nPor norma do Banco Central, será necessário a inserção de uma chave pública da Gerencianet em seu servidor para que a comunicação obedeça o padrão mTLS. Em seu domínio que representa o seu servidor, deverá ser feita uma configuração para exigir a chave pública (mTLS) que estamos disponibilizando para que ocorra a autenticação mútua.\n\nA Gerencianet irá fazer 2 requisições para o seu domínio (servidor):\n\n1. Primeira Requisição:  Vamos certificar que seu servidor esteja exigindo uma chave pública da Gerencianet. Isso será feito ao enviar uma requisição sem certificado e seu servidor não deverá aceitar a requisição. Uma vez respondido com a recusa será enviado a 2º requisição.\n2. Segunda Requisição: Enviaremos a notificação junto com a nossa chave pública, o seu servidor que deve conter a chave pública disponibilizada deverá realizar o \"Hand-Shake\" e assim a comunicação ser estabelecida.\n\nÉ necessário que o seu servidor tenha a versão mínima do TLS 1.2. Mais detalhes sobre o TLS [aqui](https://dev.gerencianet.com.br/docs/atualizacao-tls-12)\n\nEm seu servidor você deve configurar uma rota 'POST' com uma resposta padrão como uma string \"200\". Deve ser inserido o nosso certificado de produção ou homologação em seu servidor, abaixo temos alguns exemplos.\n[block:callout]\n{\n  \"type\": \"success\",\n  \"title\": \"Servidores dedicados\",\n  \"body\": \"Recomenda-se que você tenha um servidor dedicado para conseguir realizar as configurações do webhook, uma vez que é necessário ter acesso a alguns arquivos para realizar as configurações como nos exemplos abaixo.\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Hospedagens compartilhadas\",\n  \"body\": \"Para hospedagem em servidores compartilhados pode haver restrições relativas a inserção de certificados gerados por outra entidade, como o nosso CA por exemplo. Caso tenha problemas, orientamos a [abertura de um ticket](https://sistema.gerencianet.com.br/tickets/criar) informando como assunto: **mTLS em hospedagem compartilhada**  ou entre em contato pelo [nosso canal #api-pix no Discord](https://discord.com/invite/ptGHMtczcV).  Analisaremos a situação para atuarmos em conjunto em seu auxílio.\"\n}\n[/block]\n\n### Exemplos de configurações de servidor\n\nPara configurar seu servidor, você precisará das chaves públicas da Gerencianet. Abaixo estão os endereços das chaves para os ambientes de Produção e Homologação. Essas chaves devem ser baixadas e dispostas em seu servidor.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Ambiente\",\n    \"h-1\": \"URL da chave pública\",\n    \"0-1\": \"`https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt`\",\n    \"1-1\": \"`https://pix.gerencianet.com.br/webhooks/chain-pix-sandbox.crt`\",\n    \"0-0\": \"Produção\",\n    \"1-0\": \"Homologação\"\n  },\n  \"cols\": 2,\n  \"rows\": 2\n}\n[/block]\nOs trechos de código abaixo buscam exemplificar as configurações necessárias em seu servidor para que seja possível realizar o *hand-shake* com nossos servidores.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"from flask import Flask, jsonify\\nimport ssl\\nimport json\\napp = Flask(__name__)\\n\\n\\[email protected](\\\"/\\\")\\ndef hello():\\n    return \\\"<h1 style='color:blue'>Hello There!</h1>\\\"\\n\\n\\[email protected](\\\"/\\\", methods=[\\\"PUT\\\"])\\ndef hello_put():\\n    response = {\\\"status\\\": 200}\\n    return jsonify(response)\\n\\n\\[email protected](\\\"/\\\", methods=[\\\"POST\\\"])\\ndef imprimir():\\n    imprime = print(request.json)\\n    data = request.json\\n    with open('data.txt', 'a') as outfile:\\n        outfile.write(\\\"\\\\n\\\")\\n        json.dump(data, outfile)\\n    return jsonify(imprime)\\n\\ndef hello_post():\\n    response = {\\\"status\\\": 200}\\n    return jsonify(response)\\n\\nif __name__ == \\\"__main__\\\":\\n    context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)\\n    context.verify_mode = ssl.CERT_REQUIRED\\n    context.load_verify_locations('caminho-certificados/certificado-público-Gerencianet.crt')\\n    context.load_cert_chain(\\n        'caminho-certificados/server_ssl.crt.pem',\\n        'caminho-certificados/server_ssl.key.pem')\\n    app.run(ssl_context=context, host='0.0.0.0')\\n#Desenvolvido pela Consultoria Técnica da Gerencianet    \",\n      \"language\": \"python\",\n      \"name\": \"Python\"\n    },\n    {\n      \"code\": \"server {\\n    #\\n    # ...\\n    #\\n    listen [::]:443 ssl ipv6only=on;\\n    listen 443 ssl;\\n    ssl_certificate server_ssl.crt.pem;\\n    ssl_certificate_key server_ssl.key.pem;\\n    ssl_client_certificate /root/chain-pix-webhooks-prod.crt;\\n    ssl_verify_client optional;\\n    ssl_verify_depth 3;\\n    #\\n    # ...\\n    #\\n    location /webhook {\\n        if ($ssl_client_verify != SUCCESS) {\\n            return 403;\\n        }\\n        rewrite ^(.*)$ /webhook;\\n    }\\n}\\n#Desenvolvido pela Consultoria Técnica da Gerencianet\",\n      \"language\": \"http\",\n      \"name\": \"Nginx\"\n    },\n    {\n      \"code\": \"const express = require(\\\"express\\\");\\nconst fs = require(\\\"fs\\\");\\nconst https = require(\\\"https\\\");\\nvar logger = require('morgan');\\n\\nconst httpsOptions = {\\n  cert: fs.readFileSync(\\\"\\\"), // Certificado fullchain do dominio\\n  key: fs.readFileSync(\\\"/\\\"), // Chave privada do domínio\\n  ca: fs.readFileSync(\\\"\\\"),   // Certificado público da Gerencianet\\n  minVersion: \\\"TLSv1.2\\\",\\n  requestCert: true,\\n  rejectUnauthorized: false, //Mantenha como false para que os demais endpoints da API não rejeitem requisições sem MTLS\\n};\\n\\nconst app = express();\\nconst httpsServer = https.createServer(httpsOptions, app);\\nconst PORT = 443;\\n\\napp.use(logger('dev'));  // Comente essa linha caso não queira que seja exibido o log do servidor no seu console\\napp.use(express.json());\\napp.use(express.urlencoded({ extended: false }));\\n\\n// Endpoint para configuração do webhook, você precisa cadastrar https://SEUDOMINIO.com/webhook\\napp.post(\\\"/webhook\\\", (request, response) => {\\n    // Verifica se a requisição que chegou nesse endpoint foi autorizada\\n    if (request.socket.authorized) { \\n        response.status(200).end();\\n    } else {\\n        response.status(401).end();\\n    }\\n});\\n\\n// Endpoind para recepção do webhook tratando o /pix\\napp.post(\\\"/webhook/pix\\\", (request, response) => {\\n    if (request.socket.authorized){\\n        //Seu código tratando a callback\\n        /* EXEMPLO:\\n        var body = request.body;\\n        filePath = __dirname + \\\"/data.json\\\";\\n        fs.appendFile(filePath, JSON.stringify(body) + \\\"\\\\n\\\", function (err) {\\n            if (err) {\\n                console.log(err);\\n            } else {\\n                response.status(200).end();\\n            }\\n        })*/\\n        response.status(200).end();\\n    }else{\\n        response.status(401).end();\\n    }\\n});\\n\\nhttpsServer.listen(PORT, () =>\\n    console.log(`Express server currently running on port ${PORT}`)\\n);\\n#Desenvolvido pela Consultoria Técnica da Gerencianet\",\n      \"language\": \"javascript\",\n      \"name\": \"Node\"\n    },\n    {\n      \"code\": \"# ********************************************************************************* #\\n# Utilize o primeiro exemplo, caso queira requerir o certificado para autenticação  #\\n# mútua em qualquer rota do domínio indicado no VirtualHost.                        #\\n# Funciona bem para sub-domínios. Exemplo: https://www.webhook.seu_dominio.com.br   # \\n# ********************************************************************************* #\\n\\n<IfModule mod_ssl.c>\\n<VirtualHost *:443> # Porta HTTPS\\n    #\\n    # ...\\n    #\\n\\n    SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio\\n    SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio\\n\\n    #Chave pública da Gerencianet\\n    SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt\\n    \\n    # mTLS Gerencianet\\n    SSLVerifyClient require\\n    SSLVerifyDepth 3\\n      \\n    # Tratando o /pix, redirecionando as requisições sempre para /webhook\\n    Alias \\\"/pix/\\\" \\\"/var/www/webhook/index.php\\\"\\n    Alias \\\"/pix\\\" \\\"/var/www/webhook/index.php\\\"\\n\\n    #\\n    # ...\\n    #\\n</VirtualHost>\\n</IfModule>\\n\\n\\n# ******************************************************************************** #\\n# Utilize o segundo exemplo, caso queira requerir o certificado para autenticação  #\\n# mútua em apenas uma rota do domínio indicado no VirtualHost.                     #\\n# Exemplo: https://www.seu_dominio.com.br/webhook/                                 #     \\n# ******************************************************************************** #\\n\\n<IfModule mod_ssl.c>\\n<VirtualHost *:443> # Porta HTTPS\\n    #\\n    # ...\\n    #\\n\\n    SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio\\n    SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio\\n\\n    #Chave pública da Gerencianet\\n    SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt\\n    \\n    # mTLS Gerencianet\\n    SSLVerifyClient none\\n    SSLProtocol TLSv1.2\\n      \\n    <Location \\\"/webhook\\\">\\n        SSLVerifyClient require\\n        SSLVerifyDepth 3\\n    </Location>\\n    \\n    # Tratando o /pix, redirecionando as requisições sempre para /webhook\\n    Alias \\\"/webhook/pix/\\\" \\\"/var/www/webhook/index.php\\\"\\n    Alias \\\"/webhook/pix\\\" \\\"/var/www/webhook/index.php\\\"\\n\\n    #\\n    # ...\\n    #\\n</VirtualHost>\\n</IfModule>\\n\",\n      \"language\": \"cplusplus\",\n      \"name\": \"Apache\"\n    },\n    {\n      \"code\": \"# ********************************************************************************** #\\n# Para o funcionamento deste exemplo é necessário que seu servidor tenha configurado #\\n# o certificado do mTLS, com o direcionamento para este arquivo, e também com a      #\\n# tratativa do /pix. Assim como é feito em nosso exemplo de servidores Apache.       #\\n# ********************************************************************************** #\\n\\n<?php\\n\\nfunction resposta($status, $mensagem, $dados)\\n{\\n    $resposta['status'] = $status;\\n    $resposta['mensagem'] = $mensagem;\\n    $resposta['dados'] = $dados;\\n    $json_resposta = '<pre>' . json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '</pre>';\\n\\n    header(\\\"HTTP/1.1 \\\" . $status);\\n    echo $json_resposta;\\n}\\n\\nfunction salvar($dados)\\n{\\n  \\t// Crie um arquivo .;json para salvar as informações\\n    $nomeArquivo = './dados.json';\\n    $dadosGravados = json_decode(file_get_contents($nomeArquivo), true);\\n    $arquivo = fopen($nomeArquivo, 'w');\\n\\n    // Incrementa as informações enviadas com o que já havia gravado\\n    array_push($dadosGravados, $dados);\\n\\n    if (fwrite($arquivo, json_encode($dadosGravados))) {\\n        resposta(200, \\\"Requisição realizada com sucesso!\\\", $dados);\\n    } else {\\n        resposta(300, \\\"Falha ao salvar os dados da requisição.\\\", $dados);\\n    }\\n\\n    fclose($arquivo);\\n}\\n\\nfunction requisicao($metodo, $body, $parametros)\\n{\\n    switch ($metodo) {\\n        case 'POST':\\n            salvar($body);\\n            break;\\n        case 'GET':\\n            resposta(200, \\\"Requisição realizada com sucesso!\\\", $body);\\n            break;\\n    }\\n}\\n\\n// Obtém o método HTTP, body e parâmetros da requisição\\n$metodo = $_SERVER['REQUEST_METHOD'];\\n$parametros = explode('/', trim($_SERVER['REQUEST_URI'], '/'));\\n$body = json_decode(file_get_contents('php://input'), true);\\n\\ntry {\\n    requisicao($metodo, $body, $parametros);\\n} catch (Exception $e) {\\n    resposta(400, $e->getMessage(), $e);\\n}\",\n      \"language\": \"php\",\n      \"name\": \"PHP\"\n    }\n  ]\n}\n[/block]\nPara ter um ter um SSL válido, você deve entrar em contato com uma Autoridade Certificadora e gerar a chave privada  `server_ssl.key.pem` e uma pública `server_ssl.crt.pem`, assim você valida a integridade da conexão. Você consegue realizar isso de forma gratuita utilizando um utilitário como o <a href=\"https://certbot.eff.org/\" target=\"_blank\">Certbot</a> por exemplo.\n\n\n### Configurar o webhook Pix\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method put\\\">PUT</span>\\n    <span class=\\\"endpoint\\\">/v2/webhook/<span class=\\\"variable\\\">:chave</span></span>\\n</div>\"\n}\n[/block]\nEndpoint para configuração do serviço de notificações acerca de Pix recebidos. Pix oriundos de cobranças estáticas só serão notificados se estiverem associados a um `txid`.\n\n**Requer autorização para o escopo**: **`webhook.write`** \n\n#### Requisição\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"**chave**\",\n    \"0-1\": \"O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string (Chave DICT) `≤ 77 characters`\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\nDados para a configuração do webhook.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"webhookUrl\\\": \\\"https://exemplo-pix/webhook\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo\"\n    }\n  ]\n}\n[/block]\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<b>webhookUrl</b>\",\n    \"0-1\": \"Url para onde a notificação vai ser enviada\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string {uri}\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(201) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Webhook para notificações acerca de Pix recebidos associados a um txid.\",\n      \"language\": \"json\",\n      \"name\": \"201\"\n    },\n    {\n      \"code\": \"InvalidValueError\\n{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"URL inválida\\\"\\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"A URL do webhook deve usar o protocolo HTTPS\\\"\\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"webhook_invalido\\\",\\n  \\\"mensagem\\\": \\\"A autenticação de TLS mútuo não está configurada na URL informada\\\"\\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"webhook_invalido\\\",\\n  \\\"mensagem\\\": \\\"A URL informada está inacessível\\\"\\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"webhook_invalido\\\",\\n  \\\"mensagem\\\": \\\"A URL informada atingiu o tempo limite de resposta\\\"\\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"webhook_invalido\\\",\\n  \\\"mensagem\\\": \\\"A requisição na URL informada falhou com o erro: {{errno}}\\\" //{{errno}} representa um código de erro do linux: https://man7.org/linux/man-pages/man3/errno.3.html Ex: ECONNRESET, EPIPE \\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"webhook_invalido\\\",\\n  \\\"mensagem\\\": \\\"A URL informada respondeu com o código HTTP {{httpStatus}}\\\" // {{httpStatus}} representa o status HTTP que a url respondeu. Ex: 400, 403, 500.\\n}\\n\\nOU\\n\\n{\\n  \\\"nome\\\": \\\"webhook_invalido\\\",\\n  \\\"mensagem\\\": \\\"Não foi possível receber uma resposta da URL informada\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n\n### Exibir informações do wehook Pix\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/webhook/<span class=\\\"variable\\\">:chave</span></span>\\n</div>\"\n}\n[/block]\nEndpoint para recuperação de informações sobre o webhook pix.\n\n**Requer autorização para o escopo**: **`webhook.read`** \n\n#### Requisição\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-1\": \"O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.\",\n    \"0-0\": \"**chave**\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string (Chave DICT) `≤ 77 characters`\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\n#### Resposta \n\nA resposta abaixo representa Sucesso(200) do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"webhookUrl\\\": \\\"https://gn-pix-webhook.gerencianet.com.br/webhook/\\\",\\n  \\\"chave\\\": \\\"40a0932d-1918-4eee-845d-35a2da1690dc\\\",\\n  \\\"criacao\\\": \\\"2020-11-11T10:15:00.358Z\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    }\n  ]\n}\n[/block]\n\n### Consultar lista de webhooks\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/webhook/</span>\\n</div>\"\n}\n[/block]\nEndpoint para consultar webhooks associados a chaves através de parâmetros como `início` e `fim`. Os atributos são inseridos como *query params*.\n\n**Requer autorização para o escopo**: **`cob.write`** \n\n#### Requisição\n\nO trecho abaixo mostra como os parâmetros `inicio` e `fim` (obrigatórios) devem ser repassados na requisição.\n\n```\n/v2/webhook/?inicio=2020-10-22T16:01:35Z&fim=2020-10-23T16:01:35Z\n```\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"<b>inicio</b>\",\n    \"0-1\": \"Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string <date-time>\",\n    \"1-0\": \"<b>fim</b>\",\n    \"1-1\": \"Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339.\",\n    \"1-2\": \"Sim\",\n    \"1-3\": \"string <date-time>\",\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"parametros\\\": {\\n    \\\"inicio\\\": \\\"2020-04-01T00:00:00Z\\\",\\n    \\\"fim\\\": \\\"2020-04-01T23:59:59Z\\\",\\n    \\\"paginacao\\\": {\\n      \\\"paginaAtual\\\": 0,\\n      \\\"itensPorPagina\\\": 100,\\n      \\\"quantidadeDePaginas\\\": 1,\\n      \\\"quantidadeTotalDeItens\\\": 1\\n    }\\n  },\\n  \\\"webhooks\\\": [\\n    {\\n      \\\"$ref\\\": \\\"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/webhookResponse1/value\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"valor_invalido\\\",\\n  \\\"mensagem\\\": \\\"Campo de data fim deve ser maior ou igual ao campo de data inicio\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    }\n  ]\n}\n[/block]\n\n### Cancelar o webhook Pix\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method delete\\\">DELETE</span>\\n    <span class=\\\"endpoint\\\">/v2/webhook/<span class=\\\"variable\\\">:chave</span></span>\\n</div>\"\n}\n[/block]\nEndpoint para cancelamento do webhook pix.\n\n**Requer autorização para o escopo**: **`webhook.write`** \n\n#### Requisição\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-1\": \"O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string (Chave DICT) `≤ 77 characters`\",\n    \"0-0\": \"**chave** \"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\n#### Resposta\n\nA resposta abaixo representa Sucesso(204) do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Webhook para notificações Pix foi cancelado.\",\n      \"language\": \"json\",\n      \"name\": \"204\"\n    }\n  ]\n}\n[/block]\n\n### Recebendo Callbacks\n\nEsse serviço está protegido por uma camada de autenticação mTLS. Os callbacks são  enviados pela Gerencianet via `POST <url-webhook-cadastrada>​/pix` quando há uma alteração no status do Pix.\n\n#### Requisição\n\nUma requisição `POST` é enviada pela Gerencianet para a URL que você cadastrou como webhook para uma determinada chave. Quando houver alteração no status de uma transação Pix, envolvendo a chave associada, um objeto JSON (como os exemplos abaixo) será enviado ao seu servidor. Cada requisição enviada possui um *timeout* de 60 segundos, isto é, uma requisição de callback é interrompida ao atingir 60 segundos sem resposta.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Pix recebido\\n{\\n  \\\"pix\\\": [\\n    {\\n      \\\"endToEndId\\\": \\\"E1803615022211340s08793XPJ\\\",\\n      \\\"txid\\\": \\\"fc9a43k6ff384ryP5f41719\\\",\\n      \\\"chave\\\": \\\"2c3c7441-b91e-4982-3c25-6105581e18ae\\\",     \\n\\t\\t\\t\\\"valor\\\": \\\"0.01\\\",\\n      \\\"horario\\\": \\\"2020-12-21T13:40:34.000Z\\\",\\n      \\\"infoPagador\\\": \\\"pagando o pix\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo - Pix recebido\"\n    },\n    {\n      \"code\": \"// Devolução\\n{\\n  \\\"pix\\\": [\\n    {\\n      \\\"endToEndId\\\": \\\"E12345678202009091221syhgfgufg\\\",\\n      \\\"txid\\\": \\\"c3e0e7a4e7f1469a9f782d3d4999343c\\\",\\n      \\\"chave\\\": \\\"2c3c7441-b91e-4982-3c25-6105581e18ae\\\",\\n      \\\"valor\\\": \\\"110.00\\\",\\n      \\\"horario\\\": \\\"2020-09-09T20:15:00.358Z\\\",\\n      \\\"infoPagador\\\": \\\"0123456789\\\",\\n      \\\"devolucoes\\\":[\\n      {\\n        \\\"id\\\": \\\"123ABC\\\",\\n        \\\"rtrId\\\": \\\"D12345678202009091221abcdf098765\\\",\\n        \\\"valor\\\": \\\"110.00\\\",\\n        \\\"horario\\\": {\\n          \\\"solicitacao\\\": \\\"2020-09-09T20:15:00.358Z\\\"\\n        },\\n        \\\"status\\\": \\\"DEVOLVIDO\\\"\\n      }\\n      ]\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo - Devolução\"\n    },\n    {\n      \"code\": \"// Pix enviado\\n{\\n  \\\"pix\\\": [\\n    {\\n      \\\"endToEndId\\\": \\\"E090893562021030PIf25a7868\\\",\\n      \\\"chave\\\": \\\"2c3c7441-b91e-4982-3c25-6105581e18ae\\\",\\n      \\\"tipo\\\": \\\"SOLICITACAO\\\",\\n      \\\"status\\\": \\\"REALIZADO\\\",\\n      \\\"valor\\\": \\\"0.01\\\",\\n      \\\"horario\\\": \\\"2021-03-04T20:39:47.000Z\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo - Pix enviado\"\n    },\n    {\n      \"code\": \"// Pix recebido\\n{\\n  \\\"pix\\\": [\\n    {\\n      \\\"endToEndId\\\": \\\"E1803615022211340s08793XPJ\\\",\\n      \\\"txid\\\": \\\"fc9a43k6ff384ryP5f41719\\\",\\n      \\\"chave\\\": \\\"2c3c7441-b91e-4982-3c25-6105581e18ae\\\",     \\n\\t\\t\\t\\\"valor\\\": \\\"0.10\\\",\\n      \\\"horario\\\": \\\"2020-12-21T13:40:34.000Z\\\",\\n      \\\"infoPagador\\\": \\\"pagando o pix\\\",\\n      \\\"gnExtras\\\": {\\n           \\\"tarifa\\\": \\\"0.01\\\"\\n       }\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo - Pix recebido com tarifa informada\"\n    }\n  ]\n}\n[/block]\nA tabela a seguir detalha os campos presentes no objeto JSON que será enviado na notificação.\n\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<b>endToEndId</b>\",\n    \"0-1\": \"EndToEndIdentification que transita na PACS002, PACS004 e PACS008\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"string (Id fim a fim da transação) `32 characters` `^[a-zA-Z0-9]{32}$`\",\n    \"1-0\": \"<b>txid</b>\",\n    \"1-1\": \"<b>Identificador da transação</b><br>Determina o identificador da transação. O objetivo desse campo é ser um elemento que possibilite ao PSP do recebedor apresentar ao usuário recebedor a funcionalidade de conciliação de pagamentos, mais detalhes <a href=\\\"https://dev.gerencianet.com.br/v1/docs/api-pix#section-id-da-transa-o\\\">veja aqui</a>.\",\n    \"1-2\": \"Não\",\n    \"1-3\": \"Array of objects (Pix) `^[a-zA-Z0-9]{26,35}$`\",\n    \"2-0\": \"<b>valor</b>\",\n    \"2-1\": \"Valor do Pix.\",\n    \"2-2\": \"Sim\",\n    \"2-3\": \"string `\\\\d{1,10}\\\\.\\\\d{2}`\",\n    \"3-0\": \"<b>horario</b>\",\n    \"3-1\": \"Horário em que o Pix foi processado no PSP.\",\n    \"3-2\": \"Sim\",\n    \"3-3\": \"string <date-time> (Horário)\",\n    \"4-0\": \"<b>pagador</b>\",\n    \"4-1\": \"Um CPF ou um CNPJ pode ser o pagador de uma cobrança. Não é permitido que o campo pagador.cpf e campo pagador.cnpj estejam preenchidos ao mesmo tempo. Se o campo pagador.cnpj está preenchido, então o campo pagador.cpf não pode estar preenchido, e vice-versa.<br><br> <em>pagador:</em><br><div class=\\\"tab2\\\"> `cpf*`// CPF do usuário pagador.string` /^\\\\d{11}$/`<br><br> `nome*` // Nome do usuário pagador. string (Nome) `< 200 characters`</div>\",\n    \"4-2\": \"Não\",\n    \"4-3\": \"Pessoa Física (object) or Pessoa Jurídica (object)\",\n    \"5-0\": \"<b>infoPagador</b>\",\n    \"5-1\": \"Informação livre do pagador\",\n    \"5-2\": \"Sim\",\n    \"5-3\": \"string `< 140 characters`\",\n    \"6-0\": \"<b>devolucoes</b>\",\n    \"6-1\": \"devolucoes:\\n<div class=\\\"tab2\\\">`id*` // Id gerado pelo cliente para representar unicamente uma devolução.string (Id da Devolução)`^[a-zA-Z0-9]{1,35}$`\\n\\n`rtrId*` // ReturnIdentification que transita na PACS004. string (RtrId) ≤ 32 characters\\n\\n`valor*` // Valor a devolver.string `\\\\d{1,10}\\\\.\\\\d{2}`\\n\\n `horario*` // Atributos de horário. object\\n<br>\\n`solicitacao*`: //Horário no qual a devolução foi solicitada no PSP.\\nstring <date-time> (Horário de solicitação)\\n`liquidacao`: //Horário no qual a devolução foi liquidada no PSP.\\nstring <date-time> (Horário de liquidacao)\\n<br>\\n`status*` // Status da devolução. Enum: `\\\"EM_PROCESSAMENTO\\\"`,`\\\"DEVOLVIDO\\\"`,<br>`\\\"NAO_REALIZADO\\\"` Status da devolução. string (Status)</div>\",\n    \"6-2\": \"Não\",\n    \"6-3\": \"Array ()\"\n  },\n  \"cols\": 4,\n  \"rows\": 7\n}\n[/block]\n\n#### Resposta\n\nAs requisições de callback aguardam uma resposta com status HTTP 2XX. Caso o servidor do cliente retorne um status diferente, a Gerencianet fará até 10 novas tentativas de notificação. A primeira nova tentativa será feita 5 minutos após a falha do envio do callback. Persistindo o erro, as tentativas subsequentes serão enviadas em intervalos de tempo cada vez maiores, conforme mostra a tabela abaixo.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Importante\",\n  \"body\": \"Em casos onde o servidor do cliente retorna o status HTTP 429 (*too many requests*), os servidores da Gerencianet tentarão enviar a notificação até 6 vezes também de acordo com a tabela abaixo.\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Nº da tentativa\",\n    \"h-1\": \"Tempo (em minutos)\",\n    \"0-1\": \"5\",\n    \"1-1\": \"10\",\n    \"2-1\": \"20\",\n    \"3-1\": \"40\",\n    \"4-1\": \"80\",\n    \"5-1\": \"160\",\n    \"6-1\": \"320\",\n    \"7-1\": \"640\",\n    \"8-1\": \"1280\",\n    \"9-1\": \"2560\",\n    \"0-0\": \"1\",\n    \"1-0\": \"2\",\n    \"2-0\": \"3\",\n    \"3-0\": \"4\",\n    \"4-0\": \"5\",\n    \"5-0\": \"6\",\n    \"6-0\": \"7\",\n    \"7-0\": \"8\",\n    \"8-0\": \"9\",\n    \"9-0\": \"10\"\n  },\n  \"cols\": 2,\n  \"rows\": 10\n}\n[/block]\n\n## Endpoints exclusivos Gerencianet\n\nOs endpoints listados nesta seção visam à facilitação do uso da API Pix para os clientes Gerencianet. Com os endpoints a seguir você poderá obter e alterar informações da sua conta diretamente pela API, conforme a necessidade da sua integração.\n\n### Criar chave evp\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method post\\\">POST</span>\\n    <span class=\\\"endpoint\\\">/v2/gn/evp</span>\\n</div>\"\n}\n[/block]\n\nEndpoint utilizado para criar uma chave Pix aleatória (evp).\n\n**Requer autorização para o escopo**: **`gn.pix.evp.write`** \n\n#### Requisição\n\nA requisição enviada para esse endpoint não precisa de um *body*, apenas os cabeçalhos de autorização OAuth e o certificado da conta, assim como os endpoints anteriores.\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(201) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"chave\\\": \\\"345e4568-e89b-12d3-a456-006655440001\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"201\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"limite_criacao_chave_atingido\\\",\\n  \\\"mensagem\\\": \\\"O limite de criação de chaves foi atingido\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao solicitar a criação da chave\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Listar chaves evp\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/gn/evp</span>\\n</div>\"\n}\n[/block]\n\nEndpoint utilizado para listar as chaves Pix aleatórias (evp). A listagem somente mostrará as chaves do tipo aleatória.\n\n**Requer autorização para o escopo**: **`gn.pix.evp.read`** \n\n#### Requisição\n\nA requisição enviada para esse endpoint não precisa de um *body*, apenas os cabeçalhos de autorização OAuth e o certificado da conta, assim como os endpoints anteriores.\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"chaves\\\": [\\n    \\\"355e4568-e89b-1243-a456-006655440001\\\",\\n    \\\"133e4568-e89b-1243-a456-006655440000\\\"\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao buscar as chaves\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Remover chave evp\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method delete\\\">DELETE</span>\\n    <span class=\\\"endpoint\\\">/v2/gn/evp/<span class=\\\"variable\\\">:chave</span></span>\\n</div>\"\n}\n[/block]\n\nEndpoint utilizado para remover uma chave Pix aleatória (evp). Caso remova uma chave aleatória, não há como criá-la novamente: o uuid é gerado pelo DICT e a cada solicitação de registro de chave, nos é retornado um hash diferente. Isso significa que as cobranças criadas para a chave removida não poderão mais ser pagas, pois o payload não será mais retornado.\n\n**Requer autorização para o escopo**: **`gn.pix.evp.write`** \n\n#### Requisição\n\nA requisição enviada para esse endpoint não precisa de um *body*, apenas as informações necessárias para autorização como os endpoints anteriores e o parâmetro `chave` passado na URL, que corresponde à chave Pix aleatória (evp) que será apagada.\n\n#### Respostas\n\nAs respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Chave aleatória removida.\",\n      \"language\": \"text\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"chave_nao_encontrada\\\",\\n  \\\"mensagem\\\": \\\"A chave informada não foi encontrada\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao solicitar a exclusão da chave\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Buscar o saldo da conta\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/gn/saldo</span>\\n</div>\"\n}\n[/block]\n\nEndpoint com a finalidade de consultar o saldo em sua conta Gerencianet. Você pode habilitar o escopo nas configurações de sua aplicação em sua conta Gerencianet.\n\n**Requer autorização para o escopo**: **`gn.balance.read`** \n\n#### Requisição\n\nA requisição enviada para esse endpoint não precisa de um *body*, apenas os cabeçalhos de autorização OAuth e o certificado da conta, assim como os endpoints anteriores.\n\n#### Respostas\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"saldo\\\": \\\"100.00\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao solicitar o saldo da conta\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Criar/modificar configurações da conta\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method put\\\">PUT</span>\\n    <span class=\\\"endpoint\\\">/v2/gn/config</span>\\n</div>\"\n}\n[/block]\nEndpoint com a finalidade de criar e modificar as configurações da conta do cliente relacionados à API.\n\n**Requer autorização para o escopo**: **`gn.settings.write`** \n\n#### Requisição\n\nAbaixo um exemplo de *body* para a requisição:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n    \\\"pix\\\": {\\n        \\\"receberSemChave\\\": true,\\n        \\\"chaves\\\": {\\n            \\\"355e4568-e89b-1243-a456-006655440001\\\": {\\n                \\\"recebimento\\\": {\\n                    \\\"txidObrigatorio\\\": false,\\n                    \\\"qrCodeEstatico\\\": {\\n                        \\\"recusarTodos\\\": false\\n                    },\\n                  \\\"webhook\\\": {\\n                    \\\"notificacao\\\": {\\n                        \\\"tarifa\\\": true\\n                         }\\n                     }\\n                }\\n            }\\n        }\\n    }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Exemplo\"\n    }\n  ]\n}\n[/block]\n<div class=\"tab2\">(*) Atributo obrigatório </div>\n\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"**pix** \",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"Object\",\n    \"0-1\": \"Objeto contendo as configurações da conta relacionadas ao Pix.\\n\\n`receberSemChave*`: Atributo booleano obrigatório que configura a possibilidade do recebimento de Pix sem chaves cadastradas.\\n\\n`chaves`: Atributo objeto opcional. Pode conter uma ou mais chaves e suas configurações individuais.\\n<div class=\\\"tab2\\\">\\n`<chave pix>`: Atributo string opcional. String que representa uma chave Pix e satisfaz à Regex `^[[email protected]_+]{1,77}$`\\n<div class=\\\"tab2\\\">\\n`recebimento*`: Atributo objeto obrigatório. Contém as configurações relacionadas aos recebimentos de Pix por uma determinada chave.\\n<div class=\\\"tab2\\\">\\n`txidObrigatorio*`: Atributo booleano obrigatório. Configura a obrigatoriedade de `txid` nas cobranças recebidas por uma chave Pix.\\n\\n`qrCodeEstatico*`: Atributo objeto obrigatório. Contém as configurações relacionadas à QR Codes estáticos para uma determinada chave Pix.\\n<div class=\\\"tab2\\\">\\n`recusarTodos*`: Atributo booleano obrigatório. Configura a rejeição de todos os QR Codes estáticos.\\n</div>\\n</div>\\n</div>\\n</div>\\n\\n<div class=\\\"tab2\\\">\\n`webhook`: Atributo objeto opcional. Contém as configurações relacionadas aos recebimentos de informação das tarifas por cada cobrança Pix recebida ou enviada.\\n<div class=\\\"tab2\\\">\\n`tarifa*`: Atributo booleano obrigatório. Configura o recebimento ou não do valor das tarifas pagas ao receber ou enviar Pix na conta Gerencianet. \\n</div>\\n</div>\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\n#### Respostas\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Configurações criados / modificadas\",\n      \"language\": \"json\",\n      \"name\": \"204\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao buscar as configurações da conta\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"400\"\n    },\n    {\n      \"code\": \"{\\n  \\\"nome\\\": \\\"erro_aplicacao\\\",\\n  \\\"mensagem\\\": \\\"Ocorreu um erro ao validar a chave\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"500\"\n    }\n  ]\n}\n[/block]\n\n### Listar configurações da conta\n\n[block:html]\n{\n  \"html\": \"<div class=\\\"gn-endpoint\\\">\\n    <span class=\\\"http-method get\\\">GET</span>\\n    <span class=\\\"endpoint\\\">/v2/gn/config</span>\\n</div>\"\n}\n[/block]\nEndpoint com a finalidade de listar as configurações definidas na conta.\n\n**Requer autorização para o escopo**: **`gn.settings.read`** \n\n#### Requisição\n\nA requisição enviada para esse endpoint não precisa de um *body*, apenas os cabeçalhos de autorização OAuth e o certificado da conta, assim como os endpoints anteriores.\n\n#### Resposta\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n    \\\"pix\\\": {\\n        \\\"receberSemChave\\\": true,\\n        \\\"chaves\\\": {\\n            \\\"355e4568-e89b-1243-a456-006655440001\\\": {\\n                \\\"recebimento\\\": {\\n                    \\\"txidObrigatorio\\\": true,\\n                    \\\"qrCodeEstatico\\\": {\\n                        \\\"recusarTodos\\\": false\\n                    }\\n                }\\n            }\\n        }\\n    }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"200\"\n    }\n  ]\n}\n[/block]","updates":[],"order":2,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"607446854bea400071903ed4","createdAt":"2021-04-12T13:09:25.558Z","user":"606467dc210791004370e5df","category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"API Pix","slug":"api-pix","order":0,"from_sync":false,"reference":false,"_id":"606f2ca6c5ba910078783441","createdAt":"2020-10-30T18:54:03.767Z","version":"606f2ca7c5ba9100787834c6","project":"575aeffae12cf20e002f306c","__v":0},"version":{"version":"1.1.0","version_clean":"1.1.0","codename":"2021","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["606f2ca6c5ba91007878342b","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","606f2ca6c5ba91007878342c","606f2ca6c5ba91007878342d","606f2ca6c5ba91007878342e","606f2ca6c5ba91007878342f","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","606f2ca6c5ba910078783430","606f2ca6c5ba910078783431","5783f78c5cbce30e0074e2b7","606f2ca6c5ba910078783432","606f2ca6c5ba910078783433","606f2ca6c5ba910078783434","606f2ca6c5ba910078783435","606f2ca6c5ba910078783436","606f2ca6c5ba910078783437","578529f887c9280e0090394b","606f2ca6c5ba910078783438","606f2ca6c5ba910078783439","606f2ca6c5ba91007878343a","606f2ca6c5ba91007878343b","606f2ca6c5ba91007878343c","606f2ca6c5ba91007878343d","606f2ca6c5ba91007878343e","606f2ca6c5ba91007878343f","606f2ca6c5ba910078783440","606f2ca6c5ba910078783441","60d61f026ddc3901a32ee5f1","60ec37c637005f015e54174e","61473375119247002a9c14d7"],"_id":"606f2ca7c5ba9100787834c6","project":"575aeffae12cf20e002f306c","createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","__v":3,"forked_from":"575aeffae12cf20e002f306f"},"project":"575aeffae12cf20e002f306c","__v":0,"parentDoc":null}

Endpoints

Informações sobre os Endpoints da API Pix Gerencianet

Nesta página você encontrará todos os endpoints disponíveis na API Pix Gerencianet. Recomendamos que [participe da nossa comunidade no Discord](https://discord.gg/ptGHMtczcV) para acompanhar a evolução da API, incluindo a disponibilização de novos endpoints. Utilize o sumário abaixo para navegar rapidamente entre os grupos de endpoints da API. **Sumário** 1. [Cobranças](#section-cobran-as) 1.1 [Criar cobrança imediata (sem txid)](#section-criar-cobran-a-imediata-sem-txid-) 1.2 [Criar cobrança imediata (com txid)](#section-criar-cobran-a-imediata-com-txid-) 1.3 [Revisar cobrança](#section-revisar-cobran-a) 1.4 [Consultar cobrança](#section-consultar-cobran-a) 1.5 [Consultar lista de cobranças](#section-consultar-lista-de-cobran-as) 2. [Pix](#section-pix) 2.1 [Consultar Pix](#section-consultar-pix) 2.2 [Consultar Pix recebidos](#section-consultar-pix-recebidos) 2.3 [Requisitar envio de Pix](#section-requisitar-envio-de-pix) 2.4 [Solicitar devolução](#section-solicitar-devolu-o) 2.5 [Consultar devolução](#section-consultar-devolu-o) 3. [Payload locations](#section-payload-locations) 3.1 [Criar location do payload](#section-criar-location-do-payload) 3.2 [Consultar locations cadastradas](#section-consultar-locations-cadastradas) 3.3 [Recuperar location do payload](#section-recuperar-location-do-payload) 3.4 [Gerar QR Code de um location](#section-gerar-qrcode-de-um-location) 3.5 [Desvincular um txid de uma location](#section-desvincular-um-txid-de-uma-location) 4. [Webhooks](#section-webhooks) 4.1 [Entendendo o padrão mTLS](#section-entendendo-o-padr-o-mtls) 4.2 [Exemplos de configuração de servidor](#section-exemplos-de-configura-es-de-servidor) 4.3 [Configurar o webhook Pix](#section-configurar-o-webhook-pix) 4.4 [Exibir informações do wehook Pix](#section-exibir-informa-es-do-wehook-pix) 4.5 [Consultar lista de webhooks](#section-consultar-lista-de-webhooks) 4.6 [Cancelar o webhook Pix](#section-cancelar-o-webhook-pix) 4.7 [Recebendo Callbacks](#section-recebendo-callbacks) 5. [Endpoints exclusivos Gerencianet](#section-endpoints-exclusivos-gerencianet) 5.1 [Criar chave evp](#section-criar-chave-evp) 5.2 [Listar chaves evp](#section-listar-chaves-evp) 5.3 [Remover chave evp](#section-remover-chave-evp) 5.4 [Buscar o saldo da conta](#section-buscar-o-saldo-da-conta) 5.5 [Criar/modificar configurações da conta](#section-criar-modificar-configura-es-da-conta) 5.6 [Listar configurações da conta](#section-listar-configura-es-da-conta) <hr> ## Cobranças O conjunto de endpoints a seguir é responsável pela gestão de cobranças. As cobranças, no contexto da API Pix representam uma transação financeira entre um pagador e um recebedor, cuja forma de pagamento é o Pix. ### Criar cobrança imediata (sem txid) [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method post\">POST</span>\n <span class=\"endpoint\">/v2/cob</span>\n</div>" } [/block] Endpoint para criar uma cobrança imediata sem informar um `txid`. Em geral, o `txid` é criado pelo usuário recebedor e está sob sua responsabilidade. Este endpoint é uma exceção a essa regra e, neste caso, o `txid` será definido pela Gerencianet. **Requer autorização para o escopo**: **`cob.write`** #### Requisição [block:code] { "codes": [ { "code": "{\n \"calendario\": {\n \"expiracao\": 3600\n },\n \"devedor\": {\n \"cpf\": \"12345678909\",\n \"nome\": \"Francisco da Silva\"\n },\n \"valor\": {\n \"original\": \"123.45\"\n },\n \"chave\": \"71cdf9ba-c695-4e3c-b010-abb521a3f1be\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\"\n}", "language": "json", "name": "Exemplo 1" }, { "code": "{\n \"calendario\": {\n \"expiracao\": 3600\n },\n \"devedor\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"valor\": {\n \"original\": \"37.00\"\n },\n \"chave\": \"ac107ed7-97cd-4fe7-8df5-a5f5659bf2f3\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\",\n \"infoAdicionais\": [\n {\n \"nome\": \"Campo 1\",\n \"valor\": \"Informação Adicional1 do PSP-Recebedor\"\n },\n {\n \"nome\": \"Campo 2\",\n \"valor\": \"Informação Adicional2 do PSP-Recebedor\"\n }\n ]\n}", "language": "json", "name": "Exemplo 2" } ] } [/block] Dados para geração da cobrança. <div class="tab2">(*) Atributo obrigatório</div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "**calendario**", "0-1": "Os campos aninhados sob o identificador **calendário **organizam informações a respeito de controle de tempo da cobrança.\n\ncalendario:\n<div class=\"tab2\">`criacao*`// Timestamp que indica o momento em que foi criada a cobrança. Respeita o formato definido na RFC 3339. Mínimo de 1 caractere e máximo de 255 caracteres (String).\n\n`apresentacao*`// Timestamp que indica o momento em que o payload JSON que representa a cobrança foi recuperado. Ou seja, idealmente, é o momento em que o usuário realizou a captura do QR Code para verificar os dados de pagamento. Respeita o formato definido na RFC 3339. string date-time (Timestamp de apresentação do QR Code)\n\n`expiracao`// Tempo de vida da cobrança, especificado em segundos a partir da data de criação (Calendario.criacao). Recebe um numero com valor mínimo de 1 e máximo integer int32, passado como integer.</div>", "0-2": "Sim", "0-3": "object (Calendário)", "1-0": "**devedor**", "1-1": "Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo pagador.cpf e campo pagador.cnpj estejam preenchidos ao mesmo tempo. Se o campo pagador.cnpj está preenchido, então o campo pagador.cpf não pode estar preenchido, e vice-versa. Se o campo pagador.nome está preenchido, então deve existir ou um pagador.cpf ou um campo pagador.cnpj preenchido.\n\ndevedor:\n<div class=\"tab2\">`cpf*`// CPF do usuário pagador.string `/^\\d{11}$/`\n\n`nome*`// Nome do usuário pagador. string (Nome) `≤ 200 characters`</div>", "1-2": "Não", "1-3": "Pessoa Física (object) or Pessoa Jurídica (object)", "2-0": "**valor** ", "2-1": "Todos os campos que indicam valores monetários obedecem ao formato do ID 54 da especificação EMV/BR Code para QR Codes. O separador decimal é o caractere ponto. Não é aplicável utilizar separador de milhar. Exemplos de valores aderentes ao padrão: “0.00”, “1.00”, “123.99”, “123456789.23”\n\n<br>\n\nvalor:\n<div class=\"tab2\"> `original*`// Valor original da cobrança.string `\\d{1,10}\\.\\d{2}`</div>", "2-2": "Sim", "2-3": "object", "3-0": "**chave** ", "3-1": "O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.", "3-2": "Sim", "3-3": "string (Chave DICT do recebedor) `≤ 77 characters`", "4-0": "**solicitacaoPagador** ", "4-1": "O campo `solicitacaoPagador*`, opcional, determina um texto a ser apresentado ao pagador para que ele possa digitar uma informação correlata, em formato livre, a ser enviada ao recebedor. Esse texto será preenchido, na pacs.008, pelo PSP do pagador, no campo RemittanceInformation . O tamanho do campo na pacs.008 está limitado a 140 caracteres.", "4-2": "Não", "4-3": "string (Solicitação ao pagador)`≤ 140 characters`", "5-0": "**infoAdicionais** ", "5-1": "Cada respectiva informação adicional contida na lista (nome e valor) deve ser apresentada ao pagador.\n\ninfoAdicionais:\n<div class=\"tab2\">`nome*`// Nome do campo string (Nome) `≤ 50 characters`\n\n`valor*`// Dados do campo string (Valor) `≤ 200 characters` </div>", "5-2": "Não", "5-3": "Array of objects (Informações adicionais) `≤ 50`" }, "cols": 4, "rows": 6 } [/block] #### Respostas As respostas abaixo representam Sucesso(201) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"calendario\": {\n \"criacao\": \"2020-09-09T20:15:00.358Z\",\n \"expiracao\": 3600\n },\n \"txid\": \"7978c0c97ea847e78e8849634473c1f1\",\n \"revisao\": 0,\n \"loc\": {\n \"id\": 789,\n \"location\": \"pix.example.com/qr/v2/9d36b84fc70b478fb95c12729b90ca25\",\n \"tipoCob\": \"cob\"\n },\n \"location\": \"pix.example.com/qr/v2/9d36b84fc70b478fb95c12729b90ca25\",\n \"status\": \"ATIVA\",\n \"devedor\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"valor\": {\n \"original\": \"567.89\"\n },\n \"chave\": \"a1f4102e-a446-4a57-bcce-6fa48899c1d1\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\"\n}", "language": "json", "name": "201" }, { "code": "InvalidOperationError\n{\n \"nome\": \"documento_bloqueado\",\n \"mensagem\": \"O documento desta conta tem bloqueios que impedem a emissão\"\n}", "language": "json", "name": "400" }, { "code": "DuplicatedRegisterError\n{\n \"nome\": \"txid_duplicado\",\n \"mensagem\": \"Campo txid informado já foi utilizado em outra cobrança\"\n}", "language": "json", "name": "409" }, { "code": "ApplicationError\n{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao validar a chave\"\n}", "language": "json", "name": "500" } ] } [/block] ### Criar cobrança imediata (com txid) [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method put\">PUT</span>\n <span class=\"endpoint\">/v2/cob/<span class=\"variable\">:txid</span></span>\n</div>" } [/block] Endpoint para cadastrar uma cobrança com um identificador de transação (`txid`). **Requer autorização para o escopo**: **`cob.write`** #### Requisição [block:code] { "codes": [ { "code": "{\n \"calendario\": {\n \"expiracao\": 3600\n },\n \"devedor\": {\n \"cpf\": \"12345678908\",\n \"nome\": \"Francisco da Silva\"\n },\n \"valor\": {\n \"original\": \"123.45\"\n },\n \"chave\": \"71cdf9ba-c695-4e3c-b010-abb521a3f1be\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\"\n}", "language": "json", "name": "Exemplo 1" }, { "code": "{\n \"calendario\": {\n \"expiracao\": 3600\n },\n \"devedor\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"valor\": {\n \"original\": \"37.00\"\n },\n \"chave\": \"ac107ed7-97cd-4fe7-8df5-a5f5659bf2f3\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\",\n \"infoAdicionais\": [\n {\n \"nome\": \"Campo 1\",\n \"valor\": \"Informação Adicional1 do PSP-Recebedor\"\n },\n {\n \"nome\": \"Campo 2\",\n \"valor\": \"Informação Adicional2 do PSP-Recebedor\"\n }\n ]\n}", "language": "json", "name": "Exemplo 2" } ] } [/block] <div class="tab2">(*) Atributo obrigatório</div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "**txid** ", "0-1": "**Identificador da transação** \nO campo txid determina o identificador da transação. Para mais detalhes [clique aqui](doc:api-pix-glossario).", "0-2": "Sim", "0-3": "string (Id da Transação)`^[a-zA-Z0-9]{26,35}$`" }, "cols": 4, "rows": 1 } [/block] Dados para geração da cobrança. <div class="tab2">(*) Atributo obrigatório</div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "**calendario**", "0-1": "Os campos aninhados sob o identificador **calendário **organizam informações a respeito de controle de tempo da cobrança.\n\ncalendario:\n<div class=\"tab2\">`criacao*`// Timestamp que indica o momento em que foi criada a cobrança. Respeita o formato definido na RFC 3339. Mínimo de 1 caractere e máximo de 255 caracteres (String).\n\n`apresentacao*`// Timestamp que indica o momento em que o payload JSON que representa a cobrança foi recuperado. Ou seja, idealmente, é o momento em que o usuário realizou a captura do QR Code para verificar os dados de pagamento. Respeita o formato definido na RFC 3339. string date-time (Timestamp de apresentação do QR Code)\n\n`expiracao`// Tempo de vida da cobrança, especificado em segundos a partir da data de criação (Calendario.criacao). Recebe um numero com valor mínimo de 1 e máximo integer int32, passado como integer.</div>", "0-2": "Sim", "0-3": "object (Calendário)", "1-0": "**devedor**", "1-1": "Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo pagador.cpf e campo pagador.cnpj estejam preenchidos ao mesmo tempo. Se o campo pagador.cnpj está preenchido, então o campo pagador.cpf não pode estar preenchido, e vice-versa. Se o campo pagador.nome está preenchido, então deve existir ou um pagador.cpf ou um campo pagador.cnpj preenchido.\n\ndevedor:\n<div class=\"tab2\">`cpf*`// CPF do usuário pagador.string `/^\\d{11}$/`\n\n`nome*`// Nome do usuário pagador. string (Nome) `≤ 200 characters`</div>", "1-2": "Não", "1-3": "Pessoa Física (object) or Pessoa Jurídica (object)", "2-0": "**valor** ", "2-1": "Todos os campos que indicam valores monetários obedecem ao formato do ID 54 da especificação EMV/BR Code para QR Codes. O separador decimal é o caractere ponto. Não é aplicável utilizar separador de milhar. Exemplos de valores aderentes ao padrão: “0.00”, “1.00”, “123.99”, “123456789.23”\n\n<br>\n\nvalor:\n<div class=\"tab2\"> `original*`// Valor original da cobrança.string `\\d{1,10}\\.\\d{2}`</div>", "2-2": "Sim", "2-3": "object", "3-0": "**chave** ", "3-1": "O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.", "3-2": "Sim", "3-3": "string (Chave DICT do recebedor) `≤ 77 characters`", "4-0": "**solicitacaoPagador** ", "4-1": "O campo `solicitacaoPagador*`, opcional, determina um texto a ser apresentado ao pagador para que ele possa digitar uma informação correlata, em formato livre, a ser enviada ao recebedor. Esse texto será preenchido, na pacs.008, pelo PSP do pagador, no campo RemittanceInformation . O tamanho do campo na pacs.008 está limitado a 140 caracteres.", "4-2": "Não", "4-3": "string (Solicitação ao pagador)`≤ 140 characters`", "5-0": "**infoAdicionais** ", "5-1": "Cada respectiva informação adicional contida na lista (nome e valor) deve ser apresentada ao pagador.\n\ninfoAdicionais:\n<div class=\"tab2\">`nome*`// Nome do campo string (Nome) `≤ 50 characters`\n\n`valor*`// Dados do campo string (Valor) `≤ 200 characters` </div>", "5-2": "Não", "5-3": "Array of objects (Informações adicionais) `≤ 50`" }, "cols": 4, "rows": 6 } [/block] #### Respostas As respostas abaixo representam Sucesso(201) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"calendario\": {\n \"criacao\": \"2020-09-09T20:15:00.358Z\",\n \"expiracao\": 3600\n },\n \"txid\": \"7978c0c97ea847e78e8849634473c1f1\",\n \"revisao\": 0,\n \"loc\": {\n \"id\": 789,\n \"location\": \"pix.example.com/qr/v2/9d36b84fc70b478fb95c12729b90ca25\",\n \"tipoCob\": \"cob\"\n },\n \"location\": \"pix.example.com/qr/v2/9d36b84fc70b478fb95c12729b90ca25\",\n \"status\": \"ATIVA\",\n \"devedor\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"valor\": {\n \"original\": \"567.89\"\n },\n \"chave\": \"a1f4102e-a446-4a57-bcce-6fa48899c1d1\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\"\n}", "language": "json", "name": "201" }, { "code": "InvalidOperationError\n{\n \"nome\": \"documento_bloqueado\",\n \"mensagem\": \"O documento desta conta tem bloqueios que impedem a emissão\"\n}\n\nOu\n\n{\n \"nome\": \"chave_invalida\",\n \"mensagem\": \"A chave informada não faz referência à conta Gerencianet autenticada\"\n}\n\nInvalidValueError\n{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"Campo valor.original deve ser maior que zero\"\n}\n\nOu\n\n{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"Campo calendario.expiracao deve ser maior que zero\"\n}\n\nOu\n\n{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"Documento CPF em devedor.cpf é inválido\"\n}\n\n{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"Documento CNPJ em devedor.cnpj é inválido\"\n}", "language": "json", "name": "400" }, { "code": "DuplicatedRegisterError\n{\n \"nome\": \"txid_duplicado\",\n \"mensagem\": \"Campo txid informado já foi utilizado em outra cobrança\"\n}", "language": "json", "name": "409" }, { "code": "ApplicationError\n{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao validar a chave\"\n}", "language": "json", "name": "500" } ] } [/block] ### Revisar cobrança [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method put\">PATCH</span>\n <span class=\"endpoint\">/v2/cob/<span class=\"variable\">:txid</span></span>\n</div>" } [/block] Endpoint para revisar (modificar) uma cobrança a partir do seu `txid`. **Requer autorização para o escopo**: **`cob.write`** #### Requisição [block:code] { "codes": [ { "code": "{\n \"loc\": {\n \"id\": 7768\n },\n \"devedor\": {\n \"cpf\": \"12345678909\",\n \"nome\": \"Francisco da Silva\"\n },\n \"valor\": {\n \"original\": \"123.45\"\n },\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\"\n}", "language": "json", "name": "Exemplo 1" }, { "code": "{\n \"valor\": {\n \"original\": \"567.89\"\n },\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\"\n}", "language": "json", "name": "Exemplo 2" }, { "code": "{\n \"status\": \"REMOVIDA_PELO_USUARIO_RECEBEDOR\"\n}", "language": "json", "name": "Exemplo 3" } ] } [/block] [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "**txid** ", "0-1": "**Identificador da transação** \nO campo txid determina o identificador da transação. Para mais detalhes [clique aqui](doc:api-pix-glossario).", "0-2": "Sim", "0-3": "string (Id da Transação)`^[a-zA-Z0-9]{26,35}$`" }, "cols": 4, "rows": 1 } [/block] Dados para alteração da cobrança. <div class="tab2">(*) Atributo obrigatório</div> [block:parameters] { "data": { "0-0": "**calendario** ", "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-1": "Os campos aninhados sob o identificador calendário organizam informações a respeito de controle de tempo da cobrança.\n\ncalendario:\n<div class=\"tab2\">`criacao*` // Timestamp que indica o momento em que foi criada a cobrança. Respeita o formato definido na RFC 3339. Mínimo de 1 caractere e máximo de 255 caracteres (String).\n\n`apresentacao*` // Timestamp que indica o momento em que o payload JSON que representa a cobrança foi recuperado. Ou seja, idealmente, é o momento em que o usuário realizou a captura do QR Code para verificar os dados de pagamento. Respeita o formato definido na RFC 3339. string date-time (Timestamp de apresentação do QR Code)\n\n `expiracao` // Tempo de vida da cobrança, especificado em segundos a partir da data de criação (Calendario.criacao). Recebe um numero com valor mínimo de 1 e máximo integer int32, passado como integer.</div>", "0-2": "Não", "0-3": "object (Calendário)", "1-0": "**status** ", "1-1": "Enum: `\"ATIVA\"`,\n\n`\"CONCLUIDA\"`,\n\n`\"REMOVIDA_PELO_USUARIO_RECEBEDOR\"`,\n\n`\"REMOVIDA_PELO_PSP\"`", "1-2": "Não", "1-3": "string (Status da Cobrança)", "2-0": "**devedor** ", "2-1": "Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo pagador.cpf e campo pagador.cnpj estejam preenchidos ao mesmo tempo. Se o campo pagador.cnpj está preenchido, então o campo pagador.cpf não pode estar preenchido, e vice-versa. Se o campo pagador.nome está preenchido, então deve existir ou um pagador.cpf ou um campo pagador.cnpj preenchido.\n\n*devedor:* \n<div class=\"tab2\">`cpf*` // CPF do usuário pagador.string` /^\\d{11}$/`\n\n`nome*` // Nome do usuário pagador. string (Nome) `≤ 200 characters`</div>", "3-0": "<b>valor</b>", "3-1": "Todos os campos que indicam valores monetários obedecem ao formato do ID 54 da especificação EMV/BR Code para QR Codes. O separador decimal é o caractere ponto. Não é aplicável utilizar separador de milhar. Exemplos de valores aderentes ao padrão: “0.00”, “1.00”, “123.99”, “123456789.23”<br><br> <em>valor:</em><br>`original*` // Valor original da cobrança. string `\\d{1,10}\\.\\d{2}`", "3-2": "Não", "3-3": "object", "5-0": "<b>solicitacaoPagador</b>", "5-1": "O campo solicitacaoPagador, opcional, determina um texto a ser apresentado ao pagador para que ele possa digitar uma informação correlata, em formato livre, a ser enviada ao recebedor. Esse texto será preenchido, na pacs.008, pelo PSP do pagador, no campo RemittanceInformation . O tamanho do campo na pacs.008 está limitado a 140 caracteres.", "5-2": "Não", "5-3": "string (Solicitação ao pagador)`<= 140 characters`", "7-0": "<b>infoAdicionais</b>", "7-1": "Cada respectiva informação adicional contida na lista (nome e valor) deve ser apresentada ao pagador.<br/><br> <em>infoAdicionais:</em><br>`nome*` // Nome do campo string (Nome) `< 50 characters`<br><br> `valor*`// Dados do campo string (Valor) `< 200 characters`", "7-2": "Não", "7-3": "Array of objects (Informações adicionais)`<= 50`", "2-2": "Não", "2-3": "Pessoa Física (object) or Pessoa Jurídica (object)", "6-0": "<b>chave</b>", "6-1": "O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.", "6-2": "Não", "6-3": "string (Chave DICT do recebedor) `≤ 77 characters`", "4-0": "<b>loc</b>", "4-1": "Identificador da localização do payload.\n\n<em>loc:</em><br>`id*` // ID da location a ser associada a cobrança. int32", "4-2": "Não", "4-3": "object" }, "cols": 4, "rows": 8 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"status\": \"ATIVA\",\n \"calendario\": {\n \"criacao\": \"2020-09-09T20:15:00.358Z\",\n \"expiracao\": 3600\n },\n \"location\": \"pix.example.com/qr/9d36b84f-c70b-478f-b95c-12729b90ca25\",\n \"txid\": \"7978c0c97ea847e78e8849634473c1f1\",\n \"revisao\": 1,\n \"devedor\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"valor\": {\n \"original\": \"567.89\"\n },\n \"chave\": \"a1f4102e-a446-4a57-bcce-6fa48899c1d1\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\"\n}", "language": "json", "name": "200" }, { "code": "UnknownRegisterError\n{\n \"nome\": \"cobranca_nao_encontrada\",\n \"mensagem\": \"Nenhuma cobrança encontrada para o txid informado\"\n}\n\nInvalidOperationError\n{\n \"nome\": \"status_cobranca_invalido\",\n \"mensagem\": \"A cobrança não está mais com o status ATIVA\"\n}\n\nOu\n\n{\n \"nome\": \"chave_invalida\",\n \"mensagem\": \"A chave informada não faz referência à conta Gerencianet autenticada\"\n}\n\n\nInvalidValueError\n{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"Campo calendario.expiracao deve ser maior que zero\"\n}\n\nOu\n\n{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"Documento CPF em devedor.cpf é inválido\"\n}\n\nOu\n\n{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"Documento CNPJ em devedor.cnpj é inválido\"\n}\n", "language": "json", "name": "400" }, { "code": "DuplicatedRegisterError\n{\n \"nome\": \"txid_duplicado\",\n \"mensagem\": \"Campo txid informado já foi utilizado em outra cobrança\"\n}", "language": "json", "name": "409" }, { "code": "ApplicationError\n{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao validar a chave\"\n}", "language": "json", "name": "500" } ] } [/block] ### Consultar cobrança [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/cob/<span class=\"variable\">:txid</span></span>\n</div>" } [/block] Endpoint para consultar uma cobrança a partir do `txid`. Também é possível consultar informações de uma revisão específica de uma cobrança. Para isso é necessário informar o *query param* `revisao`. Exemplo: `/v2/cob/:txid/?revisao=1`. Quando o parâmetro não é informado, a revisão mais recente é retornada como padrão. **Requer autorização para o escopo**: **`cob.read`** #### Requisição [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<b>txid</b>", "0-1": "<b>Identificador da transação</b><br>O campo txid determina o identificador da transação. Para mais detalhes [clique aqui](doc:api-pix-glossario).", "0-2": "Sim", "0-3": "string (Id da Transação)`^[a-zA-Z0-9]{26,35}$`", "1-0": "<b>revisao</b>", "1-1": "Permite recuperar revisões anteriores de uma cobrança. Na ausência desse parâmetro, sempre será retornada a cobrança conforme consta em sua última revisão.", "1-3": "integer($int32)", "1-2": "Não" }, "cols": 4, "rows": 2 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"status\": \"ATIVA\",\n \"calendario\": {\n \"criacao\": \"2020-09-09T20:15:00.358Z\",\n \"expiracao\": \"3600\"\n },\n \"location\": \"pix.example.com/qr/9d36b84f-c70b-478f-b95c-12729b90ca25\",\n \"txid\": \"7978c0c97ea847e78e8849634473c1f1\",\n \"revisao\": 1,\n \"devedor\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"valor\": {\n \"original\": \"567.89\"\n },\n \"chave\": \"a1f4102e-a446-4a57-bcce-6fa48899c1d1\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\"\n}", "language": "json", "name": "Exemplo 1 (200)" }, { "code": "{\n \"status\": \"CONCLUIDA\",\n \"calendario\": {\n \"criacao\": \"2020-09-09T20:15:00.358Z\",\n \"expiracao\": \"3600\"\n },\n \"location\": \"qrcodes-pix.gerencianet.com.br/1dd7f893-a58e-4172-8702-8dc33e21a403\",\n \"txid\": \"655dfdb1-a451-4b8f-bb58-254b958913fb\",\n \"revisao\": 1,\n \"devedor\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"valor\": {\n \"original\": \"100.00\"\n },\n \"chave\": \"40a0932d-1918-4eee-845d-35a2da1690dc\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\",\n \"pix\": [\n {\n \"endToEndId\": \"E12345678202009091221kkkkkkkkkkk\",\n \"txid\": \"655dfdb1-a451-4b8f-bb58-254b958913fb\",\n \"valor\": \"110.00\",\n \"horario\": \"2020-09-09T20:15:00.358Z\",\n \"infoPagador\": \"0123456789\",\n \"devolucoes\": [\n {\n \"id\": \"123ABC\",\n \"rtrId\": \"Dxxxxxxxx202009091221kkkkkkkkkkk\",\n \"valor\": \"10.00\",\n \"horario\": {\n \"solicitacao\": \"2020-09-09T20:15:00.358Z\"\n },\n \"status\": \"EM_PROCESSAMENTO\"\n }\n ]\n }\n ]\n}", "language": "json", "name": "Exemplo 2 (200)" }, { "code": "UnknownRegisterError\n{\n \"nome\": \"cobranca_nao_encontrada\",\n \"mensagem\": \"Nenhuma cobrança encontrada para o txid informado\"\n}", "language": "json", "name": "400" } ] } [/block] ### Consultar lista de cobranças [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/cob/</span>\n</div>" } [/block] Endpoint para consultar várias cobranças. Este endpoint possui filtros para afunilar os resultados da busca, tais como CPF/CNPJ e *status*. Dentre todos os filtros disponíveis, os filtros `inicio` e `fim` são obrigatórios e representam o intervalo de datas em que as cobranças consultadas devem estar compreendidas. **Requer autorização para o escopo**: **`cob.read`** #### Requisição O trecho de código abaixo ilustra o consumo do endpoint em uma requisição com o mínimo de parâmetros possível (o intervalo de datas `inicio` e `fim`) e o formato em que esses parâmetros devem ser repassados. ``` /v2/cob?inicio=2020-10-22T16:01:35Z&fim=2020-11-30T20:10:00Z ``` <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<b>inicio</b>", "0-1": "Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339.", "0-2": "Sim", "0-3": "string <date-time>", "1-0": "<b>fim</b>", "1-1": "Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339.", "1-2": "Sim", "1-3": "string <date-time>", "2-0": "<b>cpf</b>", "2-1": "Filtro pelo CPF do pagador. Não pode ser utilizado ao mesmo tempo que o CNPJ.", "2-2": "Não", "2-3": "string `/^\\d{11}$/`", "3-0": "<b>cnpj</b>", "3-1": "Filtro pelo CNPJ do pagador. Não pode ser utilizado ao mesmo tempo que o CPF.", "3-2": "Não", "3-3": "string`/^\\d{14}$/`", "4-0": "<b>status</b>", "4-1": "Enum: `\"ATIVA\"`,`\"CONCLUIDA\"`,<br> `\"REMOVIDA_PELO_USUARIO_RECEBEDOR\"`,<br> `\"REMOVIDA_PELO_PSP\"`\n Filtro pelo status da cobrança.", "4-2": "Não", "4-3": "string", "5-0": "<b>paginacao.paginaAtual</b>", "5-1": "Default: `0`<br> Página a ser retornada pela consulta. Se não for informada, o PSP assumirá que será 0.", "5-2": "Não", "5-3": "integer {int32} (Página atual) `>= 0`", "6-0": "<b>paginacao.itensPorPagina</b>", "6-1": "Default: `100`<br> Quantidade máxima de registros retornados em cada página. Apenas a última página pode conter uma quantidade menor de registros.", "6-2": "Não", "6-3": "integer {int32} (Página atual) `[1 .. 1000]`" }, "cols": 4, "rows": 7 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) do consumo. [block:code] { "codes": [ { "code": "{\n \"parametros\": {\n \"inicio\": \"2020-04-01T00:00:00Z\",\n \"fim\": \"2020-04-02T10:00:00Z\",\n \"paginacao\": {\n \"paginaAtual\": 0,\n \"itensPorPagina\": 100,\n \"quantidadeDePaginas\": 1,\n \"quantidadeTotalDeItens\": 2\n }\n },\n \"cobs\": [\n {\n \"status\": \"ATIVA\",\n \"calendario\": {\n \"criacao\": \"2020-09-09T20:15:00.358Z\",\n \"expiracao\": \"3600\"\n },\n \"location\": \"qrcodes-pix.gerencianet.com.br/9d36b84f-c70b-478f-b95c-12729b90ca25\",\n \"txid\": \"7978c0c97ea847e78e8849634473c1f1\",\n \"revisao\": 1,\n \"devedor\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"valor\": {\n \"original\": \"567.89\"\n },\n \"chave\": \"a1f4102e-a446-4a57-bcce-6fa48899c1d1\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\"\n },\n {\n \"status\": \"CONCLUIDA\",\n \"calendario\": {\n \"criacao\": \"2020-09-09T20:15:00.358Z\",\n \"expiracao\": \"3600\"\n },\n \"location\": \"qrcodes-pix.gerencianet.com.br/1dd7f893-a58e-4172-8702-8dc33e21a403\",\n \"txid\": \"655dfdb1a4514b8fbb58254b958913fb\",\n \"revisao\": 1,\n \"devedor\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"valor\": {\n \"original\": \"100.00\"\n },\n \"chave\": \"40a0932d-1918-4eee-845d-35a2da1690dc\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\",\n \"pix\": [\n {\n \"endToEndId\": \"E12345678202009091221kkkkkkkkkkk\",\n \"txid\": \"655dfdb1a4514b8fbb58254b958913fb\",\n \"valor\": \"110.00\",\n \"horario\": \"2020-09-09T20:15:00.358Z\",\n \"pagador\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"infoPagador\": \"0123456789\",\n \"devolucoes\": [\n {\n \"id\": \"123ABC\",\n \"rtrId\": \"Dxxxxxxxx202009091221kkkkkkkkkkk\",\n \"valor\": \"10.00\",\n \"horario\": {\n \"solicitacao\": \"2020-09-09T20:15:00.358Z\"\n },\n \"status\": \"EM_PROCESSAMENTO\"\n }\n ]\n }\n ]\n }\n ]\n}", "language": "json", "name": "Exemplo 1 (200)" }, { "code": " \"parametros\": {\n \"inicio\": \"2020-04-01T00:00:00Z\",\n \"fim\": \"2020-04-01T23:59:59Z\",\n \"paginacao\": {\n \"paginaAtual\": 0,\n \"itensPorPagina\": 100,\n \"quantidadeDePaginas\": 1,\n \"quantidadeTotalDeItens\": 1\n }\n },\n \"cobs\": [\n {\n \"status\": \"ATIVA\",\n \"calendario\": {\n \"criacao\": \"2020-09-09T20:15:00.358Z\",\n \"expiracao\": \"3600\"\n },\n \"location\": \"qrcodes-pix.gerencianet.com.br/9d36b84f-c70b-478f-b95c-12729b90ca25\",\n \"txid\": \"7978c0c9-7ea8-47e7-8e88-49634473c1f1\",\n \"revisao\": 1,\n \"devedor\": {\n \"cnpj\": \"12345678000195\",\n \"nome\": \"Empresa de Serviços SA\"\n },\n \"valor\": {\n \"original\": \"567.89\"\n },\n \"chave\": \"a1f4102e-a446-4a57-bcce-6fa48899c1d1\",\n \"solicitacaoPagador\": \"Informe o número ou identificador do pedido.\"\n }\n ]\n}", "language": "json", "name": "Exemplo 2 (200)" } ] } [/block] ## Pix Os endpoints a seguir trazem as funcionalidades disponíveis para a gestão das transações Pix, isto é, a manutenção dos recebimentos e envios de valores através do arranjo de pagamentos Pix. ### Consultar Pix [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/pix/<span class=\"variable\">:e2eId</span></span>\n</div>" } [/block] Endpoint para consultar um Pix através de um *End to End ID* (`e2eid`). **Requer autorização para o escopo**: **`pix.read`** [block:callout] { "type": "warning", "title": "Atenção!", "body": "Este endpoint retorna apenas informações sobre **Pix recebidos**." } [/block] #### Requisição [block:parameters] { "data": { "0-0": "<b>e2eid</b>", "0-1": "EndToEndIdentification que transita na PACS002, PACS004 e PACS008", "0-2": "Sim", "h-2": "Obrigatório", "h-1": "Descrição", "h-0": "Atributo", "h-3": "Tipo", "0-3": "string (Id fim a fim da transação) \n`32 characters` \n`^[a-zA-Z0-9]{32}`" }, "cols": 4, "rows": 1 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"endToEndId\": \"E12345678202009091221abcdef12345\",\n \"txid\": \"cd1fe328c875481285a6f233ae41b662\",\n \"valor\": \"100.00\",\n \"horario\": \"2020-09-10T13:03:33.902Z\",\n \"infoPagador\": \"Reforma da casa\",\n \"devolucoes\": [\n {\n \"id\": \"000AAA111\",\n \"rtrId\": \"D12345678202009091000abcde123456\",\n \"valor\": \"11.00\",\n \"horario\": {\n \"solicitacao\": \"2020-09-10T13:03:33.902Z\"\n },\n \"status\": \"EM_PROCESSAMENTO\"\n }\n ]\n}", "language": "json", "name": "Exemplo 1 (200)" }, { "code": "{\n \"endToEndId\": \"E12345678202009091221ghijk78901234\",\n \"txid\": \"5b933948f3224266b1050ac54319e775\",\n \"valor\": \"200.00\",\n \"horario\": \"2020-09-10T13:03:33.902Z\",\n \"infoPagador\": \"Revisão do carro\"\n}", "language": "json", "name": "Exemplo 2 (200)" }, { "code": "{\n \"nome\": \"pix_nao_encontrado\",\n \"mensagem\": \"Nenhum pix encontrado para o identificador informado\"\n}", "language": "json", "name": "400" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao buscar o pix\"\n}", "language": "json", "name": "500" } ] } [/block] ### Consultar Pix recebidos [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/pix</span>\n</div>" } [/block] Endpoint para consultar vários Pix recebidos. **Requer autorização para o escopo**: **`pix.read`** #### Requisição Este endpoint dispõe de filtros para afunilar os resultados. Todos os filtros são do tipo *query params* , portanto devem ser enviados pela URL, como exemplificado no trecho de código abaixo. ``` /v2/pix?inicio=2020-04-01T00:00:00Z&fim=2020-04-01T23:59:59Z ``` Os filtros `inicio` e `fim` definem um intervalo de datas em que os Pix devem estar compreendidos para serem retornados. Esses filtros são obrigatórios. [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<b>inicio</b>", "1-0": "<b>fim</b>", "2-0": "<b>txid</b>", "3-0": "<b>txIdPresente</b>", "4-0": "<b>devolucaoPresente</b>", "5-0": "<b>cpf</b>", "6-0": "<b>cnpj</b>", "7-0": "<b>paginacao.paginaAtual</b>", "8-0": "<b>paginacao.itensPorPagina</b>", "0-1": "Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339.", "0-3": "string <date-time> (Data de início)", "1-1": "Filtra os registros cuja data de criação seja menor ou igual que a data de fim. Respeita RFC 3339.", "1-3": "string <date-time> (Data de início)", "2-1": "<b>Identificador da transação</b><br>O campo txid determina o identificador da transação. O objetivo desse campo é ser um elemento que possibilite ao PSP do recebedor apresentar ao usuário recebedor a funcionalidade de conciliação de pagamentos.\n\nNa pacs.008, é referenciado como `TransactionIdentification <txid>` ou `idConciliacaoRecebedor`.\n\nEm termos de fluxo de funcionamento, o txid é lido pelo aplicativo do PSP do pagador e, depois de confirmado o pagamento, é enviado para o SPI via pacs.008. Uma pacs.008 também é enviada ao PSP do recebedor, contendo, além de todas as informações usuais do pagamento, o txid. Ao perceber um recebimento dotado de txid, o PSP do recebedor está apto a se comunicar com o usuário recebedor, informando que um pagamento específico foi liquidado.\n\nO txid é criado exclusivamente pelo usuário recebedor e está sob sua responsabilidade. O txid, no contexto de representação de uma cobrança, é único por CPF/CNPJ do usuário recebedor. Cabe ao PSP recebedor validar essa regra na API Pix.", "2-3": "`[a-zA-Z0-9]{26,35}`", "3-1": "boolean", "4-1": "boolean", "5-3": "string (CPF) `/^\\d{11}$/`", "5-1": "Filtro pelo CPF do pagador. Não pode ser utilizado ao mesmo tempo que o CNPJ.", "6-1": "Filtro pelo CNPJ do pagador. Não pode ser utilizado ao mesmo tempo que o CPF.", "7-1": "Default: `0`\nPágina a ser retornada pela consulta. Se não for informada, o PSP assumirá que será 0.", "8-1": "Default: `100`\nQuantidade máxima de registros retornados em cada página. Apenas a última página pode conter uma quantidade menor de registros.", "6-3": "string (CNPJ) `/^\\d{14}$/`", "7-3": "integer <int32> (Página atual) >= 0", "8-3": "integer <int32> (Itens por Página) [ 1 .. 1000 ]", "0-2": "Sim", "1-2": "Sim", "2-2": "Não", "3-2": "Não", "4-2": "Não", "5-2": "Não", "6-2": "Não", "7-2": "Não", "8-2": "Não" }, "cols": 4, "rows": 9 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"parametros\": {\n \"inicio\": \"2020-04-01T00:00:00Z\",\n \"fim\": \"2020-04-01T23:59:59Z\",\n \"paginacao\": {\n \"paginaAtual\": 0,\n \"itensPorPagina\": 100,\n \"quantidadeDePaginas\": 1,\n \"quantidadeTotalDeItens\": 2\n }\n },\n \"pix\": [\n {\n \"$ref\": \"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/pixResponse1/value\"\n },\n {\n \"$ref\": \"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/pixResponse2/value\"\n }\n ]\n}", "language": "json", "name": "200" }, { "code": "{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"Campo de data fim deve ser maior ou igual ao campo de data inicio\"\n}", "language": "json", "name": "400" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao buscar pix recebidos\"\n}", "language": "json", "name": "500" } ] } [/block] ### Requisitar envio de Pix [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method post\">POST</span>\n <span class=\"endpoint\">/v2/pix</span>\n</div>" } [/block] Endpoint destinado a realizar o envio direto de um Pix para uma chave Pix cadastrada em um PSP seja da Gerencianet ou outro. [block:callout] { "type": "warning", "title": "Atenção", "body": "Para habilitar o endpoint pix/enviar é necessário preencher [este formulário](https://www.cognitoforms.com/GerencianetPagamentos1/Formul%C3%A1rioDeSolicita%C3%A7%C3%A3oDePermiss%C3%A3oParaEnvioDeValoresPixViaAPI). Após o preenchimento, basta aguardar que entraremos em contato.\n\nLiberamos uma versão de testes por 15 dias que pode ser solicitada tanto por pessoa física quanto jurídica. O procedimento é o mesmo, preencher o formulário indicado." } [/block] O endpoint poderá sofrer alterações quando entrar no escopo de padronização do BACEN. Os clientes habilitados serão avisados com antecedência. **Requer autorização para o escopo**: **`pix.send`** #### Requisição [block:code] { "codes": [ { "code": "{\n \"valor\": \"12.34\",\n \"pagador\": {\n \"chave\": \"19974764017\"\n },\n \"favorecido\": {\n \"chave\": \"joã[email protected]\"\n }\n}", "language": "json", "name": "Exemplo 1" }, { "code": "{\n \"valor\": \"99.99\",\n \"pagador\": {\n \"chave\": \"19974764017\",\n \"infoPagador\": \"Segue o pagamento da conta\"\n },\n \"favorecido\": {\n \"contaBanco\": {\n \"nome\": \"JOSE CARVALHO\",\n \"cpf\": \"10519952057\",\n \"codigoBanco\": \"09089356\",\n \"agencia\": \"1\",\n \"conta\": \"123453\",\n \"tipoConta\": \"cacc\"\n }\n }\n}", "language": "json", "name": "Exemplo 2" } ] } [/block] <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<b>valor", "0-1": "Valores monetários referentes à cobrança.", "0-2": "Sim", "0-3": "string \n`\\d{1,10}\\.\\d{2}`", "1-0": "<b>pagador", "1-1": "O campo pagador contém a chave Pix associada a conta autenticada que será debitado o valor definido.\n\npagador:\n\n`chave*` // O campo chave determina a chave Pix registrada no DICT que será utilizada identificar o pagador do Pix.\nstring (Chave DICT do pagador) `≤ 77 characters`\n\n`infoPagador` // Informação do pagador sobre o Pix a ser enviado.\n\nstring `< 140`", "1-2": "Sim", "1-3": "object", "2-0": "<b>favorecido</b>", "2-2": "Sim", "2-1": "O campo favorecido contém a chave Pix que será creditado o valor definido.\n\nAtributos favorecido:\n\n`chave` // O campo chave determina a chave Pix registrada no DICT que será utilizada identificar o recebedor do Pix.\n\n string (Chave DICT do recebedor) `≤ 77 characters`\n<br><br>\n`contaBanco` // O campo contaBanco determina os dados bancários do recebedor do Pix.\n\n<em>Atributos contaBanco:</em>\n<br>`nome (Obrigatório)`// Nome do recebedor (string) `< 200 characters`<br>\n`cpf` // CPF do recebedor (string) `^[0-9]{11}$`<br>\n`cnpj` // CNPJ do recebedor (string) `^[0-9]{14}$`<br>\n`codigoBanco (Obrigatório)`// <a href=\"https://www.bcb.gov.br/pom/spb/estatistica/port/ASTR003.pdf\" target=\"_blank\">ISPB do Banco do recebedor</a> (string) `^[0-9]{8}$`<br>\n`agencia (Obrigatório)` // Agência do recebedor no seu Banco, sem o dígito verificador (string) `^[0-9]{1,4}$`<br> \n`conta (Obrigatório)`// Conta do recebedor no seu Banco com o dígito verificador, sem traço - (string) `^[0-9]+`\n<br>\n`tipoConta (Obrigatório)` // Tipo da conta do recebedor no seu Banco (string) `^[0-9]+`<br>Enum: `\"cacc\"` (Conta corrente),\n`\"svgs\"` (poupança)", "2-3": "object", "3-0": "<b>status</b>", "3-1": "O campo status no retorno do webhook representa a situação da requisição de envio direto de um Pix para uma chave Pix, podendo assumir os seguintes estados:\n`\"EM_PROCESSAMENTO\"`, `\"REALIZADO\"`, `\"NAO_REALIZADO\"`", "3-2": "Não", "3-3": "string" }, "cols": 4, "rows": 4 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"e2eId\": \"E09089356202011251226APIff82f2e5\",\n \"valor\": \"12.31\",\n \"horario\": {\n \"solicitacao\": \"2020-11-25T12:26:42.905Z\"\n },\n \"status\": {\n \"type\": \"EM_PROCESSAMENTO\"\n }\n}", "language": "json", "name": "200" }, { "code": "{\n \"nome\": \"chave_invalida\",\n \"mensagem\": \"A chave informada não faz referência à conta Gerencianet autenticada\"\n}\n\nOU\n\n{\n \"nome\": \"saldo_insuficiente\",\n \"mensagem\": \"Saldo insuficiente para realizar o pagamento\"\n}\n\nOU\n\n{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"A chave informada em favorecido.chave é inválida\"\n}\n\nOU\n\n{\n \"nome\": \"chave_nao_encontrada\",\n \"mensagem\": \"A chave informada não foi encontrada\"\n}\n\n", "language": "json", "name": "400" }, { "code": "{\n \"nome\": \"pagamento_negado\",\n \"mensagem\": \"Pagamento negado por análises\"\n}", "language": "json", "name": "422" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao requisitar o pix\"\n}\n\nOU\n\n//InvalidKey\n{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao buscar os dados da chave\"\n}", "language": "json", "name": "500" } ] } [/block] ### Solicitar devolução [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method put\">PUT</span>\n <span class=\"endpoint\">/v2/pix/<span class=\"variable\">:e2eId</span>/devolucao/<span class=\"variable\">:id</span></span>\n</div>" } [/block] Endpoint para solicitar uma devolução através de um `e2eid` do Pix e do ID da devolução. O motivo que será atribuído à PACS.004 será "Devolução solicitada pelo usuário recebedor do pagamento original" cuja sigla é "MD06" de acordo com a aba RTReason da PACS.004 que consta no Catálogo de Mensagens do Pix. **Requer autorização para o escopo**: **`pix.write`** #### Requisição <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "0-0": "<b>e2eid</b>", "1-0": "<b>id</b>", "0-3": "string (Id fim a fim da transação) `32 characters` `[a-zA-Z0-9]{32}`", "1-3": "string (Id da Devolução) `[a-zA-Z0-9]{1,35}`", "0-1": "EndToEndIdentification que transita na PACS002, PACS004 e PACS008", "1-1": "Id gerado pelo cliente para representar unicamente uma devolução.", "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-2": "Sim", "1-2": "Sim" }, "cols": 4, "rows": 2 } [/block] Dados para pedido de devolução. <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<b>valor</b>", "0-1": "Valor solicitado para devolução. A soma dos valores de todas as devolucões não podem ultrapassar o valor total do Pix.", "0-3": "string (Valor) `\\d{1,10}\\.\\d{2}`", "0-2": "Sim" }, "cols": 4, "rows": 1 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"id\": \"123456\",\n \"rtrId\": \"D12345678202009091000abcde123456\",\n \"valor\": \"7.89\",\n \"horario\": {\n \"solicitacao\": \"2020-09-11T15:25:59.411Z\"\n },\n \"status\": \"EM_PROCESSAMENTO\"\n}", "language": "json", "name": "201" }, { "code": "{\n \"nome\": \"pix_nao_encontrado\",\n \"mensagem\": \"Nenhum pix encontrado para o identificador informado\"\n}", "language": "json", "name": "400" }, { "code": "{\n \"nome\": \"devolucao_id_duplicado\",\n \"mensagem\": \"O id informado já foi utilizado em outra devolução\"\n}", "language": "json", "name": "409" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao solicitar devolução\"\n}", "language": "json", "name": "500" } ] } [/block] ### Consultar devolução [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/pix/<span class=\"variable\">:e2eId</span>/devolucao/<span class=\"variable\">:id</span></span>\n</div>" } [/block] Endpoint para consultar uma devolução através de um End To End ID do Pix e do ID da devolução. **Requer autorização para o escopo**: **`pix.read`** #### Requisição <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<b>e2eid</b>", "1-0": "<b>id</b>", "0-1": "EndToEndIdentification que transita na PACS002, PACS004 e PACS008", "1-1": "Id gerado pelo cliente para representar unicamente uma devolução.", "0-3": "string (Id fim a fim da transação) `32 characters` `[a-zA-Z0-9]{32}`", "1-3": "string (Id da Devolução) `[a-zA-Z0-9]{1,35}`", "0-2": "Sim", "1-2": "Sim" }, "cols": 4, "rows": 2 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"id\": \"123456\",\n \"rtrId\": \"D12345678202009091000abcde123456\",\n \"valor\": \"7.89\",\n \"horario\": {\n \"solicitacao\": \"2020-09-11T15:25:59.411Z\"\n },\n \"status\": \"EM_PROCESSAMENTO\"\n}", "language": "json", "name": "Exemplo 1 (200)" }, { "code": "{\n \"id\": \"502\",\n \"rtrId\": \"D12345678202011111000fghij789012\",\n \"valor\": \"20.00\",\n \"horario\": {\n \"solicitacao\": \"2020-09-11T15:25:59.411Z\"\n },\n \"status\": \"NAO_REALIZADO\",\n \"motivo\": \"Negado por timeout\"\n}", "language": "json", "name": "Exemplo 2 (200)" }, { "code": "{\n \"nome\": \"devolucao_nao_encontrada\",\n \"mensagem\": \"Nenhuma devolução encontrada para o identificador informado\"\n}\n\nOU\n\n{\n \"nome\": \"pix_nao_encontrado\",\n \"mensagem\": \"Nenhum pix encontrado para o identificador informado\"\n}", "language": "json", "name": "400" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao buscar devolução\"\n}", "language": "json", "name": "500" } ] } [/block] ## Payload Locations O conjunto de endpoints abaixo são destinados a lidar com configuração e remoção de locations para uso dos payloads. ### Criar location do payload [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method post\">POST</span>\n <span class=\"endpoint\">/v2/loc</span>\n</div>" } [/block] Endpoint para criar location do payload. **Requer autorização para o escopo**: **`payloadlocation.write`** #### Requisição [block:code] { "codes": [ { "code": "{\n\t\"tipoCob\": \"cob\"\n}", "language": "json", "name": "Exemplo" } ] } [/block] #### Resposta As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"id\": 66,\n \"location\": \"qrcodes-pix.gerencianet.com.br/v2/7796e273b8e447c2b2c0ac2c58fe1a13\",\n \"tipoCob\": \"cob\",\n \"criacao\": \"2021-01-15T20:13:39.462Z\"\n}", "language": "json", "name": "201" }, { "code": "{\n \"nome\": \"json_invalido\",\n \"mensagem\": \"Valores ou tipos de campo inválidos\",\n \"erros\": [\n {\n \"chave\": \"enum\",\n \"caminho\": \".body.tipoCob\",\n \"mensagem\": \"deve ser igual a um dos valores predefinidos\"\n }\n ]\n}", "language": "json", "name": "400" } ] } [/block] ### Consultar locations cadastradas [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/loc</span>\n</div>" } [/block] Endpoint para consultar locations cadastradas. **Requer autorização para o escopo**: **`payloadlocation.read`** #### Requisição Para obter o resultado da consulta de locations é necessário informar os parâmetros `inicio` e `fim`, como exibido no trecho de código abaixo. Esses parâmetros restringem os resultados para os locations compreendidos nesse intervalo de datas. ``` /v2/loc/?inicio=2020-10-22T16:01:35Z&fim=2020-10-23T16:01:35Z ``` <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<b>inicio</b>", "1-0": "<b>fim</b>", "0-1": "Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339", "1-1": "Filtra os registros cuja data de criação seja menor ou igual que a data de fim. Respeita RFC 3339.", "0-2": "Sim", "1-2": "Sim", "0-3": "string <date-time>", "1-3": "string <date-time>" }, "cols": 4, "rows": 2 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"parametros\": {\n \"inicio\": \"2020-04-01T00:00:00Z\",\n \"fim\": \"2020-04-01T23:59:59Z\",\n \"paginacao\": {\n \"paginaAtual\": 0,\n \"itensPorPagina\": 100,\n \"quantidadeDePaginas\": 1,\n \"quantidadeTotalDeItens\": 3\n }\n },\n \"loc\": [\n {\n \"$ref\": \"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/payloadLocationResponse1/value\"\n },\n {\n \"$ref\": \"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/payloadLocationResponse2/value\"\n },\n {\n \"$ref\": \"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/payloadLocationResponse3/value\"\n }\n ]\n}", "language": "json", "name": "200" }, { "code": "{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"Campo de data fim deve ser maior ou igual ao campo de data inicio\"\n}", "language": "json", "name": "400" } ] } [/block] ### Recuperar location do payload [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/loc/<span class=\"variable\">:id</span></span>\n</div>" } [/block] Endpoint para consultar locations cadastradas. **Requer autorização para o escopo**: **`payloadlocation.read`** #### Requisição <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "**id**", "0-1": "Id da location cadastrada para servir um payload", "0-2": "Sim", "0-3": "string" }, "cols": 4, "rows": 1 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"id\": 7716,\n \"txid\": \"fda9460fe04e4f129b72863ae57ee22f\",\n \"location\": \"pix.example.com/qr/v2/cobv/2353c790eefb11eaadc10242ac120002\",\n \"tipoCob\": \"cobv\",\n \"criacao\": \"2020-03-11T21:19:51.013Z\"\n}", "language": "json", "name": "200" }, { "code": "{\n \"nome\": \"location_nao_encontrada\",\n \"mensagem\": \"Nenhum location encontrado para o identificador informado\"\n}", "language": "json", "name": "400" } ] } [/block] ### Gerar QRCode de um location [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/loc/<span class=\"variable\">:id</span>/qrcode</span>\n</div>" } [/block] Endpoint para gerar QRCode de um location. **Requer autorização para o escopo**: **`payloadlocation.read`** #### Requisição <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-3": "string", "0-2": "Sim", "0-1": "Id da location cadastrada para servir um payload", "0-0": "**id**" }, "cols": 4, "rows": 1 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"qrcode\": \"00020126880014BR.GOV.BCB.PIX2566qrcodes-pix.gerencianet.com.b...\",\n \"imagemQrcode\": \"data:image/png;base64,iVBORw0KGgoAAAAOQAAADkCAYAAACIV4s...\"\n}", "language": "json", "name": "200" }, { "code": "{\n \"nome\": \"location_nao_encontrada\",\n \"mensagem\": \"Nenhum location encontrado para o identificador informado\"\n}", "language": "json", "name": "400" } ] } [/block] ### Desvincular um txid de uma location [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method delete\">DELETE</span>\n <span class=\"endpoint\">/v2/loc/<span class=\"variable\">:id</span>/txid</span>\n</div>" } [/block] Endpoint utilizado para desvincular uma cobrança de uma location. Se executado com sucesso, a entidade `loc` não apresentará mais um txid, se apresentava anteriormente à chamada. Adicionalmente, a entidade `cob` ou `cobv` associada ao txid desvinculado também passará a não mais apresentar um location. Esta operação não altera o `status` da `cob` ou `cobv` em questão. **Requer autorização para o escopo**: **`payloadlocation.write`** #### Requisição <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "tipo", "0-3": "string", "0-2": "Sim", "0-1": "Id da location cadastrada para servir um payload", "0-0": "**id**" }, "cols": 4, "rows": 1 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"id\": 2316,\n \"location\": \"qrcodes-pix.gerencianet.com.br/v2/a8534e273ecb47d3ac30613104544466\",\n \"tipoCob\": \"cob\",\n \"criacao\": \"2020-05-31T19:39:54.013Z\"\n}", "language": "json", "name": "200" }, { "code": "{\n \"nome\": \"location_nao_encontrada\",\n \"mensagem\": \"Nenhum location encontrado para o identificador informado\"\n}", "language": "json", "name": "400" } ] } [/block] ## Webhooks Esta seção reúne endpoints para gerenciamento de notificações por parte do PSP recebedor ao usuário recebedor. ### Entendendo o padrão mTLS Por norma do Banco Central, será necessário a inserção de uma chave pública da Gerencianet em seu servidor para que a comunicação obedeça o padrão mTLS. Em seu domínio que representa o seu servidor, deverá ser feita uma configuração para exigir a chave pública (mTLS) que estamos disponibilizando para que ocorra a autenticação mútua. A Gerencianet irá fazer 2 requisições para o seu domínio (servidor): 1. Primeira Requisição: Vamos certificar que seu servidor esteja exigindo uma chave pública da Gerencianet. Isso será feito ao enviar uma requisição sem certificado e seu servidor não deverá aceitar a requisição. Uma vez respondido com a recusa será enviado a 2º requisição. 2. Segunda Requisição: Enviaremos a notificação junto com a nossa chave pública, o seu servidor que deve conter a chave pública disponibilizada deverá realizar o "Hand-Shake" e assim a comunicação ser estabelecida. É necessário que o seu servidor tenha a versão mínima do TLS 1.2. Mais detalhes sobre o TLS [aqui](https://dev.gerencianet.com.br/docs/atualizacao-tls-12) Em seu servidor você deve configurar uma rota 'POST' com uma resposta padrão como uma string "200". Deve ser inserido o nosso certificado de produção ou homologação em seu servidor, abaixo temos alguns exemplos. [block:callout] { "type": "success", "title": "Servidores dedicados", "body": "Recomenda-se que você tenha um servidor dedicado para conseguir realizar as configurações do webhook, uma vez que é necessário ter acesso a alguns arquivos para realizar as configurações como nos exemplos abaixo." } [/block] [block:callout] { "type": "info", "title": "Hospedagens compartilhadas", "body": "Para hospedagem em servidores compartilhados pode haver restrições relativas a inserção de certificados gerados por outra entidade, como o nosso CA por exemplo. Caso tenha problemas, orientamos a [abertura de um ticket](https://sistema.gerencianet.com.br/tickets/criar) informando como assunto: **mTLS em hospedagem compartilhada** ou entre em contato pelo [nosso canal #api-pix no Discord](https://discord.com/invite/ptGHMtczcV). Analisaremos a situação para atuarmos em conjunto em seu auxílio." } [/block] ### Exemplos de configurações de servidor Para configurar seu servidor, você precisará das chaves públicas da Gerencianet. Abaixo estão os endereços das chaves para os ambientes de Produção e Homologação. Essas chaves devem ser baixadas e dispostas em seu servidor. [block:parameters] { "data": { "h-0": "Ambiente", "h-1": "URL da chave pública", "0-1": "`https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt`", "1-1": "`https://pix.gerencianet.com.br/webhooks/chain-pix-sandbox.crt`", "0-0": "Produção", "1-0": "Homologação" }, "cols": 2, "rows": 2 } [/block] Os trechos de código abaixo buscam exemplificar as configurações necessárias em seu servidor para que seja possível realizar o *hand-shake* com nossos servidores. [block:code] { "codes": [ { "code": "from flask import Flask, jsonify\nimport ssl\nimport json\napp = Flask(__name__)\n\n\[email protected](\"/\")\ndef hello():\n return \"<h1 style='color:blue'>Hello There!</h1>\"\n\n\[email protected](\"/\", methods=[\"PUT\"])\ndef hello_put():\n response = {\"status\": 200}\n return jsonify(response)\n\n\[email protected](\"/\", methods=[\"POST\"])\ndef imprimir():\n imprime = print(request.json)\n data = request.json\n with open('data.txt', 'a') as outfile:\n outfile.write(\"\\n\")\n json.dump(data, outfile)\n return jsonify(imprime)\n\ndef hello_post():\n response = {\"status\": 200}\n return jsonify(response)\n\nif __name__ == \"__main__\":\n context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)\n context.verify_mode = ssl.CERT_REQUIRED\n context.load_verify_locations('caminho-certificados/certificado-público-Gerencianet.crt')\n context.load_cert_chain(\n 'caminho-certificados/server_ssl.crt.pem',\n 'caminho-certificados/server_ssl.key.pem')\n app.run(ssl_context=context, host='0.0.0.0')\n#Desenvolvido pela Consultoria Técnica da Gerencianet ", "language": "python", "name": "Python" }, { "code": "server {\n #\n # ...\n #\n listen [::]:443 ssl ipv6only=on;\n listen 443 ssl;\n ssl_certificate server_ssl.crt.pem;\n ssl_certificate_key server_ssl.key.pem;\n ssl_client_certificate /root/chain-pix-webhooks-prod.crt;\n ssl_verify_client optional;\n ssl_verify_depth 3;\n #\n # ...\n #\n location /webhook {\n if ($ssl_client_verify != SUCCESS) {\n return 403;\n }\n rewrite ^(.*)$ /webhook;\n }\n}\n#Desenvolvido pela Consultoria Técnica da Gerencianet", "language": "http", "name": "Nginx" }, { "code": "const express = require(\"express\");\nconst fs = require(\"fs\");\nconst https = require(\"https\");\nvar logger = require('morgan');\n\nconst httpsOptions = {\n cert: fs.readFileSync(\"\"), // Certificado fullchain do dominio\n key: fs.readFileSync(\"/\"), // Chave privada do domínio\n ca: fs.readFileSync(\"\"), // Certificado público da Gerencianet\n minVersion: \"TLSv1.2\",\n requestCert: true,\n rejectUnauthorized: false, //Mantenha como false para que os demais endpoints da API não rejeitem requisições sem MTLS\n};\n\nconst app = express();\nconst httpsServer = https.createServer(httpsOptions, app);\nconst PORT = 443;\n\napp.use(logger('dev')); // Comente essa linha caso não queira que seja exibido o log do servidor no seu console\napp.use(express.json());\napp.use(express.urlencoded({ extended: false }));\n\n// Endpoint para configuração do webhook, você precisa cadastrar https://SEUDOMINIO.com/webhook\napp.post(\"/webhook\", (request, response) => {\n // Verifica se a requisição que chegou nesse endpoint foi autorizada\n if (request.socket.authorized) { \n response.status(200).end();\n } else {\n response.status(401).end();\n }\n});\n\n// Endpoind para recepção do webhook tratando o /pix\napp.post(\"/webhook/pix\", (request, response) => {\n if (request.socket.authorized){\n //Seu código tratando a callback\n /* EXEMPLO:\n var body = request.body;\n filePath = __dirname + \"/data.json\";\n fs.appendFile(filePath, JSON.stringify(body) + \"\\n\", function (err) {\n if (err) {\n console.log(err);\n } else {\n response.status(200).end();\n }\n })*/\n response.status(200).end();\n }else{\n response.status(401).end();\n }\n});\n\nhttpsServer.listen(PORT, () =>\n console.log(`Express server currently running on port ${PORT}`)\n);\n#Desenvolvido pela Consultoria Técnica da Gerencianet", "language": "javascript", "name": "Node" }, { "code": "# ********************************************************************************* #\n# Utilize o primeiro exemplo, caso queira requerir o certificado para autenticação #\n# mútua em qualquer rota do domínio indicado no VirtualHost. #\n# Funciona bem para sub-domínios. Exemplo: https://www.webhook.seu_dominio.com.br # \n# ********************************************************************************* #\n\n<IfModule mod_ssl.c>\n<VirtualHost *:443> # Porta HTTPS\n #\n # ...\n #\n\n SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio\n SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio\n\n #Chave pública da Gerencianet\n SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt\n \n # mTLS Gerencianet\n SSLVerifyClient require\n SSLVerifyDepth 3\n \n # Tratando o /pix, redirecionando as requisições sempre para /webhook\n Alias \"/pix/\" \"/var/www/webhook/index.php\"\n Alias \"/pix\" \"/var/www/webhook/index.php\"\n\n #\n # ...\n #\n</VirtualHost>\n</IfModule>\n\n\n# ******************************************************************************** #\n# Utilize o segundo exemplo, caso queira requerir o certificado para autenticação #\n# mútua em apenas uma rota do domínio indicado no VirtualHost. #\n# Exemplo: https://www.seu_dominio.com.br/webhook/ # \n# ******************************************************************************** #\n\n<IfModule mod_ssl.c>\n<VirtualHost *:443> # Porta HTTPS\n #\n # ...\n #\n\n SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio\n SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio\n\n #Chave pública da Gerencianet\n SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt\n \n # mTLS Gerencianet\n SSLVerifyClient none\n SSLProtocol TLSv1.2\n \n <Location \"/webhook\">\n SSLVerifyClient require\n SSLVerifyDepth 3\n </Location>\n \n # Tratando o /pix, redirecionando as requisições sempre para /webhook\n Alias \"/webhook/pix/\" \"/var/www/webhook/index.php\"\n Alias \"/webhook/pix\" \"/var/www/webhook/index.php\"\n\n #\n # ...\n #\n</VirtualHost>\n</IfModule>\n", "language": "cplusplus", "name": "Apache" }, { "code": "# ********************************************************************************** #\n# Para o funcionamento deste exemplo é necessário que seu servidor tenha configurado #\n# o certificado do mTLS, com o direcionamento para este arquivo, e também com a #\n# tratativa do /pix. Assim como é feito em nosso exemplo de servidores Apache. #\n# ********************************************************************************** #\n\n<?php\n\nfunction resposta($status, $mensagem, $dados)\n{\n $resposta['status'] = $status;\n $resposta['mensagem'] = $mensagem;\n $resposta['dados'] = $dados;\n $json_resposta = '<pre>' . json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '</pre>';\n\n header(\"HTTP/1.1 \" . $status);\n echo $json_resposta;\n}\n\nfunction salvar($dados)\n{\n \t// Crie um arquivo .;json para salvar as informações\n $nomeArquivo = './dados.json';\n $dadosGravados = json_decode(file_get_contents($nomeArquivo), true);\n $arquivo = fopen($nomeArquivo, 'w');\n\n // Incrementa as informações enviadas com o que já havia gravado\n array_push($dadosGravados, $dados);\n\n if (fwrite($arquivo, json_encode($dadosGravados))) {\n resposta(200, \"Requisição realizada com sucesso!\", $dados);\n } else {\n resposta(300, \"Falha ao salvar os dados da requisição.\", $dados);\n }\n\n fclose($arquivo);\n}\n\nfunction requisicao($metodo, $body, $parametros)\n{\n switch ($metodo) {\n case 'POST':\n salvar($body);\n break;\n case 'GET':\n resposta(200, \"Requisição realizada com sucesso!\", $body);\n break;\n }\n}\n\n// Obtém o método HTTP, body e parâmetros da requisição\n$metodo = $_SERVER['REQUEST_METHOD'];\n$parametros = explode('/', trim($_SERVER['REQUEST_URI'], '/'));\n$body = json_decode(file_get_contents('php://input'), true);\n\ntry {\n requisicao($metodo, $body, $parametros);\n} catch (Exception $e) {\n resposta(400, $e->getMessage(), $e);\n}", "language": "php", "name": "PHP" } ] } [/block] Para ter um ter um SSL válido, você deve entrar em contato com uma Autoridade Certificadora e gerar a chave privada `server_ssl.key.pem` e uma pública `server_ssl.crt.pem`, assim você valida a integridade da conexão. Você consegue realizar isso de forma gratuita utilizando um utilitário como o <a href="https://certbot.eff.org/" target="_blank">Certbot</a> por exemplo. ### Configurar o webhook Pix [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method put\">PUT</span>\n <span class=\"endpoint\">/v2/webhook/<span class=\"variable\">:chave</span></span>\n</div>" } [/block] Endpoint para configuração do serviço de notificações acerca de Pix recebidos. Pix oriundos de cobranças estáticas só serão notificados se estiverem associados a um `txid`. **Requer autorização para o escopo**: **`webhook.write`** #### Requisição <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "**chave**", "0-1": "O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.", "0-2": "Sim", "0-3": "string (Chave DICT) `≤ 77 characters`" }, "cols": 4, "rows": 1 } [/block] Dados para a configuração do webhook. [block:code] { "codes": [ { "code": "{\n \"webhookUrl\": \"https://exemplo-pix/webhook\"\n}", "language": "json", "name": "Exemplo" } ] } [/block] <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<b>webhookUrl</b>", "0-1": "Url para onde a notificação vai ser enviada", "0-2": "Sim", "0-3": "string {uri}" }, "cols": 4, "rows": 1 } [/block] #### Respostas As respostas abaixo representam Sucesso(201) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "Webhook para notificações acerca de Pix recebidos associados a um txid.", "language": "json", "name": "201" }, { "code": "InvalidValueError\n{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"URL inválida\"\n}\n\nOU\n\n{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"A URL do webhook deve usar o protocolo HTTPS\"\n}\n\nOU\n\n{\n \"nome\": \"webhook_invalido\",\n \"mensagem\": \"A autenticação de TLS mútuo não está configurada na URL informada\"\n}\n\nOU\n\n{\n \"nome\": \"webhook_invalido\",\n \"mensagem\": \"A URL informada está inacessível\"\n}\n\nOU\n\n{\n \"nome\": \"webhook_invalido\",\n \"mensagem\": \"A URL informada atingiu o tempo limite de resposta\"\n}\n\nOU\n\n{\n \"nome\": \"webhook_invalido\",\n \"mensagem\": \"A requisição na URL informada falhou com o erro: {{errno}}\" //{{errno}} representa um código de erro do linux: https://man7.org/linux/man-pages/man3/errno.3.html Ex: ECONNRESET, EPIPE \n}\n\nOU\n\n{\n \"nome\": \"webhook_invalido\",\n \"mensagem\": \"A URL informada respondeu com o código HTTP {{httpStatus}}\" // {{httpStatus}} representa o status HTTP que a url respondeu. Ex: 400, 403, 500.\n}\n\nOU\n\n{\n \"nome\": \"webhook_invalido\",\n \"mensagem\": \"Não foi possível receber uma resposta da URL informada\"\n}", "language": "json", "name": "400" } ] } [/block] ### Exibir informações do wehook Pix [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/webhook/<span class=\"variable\">:chave</span></span>\n</div>" } [/block] Endpoint para recuperação de informações sobre o webhook pix. **Requer autorização para o escopo**: **`webhook.read`** #### Requisição <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-1": "O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.", "0-0": "**chave**", "0-2": "Sim", "0-3": "string (Chave DICT) `≤ 77 characters`" }, "cols": 4, "rows": 1 } [/block] #### Resposta A resposta abaixo representa Sucesso(200) do consumo. [block:code] { "codes": [ { "code": "{\n \"webhookUrl\": \"https://gn-pix-webhook.gerencianet.com.br/webhook/\",\n \"chave\": \"40a0932d-1918-4eee-845d-35a2da1690dc\",\n \"criacao\": \"2020-11-11T10:15:00.358Z\"\n}", "language": "json", "name": "200" } ] } [/block] ### Consultar lista de webhooks [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/webhook/</span>\n</div>" } [/block] Endpoint para consultar webhooks associados a chaves através de parâmetros como `início` e `fim`. Os atributos são inseridos como *query params*. **Requer autorização para o escopo**: **`cob.write`** #### Requisição O trecho abaixo mostra como os parâmetros `inicio` e `fim` (obrigatórios) devem ser repassados na requisição. ``` /v2/webhook/?inicio=2020-10-22T16:01:35Z&fim=2020-10-23T16:01:35Z ``` <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "0-0": "<b>inicio</b>", "0-1": "Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339", "0-2": "Sim", "0-3": "string <date-time>", "1-0": "<b>fim</b>", "1-1": "Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339.", "1-2": "Sim", "1-3": "string <date-time>", "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo" }, "cols": 4, "rows": 2 } [/block] #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"parametros\": {\n \"inicio\": \"2020-04-01T00:00:00Z\",\n \"fim\": \"2020-04-01T23:59:59Z\",\n \"paginacao\": {\n \"paginaAtual\": 0,\n \"itensPorPagina\": 100,\n \"quantidadeDePaginas\": 1,\n \"quantidadeTotalDeItens\": 1\n }\n },\n \"webhooks\": [\n {\n \"$ref\": \"/bacen/gn-pix-api/-/raw/master/docs/api.swagger.yaml#/components/examples/webhookResponse1/value\"\n }\n ]\n}", "language": "json", "name": "200" }, { "code": "{\n \"nome\": \"valor_invalido\",\n \"mensagem\": \"Campo de data fim deve ser maior ou igual ao campo de data inicio\"\n}", "language": "json", "name": "400" } ] } [/block] ### Cancelar o webhook Pix [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method delete\">DELETE</span>\n <span class=\"endpoint\">/v2/webhook/<span class=\"variable\">:chave</span></span>\n</div>" } [/block] Endpoint para cancelamento do webhook pix. **Requer autorização para o escopo**: **`webhook.write`** #### Requisição <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-1": "O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.", "0-2": "Sim", "0-3": "string (Chave DICT) `≤ 77 characters`", "0-0": "**chave** " }, "cols": 4, "rows": 1 } [/block] #### Resposta A resposta abaixo representa Sucesso(204) do consumo. [block:code] { "codes": [ { "code": "Webhook para notificações Pix foi cancelado.", "language": "json", "name": "204" } ] } [/block] ### Recebendo Callbacks Esse serviço está protegido por uma camada de autenticação mTLS. Os callbacks são enviados pela Gerencianet via `POST <url-webhook-cadastrada>​/pix` quando há uma alteração no status do Pix. #### Requisição Uma requisição `POST` é enviada pela Gerencianet para a URL que você cadastrou como webhook para uma determinada chave. Quando houver alteração no status de uma transação Pix, envolvendo a chave associada, um objeto JSON (como os exemplos abaixo) será enviado ao seu servidor. Cada requisição enviada possui um *timeout* de 60 segundos, isto é, uma requisição de callback é interrompida ao atingir 60 segundos sem resposta. [block:code] { "codes": [ { "code": "// Pix recebido\n{\n \"pix\": [\n {\n \"endToEndId\": \"E1803615022211340s08793XPJ\",\n \"txid\": \"fc9a43k6ff384ryP5f41719\",\n \"chave\": \"2c3c7441-b91e-4982-3c25-6105581e18ae\", \n\t\t\t\"valor\": \"0.01\",\n \"horario\": \"2020-12-21T13:40:34.000Z\",\n \"infoPagador\": \"pagando o pix\"\n }\n ]\n}", "language": "json", "name": "Exemplo - Pix recebido" }, { "code": "// Devolução\n{\n \"pix\": [\n {\n \"endToEndId\": \"E12345678202009091221syhgfgufg\",\n \"txid\": \"c3e0e7a4e7f1469a9f782d3d4999343c\",\n \"chave\": \"2c3c7441-b91e-4982-3c25-6105581e18ae\",\n \"valor\": \"110.00\",\n \"horario\": \"2020-09-09T20:15:00.358Z\",\n \"infoPagador\": \"0123456789\",\n \"devolucoes\":[\n {\n \"id\": \"123ABC\",\n \"rtrId\": \"D12345678202009091221abcdf098765\",\n \"valor\": \"110.00\",\n \"horario\": {\n \"solicitacao\": \"2020-09-09T20:15:00.358Z\"\n },\n \"status\": \"DEVOLVIDO\"\n }\n ]\n }\n ]\n}", "language": "json", "name": "Exemplo - Devolução" }, { "code": "// Pix enviado\n{\n \"pix\": [\n {\n \"endToEndId\": \"E090893562021030PIf25a7868\",\n \"chave\": \"2c3c7441-b91e-4982-3c25-6105581e18ae\",\n \"tipo\": \"SOLICITACAO\",\n \"status\": \"REALIZADO\",\n \"valor\": \"0.01\",\n \"horario\": \"2021-03-04T20:39:47.000Z\"\n }\n ]\n}", "language": "json", "name": "Exemplo - Pix enviado" }, { "code": "// Pix recebido\n{\n \"pix\": [\n {\n \"endToEndId\": \"E1803615022211340s08793XPJ\",\n \"txid\": \"fc9a43k6ff384ryP5f41719\",\n \"chave\": \"2c3c7441-b91e-4982-3c25-6105581e18ae\", \n\t\t\t\"valor\": \"0.10\",\n \"horario\": \"2020-12-21T13:40:34.000Z\",\n \"infoPagador\": \"pagando o pix\",\n \"gnExtras\": {\n \"tarifa\": \"0.01\"\n }\n }\n ]\n}", "language": "json", "name": "Exemplo - Pix recebido com tarifa informada" } ] } [/block] A tabela a seguir detalha os campos presentes no objeto JSON que será enviado na notificação. <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<b>endToEndId</b>", "0-1": "EndToEndIdentification que transita na PACS002, PACS004 e PACS008", "0-2": "Sim", "0-3": "string (Id fim a fim da transação) `32 characters` `^[a-zA-Z0-9]{32}$`", "1-0": "<b>txid</b>", "1-1": "<b>Identificador da transação</b><br>Determina o identificador da transação. O objetivo desse campo é ser um elemento que possibilite ao PSP do recebedor apresentar ao usuário recebedor a funcionalidade de conciliação de pagamentos, mais detalhes <a href=\"https://dev.gerencianet.com.br/v1/docs/api-pix#section-id-da-transa-o\">veja aqui</a>.", "1-2": "Não", "1-3": "Array of objects (Pix) `^[a-zA-Z0-9]{26,35}$`", "2-0": "<b>valor</b>", "2-1": "Valor do Pix.", "2-2": "Sim", "2-3": "string `\\d{1,10}\\.\\d{2}`", "3-0": "<b>horario</b>", "3-1": "Horário em que o Pix foi processado no PSP.", "3-2": "Sim", "3-3": "string <date-time> (Horário)", "4-0": "<b>pagador</b>", "4-1": "Um CPF ou um CNPJ pode ser o pagador de uma cobrança. Não é permitido que o campo pagador.cpf e campo pagador.cnpj estejam preenchidos ao mesmo tempo. Se o campo pagador.cnpj está preenchido, então o campo pagador.cpf não pode estar preenchido, e vice-versa.<br><br> <em>pagador:</em><br><div class=\"tab2\"> `cpf*`// CPF do usuário pagador.string` /^\\d{11}$/`<br><br> `nome*` // Nome do usuário pagador. string (Nome) `< 200 characters`</div>", "4-2": "Não", "4-3": "Pessoa Física (object) or Pessoa Jurídica (object)", "5-0": "<b>infoPagador</b>", "5-1": "Informação livre do pagador", "5-2": "Sim", "5-3": "string `< 140 characters`", "6-0": "<b>devolucoes</b>", "6-1": "devolucoes:\n<div class=\"tab2\">`id*` // Id gerado pelo cliente para representar unicamente uma devolução.string (Id da Devolução)`^[a-zA-Z0-9]{1,35}$`\n\n`rtrId*` // ReturnIdentification que transita na PACS004. string (RtrId) ≤ 32 characters\n\n`valor*` // Valor a devolver.string `\\d{1,10}\\.\\d{2}`\n\n `horario*` // Atributos de horário. object\n<br>\n`solicitacao*`: //Horário no qual a devolução foi solicitada no PSP.\nstring <date-time> (Horário de solicitação)\n`liquidacao`: //Horário no qual a devolução foi liquidada no PSP.\nstring <date-time> (Horário de liquidacao)\n<br>\n`status*` // Status da devolução. Enum: `\"EM_PROCESSAMENTO\"`,`\"DEVOLVIDO\"`,<br>`\"NAO_REALIZADO\"` Status da devolução. string (Status)</div>", "6-2": "Não", "6-3": "Array ()" }, "cols": 4, "rows": 7 } [/block] #### Resposta As requisições de callback aguardam uma resposta com status HTTP 2XX. Caso o servidor do cliente retorne um status diferente, a Gerencianet fará até 10 novas tentativas de notificação. A primeira nova tentativa será feita 5 minutos após a falha do envio do callback. Persistindo o erro, as tentativas subsequentes serão enviadas em intervalos de tempo cada vez maiores, conforme mostra a tabela abaixo. [block:callout] { "type": "info", "title": "Importante", "body": "Em casos onde o servidor do cliente retorna o status HTTP 429 (*too many requests*), os servidores da Gerencianet tentarão enviar a notificação até 6 vezes também de acordo com a tabela abaixo." } [/block] [block:parameters] { "data": { "h-0": "Nº da tentativa", "h-1": "Tempo (em minutos)", "0-1": "5", "1-1": "10", "2-1": "20", "3-1": "40", "4-1": "80", "5-1": "160", "6-1": "320", "7-1": "640", "8-1": "1280", "9-1": "2560", "0-0": "1", "1-0": "2", "2-0": "3", "3-0": "4", "4-0": "5", "5-0": "6", "6-0": "7", "7-0": "8", "8-0": "9", "9-0": "10" }, "cols": 2, "rows": 10 } [/block] ## Endpoints exclusivos Gerencianet Os endpoints listados nesta seção visam à facilitação do uso da API Pix para os clientes Gerencianet. Com os endpoints a seguir você poderá obter e alterar informações da sua conta diretamente pela API, conforme a necessidade da sua integração. ### Criar chave evp [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method post\">POST</span>\n <span class=\"endpoint\">/v2/gn/evp</span>\n</div>" } [/block] Endpoint utilizado para criar uma chave Pix aleatória (evp). **Requer autorização para o escopo**: **`gn.pix.evp.write`** #### Requisição A requisição enviada para esse endpoint não precisa de um *body*, apenas os cabeçalhos de autorização OAuth e o certificado da conta, assim como os endpoints anteriores. #### Respostas As respostas abaixo representam Sucesso(201) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"chave\": \"345e4568-e89b-12d3-a456-006655440001\"\n}", "language": "json", "name": "201" }, { "code": "{\n \"nome\": \"limite_criacao_chave_atingido\",\n \"mensagem\": \"O limite de criação de chaves foi atingido\"\n}", "language": "json", "name": "400" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao solicitar a criação da chave\"\n}", "language": "json", "name": "500" } ] } [/block] ### Listar chaves evp [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/gn/evp</span>\n</div>" } [/block] Endpoint utilizado para listar as chaves Pix aleatórias (evp). A listagem somente mostrará as chaves do tipo aleatória. **Requer autorização para o escopo**: **`gn.pix.evp.read`** #### Requisição A requisição enviada para esse endpoint não precisa de um *body*, apenas os cabeçalhos de autorização OAuth e o certificado da conta, assim como os endpoints anteriores. #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "{\n \"chaves\": [\n \"355e4568-e89b-1243-a456-006655440001\",\n \"133e4568-e89b-1243-a456-006655440000\"\n ]\n}", "language": "json", "name": "200" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao buscar as chaves\"\n}", "language": "json", "name": "500" } ] } [/block] ### Remover chave evp [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method delete\">DELETE</span>\n <span class=\"endpoint\">/v2/gn/evp/<span class=\"variable\">:chave</span></span>\n</div>" } [/block] Endpoint utilizado para remover uma chave Pix aleatória (evp). Caso remova uma chave aleatória, não há como criá-la novamente: o uuid é gerado pelo DICT e a cada solicitação de registro de chave, nos é retornado um hash diferente. Isso significa que as cobranças criadas para a chave removida não poderão mais ser pagas, pois o payload não será mais retornado. **Requer autorização para o escopo**: **`gn.pix.evp.write`** #### Requisição A requisição enviada para esse endpoint não precisa de um *body*, apenas as informações necessárias para autorização como os endpoints anteriores e o parâmetro `chave` passado na URL, que corresponde à chave Pix aleatória (evp) que será apagada. #### Respostas As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo. [block:code] { "codes": [ { "code": "Chave aleatória removida.", "language": "text", "name": "200" }, { "code": "{\n \"nome\": \"chave_nao_encontrada\",\n \"mensagem\": \"A chave informada não foi encontrada\"\n}", "language": "json", "name": "400" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao solicitar a exclusão da chave\"\n}", "language": "json", "name": "500" } ] } [/block] ### Buscar o saldo da conta [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/gn/saldo</span>\n</div>" } [/block] Endpoint com a finalidade de consultar o saldo em sua conta Gerencianet. Você pode habilitar o escopo nas configurações de sua aplicação em sua conta Gerencianet. **Requer autorização para o escopo**: **`gn.balance.read`** #### Requisição A requisição enviada para esse endpoint não precisa de um *body*, apenas os cabeçalhos de autorização OAuth e o certificado da conta, assim como os endpoints anteriores. #### Respostas [block:code] { "codes": [ { "code": "{\n \"saldo\": \"100.00\"\n}", "language": "json", "name": "200" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao solicitar o saldo da conta\"\n}", "language": "json", "name": "500" } ] } [/block] ### Criar/modificar configurações da conta [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method put\">PUT</span>\n <span class=\"endpoint\">/v2/gn/config</span>\n</div>" } [/block] Endpoint com a finalidade de criar e modificar as configurações da conta do cliente relacionados à API. **Requer autorização para o escopo**: **`gn.settings.write`** #### Requisição Abaixo um exemplo de *body* para a requisição: [block:code] { "codes": [ { "code": "{\n \"pix\": {\n \"receberSemChave\": true,\n \"chaves\": {\n \"355e4568-e89b-1243-a456-006655440001\": {\n \"recebimento\": {\n \"txidObrigatorio\": false,\n \"qrCodeEstatico\": {\n \"recusarTodos\": false\n },\n \"webhook\": {\n \"notificacao\": {\n \"tarifa\": true\n }\n }\n }\n }\n }\n }\n}", "language": "json", "name": "Exemplo" } ] } [/block] <div class="tab2">(*) Atributo obrigatório </div> [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "**pix** ", "0-2": "Sim", "0-3": "Object", "0-1": "Objeto contendo as configurações da conta relacionadas ao Pix.\n\n`receberSemChave*`: Atributo booleano obrigatório que configura a possibilidade do recebimento de Pix sem chaves cadastradas.\n\n`chaves`: Atributo objeto opcional. Pode conter uma ou mais chaves e suas configurações individuais.\n<div class=\"tab2\">\n`<chave pix>`: Atributo string opcional. String que representa uma chave Pix e satisfaz à Regex `^[[email protected]_+]{1,77}$`\n<div class=\"tab2\">\n`recebimento*`: Atributo objeto obrigatório. Contém as configurações relacionadas aos recebimentos de Pix por uma determinada chave.\n<div class=\"tab2\">\n`txidObrigatorio*`: Atributo booleano obrigatório. Configura a obrigatoriedade de `txid` nas cobranças recebidas por uma chave Pix.\n\n`qrCodeEstatico*`: Atributo objeto obrigatório. Contém as configurações relacionadas à QR Codes estáticos para uma determinada chave Pix.\n<div class=\"tab2\">\n`recusarTodos*`: Atributo booleano obrigatório. Configura a rejeição de todos os QR Codes estáticos.\n</div>\n</div>\n</div>\n</div>\n\n<div class=\"tab2\">\n`webhook`: Atributo objeto opcional. Contém as configurações relacionadas aos recebimentos de informação das tarifas por cada cobrança Pix recebida ou enviada.\n<div class=\"tab2\">\n`tarifa*`: Atributo booleano obrigatório. Configura o recebimento ou não do valor das tarifas pagas ao receber ou enviar Pix na conta Gerencianet. \n</div>\n</div>" }, "cols": 4, "rows": 1 } [/block] #### Respostas [block:code] { "codes": [ { "code": "Configurações criados / modificadas", "language": "json", "name": "204" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao buscar as configurações da conta\"\n}", "language": "json", "name": "400" }, { "code": "{\n \"nome\": \"erro_aplicacao\",\n \"mensagem\": \"Ocorreu um erro ao validar a chave\"\n}", "language": "json", "name": "500" } ] } [/block] ### Listar configurações da conta [block:html] { "html": "<div class=\"gn-endpoint\">\n <span class=\"http-method get\">GET</span>\n <span class=\"endpoint\">/v2/gn/config</span>\n</div>" } [/block] Endpoint com a finalidade de listar as configurações definidas na conta. **Requer autorização para o escopo**: **`gn.settings.read`** #### Requisição A requisição enviada para esse endpoint não precisa de um *body*, apenas os cabeçalhos de autorização OAuth e o certificado da conta, assim como os endpoints anteriores. #### Resposta [block:code] { "codes": [ { "code": "{\n \"pix\": {\n \"receberSemChave\": true,\n \"chaves\": {\n \"355e4568-e89b-1243-a456-006655440001\": {\n \"recebimento\": {\n \"txidObrigatorio\": true,\n \"qrCodeEstatico\": {\n \"recusarTodos\": false\n }\n }\n }\n }\n }\n}", "language": "json", "name": "200" } ] } [/block]