Se vende bebidas em lata ou em garrafa de plástico numa loja online em Portugal, cada encomenda com embalagens Volta leva 10 cêntimos de depósito por embalagem desde 10 de abril de 2026. O depósito não paga IVA, tem de aparecer discriminado na fatura e identificado onde a loja mostra o preço, e o cliente recupera-o num ponto de recolha Volta, não na sua loja. A lei não abre exceção para o comércio eletrónico: o artigo 30.º-E do Decreto-Lei n.º 152-D/2017 refere expressamente as vendas por via eletrónica e à distância.
O WooCommerce não tem nenhuma função de depósito de origem. Este guia explica o que o regime português pede a uma loja online, como o depósito entra na fatura certificada, como o configurar como taxa do carrinho que sobrevive a reembolsos e a envios para fora do país, e o que muda quando a encomenda segue para Espanha, onde o sistema ainda não arrancou. Cada afirmação legal remete para o texto consolidado no Diário da República, para as perguntas frequentes da Agência Portuguesa do Ambiente (APA) ou para o Governo, consultados a 31 de outubro de 2026. Onde não consegui confirmar algo numa fonte oficial, digo-o.
O que diz a lei sobre o depósito Volta numa loja online?
A base legal é o Decreto-Lei n.º 152-D/2017, de 11 de dezembro, conhecido como UNILEX, no texto consolidado do Diário da República. Os artigos 30.º-B e seguintes, que criam o sistema de depósito e reembolso (SDR), foram aditados pelo Decreto-Lei n.º 24/2024 e alterados pelo Decreto-Lei n.º 34/2024.
O artigo 30.º-B define o âmbito: embalagens primárias não reutilizáveis de bebidas em plástico, metais ferrosos e alumínio, com volumetria inferior a 3 litros, colocadas no mercado devidamente marcadas. As categorias de bebidas são seis:
- águas minerais e de nascente e outras águas embaladas,
- sumos e néctares, e mixes de frutas e vegetais,
- concentrados para diluição,
- refrigerantes, incluindo bebidas à base de chá, café e tisanas,
- bebidas energéticas e isotónicas,
- cerveja, sidra, sangria e mixes alcoólicos.
As perguntas frequentes da APA, versão 2.6 de junho de 2026, acrescentam os dados operacionais. A SDR Portugal, Associação de Embaladores, está licenciada desde 1 de junho de 2024 e é, até agora, a única entidade gestora. O sistema entrou em funcionamento a 10 de abril de 2026 em todo o território nacional, e o período de transição terminou a 9 de agosto de 2026. A transição teve três prazos: 60 dias para os produtores e embaladores colocarem no mercado embalagens sem marcação, 90 dias para distribuidores e grossistas, 120 dias para o retalho e o setor HORECA. A nota do Governo de 13 de abril de 2026 confirma o arranque e os 10 cêntimos por unidade.
Há duas mudanças de agosto que afetam o catálogo de qualquer loja. A APA explica (perguntas A6 a A8 e A16) que o artigo 50.º do Regulamento (UE) 2025/40 se aplica desde 12 de agosto de 2026. A partir dessa data ficam fora do SDR os vinhos e produtos vitivinícolas aromatizados, outras bebidas fermentadas do código NC 2206 00, as bebidas espirituosas da posição NC 2208 e o leite e produtos lácteos. Em sentido inverso, as bebidas de base vegetal, como as de soja, aveia ou amêndoa, passam a estar abrangidas. Se a sua loja vende bebidas vegetais em garrafa de plástico, verifique se as embalagens já trazem o símbolo Volta.
Um pormenor de redação: o artigo 30.º-B diz “volumetria inferior a 3 litros”, enquanto a pergunta B4 da APA fala de embalagens “igual ou inferior a 3 litros”. Para uma garrafa de exatamente 3 litros, a regra prática é o símbolo Volta no rótulo, que a APA indica como a marca de elegibilidade (pergunta B3). Se o produto tem o símbolo, cobra o depósito.
A minha loja online tem de cobrar o depósito?
Sim. O artigo 30.º-E, n.º 6, é direto:
“O valor de depósito é cobrado ao consumidor final no ato da venda de bebidas, independentemente da técnica de venda utilizada, incluindo por via eletrónica ou à distância, com exceção dos casos previstos no artigo 30.º-I para os estabelecimentos do setor HORECA.”
A exceção do artigo 30.º-I não serve a uma loja online. A APA (pergunta E5) só dispensa a cobrança quando a embalagem é aberta, consumida e devolvida nas instalações do estabelecimento HORECA, o que nunca acontece numa entrega ao domicílio.
O mesmo artigo explica o caminho do dinheiro. A entidade gestora cobra o depósito aos embaladores aderentes por cada embalagem colocada no mercado (n.º 4), e o depósito é transmitido ao longo de toda a cadeia de distribuição até ao consumidor final (n.º 5). Na prática, o seu fornecedor já lhe fatura o depósito, e a sua loja passa-o ao cliente. Se a loja não o cobrar, absorve 10 cêntimos por embalagem e falha uma obrigação legal.
Sobre os stocks antigos há duas fontes oficiais que não coincidem. A pergunta A15 das FAQ da APA, de junho, diz que o retalho não pode vender ao consumidor final produtos em embalagens sem marcação SDR depois do fim da transição. A Circular n.º 01/2026/DFEMR, revista a 24 de julho de 2026, admite a venda ao consumidor final de stocks cuja responsabilidade foi transferida para o SIGRE, com o resíduo a ir para o ecoponto amarelo. Se ainda tem armazém com latas sem símbolo, peça confirmação escrita à APA antes de as pôr à venda. Esses produtos, de qualquer modo, não levam depósito na sua loja, porque não são elegíveis para reembolso.
O depósito Volta paga IVA?
Não. O artigo 30.º-E, n.º 3, diz que o valor de depósito “não está sujeito a tributação”. A APA repete-o na pergunta H1 das perguntas frequentes e indica como faturar: na fatura usa-se o motivo de não sujeição M99. O motivo vem acompanhado da menção “Não sujeito”, seguida da referência ao Decreto-Lei n.º 152-D/2017, de 11 de dezembro. Confirmei o código na imagem da página 29 do PDF, porque a camada de texto do documento perde a letra M.
No WooCommerce, isto traduz-se numa taxa não tributável. O erro mais comum é somar os 10 cêntimos ao preço da lata. Nesse caso o WooCommerce aplica a taxa de IVA da bebida também ao depósito, a fatura mostra imposto que não é devido e a declaração periódica de IVA fica inflacionada.
Como mostro o depósito na página de produto, no carrinho e na fatura?
O artigo 30.º-E, n.º 5, tem duas obrigações numa só frase: o depósito deve ser “discriminado em todas as faturas e identificado nos suportes utilizados para a indicação do preço do produto”. Numa loja online, o suporte de indicação do preço é a página de produto e, por extensão, a listagem de categoria onde o preço aparece. A lei deixa o formato em aberto e exige que o cliente veja o depósito onde vê o preço.

Captura de ecrã: artigo 30.º-E, n.os 5 e 6, do Decreto-Lei n.º 152-D/2017, versão consolidada no Diário da República, 31 de outubro de 2026.
Para a sua loja, isso dá três pontos de controlo:
- Página de produto: uma linha junto ao preço, por exemplo ”+ Depósito Volta (reembolsável): 0,10 EUR”, ou 0,60 EUR num pack de seis latas. O código mais abaixo faz isto no gancho
woocommerce_single_product_summary. - Listagens: se o tema mostra preços em grelhas de categoria ou em blocos de produtos, decida com o seu jurista se a linha de depósito também tem de ali aparecer. O texto da lei fala de “suportes utilizados para a indicação do preço”, sem distinguir.
- Carrinho e checkout: a taxa aparece automaticamente no carrinho clássico e nos blocos Cart e Checkout, porque ambos leem os totais do carrinho, onde as taxas estão incluídas.
Na fatura, o depósito tem de ser uma linha própria (pergunta B18 da APA), sem IVA, com o motivo M99. Em Portugal a fatura vem de um programa de faturação certificado pela AT, normalmente ligado ao WooCommerce por um plugin. Esse plugin tem de enviar a linha de taxa do WooCommerce como linha de fatura isenta, com o motivo de não sujeição M99, e não como uma linha tributada a 0% sem motivo nem como desconto. Muitos conectores tratam as taxas do WooCommerce de forma genérica, com uma única configuração de isenção para todas. Faça uma encomenda de teste e confirme três coisas no documento emitido: a linha do depósito separada, o motivo M99 e o total certo.
Devo incluir o depósito no preço ou usar uma taxa separada?
Uma taxa separada, por três razões que saem das fontes acima.
A primeira é a lei. O artigo 30.º-E, n.º 5, exige o depósito discriminado na fatura e identificado junto ao preço. Um depósito escondido no preço não cumpre nenhuma das duas partes.
A segunda é o IVA. O depósito não está sujeito a imposto. Dentro do preço do produto, o WooCommerce tributa-o à taxa da bebida, e a correção posterior obriga a mexer em faturas certificadas.
A terceira é o destino. A mesma lata custa 10 cêntimos de depósito em Lisboa, 25 cêntimos em Viena ou Berlim e nada em Madrid, porque Espanha ainda não tem sistema a funcionar. Um preço é um número fixo. Uma taxa calcula-se em cada encomenda a partir da morada de entrega.
Como adiciono o depósito como taxa no WooCommerce?
A API de taxas do WooCommerce é o sítio nativo para isto. A ação woocommerce_cart_calculate_fees corre sempre que os totais do carrinho são calculados, e o método WC_Cart::add_fee() recebe um nome, um valor, um indicador de tributação e uma classe de imposto. As taxas ficam gravadas na encomenda como linhas próprias: aparecem nos e-mails, na administração e nos plugins de faturação, e podem ser reembolsadas linha a linha.
O código lê três metadados de cada produto: o tipo de embalagem (_drs_container, com o valor pet ou can), o volume em mililitros (_drs_ml) e o número de embalagens por unidade vendida (_drs_units, para que um pack de seis latas conte seis). As variações sem valores próprios herdam os do produto pai. Pode preencher estes campos com o que já usa para dados de produto: um campo personalizado, uma coluna de importação CSV ou a caixa de um plugin.
<?php
/**
* Plugin Name: Depósito de embalagens de bebidas (SDR) como taxa do carrinho
* Description: Cobra o depósito do sistema do país de destino como taxa separada no carrinho.
*/
defined( 'ABSPATH' ) || exit;
/**
* Sistemas por país de destino. Cada escalão: [ ml mínimo, ml máximo, depósito por embalagem ].
* 'taxable' => true significa que o valor legal já inclui IVA (Alemanha).
*/
function wpp_drs_schemes(): array {
$eu_25 = [ [ 100, 3000, 0.25 ] ];
return [
'PT' => [ 'currency' => 'EUR', 'taxable' => false, 'label' => 'Depósito Volta (reembolsável)', 'rates' => [
'pet' => [ [ 1, 3000, 0.10 ] ],
'can' => [ [ 1, 3000, 0.10 ] ],
] ],
'DE' => [ 'currency' => 'EUR', 'taxable' => true, 'label' => 'Pfand', 'rates' => [
'pet' => $eu_25,
'can' => $eu_25,
] ],
'AT' => [ 'currency' => 'EUR', 'taxable' => false, 'label' => 'Pfand', 'rates' => [
'pet' => $eu_25,
'can' => $eu_25,
] ],
'IE' => [ 'currency' => 'EUR', 'taxable' => false, 'label' => 'Re-turn deposit', 'rates' => [
'pet' => [ [ 150, 500, 0.15 ], [ 501, 3000, 0.25 ] ],
'can' => [ [ 150, 500, 0.15 ], [ 501, 3000, 0.25 ] ],
] ],
];
}
/** Meta do produto; uma variação sem valor próprio herda o do produto pai. */
function wpp_drs_meta( WC_Product $product, string $key ): string {
$value = (string) $product->get_meta( $key );
if ( '' === $value && $product->get_parent_id() ) {
$value = (string) get_post_meta( $product->get_parent_id(), $key, true );
}
return $value;
}
/** Depósito de uma unidade do produto (um pack de seis conta seis embalagens), ou 0. */
function wpp_drs_unit_deposit( WC_Product $product, array $scheme ): float {
$container = wpp_drs_meta( $product, '_drs_container' ); // pet ou can
$ml = (int) wpp_drs_meta( $product, '_drs_ml' );
$units = max( 1, (int) wpp_drs_meta( $product, '_drs_units' ) );
foreach ( $scheme['rates'][ $container ] ?? [] as [ $min, $max, $amount ] ) {
if ( $ml >= $min && $ml <= $max ) {
return $amount * $units;
}
}
return 0.0;
}
/** O sistema do destino do cliente, se a loja o puder cobrar. */
function wpp_drs_current_scheme(): ?array {
$country = '';
if ( WC()->customer ) {
$country = WC()->customer->get_shipping_country() ?: WC()->customer->get_billing_country();
}
$country = $country ?: WC()->countries->get_base_country();
$scheme = wpp_drs_schemes()[ $country ] ?? null;
// Uma loja que vende noutra moeda não cobra um depósito fixado em EUR: salta, não converte.
if ( ! $scheme || get_woocommerce_currency() !== $scheme['currency'] ) {
return null;
}
return $scheme;
}
add_action( 'woocommerce_cart_calculate_fees', function ( WC_Cart $cart ) {
$scheme = wpp_drs_current_scheme();
if ( ! $scheme ) {
return;
}
// Soma o depósito por classe de imposto, para que cada taxa siga a taxa de IVA das suas bebidas.
$by_class = [];
foreach ( $cart->get_cart() as $item ) {
$deposit = wpp_drs_unit_deposit( $item['data'], $scheme ) * $item['quantity'];
if ( $deposit > 0 ) {
$class = $item['data']->get_tax_class();
$by_class[ $class ] = ( $by_class[ $class ] ?? 0 ) + $deposit;
}
}
// Fora do IVA (PT, AT, IE): uma taxa, sem imposto.
if ( ! $scheme['taxable'] ) {
if ( $by_class ) {
$cart->add_fee( $scheme['label'], round( array_sum( $by_class ), 2 ), false );
}
return;
}
foreach ( $by_class as $class => $gross ) {
// O valor legal inclui IVA: extrai o líquido, o WooCommerce volta a somar o imposto.
$rates = WC_Tax::get_rates( $class );
$tax = array_sum( WC_Tax::calc_inclusive_tax( $gross, $rates ) );
$rate = $rates ? (float) reset( $rates )['rate'] : 0.0;
$cart->add_fee( sprintf( '%s (%s %%)', $scheme['label'], wc_format_localized_decimal( $rate ) ), $gross - $tax, true, $class );
}
} );
// Página de produto: mostra o depósito junto ao preço, não apenas no carrinho.
add_action( 'woocommerce_single_product_summary', function () {
global $product;
$scheme = wpp_drs_current_scheme();
if ( ! $scheme || ! $product instanceof WC_Product ) {
return;
}
$deposit = wpp_drs_unit_deposit( $product, $scheme );
if ( $deposit > 0 ) {
printf(
'<p class="drs-deposit">%s</p>',
esc_html( sprintf( '+ %s: %s', $scheme['label'], wp_strip_all_tags( wc_price( $deposit ) ) ) )
);
}
}, 11 );O ficheiro passa no php -l em PHP 8.4, e corri a lógica dos escalões num pequeno script de asserções com produtos simulados. Uma lata de 330 ml recebe 0,10 EUR em Portugal e um pack de seis recebe 0,60 EUR. Uma garrafa de 3,5 litros fica sem depósito. O mesmo pack recebe 1,50 EUR na Alemanha e uma garrafa de 500 ml recebe 0,15 EUR na Irlanda. Um tipo de embalagem sem escalão definido fica a zero, e uma variação sem metadados herda os do pai.
<?php
// drs-fee-test.php: executar com php -d zend.assertions=1 -d assert.exception=1 drs-fee-test.php
define( 'ABSPATH', '/' );
function add_action() {}
function get_post_meta( $id, $key, $single ) { return $GLOBALS['parent_meta'][ $key ] ?? ''; }
class WC_Product {
public function __construct( public array $meta, public int $parent = 0 ) {}
public function get_meta( $k ) { return $this->meta[ $k ] ?? ''; }
public function get_parent_id() { return $this->parent; }
}
require __DIR__ . '/drs-fee.php';
$s = wpp_drs_schemes();
$p = fn( $c, $ml, $u = 1 ) => new WC_Product( [ '_drs_container' => $c, '_drs_ml' => $ml, '_drs_units' => $u ] );
assert( wpp_drs_unit_deposit( $p( 'can', 330 ), $s['PT'] ) === 0.1 );
assert( abs( wpp_drs_unit_deposit( $p( 'can', 330, 6 ), $s['PT'] ) - 0.6 ) < 1e-9 );
assert( wpp_drs_unit_deposit( $p( 'pet', 3500 ), $s['PT'] ) === 0.0 );
assert( wpp_drs_unit_deposit( $p( 'can', 330, 6 ), $s['DE'] ) === 1.5 );
assert( wpp_drs_unit_deposit( $p( 'pet', 500 ), $s['IE'] ) === 0.15 );
assert( wpp_drs_unit_deposit( $p( 'glass_refill', 500 ), $s['PT'] ) === 0.0 );
$GLOBALS['parent_meta'] = [ '_drs_container' => 'pet', '_drs_ml' => 1500 ];
assert( wpp_drs_unit_deposit( new WC_Product( [], 99 ), $s['PT'] ) === 0.1 );
echo "ok\n";A segunda asserção compara com tolerância porque 0,1 multiplicado por 6 dá 0,6000000000000001 em vírgula flutuante. O carrinho arredonda a soma a dois decimais antes de criar a taxa, por isso o cliente vê 0,60 EUR.
O que o código deixa de fora de propósito: Espanha, que não tem valor nem data oficiais, e as exclusões por conteúdo, como os vinhos e os lácteos. Um produto fora do âmbito simplesmente não recebe valor em _drs_container. Se a loja tem dezenas de referências, comece pelas que mostram o símbolo Volta no rótulo.
Que dados de produto preciso para calcular o depósito?
O depósito depende de três factos sobre a embalagem, e nenhum deles existe por defeito num produto WooCommerce.
O material. O SDR português cobre plástico, metais ferrosos e alumínio. O vidro está fora, tal como as embalagens compósitas, porque a APA (pergunta A11) só considera garrafas de plástico as que têm “gargalo ou boca estreitos”. Um pacote de cartão de sumo não leva depósito.
O volume nominal. A APA (pergunta A9) define capacidade como o volume nominal indicado no rótulo, sem espaço livre, e não o volume real nem a capacidade até ao bordo. Use o número impresso na embalagem.
O número de embalagens por unidade vendida. Um pack de 24 latas vendido como um único produto leva 24 depósitos. Este é o campo que mais se esquece quando um catálogo é importado de um grossista.
A APA (pergunta A12) lembra que as embalagens SDR têm o símbolo próprio e um código de barras válido, e no ponto de recolha a elegibilidade é confirmada pelo código GTIN/EAN cruzado com a base de dados da entidade gestora (pergunta B3). Se a sua loja já guarda o EAN de cada produto, pode pedir ao fornecedor a lista de EAN aderentes ao SDR e marcar os produtos de uma vez. Se não guarda, o símbolo Volta na fotografia do rótulo é o critério de verificação manual.
Como funcionam os reembolsos: encomenda cancelada versus embalagem devolvida?
São dois acontecimentos diferentes, com circuitos de dinheiro diferentes, e só o primeiro toca na encomenda.
Encomenda cancelada ou devolvida. Se o cliente exerce o direito de livre resolução e devolve as bebidas fechadas, ou se cancela antes do envio, o depósito volta com a encomenda. No WooCommerce reembolsa as linhas de produto e a linha da taxa de depósito em conjunto. Como o depósito é uma linha própria, o reembolso devolve exatamente o que foi cobrado. A correção da fatura segue as regras habituais do seu programa de faturação.
Embalagem vazia devolvida. Isto acontece fora da encomenda. O cliente leva a lata vazia a um ponto de recolha Volta e recebe ali o depósito. O artigo 30.º-F prevê o reembolso em numerário, troca, vale de compras, pagamento desmaterializado ou donativo, e diz que a opção pelo numerário “não pode ser retirada ou condicionada”. A sua loja online não reembolsa nada no WooCommerce por esta devolução.
A rede de pontos de recolha está no artigo 30.º-H, e as obrigações dependem da área de exposição e venda contínua do estabelecimento:
| Área de exposição e venda | Obrigação de receção (artigo 30.º-H) |
|---|---|
| 400 m2 ou mais | recebe todas as embalagens do SDR |
| mais de 50 m2 e menos de 400 m2 | recebe as embalagens das bebidas que vende; pode ser dispensado se faltarem condições e houver densidade suficiente de pontos de recolha |
| 50 m2 ou menos, ou alimentar abaixo de 10% das vendas | isento, pode aderir por acordo |
Uma loja só online não tem área de exposição e venda, e não encontrei no decreto-lei nem nas FAQ da APA nenhuma regra sobre recolha de embalagens por vendedores à distância. Trato isso como uma questão em aberto. Se a sua empresa tem também uma loja física, as regras acima aplicam-se a essa loja.
Nesse caso misto há três regras fiscais da APA que convém conhecer:
- O vale Volta é um meio de pagamento, nunca um desconto (pergunta H2). Uma compra de 10 EUR paga em parte com um vale de 1 EUR é faturada por 10 EUR, e o cliente paga 9 EUR por outro meio.
- No SAF-T (PT), o vale vai no campo PaymentMechanism com o tipo OU (pergunta H3, nos termos da Portaria n.º 302/2016).
- Um reembolso em numerário sem compra não leva nota de crédito (perguntas H5 e H6). A saída de caixa fica suportada por um documento interno com a menção de que não serve de fatura.
Que depósito se aplica quando envio bebidas para Espanha ou outros países?
O do país de destino, quando esse país tem sistema e as suas regras o alcançam. A APA lembra (pergunta A14) que exportar para outro Estado-Membro fica fora da colocação no mercado nacional e que o exportador “deve cumprir a legislação do país para onde exporta”. A tabela tem apenas o que confirmei na lei, na autoridade fiscal ou no operador do sistema.
| País | Sistema e início | Depósito por embalagem | IVA sobre o depósito | Regra para vendas à distância |
|---|---|---|---|---|
| Portugal | Volta, 10 de abril de 2026 | 0,10 EUR | não sujeito (M99) | cobrado também por via eletrónica ou à distância |
| Espanha | sem data oficial | mínimo legal de 0,10 EUR, valor por fixar | sem regra específica encontrada | por definir |
| Alemanha | § 46 VerpackDG | pelo menos 0,25 EUR com IVA incluído | incluído no valor legal | recolha em distância razoável do cliente |
| Áustria | Pfandverordnung, 1 de janeiro de 2025 | 0,25 EUR | não é contrapartida de uma prestação | abrange vendedores à distância sem sede na Áustria |
| Irlanda | Re-turn, S.I. n.º 33/2024 | 0,15 EUR até 0,5 l, 0,25 EUR acima | não se aplica IVA | linha separada em faturas e guias de entrega |
Espanha é o mercado mais próximo e o que mais perguntas levanta. O Real Decreto 1055/2022, artigo 47, obriga os produtores a criar um sistema de depósito no prazo de dois anos quando falham os objetivos de recolha de garrafas de plástico, e inclui também latas e embalagens de cartão para bebidas. O depósito será fixado livremente pelos sistemas de responsabilidade alargada do produtor, num valor igual ou superior a 10 cêntimos. O relatório do Ministério para a Transição Ecológica de novembro de 2024 calculou uma recolha de 41,3% em 2023 e concluiu que o sistema terá de ser implantado. Até 31 de outubro de 2026 não encontrei em fonte oficial a data de arranque, a entidade gestora nem o valor. Por isso o código acima não tem entrada para Espanha, e uma encomenda para Madrid não leva depósito.
Alemanha: o § 46 da VerpackDG fixa pelo menos 0,25 EUR com IVA incluído. O WooCommerce trata o valor de uma taxa como líquido, por isso o código extrai o imposto com WC_Tax::calc_inclusive_tax() antes de criar a taxa, para que o cliente pague 0,25 EUR e não 0,25 EUR mais IVA. O mesmo parágrafo exige, nas vendas à distância, possibilidades de devolução a uma distância razoável do cliente.
Áustria: a Pfandverordnung cobra 0,25 EUR desde 1 de janeiro de 2025, em nome e por conta da entidade central, e o § 2, n.º 2, aplica-a a vendedores à distância sem sede nem estabelecimento na Áustria. A folha informativa do operador diz que o depósito não está sujeito a IVA porque não é contrapartida de uma prestação.
Irlanda: o S.I. n.º 33/2024 fixa 0,15 EUR até 0,5 litros e 0,25 EUR acima, e a Revenue diz que não há IVA sobre o depósito.
Uma questão que não consegui resolver numa fonte oficial: se uma loja estrangeira que vende bebidas diretamente a consumidores portugueses passa a ser “embalador” para efeitos do artigo 30.º-C, com adesão à entidade gestora pelo menos 30 dias antes da colocação no mercado. As FAQ da APA indicam o contacto [email protected] para embaladores. Se vende a partir de outro país, pergunte lá antes de cobrar.
O controlo de moeda no código reflete um limite prático. Uma loja que fatura só em libras ou em coroas não cobra um depósito fixado em euros, por isso o sistema não se aplica às suas encomendas, e um valor convertido não coincidiria com a lei.
Posso usar um plugin em vez de código próprio?
Sim, há vários, e o código acima compensa sobretudo quando quer controlo total sobre as regras. Desenvolvo dois plugins WooCommerce que cobram depósitos, e descrevo-os apenas pelo que dizem os seus registos de alterações e páginas.

Captura de ecrã: os campos de depósito que o Botelix acrescenta ao editor de produto do WooCommerce.
O Botelix é um plugin gratuito que, na versão 1.1.0, tem quatro categorias de embalagem com uma taxa por categoria em cada sistema e cobra o sistema do país de destino. A própria página do plugin diz que não trata reembolsos de depósitos nem regista embalagens devolvidas. Atualização, . O Botelix traz agora um sistema para Portugal, com o ato legal, as taxas por categoria de embalagem e o tratamento do IVA, escolhido pelo país de envio. Chegam mais nove sistemas nacionais: Dinamarca, Suécia, Finlândia, Estónia, Letónia, Países Baixos, Irlanda, Croácia e Malta. O depósito aparece ao lado do preço nas listagens da loja, das categorias, da pesquisa e dos produtos relacionados, no editor clássico e em blocos, e em cada linha do carrinho e do checkout, guardado no artigo da encomenda e visível na página da encomenda, na administração e nos emails. Em cada produto e variação pode definir um depósito próprio por embalagem, que substitui a taxa do sistema. Quando o valor depende do tamanho da embalagem, as definições trazem o tamanho mais comum e a etiqueta da taxa indica os restantes valores, a preencher no produto. O plugin está também no diretório do WordPress.org.
O Shoplex 1.6.0 é o meu plugin de conformidade com a legislação europeia e tributa o depósito à taxa de IVA do produto, com uma taxa de carrinho por taxa de IVA. O filtro shoplex_deposit_taxable volta a tornar o depósito uma taxa sem imposto, que é o que precisa para o Volta.
Existem outros plugins de depósito para WooCommerce. Seja qual for a escolha, teste-o contra as regras deste artigo: depósito sem IVA com motivo M99, linha própria na fatura, valor visível junto ao preço e cálculo pelo país de destino.
O que devo verificar antes de cobrar o depósito Volta?
- Confirme que cada bebida em plástico, aço ou alumínio até 3 litros com o símbolo Volta tem tipo de embalagem, volume e unidades por pack preenchidos, incluindo as variações.
- Reveja o catálogo à luz das mudanças de 12 de agosto de 2026: vinhos e espirituosas fora, bebidas vegetais dentro.
- Garanta que o depósito é uma taxa separada e não faz parte do preço do produto.
- Mostre o valor do depósito junto ao preço na página de produto.
- Faça uma encomenda de teste e verifique na fatura certificada a linha do depósito, sem IVA, com o motivo M99.
- Reembolse uma encomenda de teste completa e confirme que a linha do depósito também é devolvida.
- Se tem loja física, prepare o tratamento dos vales Volta como meio de pagamento e o documento interno para reembolsos em numerário.
- Para cada país para onde envia bebidas, confirme o sistema, o valor e o tratamento de IVA na tabela acima ou com o seu contabilista.
- Para encomendas para Espanha, volte a verificar quando o Governo espanhol publicar a data e o valor.
Quando vale a pena chamar um programador?
A taxa em si é um bloco curto de código. O trabalho está nos dados de produto, na ligação ao programa de faturação certificado, na apresentação junto ao preço e nos envios para fora do país, e tudo isso tem de bater certo em cada destino. Peça ao seu contabilista que confirme o tratamento fiscal na sua cadeia de abastecimento, porque as fontes que cito descrevem o caso geral. Se prefere ter o depósito configurado e testado em ambiente de testes, com reembolsos e faturas incluídos, faço este tipo de trabalho como desenvolvedor de WooCommerce.
Leituras relacionadas: a regra Omnibus do preço mais baixo dos últimos 30 dias no WooCommerce e o botão de retratação na loja online, que decide como o cliente cancela a encomenda a que o reembolso do depósito pertence.







