As taxas de envio permitem exibir várias opções de remessa, como padrão, expressa e dia seguinte, com estimativas de entrega mais precisas. Cobre o cliente pelo envio usando diferentes produtos Stripe. Antes de criar uma taxa de envio, saiba como coletar endereços de cobrança e entrega.
Observação
As tarifas de envio só aceitam valores fixos para todo o pedido. Não é possível ajustar a taxa de envio com base no número de itens no pedido.
Observação
As tarifas de envio só aceitam valores fixos para todo o pedido. Não é possível ajustar a taxa de envio com base no número de itens no pedido.
Para adicionar um tarifa de frete usando o Dashboard:
- Clique em Criar tarifa de envio.
- Insira um valor, uma descrição e, opcionalmente, um prazo estimado de entrega.
- Clique em Salvar e copie o ID da tarifa de envio (
shr_123456
).

Insira os detalhes da tarifa de envio
Para criar uma sessão do Checkout que inclua sua taxa de envio, passe o ID da taxa de envio gerada para o parâmetro shipping_options. Se quiser criar a taxa de envio ao mesmo tempo que uma sessão do Checkout, use o parâmetro shipping_rate_data
com shipping_options
. Somente sessões do Checkout no modo pagamento aceitam opções de envio.
O exemplo de código a seguir adiciona duas opções de envio à sessão do Checkout:
- Frete grátis, com uma entrega estimada de 5 a 7 dias úteis.
- Transporte aéreo no dia seguinte, a um custo de US$ 15,00, com uma entrega estimada em exatamente 1 dia útil.
curl https://api.stripe.com/v1/checkout/sessions \
-u "sk_test_BQokikJOvBiI2HlWgH4olfQ2
:" \
-d billing_address_collection=required \
-d "shipping_address_collection[allowed_countries][0]"=US \
-d "shipping_address_collection[allowed_countries][1]"=CA \
-d "shipping_options[0][shipping_rate_data][type]"=fixed_amount \
-d "shipping_options[0][shipping_rate_data][fixed_amount][amount]"=0 \
-d "shipping_options[0][shipping_rate_data][fixed_amount][currency]"=usd \
-d "shipping_options[0][shipping_rate_data][display_name]"="Free shipping" \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][minimum][unit]"=business_day \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][minimum][value]"=5 \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][maximum][unit]"=business_day \
-d "shipping_options[0][shipping_rate_data][delivery_estimate][maximum][value]"=7 \
-d "shipping_options[1][shipping_rate_data][type]"=fixed_amount \
-d "shipping_options[1][shipping_rate_data][fixed_amount][amount]"=1500 \
-d "shipping_options[1][shipping_rate_data][fixed_amount][currency]"=usd \
-d "shipping_options[1][shipping_rate_data][display_name]"="Next day air" \
-d "shipping_options[1][shipping_rate_data][delivery_estimate][minimum][unit]"=business_day \
-d "shipping_options[1][shipping_rate_data][delivery_estimate][minimum][value]"=1 \
-d "shipping_options[1][shipping_rate_data][delivery_estimate][maximum][unit]"=business_day \
-d "shipping_options[1][shipping_rate_data][delivery_estimate][maximum][value]"=1 \
-d "line_items[0][price_data][currency]"=usd \
-d "line_items[0][price_data][product_data][name]"=T-shirt \
-d "line_items[0][price_data][unit_amount]"=2000 \
-d "line_items[0][quantity]"=1 \
-d mode=payment \
-d ui_mode=custom \
--data-urlencode return_url="https://example.com/return"
No cliente, use o objeto shippingOptions para processar as opções de envio disponíveis, como em uma lista de botões de seleção. Quando o cliente selecionar uma opção de envio, chame updateShippingOption com o ID da opção de envio.
<div id="shipping-options"></div>
checkout.session().shippingOptions.forEach((option) => {
const form = document.createElement('form');
shippingOptions.forEach(option => {
const label = document.createElement('label');
const radio = document.createElement('input');
radio.type = 'radio';
radio.id = option.id;
radio.name = 'shippingOption';
radio.value = option.id;
radio.addEventListener('click', () => {
checkout.updateShippingOption(option.id)
})
const labelText = document.createTextNode(option.displayName);
label.appendChild(radio);
label.appendChild(labelText);
form.appendChild(label);
});
document.getElementById('shipping-options').appendChild(form);
});
const shippingAddressElement = checkout.createShippingAddressElement();
shippingAddressElement.mount('#shipping-address');