Cotações de Frete v3
POST https://sp.freterapido.com/api/v3/quote/simulate
Método que permite realizar cotações de frete com o motor de cotação v3.
Através dele é possível realizar cotações de múltiplas origens, informando os vários expedidores de uma única vez.
Basta enviar os dados abaixo em uma requisição para a URL do método.
Envio:
Parâmetros do corpo da requisição:
Descrição | Formato / Exemplo | Obrigatório | |
---|---|---|---|
shipper | Objeto com dados da conta do remetente | Objeto em json | * |
registered_number | CNPJ da conta registrada na Frete Rápido | String Numérica de 14 caracteres sem formatação | * |
token | Token de integração | String de 32 caracteres | * |
platform_code | Código da plataforma integrada. Solicite o código da sua plataforma à Frete Rápido. | String | * |
recipient | Objeto com alguns dados do destinatário | Objeto em json | * |
type | Tipo de destinatário | Numérico (inteiro) 0 = Pessoa Física 1 = Pessoa Jurídica |
* |
registered_number | Registro federal do destinatário (CPF ou CNPJ) | String Numérica de 11 ou 14 caracteres sem formatação | Opcional |
state_inscription | Registro estadual do destinatário (Inscrição Estadual) | String | Opcional |
country | Para operações no Brasil, informar apenas BRA | String | * |
zipcode | CEP do destinatário | Inteiro | * |
dispatchers | Array de Objetos dos pontos de expedição | Array de Objeto em json | * |
registered_number | CNPJ do expedidor, caso não tenha expedidor informar o mesmo CNPJ utilizado em shipper | String Numérica de 14 caracteres sem formatação | * |
zipcode | CEP de origem do expedidor ¹ | Inteiro | * |
total_price | Preço total do pedido. Se informado, substituirá proporcionalmente o valor informado nos volumes. ² | Float | Opcional |
volumes | Dados dos volumes do ponto de expedição | Array de Objetos | * |
amount | Quantidade do mesmo volume/item | Inteiro | * |
category | Tipo do volume/Categoria do produto (vide tabela de tipos de volumes) | String | * |
sku | SKU do volume/produto informado | String | Opcional |
tag | Tag do volume/produto informado | String | Opcional |
description | Descrição do produto/item | String | Opcional |
height | Altura em Metros do volume/produto unitário | Float | * |
width | Largura em Metros do volume/produto unitário | Float | * |
length | Comprimento em Metros do volume/produto unitário | Float | * |
unitary_price | Valor unitário do volume/item informado | Float | * |
unitary_weight | Peso unitário (em Kg) do volume/item | Float | * |
consolidate | Consolidar volume? Default: false | Booleano | Opcional |
overlaid | Sobrepor volume sobre outro? Default: false | Booleano | Opcional |
rotate | Rotacionar/Tombar volume? Default: false | Booleano | Opcional |
amount_volumes | Quantidade de volumes do produto ao qual este volume pertence. Ex.: Este volume pertence a um jogo de cama que é composto por quatro volumes no mesmo SKU, então o campo deve ser preenchido com 4. Usaremos esta informação para agrupar os volumes de um mesmo produto. |
Inteiro | Opcional |
channel | Canal de venda | String | Opcional |
filter | Filtro de resultados | Inteiro 1 = Retornar somente a oferta com menor preço 2 = Retornar somente a oferta com menor prazo de entrega3 = Retornar somente a oferta com menor preço e a de menor prazo (caso uma oferta possua menor preço e prazo, apenas ela retornará) |
Opcional |
limit | Limite de resultados | Inteiro | Opcional |
identification | Identificador externo da cotação na plataforma | String | Opcional |
reverse | Calcular frete reverso | Booleano | Opcional |
simulation_type | Array de tipo da simulação/cotação desejada. É opcional o tipo que desejar. Se informado vários tipos ao mesmo tempo, poderá impactar na performance de resposta das cotações. |
Inteiro 0 = Fracionada 1 = Lotação |
* |
returns | Retornos que desejar obter | Objeto em json | Opcional |
composition | Retornar a composição de cálculo do frete | Booleano | Opcional |
volumes | Retornar os volumes utilizados na cotação (consolidados ou não) | Booleano | Opcional |
applied_rules | Retornar regras de fretes aplicads | Booleano | Opcional |
*Obrigatório
¹ Expedidor é utilizado quando a transportadora deve coletar a mercadoria em outro local diferente do local do remetente, muito utilizado por empresas onde o remetente é de outro estado, mas a mercadoria deve ser coletada no estado onde se encontra a transportadora. Exemplo: Uma empresa remetente de RS, transportadora de SP, mercadoria deve ser coletada na filial da empresa que está em SP para ser entregue em BA. Nesse caso, o expedidor deve ser a filial de SP para que o conhecimento de transporte saia com origem SP, destino BA, ao invés de RS como origem.
² Utilize o total_price com cuidado e somente caso a sua integração não consiga informar o preço unitário dos volumes (unitary_price).
Exemplo de envio:
{
"shipper": {
"registered_number": "",
"token": "",
"platform_code": ""
},
"recipient": {
"type": 0,
"registered_number": "",
"state_inscription": "",
"country": "",
"zipcode": 0
},
"dispatchers": [
{
"registered_number": "",
"zipcode": 0,
"total_price": 0.0,
"volumes": [
{
"amount": 0,
"amount_volumes": 0,
"category": "",
"sku": "",
"tag": "",
"description": "",
"height": 0.0,
"width": 0.0,
"length": 0.0,
"unitary_price": 0.0,
"unitary_weight": 0.0,
"consolidate": false,
"overlaid": false,
"rotate": false
}
]
}
],
"channel": "",
"filter": 0,
"limit": 0,
"identification": "",
"reverse": false,
"simulation_type": [
0
],
"returns": {
"composition": false,
"volumes": false,
"applied_rules": false
}
}
Resposta:
- Se a requisição obtiver sucesso, será retornado o código de resposta HTTP 200 com as ofertas que atendem a rota, para cada Expedidor (dispatcher) informado. Em casos excepcionais pode ser que tenhamos uma resposta HTTP 200 mas sem as ofertas, o que significará que não foram encontradas ofertas para a rota informada.
Descrição | Formato / Exemplo | Retornado | |
---|---|---|---|
dispatchers | Array de Objetos em json | Objeto em json | Sempre |
id | Identificador da cotação/simulação | String | Sempre |
request_id | Identificador da requisição | String | Sempre |
registered_number_shipper | CNPJ da conta do remetente | String numérica com 14 caracteres e sem formatação | Sempre |
registered_number_dispatcher | CNPJ do ponto de expedição | String numérica com 14 caracteres e sem formatação | Sempre |
zipcode_origin | CEP do ponto de expedição (origem) | Inteiro | Sempre |
offers | Ofertas de cotações para o ponto de expedição informado | Array de objetos em json | Sempre que houver ofertas |
offer | Posição da oferta | Inteiro | Sempre |
simulation_type | Tipo da simulação | Inteiro | Sempre |
carrier | Metadados da transportadora | Objeto em json | Sempre |
reference | Identificador único da transportadora | Inteiro | Sempre |
name | Nome | String | Sempre |
registered_number | CNPJ | String | Sempre |
state_inscription | Inscrição Estadual | String | Sempre |
logo | URL do logotipo | String | Sempre |
service | Nome do serviço | String | Sempre |
service_code | Código do serviço | String | Eventualmente |
service_description | Descrição do serviço | String | Eventualmente |
delivery_time | Tempo de entrega é o somatório do (Tempo de entrega original) + o(s) dia(s) que podem ser acrescentados a partir da regra de frete criada. | Objeto em json | Sempre |
days | Tempo de entrega em dias | Inteiro | Eventualmente |
hours | Tempo de entrega em horas | Inteiro | Eventualmente |
minutes | Tempo de entrega em minutos | Inteiro | Eventualmente |
estimated_date | Data prevista de entrega pela transportadora, desconsiderando finais de semana, feriados nacionais do BRA e feriados calculados com a Páscoa.¹ | Date ("YYYY-MM-DD") | Sempre |
original_delivery_time | Tempo de entrega sem a aplicação de regras de frete, fornecido via tabela ou na API da transportadora | Objeto em json | Sempre |
days | Tempo de entrega original em dias | Inteiro | Eventualmente |
hours | Tempo de entrega original em horas | Inteiro | Eventualmente |
minutes | Tempo de entrega original em minutos | Inteiro | Eventualmente |
estimated_date | Data prevista de entrega original pela transportadora, desconsiderando finais de semana, feriados nacionais do BRA e feriados calculados com a Páscoa.¹ | Date ("YYYY-MM-DD") | Sempre |
identifier | Campo para identificação da oferta do lado da transportadora, somente cotações por integração | String | Eventualmente |
delivery_note | Observações referente a entrega | String | Eventualmente |
home_delivery | Informa se a oferta possui entrega domiciliar | Boolean | Eventualmente |
carrier_needs_to_return_to_sender | Informa se a oferta necessita de retorno do entregador ao ponto de coleta para a resolução de alguma pendência (Ex: Devolver a máquina de cartão para cobrança) | Boolean | Eventualmente |
expiration | Prazo de expiração da tabela calculada | DateTime | Sempre |
cost_price | Preço de custo da cotação | Float | Sempre |
final_price | Preço final da cotação (com regra de frete) | Float | Sempre |
weights | Pesos utilizados na cotação | Objeto em json | Sempre |
real | Peso real | Float | Sempre |
cubed | Peso cubado | Float | Eventualmente |
used | Peso usado | Float | Sempre |
composition | Valores da composição do frete | Objeto em json | Sempre que solicitado |
freight_weight | Valor de Frete Peso encontrado | Float | Eventualmente |
freight_weight_excess | Valor de Frete Excedente encontrado | Float | Eventualmente |
freight_weight_volume | Valor de Frete Peso Volume encontrado | Float | Eventualmente |
freight_volume | Valor de Frete por Volume encontrado | Float | Eventualmente |
freight_minimum | Valor de Frete Mínimo encontrado | Float | Eventualmente |
freight_invoice | Valor de Frete por NF encontrado | Float | Eventualmente |
sub_total1 | Subtotal 1 do frete | Objeto em json | Eventualmente |
sub_total2 | Subtotal 2 do frete | Objeto em json | Eventualmente |
sub_total3 | Subtotal 3 do frete | Objeto em json | Eventualmente |
volumes | Volumes/itens do ponto de expedição utilizados na cotação | Array de Objetos | Eventualmente |
amount | Quantidade do mesmo volume/item | Inteiro | Sempre |
category | Tipo do volume/Categoria do produto (vide tabela de tipos de volumes) | String | Sempre |
sku | SKU do volume/produto informado | String | Se informado |
tag | Tag do volume/produto informado | String | Se informado |
description | Descrição do produto/volume informado | String | Se informado |
height | Altura em Metros do volume/produto unitário | Float | Sempre |
width | Largura em Metros do volume/produto unitário | Float | Sempre |
length | Comprimento em Metros do volume/produto unitário | Float | Sempre |
unitary_price | Valor unitário do volume/item informado | Float | Sempre |
unitary_weight | Peso unitário (em Kg) do volume/item | Float | Sempre |
items | Itens consolidados (quando consolidate = true) | Array de Objetos | Eventualmente |
applied_rules | Regras de fretes aplicadas | Array de Strings | Eventualmente |
esg | Objeto contendo os campos de previsão de emissão de CO2 | Objeto em json | Eventualmente, se o Embarcador estiver com o módulo ESG contratado |
co2_emission_estimate | Estimativa da previsão de emissão de CO2 | Double | Eventualmente, se o Embarcador estiver com o módulo ESG contratado |
co2_neutralization_cost | Estimativa do custo para neutralização da previsão de emissão de CO2 | Double | Eventualmente, se o Embarcador estiver com o módulo ESG contratado e possuir uma regra de frete ativa para neutralização da emissão de CO2 |
modal | Modalidade de entrega do frete usada como base de cálculo para previsão de emissão de CO2 (Aéreo ou Rodoviário) | String | Eventualmente, se o Embarcador estiver com o módulo ESG contratado e possuir tabela de frete com as modalidades cadastradas. |
¹ A data estimada de entrega (estimade_date) é uma previsão aproximada da entrega pela transportadora desconsiderando finais de semana ou feriados nacionais. Destacamos que o prazo efetivo para entrega é considerado por cada transportadora a partir da coleta das mercadorias. Para cálculo da data estimada de entrega não são considerados feriados municipais ou religiosos de cada região.
Observação: Após a cotação é possível gerar uma Solicitação de Coleta do frete calculado. Basta utilizar o método de Contratação.
Exemplo de resposta:
{
"dispatchers": [
{
"id": "",
"request_id": "",
"registered_number_shipper": "",
"registered_number_dispatcher": "",
"zipcode_origin": 0,
"offers": [
{
"offer": 0,
"simulation_type": 0,
"carrier": {
"reference": 0,
"name": "",
"registered_number": "",
"state_inscription": "",
"logo": ""
},
"service": "",
"service_code": "",
"service_description": "",
"delivery_time": {
"days": 0,
"hours": 0,
"minutes": 0,
"estimated_date": ""
},
"expiration": "",
"cost_price": 0.0,
"final_price": 0.0,
"weights": {
"real": 0.0,
"cubed": 0.0,
"used": 0.0
},
"composition": {
"freight_weight": 0.0,
"freight_weight_excess": 0.0,
"freight_weight_volume": 0.0,
"freight_volume": 0.0,
"freight_minimum": 0.0,
"freight_invoice": 0.0,
"sub_total1": {
"daily": 0,
"collect": 0,
"dispatch": 0,
"delivery": 0,
"ferry": 0,
"suframa": 0,
"tas": 0,
"sec_cat": 0,
"dat": 0,
"ad_valorem": 0,
"ademe": 0,
"gris": 0,
"emex": 0,
"interior": 0,
"capatazia": 0,
"river": 0,
"river_insurance": 0,
"toll": 0,
"other": 0,
"other_per_product": 0
},
"sub_total2": {
"trt": 0,
"tda": 0,
"tde": 0,
"scheduling": 0
},
"sub_total3": {
"icms": 0
}
},
"original_delivery_time": {
"days": 0,
"hours": 0,
"minutes": 0,
"estimated_date": ""
},
"identifier": "",
"delivery_note": "",
"home_delivery": false,
"carrier_needs_to_return_to_sender": true,
"modal": "",
"esg": {
"co2_emission_estimate": 0,
"co2_neutralization_cost": 0
}
}
],
"volumes": [
{
"category": "",
"sku": "",
"tag": "",
"description": "",
"amount": 0,
"width": 0.0,
"height": 0.0,
"length": 0.0,
"unitary_weight": 0.0,
"unitary_price": 0.0,
"amount_volumes": 0.0,
"consolidate": false,
"overlaid": false,
"rotate": false,
"items": []
}
],
}
]
}
Erros:
- Em caso de erro, será retornado um código de erro, conforme estabelecido na lista de códigos desta API.