Fornecimento automatizado da Tabela CFF (SEFAZ-RS) com sincronização em tempo real
Esta API foi construída para expor os dados estruturados de Classificação Tributária da Tabela CFF da SEFAZ, permitindo consultas automatizadas do cadastro de regras do ICMS, IBS e CBS de forma transparente e performática.
Os dados são atualizados a cada 12 horas por um processo em background diretamente dos servidores do governo.
Retorna a lista completa de classificações tributárias com seus respectivos NCMs (Anexos).
Consulta uma Classificação Tributária específica pelo seu código longo (ex: 515001) e seus anexos vinculados.
Retorna os dados descritivos e amigáveis de uma categoria pai (CST) específica de 3 dígitos (ex: 000, 510).
[
{
"CodClassTrib": "000001",
"Cst": "000",
"NomeCst": "Tributação integral",
"NomeClassTrib": "Situações tributadas integralmente pelo IBS e CBS.",
"PercRedIbs": 0.0,
"PercRedCbs": 0.0,
"IndNfce": true,
"DthIniVig": "2025-05-05 00:00:00",
"dtAtualizacaoSistema": "2026-05-04 12:05:00"
}
] {
"codigo": "000",
"descricao": "Tributação integral",
"Exige Tributação": true,
"Reduções": {
"BC": false,
"Alíquota": false
},
"Transferência de Crédito": false,
"Diferimento": false,
"Monofásica": false,
"Crédito Presumido IBS ZFM": false,
"Ajuste de Crédito": false
} Se houver alguma falha na comunicação com o banco de dados interno ou os parâmetros de configuração (data/config.json) estiverem incorretos, a API retornará o status 500 Erro Interno do Servidor com um JSON detalhando a exceção:
{
"erro": "Erro interno de processamento",
"mensagem": "Acesso negado para o usuário 'cclasstrib'@'...' (usando senha: SIM)"
} var
objClient: TRESTClient;
objRequest: TRESTRequest;
objResponse: TRESTResponse;
begin
objClient := TRESTClient.Create('https://cff.nghc.com.br/api/classificacoes/000001');
objRequest := TRESTRequest.Create(nil);
objResponse := TRESTResponse.Create(nil);
try
objRequest.Client := objClient;
objRequest.Response := objResponse;
objRequest.Method := rmGET;
objRequest.Execute;
if (objResponse.StatusCode >= 200) and (objResponse.StatusCode <= 299) then
Writeln(objResponse.Content)
else
Writeln('Erro HTTP: ', objResponse.StatusCode);
finally
objResponse.Free;
objRequest.Free;
objClient.Free;
end;
end; using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using (var objClient = new HttpClient())
{
var objResponse = await objClient.GetAsync("https://cff.nghc.com.br/api/classificacoes/000001");
if (objResponse.IsSuccessStatusCode)
{
string strContent = await objResponse.Content.ReadAsStringAsync();
Console.WriteLine(strContent);
}
else
{
Console.WriteLine($"Erro HTTP: {(int)objResponse.StatusCode}");
}
}
}
} const https = require('https');
https.get('https://cff.nghc.com.br/api/classificacoes/000001', (objResponse) => {
let strData = '';
if (objResponse.statusCode < 200 || objResponse.statusCode > 299) {
console.error(`Erro HTTP: ${objResponse.statusCode}`);
return;
}
objResponse.on('data', (chunk) => {
strData += chunk;
});
objResponse.on('end', () => {
console.log(JSON.parse(strData));
});
}).on('error', (err) => {
console.error(`Erro: ${err.message}`);
}); import requests
objResponse = requests.get('https://cff.nghc.com.br/api/classificacoes/000001')
if objResponse.status_code >= 200 and objResponse.status_code <= 299:
print(objResponse.json())
else:
print(f"Erro HTTP: {objResponse.status_code}") import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpClient objClient = HttpClient.newHttpClient();
HttpRequest objRequest = HttpRequest.newBuilder()
.uri(URI.create("https://cff.nghc.com.br/api/classificacoes/000001"))
.build();
HttpResponse<String> objResponse = objClient.send(objRequest, HttpResponse.BodyHandlers.ofString());
if (objResponse.statusCode() >= 200 && objResponse.statusCode() <= 299) {
System.out.println(objResponse.body());
} else {
System.out.println("Erro HTTP: " + objResponse.statusCode());
}
}
} async function fetchClassificacao(): Promise<void> {
try {
const objResponse = await fetch('https://cff.nghc.com.br/api/classificacoes/000001');
if (!objResponse.ok) {
console.error(`Erro HTTP: ${objResponse.status}`);
return;
}
const objData = await objResponse.json();
console.log(objData);
} catch (err) {
console.error('Erro na requisição', err);
}
}
fetchClassificacao(); <?php
$strUrl = "https://cff.nghc.com.br/api/classificacoes/000001";
$objCh = curl_init();
curl_setopt($objCh, CURLOPT_URL, $strUrl);
curl_setopt($objCh, CURLOPT_RETURNTRANSFER, true);
$strResponse = curl_exec($objCh);
$iHttpCode = curl_getinfo($objCh, CURLINFO_HTTP_CODE);
if ($iHttpCode >= 200 && $iHttpCode <= 299) {
echo $strResponse;
} else {
echo "Erro HTTP: " . $iHttpCode;
}
curl_close($objCh);
?>