Introdução API

    API Endpoint

    https://admin.fretebarato.com/{{plataforma}}/{{method}}/json/v1
            

Bem-vindo à documentação da API da Frete Barato.

A API do Frete Barato é utilizada por diversas plataformas de e-commerce. Com esta API viabilizamos a integração junto à Plataformas, Marketplaces, ERPs, Hubs, Transportadoras e empresas do ramo de transportes.

A integração com o Frete Barato é gratuita, não cobramos taxas ou mensalidades pela utilização da nossa API. Agimos dessa forma justamente para facilitar a vida de nossos usuários ao integrarem com nossos serviços, junto aos fluxos de seus sistemas.

Caso você seja um cliente Frete Barato e queira apenas utilizar os nossos serviços dentro do seu e-commerce, verifique primeiro se sua plataforma já possui integração com nosso sistema. Se ainda não possuir, entre em contato conosco para que possamos analisar a viabilidade de uma parceria para integração.

Autenticação API

                
    # Exemplo Curl
    curl 
    -X GET https://admin.fretebarato.com/{{plataforma}}/{{method}}/v1/json 
    -H "Authorization: Bearer xxxxxxxxxxxx" 
    curl \
                
                
    $url = "https://admin.fretebarato.com/{{plataforma}}/{{method}}/v1/json";

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    $headers = array(
    "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxx",
    );
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
                
            

O processo de autenticação é bastante simples

O cliente necessitará apenas de sua URL de autenticação fornecida pela equipe comercial da Frete Barato, contendo o “Customer Token” (token do cliente), como o exemplo abaixo:

https://admin.fretebarato.com/{{plataforma}}/{{method}}/v1/json/{customer_id}

É de suma importância que o campo de callback seja idêntico a URL de callback de retorno da sua aplicação. Caso este campo esteja diferente, nossa API irá retornar Client invalid impedindo a autorização do aplicativo.

Também disponibilizamos um fluxograma que poderá lhe auxiliar a visualizar este processo, assim como servir de base para que você adapte da melhor maneira ao fluxo de seu sistema.

Key Value
Authorization Bearer {{token}}
User-Agent Aplicação (email para contato técnico)

Cotações

                
    # Exemplo Curl
    curl 
    -X GET https://admin.fretebarato.com/lojaintegrada/price/v1/json/{{customer_id}}
    -H "Authorization: Bearer xxxxxxxxxxxx" 
    curl \

    curl 
    -X POST https://admin.fretebarato.com/lojaintegrada/price/v1/json/{{customer_id}} 
    -H "Authorization: Bearer xxxxxxxxxxxx" 
    -H "Content-Type: application/json" 
    -d "{"zipcode":"06652030",
         "amount":125.82,
         "skus":[
                 {"id":149353786,
                  "product_id":21888010,
                  "sku":"OC928237",
                  "price":129.9,
                  "quantity":1,
                  "length":1,
                  "width":1,
                  "height":1,
                  "weight":0.1}]
        }"
                
    
    # Abaixo um exemplo (Payload):
    {
        "zipcode": "83324130",
        "amount": 543.23,
        "skus": [
            {
            "sku": "77214501",
            "price": 21.0382,
            "quantity": 10,
            "length": 8,
            "width": 3,
            "height": 2,
            "weight": 0.035
            },
            {
            "sku": "77214601",
            "price": 24.9374,
            "quantity": 10,
            "length": 9,
            "width": 6,
            "height": 3,
            "weight": 0.055
            }]
    }
                

                
    # Abaixo um exemplo (Response):
    {"quotes": [
        {"name": "Smart2C",
            "service": "Smart2C",
            "price": 42.02,
            "days": 6,
            "quote_id": 5,
            "time_payload": "17.84"
            }, {
            "name": "GFL",
            "service": "GFL",
            "price": 21.16,
            "days": 2,
            "quote_id": 3,
            "time_payload": "17.84"
            }
        ]
    }
                
            

Os fretes podem ser calculados informando uma lista de produtos e seus respectivos parâmetros, fazendo com que sejam montados pacotes de acordo com os limites de cada serviços das transportadoras.

Os dados dos produtos devem conter suas informações unitárias, sendo que as dimensões devem ser enviadas em centímetros (cm) e o peso em quilogramas (kg).

Para solicitar cotação é necessário fazer a chamada do endpoint Authorize e customer_ID (que identifica o cliente solicitante e seu respectivo CEP de origem)

Payload:

Parâmetros

Parâmetro Tipo Obrigatório Observação
zipcode Numérico Sim Deve conter exatamente 8 caracteres numéricos
amount Numérico Sim Pode conter até 2 casas decimais
skus Array Sim quantity, lenght, width, height, weight

Detalhe SKUS (Array)

Parâmetro Tipo Obrigatório Observação
sku String Sim
quantity Numérico Sim Pode conter apenas números naturais
lenght Numérico Sim Pode conter apenas números naturais
width Numérico Sim Pode conter apenas números naturais
height Numérico Sim Pode conter apenas números naturais
weight Numérico Sim Pode conter até 3 casas decimais

Response:

Parâmetros

Parâmetro Tipo Comportamento
name Alfanumérico Retorna o nome da transportadora.
service Alfanumérico Retorna o nome do serviço cadastrado para o cliente solicitante, dentro da transportadora (o cliente pode ter mais de um serviço cadastrado para a mesma transportadora).
price Alfanumérico Retorna o preço do serviço com até duas casas decimais.
days Numérico Retorna o prazo do frete em dias (apenas números naturais)..
quote_id Numérico xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
time_payload Numérico Retorna o tempo de carregamento dos parâmetros na API. Campo numérico com até duas casas decimais..

Tabela de Erros:

Response Tipo Mensagem
400 bad request
401 unauthorized
403 forbidden
404
405 method not allowed
406 not acceptable

Ocorrências

    Tracking

    https://admin.fretebarato.com/{{plataforma}}/tracking/v1/json/{{customer_id}}

    
    # Abaixo um exemplo (Response):
    {
    "invoice": {
        "nota_fiscal_id": "99999999999999999999999999999999999999999999",
        "texto": "SOLICITACAO EM ROTA",
        "dataOcorrencia": "2024-02-28T07:12:00",
        "ocorrenciaCodigo": "02",
        "dataOcorrenciaPrev": "2024-02-29T00:00:00",
        "dataOcorrenciaEntrega": "2024-02-28T07:12:00",
        "trackCode": "ONT000000000",
        "timeline": [
        {
            "texto": "TRANSFERENCIA DE VOLUMES PARA ENTREGA",
            "data": "2024-02-27T21:37:00",
            "ocorrenciaCodigo": "32"
        }, 
        {
            "texto": "RECEBIMENTO DE TRANSFERENCIA ENTRE UNIDADES",
            "data": "2024-02-28T04:50:00",
            "ocorrenciaCodigo": "17"
        }, 
        {
            "texto": "SOLICITACAO EM ROTA",
            "data": "2024-02-28T07:12:00",
            "ocorrenciaCodigo": "02"
        }],
        "fiscal": {
            "nota_fiscal_id": "99999999999999999999999999999999999999999999",
            "numero": "30822",
            "pedido": "54874",
            "serie": "1",
            "data": "2024-02-26T17:07:27"
        },
        "transporte": {
            "cnpj": "23820639001352"
        },
        "destino": {
            "nome": "Bruno",
            "cpfcnpj": "00000000000",
            "email": "contato@fretebarato.com",
            "address": {
                "cep": "04202010",
                "uf": "sp",
                "cidade": "Sao Paulo"
            }
        },
        "emitente": {
            "cnpj": "31913883000154",
            "razao_social": "Frete Barato",
            "nome_fantasia": "Frete Barato"
        }
    }
}
                
    
            

Payload:

Header

Key Value
Authorization Bearer {{token}}
User-Agent Aplicação (email para contato técnico)

Payload (Número do pedido)

Parâmetro Tipo Obrigatório Observação
cnpj Numérico Sim Deve conter exatamente 14 caracteres numéricos
numero_pedido Numérico Sim

Payload (Número Nota Fiscal)

Parâmetro Tipo Obrigatório Observação
cnpj Numérico Sim Deve conter exatamente 14 caracteres numéricos
numero_nota_fiscal Numérico Sim

Payload (Chave Nota Fiscal)

Parâmetro Tipo Obrigatório Observação
nota_fiscal_id (Chave) Numérico Sim Deve conter exatamente 44 caracteres numéricos
cnpj Numérico Não Deve conter exatamente 14 caracteres numéricos

Nota Fiscal (Invoice)

    API Endpoint

    https://admin.fretebarato.com/invoice/push/v1/base64/{{customer_token}}
            

O endpoint de Invoice foi desenvolvido para receber e processar Notas Fiscais Eletrônicas (NF-e) em formato Base64.

Esta API permite que sistemas externos enviem documentos fiscais XML codificados em Base64, garantindo integridade, segurança e rastreabilidade no processo de recebimento.

O sistema realiza validações rigorosas em todas as etapas do processo, desde a estrutura do payload até a validação do conteúdo do documento decodificado.

Envio de Nota Fiscal (Push)

                
    # Exemplo Curl
    curl -X POST https://admin.fretebarato.com/invoice/push/v1/base64/{{customer_token}} \
    -H "Authorization: Bearer xxxxxxxxxxxx" \
    -H "Content-Type: application/json" \
    -d '{
        "request_id": "01HZQK3F2N8PYVJ9KQ6R4WXM5T",
        "created_at": "2025-10-29T15:12:34Z",
        "document_meta": {
            "type": "nf-e",
            "model": "55",
            "nota_fiscal_id": "35150000000000000000000000000000000061234567"
        },
        "document_encoding": {
            "format": "base64",
            "mimetype": "application/xml"
        },
        "document_payload": {
            "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4..."
        }
    }'
                

                
    # Exemplo PHP
    $url = "https://admin.fretebarato.com/invoice/push/v1/base64/{{customer_token}}";

    $payload = array(
        "request_id" => "01HZQK3F2N8PYVJ9KQ6R4WXM5T",
        "created_at" => "2025-10-29T15:12:34Z",
        "document_meta" => array(
            "type" => "nf-e",
            "model" => "55",
            "nota_fiscal_id" => "35150000000000000000000000000000000061234567"
        ),
        "document_encoding" => array(
            "format" => "base64",
            "mimetype" => "application/xml"
        ),
        "document_payload" => array(
            "data" => base64_encode($xmlContent)
        )
    );

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    $headers = array(
        "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxx",
        "Content-Type: application/json"
    );
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($payload));

    $response = curl_exec($curl);
    curl_close($curl);
                
            

Request Payload:

                
    # Estrutura Completa do Payload:
    {
        "request_id": "01HZQK3F2N8PYVJ9KQ6R4WXM5T",
        "created_at": "2025-10-29T15:12:34Z",
        "document_meta": {
            "type": "nf-e",
            "model": "55",
            "nota_fiscal_id": "35150000000000000000000000000000000061234567"
        },
        "document_encoding": {
            "format": "base64",
            "mimetype": "application/xml"
        },
        "document_payload": {
            "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4..."
        }
    }
                
            

Response de Sucesso:

                
    # Response HTTP 200:
    {
        "success": true,
        "message": "Invoice received successfully (Base64 format)",
        "data": {
            "request_id": "01HZQK3F2N8PYVJ9KQ6R4WXM5T",
            "document_meta": {
                "type": "nf-e",
                "model": "55",
                "nota_fiscal_id": "35150000000000000000000000000000000061234567"
            },
            "document_encoding": {
                "format": "base64",
                "mimetype": "application/xml"
            },
            "document_size": 15420,
            "customer_code": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4",
            "received_at": "2025-10-29 15:12:35",
            "processed_at": "2025-10-29 15:12:35"
        }
    }
                
            

Header de Autenticação:

Key Value Observação
Authorization Bearer {{token}} Token de autenticação fornecido pela equipe Frete Barato
Content-Type application/json Obrigatório para envio de payload JSON
User-Agent Aplicação (email para contato técnico) Opcional, mas recomendado para identificação

Parâmetros do Payload:

Campos de Primeiro Nível

Parâmetro Tipo Obrigatório Observação
request_id String Sim Identificador único da requisição (UUID ou ULID). Deve ter entre 20 e 36 caracteres
created_at String Sim Data/hora de criação no formato ISO 8601 (ex: 2025-10-29T15:12:34Z)
document_meta Object Sim Objeto contendo metadados do documento fiscal
document_encoding Object Sim Objeto contendo informações de codificação do documento
document_payload Object Sim Objeto contendo o documento codificado em Base64

Campos do Objeto "document_meta"

Parâmetro Tipo Obrigatório Observação
type String Sim Tipo do documento fiscal. Valores aceitos: "nf-e" (Nota Fiscal Eletrônica)
model String Sim Modelo do documento fiscal (ex: "55" para NF-e)
nota_fiscal_id String Sim Chave de acesso da NF-e. Deve conter exatamente 44 caracteres numéricos

Campos do Objeto "document_encoding"

Parâmetro Tipo Obrigatório Observação
format String Sim Formato de codificação. Atualmente aceito apenas: "base64"
mimetype String Sim Tipo MIME do documento original. Valores aceitos: "application/xml", "text/xml"

Campos do Objeto "document_payload"

Parâmetro Tipo Obrigatório Observação
data String Sim Documento fiscal codificado em Base64. Após decodificação, deve ter no mínimo 100 bytes

Parâmetros do Response:

Parâmetro Tipo Comportamento
success Boolean Indica se a requisição foi processada com sucesso (true/false)
message String Mensagem descritiva sobre o resultado do processamento
data Object Objeto contendo detalhes do documento processado (presente apenas em caso de sucesso)
data.request_id String Retorna o identificador único da requisição enviada
data.document_meta Object Retorna os metadados do documento processado
data.document_encoding Object Retorna as informações de codificação do documento
data.document_size Numeric Retorna o tamanho do documento decodificado em bytes
data.customer_code String Retorna o código identificador do cliente solicitante
data.received_at String Data/hora de recebimento do documento no formato Y-m-d H:i:s
data.processed_at String Data/hora de processamento do documento no formato Y-m-d H:i:s

Validações Realizadas:

A API realiza validações rigorosas em múltiplas camadas:

Tipo de Validação Descrição Erro Retornado
Autenticação Valida Bearer Token no header Authorization 401 - Authentication failure
Dispatcher Valida versão da API (v1) e formato (base64) 401 - Authentication failure / Only base64 format is supported
Token Cliente Valida se o token do cliente possui 32 caracteres 401 - Authentication failure
Cliente Existente Verifica se o cliente existe na base de dados 404 - Customer not found
Estrutura JSON Valida se todos os campos obrigatórios estão presentes 400 - Field [campo] is required
Request ID Valida se é um UUID/ULID válido (20-36 caracteres) 400 - Field [request_id] must be a valid UUID or ULID
Data ISO 8601 Valida formato de data created_at 400 - Field [created_at] must be a valid ISO 8601 datetime
Tipo Documento Valida se o tipo é "nf-e" 400 - Field [document_meta.type] must be one of: nf-e
Formato Encoding Valida se o formato é "base64" 400 - Field [document_encoding.format] must be "base64"
Mimetype Valida se é application/xml ou text/xml 400 - Field [document_encoding.mimetype] must be one of: ...
Chave NF-e Valida se possui exatamente 44 caracteres numéricos 400 - Field [document_meta.nota_fiscal_id] must be exactly 44 characters
Base64 Válido Valida se o Base64 pode ser decodificado 400 - Invalid base64 document format
Documento Vazio Valida se documento decodificado não está vazio 400 - Decoded document is empty
Tamanho Mínimo Valida se documento decodificado possui mínimo 100 bytes 400 - Decoded document is too small (minimum 100 bytes)
Conteúdo vs Mimetype Valida se conteúdo corresponde ao mimetype declarado 400 - Document content does not match declared mimetype

Tabela de Códigos de Resposta:

Response Tipo Mensagem Descrição
200 success Invoice received successfully (Base64 format) Nota fiscal recebida e processada com sucesso
400 bad request Field [campo] is required / Invalid params Parâmetros ausentes, inválidos ou fora do padrão esperado
401 unauthorized Authentication failure Falha na autenticação: token inválido ou versão incorreta da API
403 forbidden Access denied Acesso negado ao recurso solicitado
404 not found Customer not found Cliente não encontrado na base de dados
406 not acceptable Invalid Params (JSON) Estrutura JSON inválida ou malformada
500 internal server error Internal error Erro interno do servidor durante o processamento

Exemplos de Erros:

                
    # Erro 400 - Campo obrigatório ausente:
    {
        "message": "Field [request_id] is required",
        "code": 400
    }

    # Erro 400 - Chave NF-e inválida:
    {
        "message": "Field [document_meta.nota_fiscal_id] must be exactly 44 characters",
        "code": 400
    }

    # Erro 401 - Falha na autenticação:
    {
        "message": "Authentication failure",
        "code": 401
    }

    # Erro 404 - Cliente não encontrado:
    {
        "message": "Customer not found",
        "code": 404
    }

    # Erro 400 - Base64 inválido:
    {
        "message": "Invalid base64 document format in [document_payload.data]",
        "code": 400
    }

    # Erro 400 - Conteúdo não corresponde ao mimetype:
    {
        "message": "Document content does not match declared mimetype (XML expected)",
        "code": 400
    }
                
            

Boas Práticas:

  • Request ID Único: Sempre gere um identificador único (UUID v4 ou ULID) para cada requisição. Isso facilita rastreamento e debug.
  • Timestamp Preciso: Utilize formato ISO 8601 com timezone (ex: 2025-10-29T15:12:34Z) para garantir precisão temporal.
  • Validação Prévia: Valide a estrutura do XML antes de codificar em Base64 para evitar erros desnecessários.
  • Chave de Acesso: Certifique-se de que a chave de 44 caracteres corresponde exatamente à chave presente no XML da NF-e.
  • Mimetype Correto: Declare o mimetype correto (application/xml ou text/xml).
  • Tratamento de Erros: Implemente retry logic para erros temporários (500) e tratamento adequado para erros de validação (400).
  • Logs e Auditoria: Mantenha logs detalhados das requisições usando o request_id como chave de rastreamento.
  • Segurança: Nunca exponha o Bearer Token em logs ou sistemas de monitoramento.

Fluxo de Processamento:

O sistema segue um fluxo estruturado de processamento:

  1. Recepção: API recebe o payload JSON com documento em Base64
  2. Autenticação: Valida Bearer Token e credenciais do cliente
  3. Validação Estrutural: Verifica todos os campos obrigatórios e seus formatos
  4. Decodificação: Decodifica o documento Base64 para formato original
  5. Validação de Conteúdo: Verifica se o conteúdo corresponde ao mimetype declarado
  6. Processamento: Executa regras de negócio e persistência dos dados
  7. Resposta: Retorna JSON com resultado do processamento

Endpoint de Informações da API:

                
    # Consultar informações sobre a API Invoice
    curl -X GET https://admin.fretebarato.com/invoice/ \
    -H "Authorization: Bearer xxxxxxxxxxxx"
                
            

Este endpoint retorna informações detalhadas sobre a API, incluindo versão, endpoints disponíveis, estrutura de payload e códigos de resposta.