12.1. Identificação do CT-e RT
12.1.1. Compra Governamental RT
12.1. Identificação do CT-e RT
« Anterior
12.1.1.1. DFe anterior RT
Próximo »

12.1.1. Compra Governamental RT

Sumário

Funcionalidade para gerar o XML com a informação da Compra Governamental.

Assinatura

string gCompraGovv114(int tpEnteGov, double pRedutor, int tpOperGov, int tpOperGov, string refDFeAnt_Opc)

Descrição:

Funcionalidade para gerar o XML com a informação da Compra Governamental.

Informar o grupo quando a legislação exigir a informação em uma venda para administração pública direta e suas autarquias e fundações.

Importante

Atualização necessária para atender os novos leiautes do CT-e, CT-e Simplificado e CT-e OS da NT 2025/001 - Reforma Tributária do Consumo

Vigência:

  • ambiente de homologação: até 28/07/2025
  • ambiente de produção: 06/10/2025

Versão da DLL requerida:

Histórico de atualização:

Parâmetros:

nome tipo tam. obrig. descrição
tpEnteGov inteiro 1 sim Tipo de ente governamental
Informar o tipo de ente governamental:
1=União
2=Estado
3=Distrito Federal
4=Município
5=Consórcio Público
6=Comitê Gestor do IBS
pRedutor double 5,2-4 sim Percentual de redução de alíquota em compra governamental
Informar o percentual de redução de alíquota em compra governamental, conforme artigos 472 e 370 da LC 214/2025.
Consultar o percentual com o Contador ou responsável pelo faturamento.
tpOperGov inteiro 1 sim Tipo da operação com ente governamental
1 – Fornecimento com pagamento posterior;2 - Recebimento do pagamento com fornecimento já realizado;
3 – Fornecimento com pagamento já realizado;
4 – Recebimento do pagamento com fornecimento posterior;
refDFeAnt_Opc string - não informar a refDFeAnt da(s) chave(s) de acesso do documento fiscal anterior.
Deverá ser informado para tpOperGov 2 e 3 e vedado para os tipos 1 e 4
Obs: a chave de acesso deverá ser de um emitente com o mesmo CNPJ base

Diagrama:

DiagramaCTeCompraGov

Retorno:

Um string com o grupo XML da grupo da compra governamental

XML:

Exemplo de XML de compra governamental com pagamento posterior (tpOperGov=1)

<gCompraGov>
  <tpEnteGov>0</tpEnteGov>
  <pRedutor>10.00</pRedutor>
  <tpOperGov>1</tpOperGov>
</gCompraGov>

Exemplo de XML de compra governamental com recebimento do pagamento com fornecimento já realizado (tpOperGov=2) e um refDFeAnt, necessário informar os refDFeAnt

<gCompraGov>
  <tpEnteGov>0</tpEnteGov>
  <pRedutor>10.00</pRedutor>
  <tpOperGov>2</tpOperGov>
  <refDfeAnt>35221202449691000130570010000000291000796813</refDfeAnt>
</gCompraGov>

Exemplo de XML de compra governamental com recebimento do pagamento com fornecimento já realizado (tpOperGov=2) e dois refDFeAnt, necessário informar os refDFeAnt

<gCompraGov>
  <tpEnteGov>0</tpEnteGov>
  <pRedutor>50.00</pRedutor>
  <tpOperGov>2</tpOperGov>
  <refDfeAnt>35221202449691000130570010000000291000796813</refDfeAnt>
  <refDfeAnt>502603153174750001835700100000244810000767634</refDfeAnt>
</gCompraGov>

Importante

O trecho do XML foi formatado para uma melhor visualização, a mensagem original não tem formatação.

Vale observar que a formatação pode corromper a assinatura digital, além de ocupar espaço e ser desnecessária, pois os browser exibem formatado.

Exemplos de uso:

Visual Basic 6.0

 
' grupo de Compras Governamentais

' declaração das variáveis

Dim gCompraGov As String
Dim tpEnteGov As Long
Dim pRedutor As Double
Dim tpOperGov As Long
Dim refDFeAnt_opc as String
 
' inicializar variáveis

tpEnteGov = 1           ' tipo de ente governamental, valores válidos:
                        ' 1=União
                        ' 2=Estado
                        ' 3=Distrito Federal
                        ' 4=Município
                        ' 5=Consórcio Público
                        ' 6=Comitê Gestor do IBS

pRedutor = 10           ' Percentual de redução da alíquota em compra governamental
                        ' conforme arts 472 e 370 da LC 214/2025

tpOperGov = 2           ' Tipo da operação com ente governamental:
                        ' 1 – Fornecimento com pagamento posterior;
                        ' 2 - Recebimento do pagamento com fornecimento já realizado;
                        ' 3 – Fornecimento com pagamento já realizado;
                        ' 4 – Recebimento do pagamento com fornecimento posterior;

refDFeAnt_Opc = ""      ' Chave de acesso do documento fiscal anterior.
                        ' Deverá ser informado para tpOperGov 2 e 3 e
                        ' vedado para os tipos 1 e 4
                        ' Obs: a chave de acesso deverá ser de um emitente
                        ' com o mesmo CNPJ base

'   instancia DLL - late binding

Dim objCTeUtil As Object
 
Set objCTeUtil = CreateObject("CTe_Util.Util")
 
'  gerar o refDFeAnt quando tpoOperGov = 2 ou 4

refDFeAnt_Opc = objCTeUtil.refDFeAnt("50260315317475000183570010000024471000076553")
 
' concatenar quando existir mais de uma chave

refDFeAnt_Opc = refDFeAnt_Opc + objCTeUtil.refDFeAnt("502603153174750001835700100000244810000767634")
 
'   gera grupo de Compras Governamentais

gCompraGov = objCTeUtil.gCompraGovv114(tpEnteGov, pRedutor, tpOperGov, refDFeAnt_Opc)
 
MsgBox gCompraGov, vbInformation, "Informação"

Delphi

 
procedure TForm1.Button4Click(Sender: TObject);
var
 
objCTeUtil: OleVariant;                       // declarar a interface da DLL
 
gCompraGov: widestring;
tpEnteGov: integer;
pRedutor: double;
tpOperGov: integer;
refDFeAnt_Opc: widestring;
 
begin
 
//   grupo de Compras Governamentais
 
//   inicializa parâmetros
 
gCompraGov := '';
 
tpEnteGov := 0;         // tipo de ente governamental, valores válidos:
                        // 1=União
                        // 2=Estado
                        // 3=Distrito Federal
                        // 4=Município
                        // 5=Consórcio Público
                        // 6=Comitê Gestor do IBS
 
pRedutor := 10;         // Percentual de redução da alíquota em compra governamental
                        // conforme arts 472 e 370 da LC 214/2025, consultar contador
 
tpOperGov := 2;         // Tipo da operação com ente governamental:
                        // 1 – Fornecimento com pagamento posterior;
                        // 2 - Recebimento do pagamento com fornecimento já realizado;
                        // 3 – Fornecimento com pagamento já realizado;
                        // 4 – Recebimento do pagamento com fornecimento posterior;
 
refDFeAnt_Opc := '';    // Chave de acesso do documento fiscal anterior.
                        // Deverá ser informado para tpOperGov 2 e 3 e
                        // vedado para os tipos 1 e 4
                        // Obs: a chave de acesso deverá ser de um emitente
                        // com o mesmo CNPJ base
 
//   instancia DLL - late binding
 
objCTeUtil := CreateOleObject('CTe_Util.util');    // instancia a DLL - late binding
 
//  gerar o refDFeAnt quando tpoOperGov = 2 ou 4
 
refDFeAnt_Opc := objCTeUtil.refDFeAnt('50260315317475000183570010000024471000076553');
 
// concatenar quando existir mais de uma chave
 
refDFeAnt_Opc := refDFeAnt_Opc + objCTeUtil.refDFeAnt('502603153174750001835700100000244810000767634');
 
//   gera grupo de Compras Governamentais
 
gCompraGov := objCTeUtil.gCompraGovv114(tpEnteGov, pRedutor, tpOperGov, refDFeAnt_Opc);
 
MessageDlg( 'XML resultante: '+gCompraGov, mtInformation, [mbOk], 0);
 
end;

c#

 
//   grupo de Compras Governamentais
 
//   inicializa parâmetros
 
string gCompraGov = "";
 
int tpEnteGov = 0;      // tipo de ente governamental, valores válidos:
                        // 1=União
                        // 2=Estado
                        // 3=Distrito Federal
                        // 4=Município
                        // 5=Consórcio Público
                        // 6=Comitê Gestor do IBS
 
double pRedutor = 10;   // Percentual de redução da alíquota em compra governamental
                        // conforme arts 472 e 370 da LC 214/2025, consultar contador
 
int tpOperGov = 2;      // Tipo da operação com ente governamental:
                        // 1 – Fornecimento com pagamento posterior;
                        // 2 - Recebimento do pagamento com fornecimento já realizado;
                        // 3 – Fornecimento com pagamento já realizado;
                        // 4 – Recebimento do pagamento com fornecimento posterior;
 
string refDFeAnt_Opc = "";  // Chave de acesso do documento fiscal anterior.
                            // Deverá ser informado para tpOperGov 2 e 3 e
                            // vedado para os tipos 1 e 4
                            // Obs: a chave de acesso deverá ser de um emitente
                            // com o mesmo CNPJ base
 
//   instancia DLL
 
CTe_Util.Util util = new CTe_Util.Util();
 
//  gerar o refDFeAnt quando tpoOperGov = 2 ou 4
 
refDFeAnt_Opc = objCTeUtil.refDFeAnt("50260315317475000183570010000024471000076553");
 
// concatenar quando existir mais de uma chave
 
refDFeAnt_Opc = refDFeAnt_Opc + objCTeUtil.refDFeAnt("502603153174750001835700100000244810000767634");
 
//   gera grupo de Compras Governamentais 
 
gCompraGov = util.gCompraGov(tpEnteGov, pRedutor, tpOperGov, refDFeAnt_Opc);
12.1.1. Compra Governamental RT
12.1. Identificação do CT-e RT
« Anterior
12.1. Identificação do CT-e RT
Próximo »
12.1.1.1. DFe anterior RT