FinnexthoFinnextho

Developers

A API que lê o contexto fiscal — com clareza, não com promessa. A superfície pública que a Finnextho já expõe hoje para escritórios contábeis, ERPs e automação supervisionada por IA. O que está documentado aqui é o que existe.

HMAC
SHA-256 assinado
8
endpoints fiscais
5 min
janela de assinatura
120/min
rate limit padrão

Comece por aqui

Quickstart

Assine, chame e leia o contexto fiscal em uma requisição.

Os exemplos montam o payload assinado exatamente como o servidor espera. Troque a key e o secret provisionados, escolha a linguagem e copie.

01

Receba a credencial

API key e secret provisionados pelo time, com escopos e allowlist de IP.

02

Monte a assinatura

Concatene method, rota, timestamp, nonce e body; gere o HMAC SHA-256.

03

Chame o endpoint

Envie os 4 headers X-API-*. A resposta vem no envelope padrão com requestId.

API_KEY="ak_live_xxxxxxxx"
API_SECRET="sk_live_xxxxxxxx"
METHOD="GET"
ROUTE="/api/external/fiscal/workspace"
TS="$(date +%s)"
NONCE="$(openssl rand -hex 16)"

# payload = METHOD \n originalUrl \n timestamp \n nonce \n rawBody
PAYLOAD="$METHOD\n$ROUTE\n$TS\n$NONCE\n"
SIG="$(printf '%b' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" | awk '{print $2}')"

curl -sS "https://api.finnextho.com$ROUTE" \
  -H "X-API-Key: $API_KEY" \
  -H "X-API-Timestamp: $TS" \
  -H "X-API-Nonce: $NONCE" \
  -H "X-API-Signature: sha256=$SIG"
Autenticação

API key + HMAC SHA-256, com escopo por empresa.

Cada requisição é assinada e validada contra uma janela curta de timestamp, com proteção a replay por nonce. A credencial pertence a uma única empresa — governança simples, sem ambiguidade de tenant.

Assinatura

O payload assinado, byte a byte.

Concatene method, rota original (com query), timestamp, nonce e o raw body separados por quebra de linha. O HMAC vai em hex no header de assinatura.

X-API-Key
X-API-Signature
X-API-Timestamp
X-API-Nonce
assinatura
payload = METHOD + "\n"
        + originalUrl + "\n"
        + timestamp + "\n"
        + nonce + "\n"
        + rawBody

signature = HMAC_SHA256(secret, payload)  // hex
Algoritmo
HMAC SHA-256 · assinatura em hex
Payload
METHOD + originalUrl + timestamp + nonce + rawBody
Janela
5 minutos — epoch em segundos ou ms
Nonce
Mín. 8 caracteres, uso único (anti-replay)
Prefixo
Aceita com ou sem sha256=
Tenant
Uma credencial = uma empresa dona
Respostas

Envelope previsível, com requestId em toda chamada.

Sucesso e erro seguem um contrato fixo. O requestId e o traceId sempre voltam para correlação e suporte — o seu log de produção fica limpo desde o primeiro dia.

200 · sucesso

data + meta, sempre no mesmo formato.

O corpo de sucesso traz os dados em data e os identificadores de rastreio em meta. Você consegue logar, correlacionar e dar suporte sem adivinhação.

200 · sucesso 4xx · erro tipado
GET /fiscal/workspace
200 OK
{
  "success": true,
  "data": {
    "company": { "id": "665f0c...", "name": "Acme Serviços ME" },
    "fiscalProfile": { "regime": "simples_nacional", "uf": "SP" },
    "certificate": { "status": "valid", "expiresAt": "2026-02-10T00:00:00.000Z" }
  },
  "meta": {
    "requestId": "req_9f2c7a1b4e",
    "traceId": "trc_5a1b8c3d2f",
    "clientId": "ak_live_xxxxxxxx",
    "companyId": "665f0c..."
  }
}
Endpoints · v1

Oito rotas de leitura. Nenhum write path que ainda não esteja aberto.

GET/api/external/fiscal/workspace

Visão consolidada da empresa autenticada.

fiscal:read
GET/api/external/fiscal/companies

Contexto fiscal da empresa dona da credencial.

fiscal:read
GET/api/external/fiscal/profile

Perfil fiscal e dados-base da empresa.

fiscal:profile:read
GET/api/external/fiscal/certificate/status

Status atual do certificado da empresa.

fiscal:certificate:read
GET/api/external/fiscal/capabilities

Suporte fiscal e exigências mínimas por documento.

fiscal:capabilities:read
GET/api/external/fiscal/documents

Lista documentos fiscais paginados.

fiscal:documents:read
GET/api/external/fiscal/pending

Fila de pendências e contingência.

fiscal:queue:read
GET/api/external/fiscal/webhooks/status

Estado atual do feed fiscal (somente status).

fiscal:webhooks:read
Scopes fiscais

Um contrato público orientado a leitura, status e supervisão.

fiscal:read

Workspace consolidado

Contexto agregado da empresa autenticada em um único payload.

fiscal:profile:read

Perfil fiscal

Regime, inscrições e dados-base para operação fiscal.

fiscal:certificate:read

Certificado

Configuração, validade e risco de expiração do certificado.

fiscal:capabilities:read

Capabilities

Suporte atual por documento e exigências mínimas da superfície.

fiscal:documents:read

Documentos

Documentos paginados com filtros por tipo, período e direção.

fiscal:queue:read

Fila de pendências

Fila fiscal operacional para casos em contingência.

Erros & rate limits

Um errorCode estável para cada falha, com headers de backoff.

O errorCode é máquina-legível e não muda de texto. Trate por ele, nunca pela mensagem. Ao estourar o limite, a API responde 429 com Retry-After.

401
external_credentials_missing

Falta um dos headers X-API-* obrigatórios.

401
external_timestamp_expired

Timestamp fora da janela de 5 minutos.

401
external_client_invalid

API key inexistente ou cliente inativo.

403
external_ip_not_allowed

IP de origem fora da allowlist do cliente.

401
external_signature_invalid

HMAC não confere com o payload assinado.

409
external_replay_detected

Nonce já utilizado dentro da janela.

429
external_rate_limit_exceeded

Limite de requisições do cliente excedido.

403
external_scope_forbidden

Credencial sem o scope exigido pelo endpoint.

120

req / janela

60s

janela padrão

x-rate-limit-limit

Teto de requisições na janela. Default 120.

x-rate-limit-window

Tamanho da janela em segundos. Default 60.

x-rate-limit-remaining

Requisições restantes na janela atual.

Retry-After

Segundos até liberar novas chamadas. Enviado no 429.

erro.json
{
  "success": false,
  "error": "Assinatura inválida",
  "errorCode": "external_signature_invalid",
  "requestId": "req_9f2c7a1b4e",
  "traceId": "trc_5a1b8c3d2f"
}
Limites atuais

A parte mais importante: o que ainda não deve ser vendido como pronto.

Preferimos uma narrativa precisa a uma documentação que promete mais do que entrega.

Não documentamos emissão, transmissão, cancelamento, CC-e, manifestação ou inutilização nesta v1 pública.

Não existe onboarding self-serve público; o acesso é provisionado pelo time.

Não existe modo escritório multi-carteira nativo. A credencial é dona de uma empresa por vez.

Não existe endpoint público para upload de certificado, XML/PDF ou configuração fiscal externa.

Não existe pacote público de webhooks fiscais outbound; hoje a superfície exposta é de status.

O acesso é assistido — e isso é uma vantagem.

Se o seu caso envolve escritório contábil, ERP parceiro ou operação supervisionada por IA, o próximo passo é alinhar escopos, empresa dona da credencial e limite operacional. Falamos a sua língua técnica.