O Código Fiscal de Operações e Prestações, mais conhecido como CFOP, é um código composto por quatro dígitos. Ele é essencial em qualquer nota fiscal (NF) e serve como um resumo do motivo da nota e seu destino para o governo.
Em termos simples, o CFOP explica qual é a operação que está ocorrendo com a mercadoria naquela nota, diferencia e detalha diversas situações, como:
Se a mercadoria está sendo vendida ou comprada.
Se é uma devolução (feita ou recebida).
Se o produto está sendo enviado para conserto ou está retornando dele.
Qual é a tributação do item
O primeiro dígito do CFOP é o mais importante e responde a duas perguntas cruciais: a mercadoria está entrando ou saindo da empresa, e de onde ela vem/para onde ela vai?
Não se deve pensar apenas em "compra" ou "venda", mas sim no movimento físico da mercadoria no estoque.
1, 2 ou 3: Se o CFOP começa com um desses números, a mercadoria está ENTRANDO fisicamente na loja.
5, 6 ou 7: Se CFOP inicia com um desses números, a mercadoria está SAINDO fisicamente da loja.
| Primeiro Dígito | Operação |
|---|---|
| 1 | Compra/Entrada no mesmo estado |
| 2 | Compra/Entrada vindo de outro estado |
| 3 | Compra/Entrada do exterior (usando em Notas de Importação) |
Exemplos de operações de Entrada:
Compra para revenda.
Devolução feita por um cliente (Devolução de venda).
Retorno de um produto que foi para conserto.
Recebimento de bonificação/brinde do fornecedor.
| Primeiro Dígito | Operação |
|---|---|
| 5 | Venda/Saída no mesmo estado |
| 6 | Venda/Saída para outro estado |
| 7 | Saída para o exterior (usado em Notas de Exportação) |
Exemplos de operações de Saída:
Venda de mercadoria de produção própria
Envio de produto para conserto.
Devolução para o fornecedor (devolução de compra).
Transferência de estoque para outra filial/loja.
Remessa para demonstração, depósito, ou envio de bonificação.
Comunicação com o Governo: O CFOP define a natureza da sua operação para a fiscalização, impactando diretamente a correta apuração e cobrança dos impostos.
Organização Fiscal e Contábil: Ele organiza o fluxo de estoque e as informações contábeis. Por exemplo, um CFOP de "Venda" tributa, mas um CFOP de "Remessa para Conserto" não.
No Sistema de Gestão: No Wshop, o CFOP é carregado pela operação cadastrada, e é ela quem define como será o movimento da nota.
No dia a dia: Entender o CFOP é essencial paraconseguir identificar corretamente o cenário da operação, lidar com emissões de notas e resolver rejeições fiscais.
Autor do artigo: Dani.uca (Não remova esse quadro)Descreva o passo a passo para o cliente seguindo os padrões de escrita de artigos, como:
|
(Não remova esse quadro)Essas informações não se tonam parte do conteúdo em sua nova página, elas ficam ocultas e só aprecem para usuário logado e se o artigo/dica estiver em modo de edição! |
<div id="text-end"></div>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-193974933-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag2(){dataLayer.push(arguments);}
gtag2('js', new Date());
gtag2('config', 'UA-193974933-1');
function gtagevents (action,category) {
console.log(category + ':' + action);
gtag2('event',action,{event_category:category,event_label: document.title});
};
</script>
<script src="https://player.vimeo.com/api/player.js"></script>
<script>
(function(){
// RASTREIO DE USO DO VÍDEO
function gtagvideo(action){
gtagevents(action,'Video')
}
var iframe = document.querySelector('iframe');
var player = new Vimeo.Player(iframe);
var seeking = false;
var priorTime = 0;
var currentTime = 0;
var reportouFinalDoConteudo = false;
// se pausar o play é acionado também.
player.on('play', function(data) {
if(data.seconds == 0){
gtagvideo('video-iniciado');
}
priorTime = data.seconds;
});
player.on('ended', function() {
gtagvideo('video-finalizado');
});
//seeking e timeupdate são disparados juntos, logo o tempo dos 2 é atualizado também. Preciso garantir que a variavel starttime seja atualizada ordenadamente (sempre antes ou após o seeking).
// pra isso preciso setar uma variavel no timeupdate e ler no seeking para garantir a ordem. Se ela estiver false será alterada na próxima iteração.
player.on('seeking', function(data) {
seeking = true;
});
player.on('pause',function(data){
gtagvideo('video-pausado');
});
player.on('timeupdate', function(data) {
if(seeking){
if(currentTime < priorTime){
gtagvideo('video-voltando');
}
if(currentTime > priorTime){
gtagvideo('video-avancando')
}
seeking = false;
}
priorTime = currentTime;
currentTime = data.seconds;
var finalDoConteudo = (data.duration - data.seconds) < 5;
if(finalDoConteudo && !reportouFinalDoConteudo){
gtagvideo('conteudo-finalizado')
reportouFinalDoConteudo = true;
}
});
player.on('fullscreenchange', function() {
gtagvideo('video-fullscreen');
});
})();
</script>
<script>
// RASTREIO DO USO DE AUDIO
(function(){
function gtagaudio(action){
gtagevents(action,'Audio')
}
var audio = document.querySelector("audio");
var seeking = false;
var priorTime = 0;
var currentTime = 0;
audio.addEventListener('play',function(){
if(audio.currentTime == 0){
gtagaudio('audio-iniciado');
}
priorTime = audio.currentTime;
});
audio.addEventListener('ended',function(){
gtagaudio('audio-finalizado');
});
audio.addEventListener('pause',function(){
gtagaudio('audio-pausado');
});
audio.addEventListener('seeking', function(data) {
seeking = true;
});
audio.addEventListener('timeupdate', function(data) {
if(seeking){
if(currentTime < priorTime){
gtagaudio('audio-voltando');
}
if(currentTime > priorTime){
gtagaudio('audio-avancando')
}
seeking = false;
}
priorTime = currentTime;
currentTime = audio.currentTime;
});
})();
</script>
<script>
(function(){
var terminou = false;
//RASTREIO DE LEITURA ATÉ O FINAL DA PÁGINA
document.addEventListener('scroll',() => {
if(document.getElementById('text-end').getBoundingClientRect().top < window.innerHeight){
if(!terminou){
terminou = true;
gtagevents('artigo-lido','Pagina')
}
}else{
terminou = false;
}
});
})();
</script>
|