Não há uma melhor transportadora para o Odoo: há um trio, transportadora × volume × via de integração, e é na terceira que mais se falha. Com um serviço, poucos volumes por encomenda e sem reembolso, basta um módulo OCA bem implementado. Se vive da recolha ou do ponto de recolha, precisa de um módulo próprio que cubra essas chamadas. E com várias transportadoras por país, ou se a etiqueta for necessária a outros sistemas, a integração passa para um middleware de envios e o Odoo só envia a encomenda.
Tudo resulta de ler código a 12 de setembro de 2026: em OCA/l10n-spain, delivery_seur_atlas, delivery_mrw e delivery_dhl_parcel (19.0) e delivery_gls_asm (18.0); em OCA/delivery-carrier, delivery_correos_express (19.0), delivery_ups_oca e delivery_cttexpress (18.0); e os nossos conectores de Correos Express e MRW.
O que cada transportadora cobre no Odoo, lido no código
Salvo onde diga «próprio», a célula descreve o módulo OCA; «Não» significa que nenhum o faz. O ramo é o que existe hoje no GitHub, não o que uma ficha promete.
| Transportadora | Etiqueta | Recolha | Seguimento | Manifesto | Ponto de recolha | Alfândegas | Devolução |
|---|---|---|---|---|---|---|---|
| SEUR OCA 19.0 | PDF, ZPL, A4 | Não | Cron diário | Não | Não | Não | Não |
| MRW OCA 19.0 + próprio | OCA PDF · próprio ZPL | Próprio: data no pedido | OCA diário · próprio consulta | OCA: assistente | OCA: entrega em franquia | Não | OCA: campo devolução |
| Correos Express OCA 19.0 + próprio | OCA PDF, ZPL · próprio EPL | Próprio: criar, alterar, anular | OCA diário · próprio 30 min | Não | Próprio: código postal e raio | Não | Não |
| DHL Parcel OCA 19.0 | PDF, ZPL, EPL | Não | Cron diário | Fecho do dia (assistente) | Não | Campos vazios | Produto R2C |
| GLS OCA até 18.0 | Só PDF | Registo, anulação, estados | Cron diário + prova de entrega | Assistente | Não | Não | Marca «com devolução» |
| UPS OCA até 18.0 | PDF, GIF, ZPL, EPL, SPL | Não | Cron diário | Não | Não | Não | Não |
| CTT Express OCA até 18.0 | PDF, PNG, BMP | Assistente | Cron diário | Assistente | Não | Não | Não |
Destas sete, no Odoo 19 só têm módulo OCA a SEUR, a MRW, a Correos Express e a DHL Parcel. A GLS, a UPS e a CTT ficam na 18.0: migrar para a 19 com uma delas é migrar o módulo, que é trabalho de implementação OCA, ou mudar de via.
Três coisas que a tabela não diz. Nenhum dos sete OCA cota o preço, exceto o da UPS: o da SEUR levanta um NotImplementedError e os outros cinco devolvem o preço de venda do produto de envio, pelo que o custo do transporte se define no Odoo. O seguimento é atualizado em todos pelo mesmo cron, o de delivery_state, com intervalo de um dia. E nenhum, OCA ou próprio, envia posição pautal nem valor declarado.
MRW ou SEUR no Odoo: onde diferem de facto para B2C nacional
Na etiqueta fazem o mesmo: valida-se a guia, cria-se a expedição, a etiqueta fica anexada e o seguimento é escrito no picking. Diferem em três funções que não aparecem numa demonstração. Recolha programada: no OCA da SEUR não existe. O nosso conector MRW envia a data de recolha dentro do pedido, calculada a partir da data prevista da guia, passada para o dia seguinte depois das 17:00 e saltando fins de semana. O OCA da MRW envia o nó de recolha vazio e rejeita «com recolha em franquia», embora admita a entrega em franquia.
Multivolume: o OCA da SEUR reparte o peso em partes iguais pelos volumes e envia medidas 1×1×1; guarda um só número de expedição. O nosso conector MRW constrói uma linha por volume com o seu peso e valida os dados antes de chamar. Reembolso: a SEUR não o envia em nenhum campo; o OCA da MRW envia, com comissão na origem ou no destino e o montante tirado do total da encomenda. Vender contra reembolso é desenvolvimento na SEUR e configuração na MRW. Detalhe em ligar a SEUR ao Odoo e em conector MRW Odoo.
GLS ou DHL no Odoo: encomendas europeias face a envio internacional
O critério não é a etiqueta, é a fronteira. A GLS Espanha é de rede de encomendas: volumes pequenos, agências, volume. A DHL no Odoo são dois produtos com duas APIs: o módulo OCA é só da DHL Parcel e a sua própria descrição avisa de que não serve para a DHL Express, que é justamente a que o Odoo 19 documenta como conector nativo, juntamente com a UPS. Veja primeiro que produto DHL tem contratado.
Alfândegas: nem a GLS nem a DHL Parcel as fazem. O da DHL traz os campos da API, CustomsValue, CustomsCurrency e GoodsDescription, e os três seguem vazios; o incoterm só admite CPT ou EXW. O da GLS envia o valor declarado vazio e o país do remetente fixo em 34, Espanha. Se exporta para fora da União, incluindo as Canárias, Ceuta e Melilla, escolha a via que lhe deixe preencher esses dados. Detalhe em DHL e GLS no Odoo.
GLS no Odoo: o que cobre o módulo OCA e quando basta
delivery_gls_asm é o mais completo dos três que não chegam ao Odoo 19. Lido na 18.0.1.1.3: etiqueta só em PDF, com o formato fixo na chamada EtiquetaEnvio; recolhas com registo, anulação e estados próprios; prova de entrega anexada à guia; cancelamento só se a expedição ainda estiver registada na transportadora; reembolso a partir do total da encomenda; marca «com devolução»; e assistente de manifesto. Basta se envia a partir de Espanha, na 17 ou 18, com impressora que aceite PDF. Ficha em GLS OCA.
UPS no Odoo: conta, chaves de API e onde falha o OCA
delivery_ups_oca é o único dos sete que cota de verdade: chama /api/rating/v1/Rate e devolve o preço segundo o peso e as dimensões, com tarifas negociadas se se marcar a caixa. Pede client id, client secret e número de expedidor, e renova o token OAuth sozinho. As unidades vêm por defeito em polegadas e libras (IN e LBS): se não as alterar, a tarifa sai com o peso errado. Etiqueta GIF por defeito, convertida em PDF se o escolher; também ZPL, EPL e SPL.
Onde falha para o internacional, que é para o que se contrata a UPS: não há qualquer referência a InternationalForms, fatura comercial nem alfândegas, pelo que a documentação aduaneira se faz fora do Odoo. Também não há recolhas, devolução nem ponto de recolha; reembolso sim. E não há ramo 19.0. Ficha em UPS OCA.
CTT Express no Odoo: o que pede a integração e como volta o seguimento
delivery_cttexpress serve, segundo a sua própria descrição, para Espanha e Portugal. Fala SOAP com zeep contra iberws.tourlineexpress.com, porta 8686 em testes e 8700 em produção, e pede utilizador, palavra-passe e códigos de cliente, agência e contrato. Etiqueta em PDF, PNG ou BMP, com modelo SINGLE ou MULTI; recolha com intervalo horário e manifesto, ambos por assistente; seguimento por GetTracking com o cron diário. Não faz devolução, reembolso, ponto de recolha nem alfândegas, e não tem ramo 19.0. Ficha em CTT Express OCA.
Critério de decisão por volume: quando OCA, quando módulo próprio, quando middleware
Não decidimos pelo tamanho da empresa, mas por onde está o trabalho repetido. Três perguntas, por esta ordem.
- Uma transportadora, um serviço, um volume habitual e sem reembolso? Módulo OCA: é livre, o código lê-se e etiqueta e seguimento estão lá. Oriente a implementação: mapeamento de estados, reduzir o cron e verificar que o ramo da sua versão existe.
- Vive de uma função que na tabela diz «Não»? Recolha programada, ponto de recolha, novas tentativas quando a API cai, validação prévia de credenciais. Isso é módulo próprio: o nosso de Correos Express volta a tentar os pendentes de cinco em cinco minutos e sincroniza o seguimento de trinta em trinta; o da MRW bloqueia a validação ou só avisa, consoante a configuração.
- Várias transportadoras por país, ou a etiqueta também é necessária à loja? Middleware de envios: o Odoo envia encomenda e guia, a plataforma escolhe a transportadora e devolve etiqueta e estado. Paga-se por envio e perde-se detalhe, mas muda-se de transportadora sem mexer no Odoo.
O limiar: enquanto ninguém retranscrever moradas no portal, não compensa integrar; assim que alguém o faz, compensa o OCA; quando o armazém tira etiquetas por duas vias, é altura de módulo próprio ou middleware. Mais em módulo nativo face a OCA e em automatizar etiquetas e tracking.
Os três erros ao escolher transportadora para o Odoo
- Escolher pelo preço do transporte e descobrir a via depois. O preço do transporte é negociado pelo comercial; a via sofre-a o armazém. Uma transportadora sem recolha no Odoo custa uma pessoa a ligar à agência todas as tardes.
- Acreditar na ficha do módulo em vez do ramo. Peça o URL do manifesto no ramo da sua versão e veja se devolve 200.
- Testar com um volume para Madrid. É o único caso que todas resolvem bem. Teste três volumes de pesos diferentes, um reembolso e um envio para as Canárias.

Perguntas frequentes
É possível ligar a UPS ao Odoo?
Sim. O Odoo lista a UPS entre os seus conectores nativos na documentação da versão 19, e em OCA/delivery-carrier existe delivery_ups_oca para a 17 e 18, sem ramo 19: cota em tempo real e etiqueta, mas não gera documentação aduaneira nem recolhas.
A CTT tem módulo Odoo?
Sim, delivery_cttexpress em OCA/delivery-carrier, com ramos 17.0 e 18.0: Espanha e Portugal, etiqueta, recolha e manifesto por assistente e seguimento por cron. Não há ramo 19.0.
Que transportadora tem a melhor integração com o Odoo?
No Odoo 19, a Correos Express: entre módulo OCA e conector próprio cobrem etiqueta, recolha, ponto de recolha e seguimento. A mais completa sem comprar nada é a GLS, mas fica no Odoo 18. A única que tarifa é a UPS.
Módulo OCA ou módulo próprio para transportadoras no Odoo?
Etiqueta e seguimento: OCA. Recolha programada, ponto de recolha, novas tentativas e validação prévia: próprio. Várias transportadoras por país ou etiqueta partilhada com outros sistemas: middleware.
Ligações úteis dentro da FlexigoTech
O que fazemos sobre isto
Tem de escolher transportadora e não sabe por que via?
Diga-nos o que envia, quantos volumes por encomenda, para que países e que versão do Odoo tem. Devolvemos-lhe a linha da tabela que lhe corresponde e o que se resolve com configuração, o que com módulo e o que com middleware. Escreva para comercial@flexigobe.com ou ligue para +34 616 809 504.

