Shipping to Brazil on FedEx: CPF / CNPJ as the customs identifier that holds more shipments than any other LAC field

Posted on May 26, 2026

by Vimal Bhaskaran

ph_img_Shipping_to_Brazil_on_FedEx

The customs hold that takes days to clear

A US-based DTC beauty brand ships a $54 order to a buyer in São Paulo. The package leaves the Atlanta warehouse with a clean commercial invoice. It reaches the Brazilian gateway. Brazilian customs flags the shipment for missing CPF on the recipient field. The package sits while the merchant’s support team emails the buyer for their CPF, the buyer sends it back, the customs broker resubmits, and the shipment finally clears 4-7 days after the original gateway arrival. The buyer’s experience is already negative; the merchant’s support team has spent meaningful time on what should have been a captured-at-checkout field.

Brazilian customs is among the documentation-strictest in the Western hemisphere. CPF or CNPJ — the individual or business tax identifier — is required on the recipient field of every commercial import. Missing it, or attaching the wrong type for the recipient profile, produces an extended hold that’s expensive to resolve. The carrier-side handling is clean; the FedEx Ship API accepts the identifier in the right field position, the documentation flows correctly to Brazilian customs when the data is right. The integration layer is where the field consistently goes empty or wrong.

This article describes what CPF and CNPJ actually require operationally, where the workflow consistently breaks for merchants shipping into Brazil, and what the integration needs to do for Brazil-destination orders to flow without held shipments.

What CPF and CNPJ actually do

CPF (Cadastro de Pessoas Físicas) is the Brazilian individual tax identifier issued by Receita Federal (Brazil’s federal tax authority). Every Brazilian resident has one. For commercial imports to an individual buyer, the CPF identifies the recipient to Brazilian customs and ties the shipment to a person who is responsible for any duty / tax assessment at the border. Format: 11 digits, typically displayed as `XXX.XXX.XXX-XX`.

CNPJ (Cadastro Nacional da Pessoa Jurídica) is the Brazilian business equivalent. Issued to every registered company in Brazil. For commercial imports to a business recipient — distributor, retailer, wholesale buyer — the CNPJ identifies the legal entity. Format: 14 digits, typically displayed as `XX.XXX.XXX/XXXX-XX`.

Brazilian customs uses the identifier to validate the recipient against Receita Federal records, to assess any applicable import taxes (Imposto de Importação, ICMS state tax), and to maintain the audit trail for commercial-import compliance. Without the identifier, the customs authority can’t process the import — the shipment holds at the gateway pending resolution.

The FedEx Ship API field for Brazilian imports accepts both CPF and CNPJ. The integration is responsible for capturing the right identifier type for the recipient (individual buyer → CPF, business buyer → CNPJ), validating the format, and writing it to the manifest before the label generates.

Where the workflow actually breaks — three failure patterns from the merchant base

Three patterns show up consistently across DTC and B2B merchants shipping into Brazil:

1. CPF / CNPJ field treated as optional at checkout. The most common failure. The merchant’s Shopify or WooCommerce checkout doesn’t require a Brazilian tax identifier for Brazil-destination orders. The buyer completes checkout, the order ships, and the shipment hits the Brazilian gateway with the field empty. Customs holds the package while the merchant’s support team backfills the identifier from the buyer. At any meaningful Brazil volume, this becomes a recurring weekly hold pattern. The fix is making CPF / CNPJ a required field at checkout when the destination country is Brazil, with format validation built into the input.

2. Generic tax-ID field used at checkout with wrong manifest routing. Some integrations capture a generic “Tax ID” field at checkout and route whatever the buyer enters to a single manifest position. The buyer enters their CPF, but the integration writes it to the wrong field on the FedEx manifest (e.g., the generic TAX_ID field instead of the Brazilian-specific identifier field). Brazilian customs doesn’t recognize the identifier in the wrong field position and holds the shipment as if the CPF were missing. The fix is destination-aware field routing — Brazil orders write the identifier to the CPF / CNPJ-specific manifest field based on recipient type.

3. B2B orders shipped with the buyer’s personal CPF instead of the business CNPJ. A specific failure pattern for B2B-on-Shopify merchants shipping to Brazilian distributors. The distributor’s individual contact provides their personal CPF at order time; the integration writes the CPF to the manifest; the shipment routes as if it were a consumer import. Brazilian customs flags the mismatch — the recipient is a business entity but the identifier is individual — and the shipment holds while the distributor’s accounting team produces the company’s CNPJ. The fix is recipient-type detection at the order level (B2B account vs consumer) routing to CNPJ vs CPF capture.

These three patterns explain most of the “Brazil customer waiting” support tickets we see in the merchant base.

The workflow that holds up at scale

The workflow that doesn’t break treats Brazil as a destination that requires the right tax identifier captured at checkout and routed to the correct manifest field. For consumer DTC orders, the checkout requires CPF with 11-digit format validation. For B2B orders to Brazilian business accounts, the checkout requires CNPJ with 14-digit format validation — and the validation can run against Receita Federal’s public CPF / CNPJ check digit algorithm to catch typos before the order even completes.

The shipment builder reads the recipient profile at the manifest step and writes the identifier to the correct FedEx field. Commercial invoice carries the same identifier in the recipient block. Documents upload through the FedEx Electronic Trade Documents (ETD) flow before the label generates.

For higher-volume Brazil-destination merchants — apparel brands shipping into São Paulo, beauty brands shipping into Rio, supplements shipping into Brasília and beyond — the difference between captured-at-checkout CPF / CNPJ and post-shipment backfill shows up directly in held-shipment frequency, customer-support time per Brazil order, and customer-experience metrics on the Brazilian segment.

Where this sits in the broader LAC and global DTC picture

Brazilian customs documentation strictness is well-known in cross-border eCommerce circles. The CPF / CNPJ field is the single most common reason Brazilian shipments hold, but the broader Brazilian customs picture also includes Imposto de Importação (federal import duty), ICMS (state-level value-added tax), and increasingly tight enforcement around commercial vs personal-use classifications for higher-value imports.

For FedEx International Trade Services and the LAC regional team, this is one of the cleaner integration-layer conversations — the carrier-side capability is mature, and the failure mode is well-understood. Closing the integration-layer gap on Brazilian tax-ID capture is one of the more direct workflow improvements available to any merchant whose cross-border shipping mix includes a meaningful Brazil segment.

Brazilian customs documentation automation still feels like one of the under-built capability areas across Shopify and WooCommerce shipping infrastructure for LAC-destination DTC.

Happy to connect with anyone on the FedEx International Trade Services / LAC regional partnerships side exploring Brazilian customs workflow automation further.

This article reflects patterns observed across PluginHive’s Brazil-destination merchant base on FedEx. Brazilian customs requirements (CPF / CNPJ format rules, Receita Federal validation, commercial-import value thresholds, Imposto de Importação and ICMS treatment) evolve — verify current Receita Federal guidance and FedEx International Trade Services documentation before commercial commitments.

PluginHive solutions for this workflow

PluginHive shipping solutions for FedEx integration on WooCommerce and Shopify.

View Plugin
View Plugin
View Plugin