Integrações
Integração via webhook
Na integração via webhook, o sistema V2Saúde realiza o envio de notificações para um endereço especificado, utilizando uma estrutura de dados específica de acordo com o tipo de notificação.
Ativação de webhooks
Os webhooks podem ser ativados na página Cadastros > Empresa e preferências, na aba "Integrações".
É necessária a contratação do mõdulo de webhooks para utilizar esta função.
Ao clicar em "Gerenciar webhooks", a página de gerenciamento de webhooks será exibida. Nesta página é possível gerir as notificações configuradas para a empresa:
Clique em "Novo webhook" para cadastrar um novo webhook:
Escolha o tipo, a API Key e a URL do webhook.
Linhas gerais sobre o envio de webhooks
As seguintes informações se aplicam a todas as chamadas de webhook:
- O V2Saúde realiza chamadas POST para a URL especificada
- A API Key informada será enviada no cabeçalho (header) "Authorization" da requisição
Tipos de webhook
Os seguintes tipos de webhook são atualmente suportados.
Cadastro e alterações em cirurgias
Uma notificação é enviada sempre que uma cirurgia for inserida ou modificada no sistema.
Exemplo de payload da requisição:
[
{
"id": 583581,
"cliente": {
"id": 63387,
"nome": "BRADESCO SAUDE - OPERADORA DE PLANOS S/A",
"razaoSocial": "BRADESCO SAUDE - OPERADORA DE PLANOS S/A",
"cnpj": "15.011.651/0001-54",
"cpf": null
},
"responsavel": "MACHADO DE ASSIS",
"paciente": "JOSE DE ALENCAR",
"matriculaPaciente": "",
"medico": "GRACILIANO RAMOS",
"medicoCRM": "1234",
"procedimento": "CIRURGIA DE QUADRIL",
"data": "2025-01-01",
"dataDeCadastro": "2025-01-01",
"finalizada": false,
"dataDeFinalizacao": null,
"dataOrcamentoPos": null,
"dataLiberacaoMaterial": null,
"dataLimiteRetirada": null,
"finalizadaPor": null,
"observacao": "",
"observacaoVale": "",
"observacaoPos": null,
"horaCirurgia": "14:30",
"cancelada": false,
"vendedor": {
"id": null,
"nome": null,
"razaoSocial": null,
"cnpj": null,
"cpf": null
},
"hospital": {
"id": 62707,
"nome": "ALBERT EINSTEIN",
"razaoSocial": "",
"cnpj": "",
"cpf": null
},
"convenio": {
"id": 63387,
"nome": "BRADESCO SAUDE - OPERADORA DE PLANOS S/A",
"razaoSocial": "BRADESCO SAUDE - OPERADORA DE PLANOS S/A",
"cnpj": "15.011.651/0001-54",
"cpf": null
},
"codigoSus": "",
"cirurgiaBaixada": false,
"observacaoBaixa": null,
"nota": null,
"statusCotacao": "APROVADA",
"procedimentoCirurgico": null,
"numeroEmpenho": ""
}
]
Os seguintes atributos fazem parte do payload da requisição
| Atributo |
Registro Pai |
Tipo |
Descrição |
| id |
Número |
Código da cirurgia |
|
| cliente |
Pessoa (ver Registros Auxiliares) |
Dados do cliente |
|
| responsavel | String | Responsável pela cirurgia | |
| paciente | String | Nome do paciente | |
| matriculaPaciente | String | Matrícula do paciente | |
| medico | String | Nome do médico | |
| medicoCRM | String |
CRM do médico |
|
| procedimento | String |
Descrição do procedimento |
|
| data | Date |
Data da cirurgia |
|
| dataDeCadastro | DateTime |
Data de cadastro |
|
| cadastradoPor | Pessoa (ver Registros Auxiliares) | Usuário responsável pelo cadastro |
|
| finalizada | Boolean |
Cirurgia finalizada? |
|
| dataDeFinalizacao | DateTime |
Data da finalização |
|
| dataOrcamentoPos | DateTIme |
Data do orçamento pś |
|
| dataLiberacaoMaterial | DateTime |
Data da liberação do material |
|
| dataLimiteRetirada | DateTime |
Data limite da retirada do material consignado |
|
| finalizadaPor | Pessoa (ver Registros Auxiliares) | Usuário responsável pela finalização |
|
| observacao | String |
Observações da cirurgia |
|
| observacaoVale | String |
Observações do vale/consignação |
|
| observacaoPos | String |
Observações do orçamento pós |
|
| horaCirurgia | Time |
Hora da cirurgia |
|
| cancelada | Boolean |
Cirurgia cancelada? |
|
| vendedor | Pessoa (ver Registros Auxiliares) | Vendedor |
|
| hospital | Pessoa (ver Registros Auxiliares) | Hospital |
|
| convenio | Pessoa (ver Registros Auxiliares) | Convênio |
|
| codigoSus | String |
Código SUS do procedimento |
|
| cirurgiaBaixada | Boolean |
Cirurgia com pagamento cancelado/baixado? |
|
| observacaoBaixa | String |
Observações da baixa |
|
| nota | Número |
Número da nota fiscal de venda |
|
| statusCotacao | String |
Status da cotação. Os seguintes valores são suportados:
|
|
| procedimentoCirurgico | String |
Descrição do procedimento |
|
| numeroEmpenho | String |
Número do empenho da licitação |
Cadastro e alterações em orçamentos pré
Uma notificação é enviada quando o orçamento pré de uma cirurgia é alterado.
Exemplo de payload da requisição:
[
{
"id": 48391,
"cirurgia": {
"id": 142913,
"cliente": {
"id": 1234,
"nome": "AMIL",
"razaoSocial": null,
"cnpj": "11.111.111/0001-11",
"cpf": null
},
"responsavel": "AUGUSTO DOS ANJOS",
"paciente": "CARLOS DRUMMOND DE ANDRADE",
"matriculaPaciente": null,
"medico": "VINICIUS DE MORAIS",
"medicoCRM": "9196",
"instrumentadoresAvulsos": null,
"procedimento": "RESSECÇAO ENDOSCOPICA DA PROSTATA",
"data": "2025-01-01",
"dataDeCadastro": "2025-01-01",
"finalizada": false,
"dataDeFinalizacao": null,
"dataOrcamentoPos": null,
"dataLiberacaoMaterial": null,
"dataLimiteRetirada": null,
"finalizadaPor": null,
"observacao": "",
"observacaoVale": null,
"observacaoPos": null,
"horaCirurgia": "16:00",
"cancelada": false,
"vendedor": {
"id": 1829,
"nome": "NOME DO VENDEDOR",
"razaoSocial": null,
"cnpj": null,
"cpf": null
},
"hospital": {
"id": null,
"nome": null,
"razaoSocial": null,
"cnpj": null,
"cpf": null
},
"convenio": {
"id": null,
"nome": null,
"razaoSocial": null,
"cnpj": null,
"cpf": null
},
"codigoSus": null,
"cirurgiaBaixada": false,
"observacaoBaixa": null,
"nota": null,
"statusCotacao": "APROVADA",
"procedimentoCirurgico": null,
"numeroEmpenho": null,
"action": null
},
"cadastradoPor": {
"id": 1747,
"nome": "OPERADOR DO SISTEMA",
"razaoSocial": null,
"cnpj": null,
"cpf": null
},
"aprovado": false,
"data": "2025-01-01",
"dataAprovacao": null,
"observacoes": "",
"desconto": 0,
"itens": [
{
"id": 170011,
"produto": {
"id": 235167,
"descricao": "CARGA ARTICULADA ROXA P3H 45 MM",
"referenciaFabricante": "CADD45ENTS",
"registroAnvisa": "80940400003",
"codigoDeBarras": "1000001048024",
"fabricante": {
"id": 101565,
"nome": "PANTHER HEALTHCARE",
"razaoSocial": null,
"cnpj": null,
"cpf": null
}
},
"valor": 500,
"desconto": 0,
"quantidade": 1,
"quantidadeAutorizada": 0,
"quantidadeDoacao": 0
}
]
}
]
Os seguintes atributos fazem parte do payload da requisição:
| Atributo |
Registro Pai |
Tipo |
Descrição |
| id |
Número |
Código do orçamento |
|
| cirurgia |
Cirurgia (ver Cadastro e alterações em cirurgias) |
Dados da cirurgia |
|
| cadastradoPor |
Pessoa |
Usuário responsável pelo cadastro do orçamento |
|
| aprovado |
Boolean |
Aprovado? |
|
| data |
Date |
Data do orçamento |
|
| dataAprovacao | Date |
Data de aprovação do orçamento |
|
| observacoes | String |
Observações do orçamento |
|
| desconto | Número |
Valor do desconto |
|
| itens | Objeto |
Itens do orçamento |
|
| id |
itens |
Número |
Código do orçamento |
| produto |
itens |
Produto |
Dados do produto |
| valor |
itens |
Número |
Valor unitário |
| desconto |
itens |
Desconto |
Valor do desconto |
| quantidade |
itens |
Número |
Quantidade |
| quantidadeAutorizada |
itens |
Número |
Quantidade autorizada |
| quantidadeDoacao | itens |
Número |
Quantidade que não deve ser faturada (doada) |
Registros auxiliares
Pessoa
| Atributo |
Registro Pai |
Tipo |
Descrição |
| id |
Número |
Código |
|
| nome |
String |
Nome |
|
| razaoSocial |
String |
Razão social |
|
| cnpj |
String |
CNPJ |
|
| cpf |
String |
CPF |
Produto
| Atributo |
Registro Pai |
Tipo |
Descrição |
| id |
Número |
Código |
|
| descricao | String |
Descrição |
|
| referenciaFabricante | String |
Referência do fabricante |
|
| registroAnvisa | String |
Número do registro na Anvisa |
|
| codigoDeBarras | String |
Código de barras |
|
| fabricante |
Pessoa |
Dados do fabricante |
Agendor
A integração do V2Saúde com o Agendor, realiza a integração dos deals ganhos do Agendor como cirurgias aprovadas no estágio de orçamento pré.
Durante a integração do deal do Agendor com a cirurgia no V2Saúde, o sistema irá criar a cirurgia com os dados do Agendor, registrar os itens do orçamento e, se necessário, cadastrar o cliente caso não seja encontrado no sistema.
Pré requisitos
Para realizar a integração com o Agendor, é preciso:
- Um token de integração no Agendor
O token de integração deve ser obtido na interface do Agendor:
- Uma assinatura paga do Agendor, para poder utilizar os campos customizados
- A contratação do módulo no sistema V2Saúde
Configurações
Após a geração do token no Agendor e contratação do mõdulo no sistema, basta configurar a integração.
As configurações da integração são definidas no cadastro da empresa, aba Integrações.
Fluxo de integração
Para a integração de orçamentos, é importante mencionar que os produtos informados no Agendor precisam ter exatamente a mesma referência que o V2Saúde. A integração não cadastra novos produtos no V2.
- A API do Agendor é executada no endpoint: /deals/stream?dealStatus=2&since=[DATA]T00:00:00Z&withCustomFields=true
- Este endpoint retorna os negócios ganhos recentemente desde a data especificada.
- Por padrão, a aplicação irá fornecer a data do dia anterior para filtrar os negócios
- Para cada negócio retornado pela, API, a aplicação irá executar as seguintes ações:
- Verifica se o deal do Agendor já foi cadastrado como cirurgia através de seu código legado. O código legado é composto pelo prefixo “agendor-” e o id do negócio no Agendor. Se uma cirurgia com o código legado já existir, ela não é integrada novamente e o processo segue para o próximo negócio da lista.
- Integração do cliente
O negócio do Agendor pode ter uma Organization ou uma Person, para pessoas jurídicas e físicas respectivamente.
Se o cliente não for encontrado, ele é cadastrado no V2. - Integração dos produtos
Para cada produto informado no deal, a aplicação verifica se o produto existe no V2 com a referência do fabricante informada no campo “code” do produto no Agendor.
Se o produto não for encontrado, uma observação é gravada no orçamento informando que o produto não foi localizado. Importante: Não são cadastrados produtos no V2 - Integração da cirurgia
O negócio do Agendor é integrado no V2 como cirurgia.
Alguns campos customizados do Agendor são utilizados no V2 para preencher as informações da cirurgia.
Os seguintes campos são integrados:
- Cliente
- Hospital
Campo customizado hospital - Convênio
Campo customizado convenio - Paciente
Campo customizado paciente - Data da cirurgia
Campo wonAt do negócio - Médico
Campo customizado medico - Observação
Observações da integração do deal.
Este campo é formado pelo campo description do negócio e pelo sufixo “Criada a partir do Agendor: [url do deal no agendor]” - Data de cadastro
Data atual - Código legado
Formado pelo prefixo “agendor-” + id do negócio no Agendor - Observações do agendamento
Campo personalizado “grade_da_cirurgia” - Procedimento
Campo personalizado “procedimento_cirurgico”
Caso o procedimento não exista no V2, é automaticamente criado. - Vendedor
Campo personalizado “vendedor”
Integração dos clientes
Durante o processo de integração das cirurgias, a aplicação irá verificar se o cliente existe pelo CNPJ ou CPF.
Caso o cliente não exista, ele é cadastrado no V2 utilizando os campos do Agendor.
No Agendor, o cadastro do cliente deve conter os campos obrigatórios no V2 para que o cadastrado possa ser completado. Do contrário a cirurgia não será integrada.
Campos obrigatórios no cadastro do cliente:
- Nome
- CPF (Para clientes PF)
- CNPJ (Para clientes PJ)
- Inscrição Estadual (Para clientes PJ)
Neste caso, o campo customizado de inscrição estadual é utilizado. Caso não seja informado no Agendor, o sistema irá preencher automaticamente “ISENTO”.
- Telefone
- Endereço completo
- Cidade / Estado
A cidade e estado no Agendor são campos texto. A cidade precisa ser informada exatamente como registrada no V2. Não serão aceitas cidades abreviadas, ex: S. Paulo, ou estados com UF inválida.
Caso a cidade não exista no V2, haverá erro de integração da cirurgia.
Integração com Neogrid
Sincronia entre Consumo e Reposição
A integração entre o V2Saúde e a Neogrid automatiza a visibilidade do seu estoque e do consumo de materiais para o fabricante. O processo ocorre de forma transparente: a Neogrid solicita os dados ao sistema com base em períodos específicos, e o V2Saúde responde automaticamente com informações atualizadas.
Com essa tecnologia, o fornecedor monitora estoques locais e em consignação, analisando a necessidade de reposição baseada na sua demanda real. Isso transforma as movimentações internas em inteligência logística, garantindo que o insumo certo esteja disponível no momento exato.
Como funciona na prática?
-
Automação Inteligente: O V2Saúde processa e responde automaticamente às consultas da Neogrid, eliminando processos manuais o que acarreta na eliminação de erros operacionais.
-
Visibilidade: O fornecedor passa a visualizar o fluxo de consumo e a posição detalhada dos estoques (atual, consignado e pendente de faturamento).
-
Eficiência Logística: A reposição passa a ser baseada na sua demanda real, otimizando o giro de estoque e prevenindo tanto a falta quanto o excesso de insumos.
O que a integração faz?
-
Consulta de Vendas: Reporta as notas fiscais emitidas no período solicitado trazendo visibilidade de consumo.
-
Consulta de Estoque: Informa o saldo dos produtos presentes no estoque atual, consignado e pendências de faturamento.
Configurando a integração no V2 saúde
- A integração deve ser configurada em Cadastros > Empresa e preferências;
- Acesse a aba "Integrações" e selecione SIM para 'Integração com Neogrid?';
- Após esta etapa basta acessar o cadastro do Fabricante em Estoque > Fabricante;
- Clique em 'Editar';
- No cadastro do fabricante clique em 'Gerar novo token' para gerar o token de identificação que será utilizado nas consultas da Neogrid.
- Sinalize a caixa 'Ativar Sell Out nas notas emitidas com produtos deste fabricante?' e posteriormente em 'Salvar'.
Documentação Técnica: API de Consumo de Dados Neogrid
1. Relatório de vendas (verificação de consumo)
- Requisição:
-
- POST: [URL BASE]/v2-api/sellout/neogrid/notas
-
Authorization: Neogrid[Token de integração do Fabricante]
-
Validação: Período não pode exceder 90 dias
{
"dataInicial": "2025-04-02",
"dataFinal": "2025-04-02"
}
- Retorno de requisição:
{
"relatorioVendas": {
"tipoRegistro": "01",
"identificacao": "VENDAS",
"versao": "052",
"numeroRelatorio": "01",
"dataEmissao": "2026-03-05T10:46:35.9",
"dataInicialPeriodoVenda": "2025-04-02",
"dataFinalPeriodoVenda": "2025-04-02",
"cnpjEmissor": "12345678000123",
"cnpjDestinatario": "12345678000112",
"notasFiscais": [
{
"tipoRegistro": "02",
"tipoFaturamento": "01",
"numeroNf": "11111",
"serieNf": "1",
"tipoNf": "VENDA DE MERCADORIA ADQUIRIDA OU RECEBIDA DE TERCEIROS REMET",
"dataEmissaoNf": "2025-04-02",
"vendedor": {
"tipoRegistro": "02",
"nome": "JOSÉ JÚNIOR",
"codigo": "889"
},
"cliente": {
"tipoRegistro": "02",
"codigoCliente": "12.123.123/0001-23",
"cepCliente": "22555000",
"ufCliente": "SP",
"cidadeCliente": "SÃO PAULO - SP",
"enderecoCliente": "RODOVIA PRESIDENTE DUTRA",
"bairroCliente": "JARDIM BELA VISTA",
"nomeCliente": "CLIENTE EXEMPLO 01",
"telefoneCliente": "12345678"
},
"ufEmissorMercadoria": "RJ",
"cepEmissorMercadoria": "11223344",
"ufDestinatarioMercadoria": "RJ",
"cepDestinatarioMercadoria": "22555000",
"condicaoEntrega": "Sem frete",
"diasPagamento": 0,
"itens": [
{
"tipoRegistro": "03",
"produto": {
"tipoRegistro": "02",
"cnpjFornecedor": null,
"codigoProduto": "ABC-D",
"tipoItem": "01",
"quantidadeProdutoEmbalagem": null,
"precoTabelaUnidade": null,
"descricaoInternaItem": "MATERIAL EXEMPLO 01",
"statusProduto": "01"
},
"cfop": "5114",
"quantidadeVendida": 1.0,
"precoBruto": 350.00,
"bonificacao": "N",
"valorTotalBruto": 350.00,
"valorTotalLiquido": 350.00,
"valorIpi": 0.00,
"valorPis": 2.28,
"valorSubstituicaoTributaria": 0.00,
"valorIcms": 0.00,
"valorDescontos": 0.00
}
]
},
{
"tipoRegistro": "02",
"tipoFaturamento": "01",
"numeroNf": "22222",
"serieNf": "1",
"tipoNf": "DEVOLUCAO SIMBOLICA DE MERCADORIA VENDIDA OU UTILIZADA EM PR",
"dataEmissaoNf": "2025-04-02",
"vendedor": null,
"cliente": {
"tipoRegistro": "02",
"codigoCliente": "22.123.123/0001-23",
"cepCliente": "88559966",
"ufCliente": "RJ",
"cidadeCliente": "RESENDE - RJ",
"enderecoCliente": "RUA CADETE EDSON",
"bairroCliente": "MONTESE",
"nomeCliente": "CLIENTE EXEMPLO 02",
"telefoneCliente": "(24) 1111-2222"
},
"ufEmissorMercadoria": "RJ",
"cepEmissorMercadoria": "11223344",
"ufDestinatarioMercadoria": "RJ",
"cepDestinatarioMercadoria": "22555000",
"condicaoEntrega": "Sem frete",
"diasPagamento": 0,
"itens": [
{
"tipoRegistro": "03",
"produto": {
"tipoRegistro": "02",
"cnpjFornecedor": null,
"codigoProduto": "AB-CD",
"tipoItem": "01",
"quantidadeProdutoEmbalagem": null,
"precoTabelaUnidade": null,
"descricaoInternaItem": "MATERIAL EXEMPLO 01",
"statusProduto": "01"
},
"cfop": "1919",
"quantidadeVendida": 1.0,
"precoBruto": 300.00,
"bonificacao": "N",
"valorTotalBruto": 300.00,
"valorTotalLiquido": 300.00,
"valorIpi": 0.00,
"valorPis": 0.00,
"valorSubstituicaoTributaria": 0.00,
"valorIcms": 0.00,
"valorDescontos": 0.00
}
]
}
]
}
}
2. Relatório de estoque (verificação de posição)
- Requisição:
- POST: [URL BASE]/v2-api/sellout/neogrid/estoque
-
Authorization: Neogrid[Token de integração do Fabricante]
-
Validação: Período não pode exceder 2 dias
{
"dataInicial": "2026-03-05",
"dataFinal": "2026-03-05"
}
- Retorno de requisição:
{
"relatorioEstoque": {
"tipoRegistro": "01",
"identificacao": "RELEST",
"versao": "051",
"numeroRelatorio": "01",
"dataEmissao": "2026-03-05T11:04:55.202",
"dataInicial": "2026-03-05",
"dataFinal": "2026-03-05",
"cnpjEmissor": "12345678000123",
"cnpjDestinatario": "12123123000123",
"estoque": [
{
"tipoRegistro": "02",
"dataEstoque": "2026-03-05",
"codigoItem": "156009",
"lote": "MG16",
"serial": null,
"quantidadeEstoque": 0.00,
"quantidadeEstoqueTransito": 0.00,
"quantidadeEstoqueComprometido": 0.00,
"produto": {
"tipoRegistro": "02",
"cnpjFornecedor": null,
"codigoProduto": "ABC-D",
"tipoItem": "01",
"quantidadeProdutoEmbalagem": null,
"precoTabelaUnidade": null,
"descricaoInternaItem": "MATERIAL EXEMPLO 01",
"statusProduto": "01"
}
},
{
"tipoRegistro": "02",
"dataEstoque": "2026-03-05",
"codigoItem": "156009",
"lote": "PL12",
"serial": null,
"quantidadeEstoque": 0.00,
"quantidadeEstoqueTransito": 0.00,
"quantidadeEstoqueComprometido": 0.00,
"produto": {
"tipoRegistro": "02",
"cnpjFornecedor": null,
"codigoProduto": "AB-CD",
"tipoItem": "01",
"quantidadeProdutoEmbalagem": null,
"precoTabelaUnidade": null,
"descricaoInternaItem": "MATERIAL EXEMPLO 02",
"statusProduto": "01"
}
}
]
}
}