rumbleh / laravel-ciot-antt
Cliente Laravel para emissão de CIOT junto ao web service PEF da ANTT (Pagamento Eletrônico de Frete).
Requires
- php: ^8.2 || ^8.3 || ^8.4
- ext-json: *
- ext-openssl: *
- guzzlehttp/guzzle: ^7.8
- illuminate/contracts: ^11.0 || ^12.0
- illuminate/support: ^11.0 || ^12.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0 || ^10.0
- phpunit/phpunit: ^11.0
README
Cliente Laravel para emissão de CIOT (Código Identificador da Operação de Transporte) junto ao web service PEF da ANTT (Pagamento Eletrônico de Frete), conforme o manual DCS PEF v1.1 (Resolução ANTT 5.892/2019 e MP 1.343/2026 — Piso Mínimo de Frete).
Open source (MIT). Distribuído via Packagist:
composer require rumbleh/laravel-ciot-antt. Detalhes de instalação e CI/CD emdocs/INSTALL.md.
Recursos
- Os 8 serviços do PEF/ANTT, tipados e prontos para uso:
# Serviço Método no pacote 01 ConsultarSituacaoTransportador consultarSituacaoTransportador()02 ConsultarFrotaTransportador consultarFrotaTransportador()03 DeclaracaoOperacaoTransporte (gera o CIOT) declararOperacao()04 CancelamentoOperacaoTransporte cancelarOperacao()05 RetificacaoOperacaoTransporte retificarOperacao()06 EncerramentoOperacaoTransporte encerrarOperacao()07 ConsultarExcecao consultarExcecao()08 ConsultarCIOTGerado consultarCiotGerado() - mTLS com certificado ICP-Brasil A1 (
.pfx/.p12) — ideal para CI/CD. - Validação local das regras de negócio do manual (B1..B122) antes de gastar uma requisição na ANTT — mensagens claras referenciando a regra.
- Value Objects com validação de CPF/CNPJ (dígito verificador), RNTRC (normalização B60) e placa (padrões Brasileiro e Mercosul).
- Geração do
IdOperacaoTransporteplugável (contratoOperationIdGenerator) ou informada manualmente. - Respostas tipadas com
sucesso(),codigo(),mensagem()e helpers por serviço (ex.:ciotComDigito(),avisoTransportador()).
Requisitos
- PHP 8.2+ (testado em 8.4) com extensões
jsoneopenssl - Laravel 11 ou 12
- Certificado digital A1 (ICP-Brasil) da Instituição de Pagamento / Empresa Transportadora, habilitado pela ANTT
Instalação rápida
composer require rumbleh/laravel-ciot-antt php artisan vendor:publish --tag=ciot-config
Build não interativo em CI/CD (com --no-dev) e configuração do certificado:
veja docs/INSTALL.md.
Uso em 30 segundos
use Rumbleh\CiotAntt\Facades\Ciot; use Rumbleh\CiotAntt\Requests\DeclaracaoOperacaoTransporteRequest; use Rumbleh\CiotAntt\Requests\Components\{Veiculo, OrigemDestino, Localidade, DadosCarga, InfPagamento, InfIndicadoresOperacionais}; use Rumbleh\CiotAntt\Enums\{TipoCarga, TipoPagamento}; $declaracao = DeclaracaoOperacaoTransporteRequest::cargaLotacao( cpfCnpjContratado: '11222333000181', rntrcContratado: '123456789', cpfCnpjContratante: '11444777000161', ) ->comId('000000000123') // ou registre um OperationIdGenerator ->comValorFrete(1500.00) ->comDestinatario('19131243000197') ->comViagem(inicio: '2026-06-24', fim: '2026-06-28') ->comVeiculos(Veiculo::automotor(placa: 'ABC1234', numeroEixos: 2, rntrc: '123456789')) ->comOrigemDestino( OrigemDestino::entre( Localidade::origem()->comMunicipio(3550308), Localidade::destino()->comMunicipio(3304557), )->comDistancia(430), ) ->comDadosCarga(new DadosCarga(codigoNaturezaCarga: 1234, pesoCarga: 25000, codigoTipoCarga: TipoCarga::CargaGeral)) ->comPagamentos(new InfPagamento( tipoPagamento: TipoPagamento::ContaCorrente, cpfCnpjCreditado: '11222333000181', codigoInstituicaoFinanceira: 1, numeroAgencia: '1234', numeroConta: '56789-0', )) ->comIndicadores(new InfIndicadoresOperacionais()); $resposta = Ciot::declararOperacao($declaracao); if ($resposta->sucesso()) { $ciot = $resposta->ciotComDigito(); // 16 dígitos (CIOT + DV) } else { report("ANTT [{$resposta->codigo()}]: {$resposta->mensagem()}"); }
Documentação
- 📘
docs/USAGE.md— guia completo com exemplos de todos os serviços, configuração, certificado, tratamento de erros e regras de negócio. - 🔐
docs/INSTALL.md— instalação, build em CI/CD e certificado.
Testes
composer install
composer test
Ambientes ANTT
| Ambiente | URL base |
|---|---|
| Homologação | https://appservices-hml.antt.gov.br/pefServices |
| Produção | https://appservices.antt.gov.br/pefServices |
A ANTT exige aprovação dos testes em homologação antes de liberar a produção. O host/contexto exato (segmento
api) deve ser confirmado com a ANTT — é configurável viaCIOT_PATH_PREFIXsem alterar código.
Licença
MIT © Thiago de Queiroz.