Painel operacional
Documentação API VC Digital
Contrato interno para consumo de guias e extratos pelo backend do VC Digital.
Autenticação
Enviar Authorization: Bearer <token da controladora> em todas as requisições. O token limita o acesso à carteira da própria controladora.
Controladora ID ICMS2
Token da controladoranão configurado
Company ID VC
Base URLhttps://icms.vcnodigital.com
Arquivos para o outro programador
| Arquivo | Objetivo | Link |
vc-digital-consumo-app.md | Guia curto de integração para o time do app: chaves, polling, importação, confirmação e reemissão. | Abrir guia rápido |
vc-digital-changelog.md | Resumo curto das mudanças de contrato publicadas em `2026-05-13` para alinhamento do time do app. | Abrir changelog |
vc-digital.md | Contrato técnico completo em markdown. | Abrir markdown |
vc-digital-readiness.md | Status atual de prontidão da integração por controladora. | Abrir checklist |
vc-digital-readiness.json | Versão JSON do checklist de prontidão. | Abrir JSON |
vc-digital-rollout-priority.md | Regra de consumo incremental e ordem prioritária de empresas para iniciar ingestão. | Abrir prioridade |
vc-digital-rollout-priority.json | Versão JSON da fila prioritária para consumo imediato. | Abrir JSON |
vc-digital-example-response.json | Exemplo real de resposta do endpoint principal. | Abrir JSON |
vc-digital-due-options-example.json | Exemplo real da consulta de datas disponíveis para reemissão pontual. | Abrir JSON |
vc-digital-error-catalog.json | Catálogo de erros reais da API interna. | Abrir JSON |
vc-digital-empty-response.json | Exemplo real de resposta sem documentos. | Abrir JSON |
vc-digital-mark-exported-example.json | Exemplo de payload para marcar exportação concluída. | Abrir JSON |
vc-digital-mark-delivered-example.json | Exemplo de payload para confirmar envio ao cliente via WhatsApp. | Abrir JSON |
vc-digital-curl-examples.txt | Chamadas prontas com curl. | Abrir exemplos |
vc-digital-notificacao-imediata.md | Playbook de notificação incremental para atualizar a vitrine fiscal assim que entrar guia nova no ICMS. | Abrir playbook |
vc-digital-vencimentos-ajuste.md | Guia operacional do ajuste de vencimentos e do reconsumo necessário. | Abrir markdown |
vc-digital-vencimentos-ajuste.json | Fila publicada das guias restantes para reconsumo e itens já reingeridos. | Abrir JSON |
vc-digital-automacao-vencidas.md | Contrato para acionar o desktop, rodar o monitor D+1 e atualizar automaticamente a vitrine com guias recalculadas pela lista real de datas da SEFIN. | Abrir markdown |
vc-digital-automacao-vencidas.json | Exemplo JSON do payload do orquestrador para guias vencidas. | Abrir JSON |
vc-digital-sefin-scrape-schema.md | Contrato da grade SEFIN: campos extraídos do scrape, pedido direto de guia e mapeamento para a API do ICMS. | Abrir markdown |
vc-digital-sefin-scrape-schema.json | Versão JSON do contrato da grade SEFIN para consumo técnico pelo time do app. | Abrir JSON |
vc-digital-implantacao-escritorio.md | Checklist de implantação por escritório parceiro. | Abrir guia |
vc-digital-playbook-comercial.md | Roteiro comercial e posicionamento do produto na cidade. | Abrir playbook |
vc-digital-sla-operacional.md | Metas, rituais e ações corretivas para sustentação do serviço. | Abrir SLA |
/orchestrator/jobs | Tela operacional do ICMS para cruzar jobs, datas reais e prontidão documental. | Abrir painel |
/operations/sla | Painel de SLA com cobertura real, entrega final e reemissões por controladora. | Abrir painel |
Consumo incremental
| Regra | Comportamento publicado |
| Não esperar lote completo | O VC Digital pode consumir assim que a primeira guia estiver disponível na API. |
| Guia sem extrato | Se o dare já existir e o extrato ainda não tiver subido, o endpoint entrega apenas dare. |
| Extrato sem guia | Se o extrato existir antes do PDF da guia, ele fica só no hub interno; documents[] não libera extrato_dare nesse caso. |
| Agrupamento | DARE e extrato continuam agrupáveis pelo mesmo numeroDocumento e pelos externalIds. |
| Polling recomendado | Consumir com pending_only=1 para buscar só os itens ainda não exportados. |
| Notificação imediata | Usar /api/internal/fiscal-documents/upload-events com cursor para disparar sincronização da vitrine assim que surgir nova guia. Esse feed também leva snapshots SEFIN recentes. |
| Pagamento rápido | Usar /api/internal/fiscal-documents/payment-events como cursor curto para reagir quando uma guia for marcada como paga. |
| Auditoria final | Usar workflowStatus, delivery.status e, se necessário, pending_delivery_only=1 para a fila de envio ao cliente. |
Fila prioritária WNS
Para homologação inicial, a recomendação é consumir primeiro as empresas com mais DAREs já capturados e com maior cobertura de artefatos úteis.
| Prioridade | Empresa | Guias | Artefatos úteis | Observação |
| 1 | ERA COMERCIO DE ALIMENTOS LTDA | 22 | 1 guia PDF, 7 extrato PDF | Melhor massa inicial para validar ingestão em volume. |
| 2 | DROGA MIL COMERCIO DE MEDICAMENTOS LTDA | 13 | 1 guia PDF, 10 extrato PDF | Boa cobertura de extratos para vitrine fiscal. |
| 3 | F DOS REIS SANTOS | 8 | 6 guia PDF, 16 extrato PDF/suporte | Melhor cobertura documental já publicada no site. |
| 4 | BARAO AGROPECUARIA E MATERIAIS PARA CONSTRUCAO LTDA | 5 | 1 guia PDF, 5 extrato PDF | Carteira pequena e limpa para validar fluxo ponta a ponta. |
| 5 | PIANNA CLOSET LTDA | 5 | 1 guia PDF, 5 extrato PDF | Útil para validar repetição de guias por mesma empresa. |
Endpoints
| Rota | Método | Objetivo |
/api/internal/fiscal-documents | GET | Listar DAREs e extratos prontos para consumo. |
/api/internal/fiscal-documents/upload-events | GET | Notificação incremental por cursor para sincronização imediata da vitrine do app VC Digital. O feed também carrega snapshots SEFIN recentes. |
/api/internal/fiscal-documents/payment-events | GET | Delta curto de mudanças de pagamento inferido para reagir sem varrer a carteira inteira. |
/api/internal/fiscal-documents/snapshots | GET | Lista os artefatos de imagem anual/mensal da grade SEFIN em contrato dedicado. |
/api/internal/fiscal-documents/due-options | GET | Consultar datas reais disponíveis na SEFIN antes de pedir reemissão pontual. |
/api/internal/fiscal-documents/mark-exported | POST | Marcar artefato como exportado para o VC Digital. |
/api/internal/fiscal-documents/mark-delivered | POST | Confirmar envio ao cliente ou registrar falha de entrega no WhatsApp. |
/api/internal/fiscal-documents/force-republish | POST | Republicar guias/extratos finais com novo artifactId para substituição operacional no VC Digital. |
/api/internal/orchestrator/jobs | GET/POST | Listar jobs por documento/parcela e criar remissões pontuais ou lotes vencidos. |
Reenvio compulsório de manutenção
Use esse fluxo quando o VC Digital já tiver importado um PDF antigo/errado e precisar substituir o documento sem depender de reset local do outro lado.
| Canal | Efeito |
Botão ✈ Reenviar na tela de Guias | Republica os PDFs finais mais recentes da empresa/guia filtrada com novo artifactId. |
POST /api/internal/fiscal-documents/force-republish | Tem o mesmo efeito para automação do VC Digital. |
| Escopo | Somente guia_pdf e extrato_pdf. Artefatos de auditoria não entram. |
| Obrigação do consumidor | Se o mesmo numeroDocumento + documentType voltar com novo artifactId, substituir o documento antigo. |
curl -X POST
-H "Authorization: Bearer <token-da-controladora>"
-H "Content-Type: application/json"
-d '{
"controladoraId": "2",
"companyId": 3,
"numeroDocumento": "20261200047276"
}'
"https://icms.vcnodigital.com/api/internal/fiscal-documents/force-republish"
Configuração esperada no VC Digital
Para a primeira conexão, o outro sistema deve ativar o módulo fiscal da empresa, usar a base do ICMS SaaS e informar o identificador da controladora selecionada abaixo.
fiscalApiEnabled = true
fiscalApiBaseUrl = "https://icms.vcnodigital.com"
fiscalApiKey = "<token-da-controladora>"
fiscalApiSubdomain = ""
fiscalApiImportPath = ""
fiscalApiExtraFields = {
"controladoraId": "2",
"markExportedPath": "/api/internal/fiscal-documents/mark-exported",
"markDeliveredPath": "/api/internal/fiscal-documents/mark-delivered",
"markExportedAfterImport": true
}
Se o backend do VC Digital já assumir o padrão /api/internal/fiscal-documents, o campo fiscalApiImportPath pode ficar vazio no primeiro teste.
Autenticação e headers
| Item | Obrigatório | Observação |
Authorization: Bearer <token> | sim | Token real da controladora. Não é token de usuário do painel. |
Content-Type: application/json | sim no POST | Necessário no mark-exported e no mark-delivered. |
| Headers extras | não | Hoje a API não exige subdomain, tenant, workspaceId ou headers adicionais. |
Consulta principal
Com token de controladora, o filtro de carteira já é aplicado automaticamente. Use cnpj e/ou numeroDocumento para refinar.
| Parâmetro | Obrigatório | Descrição |
controladora_id | não | Opcional para token global; com token da controladora é ignorado se vier divergente. |
cnpj | não | Filtra o contribuinte pelo CNPJ. |
numeroDocumento | não | Filtra uma guia específica. |
pending_only | não | 1 por padrão; retorna apenas itens cujo artefato vigente ainda não foi importado pelo app VC Digital. |
pending_delivery_only | não | 1 para listar só itens já importados mas ainda sem confirmação final de envio ao cliente. |
delivery_status | não | Filtra por PENDENTE_IMPORTACAO, IMPORTADO_PENDENTE_ENVIO, PENDENTE_REENVIO, FALHA_ENTREGA ou ENVIADO_CLIENTE. |
includeAuditArtifacts | não | 1 para incluir artefatos opcionais de auditoria, sem misturar isso com os PDFs finais. |
| outros filtros | não | Hoje não há outros query params úteis publicados neste endpoint. |
curl -H "Authorization: Bearer <token-da-controladora>" "https://icms.vcnodigital.com/api/internal/fiscal-documents?cnpj=60789911000171&pending_only=1"
curl -H "Authorization: Bearer <token-da-controladora>" "https://icms.vcnodigital.com/api/internal/fiscal-documents?cnpj=60789911000171&pending_only=1&includeAuditArtifacts=1"
Campos entregues por documento
| Campo | Uso no VC Digital |
guideId | Identificador interno da guia no ICMS SaaS. |
controladora.companyId | Chave da empresa no VC Digital para vincular a carteira. |
company.cnpj | Chave principal do contribuinte para localizar o destinatário interno. |
company.inscricaoEstadual | Metadado fiscal complementar. |
company.nomeFantasia | Opcional; hoje pode vir vazio. |
numeroDocumento | Número da guia que agrupa DARE e extrato. |
parcela | Parcela da obrigação. |
dueDate | Vencimento real de consumo. Se a guia foi recalculada, usa a data emitida. Se não foi, usa a data original. |
dueDateReal | Alias explícito de dueDate para integração. |
dueDateSource | Origem do vencimento real: LISTA_SEFIN, EMISSAO_CONFIRMADA, EMISSAO_RECALCULADA ou EMISSAO_SEM_BASE_LISTA. |
vencimentoOriginal | Vencimento originalmente capturado na lista da SEFIN, antes de qualquer recálculo. |
vencimentoEmitido | Vencimento efetivamente selecionado na emissão. Pode coincidir com o original. |
availableDueDates[] | Datas realmente disponibilizadas pela SEFIN para guias vencidas. O VC Digital deve consumir apenas essas opções ao pedir atualização automática. |
valorTotal | Valor da obrigação para vitrine e conferência. |
recalculada | Indica se vencimentoEmitido ficou diferente de vencimentoOriginal. |
externalIds.dare / externalIds.extrato | IDs externos prontos para agrupar DARE e extrato sem sobrescrever. |
documents[].artifactId | Identificador único e estável do artefato no ICMS SaaS. |
documents[].downloadUrl | URL direta do artefato no ICMS SaaS. |
documents[].viewerUrl | URL pronta para abrir PDF em nova aba via Google Viewer. |
documents[].mimeType | Hoje os arquivos principais expostos são PDF. JSON e screenshot ficam no hub interno. |
workflowStatus | Status operacional consolidado do documento: importação pendente, importado, falha ou enviado ao cliente. |
delivery.* | Auditoria devolvida pelo ICMS SaaS com dados do envio final ao cliente pela VPS Peramix. |
documents[].notes | Resumo fiscal pronto para preencher mensagem ou auditoria. |
documents[] parcial | O array pode vir apenas com dare; extrato_dare só é liberado quando a mesma guia já possui guia_pdf. |
auditArtifacts[] | Artefatos opcionais de auditoria. Só aparecem se o consumidor pedir includeAuditArtifacts=1. |
Tipos de documento expostos hoje
| documentType | Status | Observação |
dare | ativo | Exposto pelo endpoint e baixável por downloadUrl. |
extrato_dare | ativo | Exposto pelo endpoint e baixável por downloadUrl. |
guia_mei | não exposto ainda | Reservado para futura expansão da API. |
guia_pgdas | não exposto ainda | Reservado para futura expansão da API. |
parcelamento_pgfn | não exposto ainda | Reservado para futura expansão da API. |
parcelamento_simples_nacional | não exposto ainda | Reservado para futura expansão da API. |
parcelamento_mei | não exposto ainda | Reservado para futura expansão da API. |
Semântica de vencimento
| Campo | Regra publicada |
vencimentoOriginal | Data capturada na lista original da SEFIN, antes de qualquer recálculo. |
vencimentoEmitido | Data efetivamente selecionada no seletor de vencimento na emissão. |
availableDueDates[] | Lista das datas reais ofertadas pela SEFIN para a guia vencida no momento da captura. |
dueDate / dueDateReal | Data operacional que o VC Digital deve consumir. |
recalculada | true quando vencimentoEmitido for diferente de vencimentoOriginal. |
dueDateSource | LISTA_SEFIN, EMISSAO_CONFIRMADA, EMISSAO_RECALCULADA ou EMISSAO_SEM_BASE_LISTA. |
Regra operacional: se a guia não foi recalculada, o consumo deve seguir vencimentoOriginal. Se foi recalculada, o consumo deve seguir vencimentoEmitido.
Resposta
{
"error": false,
"total": 1,
"data": [
{
"guideId": 123,
"company": {
"id": 45,
"cnpj": "60789911000171",
"inscricaoEstadual": "0000000000000",
"razaoSocial": "F DOS REIS SANTOS"
},
"controladora": {
"id": 1,
"nome": "Wns contabilidade",
"companyId": "vc-company-001"
},
"numeroDocumento": "20261100080905",
"parcela": "00",
"dueDate": "2026-03-15",
"dueDateReal": "2026-03-15",
"dueDateSource": "LISTA_SEFIN",
"vencimentoOriginal": "2026-03-15",
"vencimentoEmitido": "2026-03-15",
"valorTotal": "86.47",
"externalIds": {
"dare": "dare-20261100080905",
"extrato": "extrato-20261100080905"
},
"recalculada": false,
"documents": [
{
"documentType": "dare",
"externalId": "dare-20261100080905",
"title": "DARE Administrativo",
"dueDate": "2026-03-15",
"dueDateReal": "2026-03-15",
"dueDateSource": "LISTA_SEFIN",
"vencimentoOriginal": "2026-03-15",
"vencimentoEmitido": "2026-03-15",
"cnpj": "60789911000171",
"numeroDocumento": "20261100080905",
"downloadUrl": "https://icms.vcnodigital.com/artifact/view?id=140"
},
{
"documentType": "extrato_dare",
"externalId": "extrato-20261100080905",
"title": "Extrato DARE",
"dueDate": "2026-03-15",
"dueDateReal": "2026-03-15",
"dueDateSource": "LISTA_SEFIN",
"vencimentoOriginal": "2026-03-15",
"vencimentoEmitido": "2026-03-15",
"cnpj": "60789911000171",
"numeroDocumento": "20261100080905",
"downloadUrl": "https://icms.vcnodigital.com/artifact/view?id=141"
}
],
"dare": {
"available": true,
"artifactId": 140,
"downloadUrl": "https://icms.vcnodigital.com/artifact/view?id=140",
"viewerUrl": "https://docs.google.com/gview?embedded=1&url=..."
},
"extrato": {
"available": true,
"artifactId": 141,
"downloadUrl": "https://icms.vcnodigital.com/artifact/view?id=141"
}
}
]
}
Marcar exportado
curl -X POST \
-H "Authorization: Bearer <token-da-controladora>" \
-H "Content-Type: application/json" \
-d '{"artifactId":140,"externalDocUrl":"https://doc.vcnodigital.com/documentos/abc"}' \
"https://icms.vcnodigital.com/api/internal/fiscal-documents/mark-exported"
| Regra | Comportamento atual |
| Quando chamar | Depois que o VC Digital tiver baixado/importado o artefato com sucesso. |
| Payload | artifactId obrigatório e externalDocUrl opcional. |
| artifactId | É único por artefato e não muda após criação. |
| Status interno | O ICMS SaaS grava transfer_status = ENVIADO_VCNO. |
| Chamar duas vezes | Hoje o endpoint é idempotente na prática: mantém o artefato exportado e atualiza transferred_at e externalDocUrl se enviado. |
Arquivos
| Item | Regra atual |
| Formato principal | PDF para dare e extrato_dare. |
| Liberação do extrato | extrato_dare só entra no payload consumível quando a mesma guia já possui guia_pdf. Extrato sem guia continua apenas no hub interno. |
| Screenshot/JSON | Por padrão, extrato_screenshot, sefin_year_snapshot e sefin_pending_month_snapshot ficam apenas no hub interno do ICMS SaaS. Se o VC Digital quiser apoio visual de auditoria, pode pedir includeAuditArtifacts=1. |
| Tamanho observado | Entre 96 KB e 269 KB no acervo atual de PDFs. |
downloadUrl exige token? | Hoje não. O arquivo é servido pela URL interna do artefato. |
viewerUrl pode abrir direto? | Sim. É uma URL pronta para abrir PDF no navegador via Google Viewer. |
Modo opcional de auditoria
| Modo | Como consumir | Regra |
| Normal | /api/internal/fiscal-documents | Retorna apenas documents[] com PDFs finais para cliente. extrato_dare só sai quando o guia_pdf correspondente já existe. |
| Auditoria | /api/internal/fiscal-documents?includeAuditArtifacts=1 | Retorna os mesmos PDFs finais e acrescenta auditArtifacts[] com apoio visual opcional, incluindo snapshots SEFIN quando houver vínculo por guia. |
| Pagamento rápido | /api/internal/fiscal-documents/payment-events | Delta por cursor com mudanças de pagamento inferido para reagir sem recarregar a carteira inteira. |
| Snapshots SEFIN | /api/internal/fiscal-documents/snapshots | Lista o artefato anual/mensal mais recente por empresa ou tipo de snapshot. |
O VC Digital deve tratar auditArtifacts[] como apoio interno. Documento fiscal final para cliente continua sendo PDF do DARE e PDF do extrato; os snapshots SEFIN são artefatos de apoio e não substituem o documento final.
Erros e consistência
| Status | Quando acontece | Mensagem atual |
401 | Sem token ou token inválido. | Não autorizado. / Token inválido para integração interna. |
403 | Token tentando acessar outra controladora ou outro artefato. | Token sem acesso a esta controladora. / Token sem acesso a este artefato. |
404 | artifactId inexistente no mark-exported. | Artefato não encontrado. |
422 | Parâmetros insuficientes ou artifactId ausente. | Informe controladora_id ou cnpj. / artifactId é obrigatório. |
500 | Falha de persistência ao marcar exportação. | Falha ao marcar artefato. |
200 com lista vazia | CNPJ não encontrado ou sem documentos pendentes. | total = 0 e data = [] |