- 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:
- 2025-06-27 - versão 2Gv5.00
- 2026-04-21 - versão 2Gv5.01 - acréscimo dos campos tpOperGov e refDFeAnt
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:

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
