API VatBR

API REST com JSON. Gere sua chave no Painel e autentique com ela no header Authorization: Bearer. Chaves sk_test_ nunca geram obrigações fiscais.

Importe no Postman, Insomnia ou em geradores de SDK. Sem ?download, as URLs servem o arquivo diretamente.

POST /v1/calculations

Criar cálculo

Retorna CBS e IBS (estadual e municipal) separados por jurisdição, prontos para o split payment.

amount number
Valor da operação em reais.
currency string
Sempre BRL.
customer.cep string
CEP do destinatário (8 dígitos). Alternativa: customer.ibge.
nbs string
Código NBS ou categoria (ex.: CBN.01 Cesta Básica, MED.01 Medicamentos). Define o regime padrão.
regime string?
standard | reduced_60 | zero_rate. Opcional; deve ser permitido para o item, senão retorna regime_not_eligible.

Sandbox interativo: chamadas com sua chave contam no seu uso e aparecem nos logs do Painel.

curl https://vatbr.com.br/api/public/v1/calculations \
  -H "Authorization: Bearer sk_test_SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{"amount":1000,"currency":"BRL","customer":{"cep":"01310-100"},"nbs":"1.1502.10.00"}'
Resposta
// Clique em Executar para ver a resposta

POST /v1/calculations/batch

Cálculo em lote

Calcule um carrinho ou fatura inteira em uma chamada: até 100 itens. customer e nbs no topo valem para todos os itens, e cada item pode sobrescrevê-los. Cada item calculado com sucesso conta como 1 cálculo; itens com erro não são cobrados e não derrubam os demais. A resposta traz o resultado por item (com seu id) e os totais de CBS, IBS estadual e IBS municipal.

curl https://vatbr.com.br/api/public/v1/calculations/batch \
  -H "Authorization: Bearer sk_test_SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
    "customer": { "cep": "01310-100" },
    "nbs": "1.1502.10.00",
    "items": [
      { "id": "plano-anual", "amount": 1000 },
      { "id": "addon-filial", "amount": 500, "customer": { "cep": "89801-000" } }
    ]
  }'

// 200 → { "object": "calculation_batch", "succeeded": 2, "failed": 0,
//   "items": [{ "id": "plano-anual", "status": "succeeded", "lines": [...], "total_tax": 265 }, ...],
//   "totals": { "amount": 1500, "cbs": 132, "ibs_uf": 149, "ibs_mun": 115.5, "total_tax": 396.5 } }

Erros

400invalid_request_error — parâmetros inválidos
401authentication_error — chave ausente ou inválida
403permission_error — sk_live_ exige plano pago
429rate_limit_error — limite do plano excedido