Kirchner working paper · ocean bills of lading · 23 August 2026
Did large US importers replace Chinese factories, or only Chinese ports?
China versus Vietnam, Mexico, and India on US ocean bills, 2016–2017 against 2024–2025: origin shares, and whether the shipper string moved with the load port.
Snapshot generated 2026-08-23 from kirchner.bols. 150,490,020 rows; 137,135,281 unique bills, 2016–2025.
Abstract
“China Plus One” is two different claims. One is that US buyers opened new factories in Vietnam, Mexico, or India. The other is that the same Chinese exporter started filing bills from a non-Chinese port. Public ocean bills of lading can tell those stories apart, because they record both a shipper name and a load port. This paper locks consignee strings for large US importers in Kirchner’s kirchner.bols table, measures each firm’s China / Vietnam / Mexico / India share of unique ocean bills in 2016–2017 versus 2024–2025, and splits post-window Plus-One bills into shipper strings that already appeared on that consignee’s China bills in 2016–2017 versus strings that did not.
Diversification is real where the consignee identity is stable, and it is mostly new names. Home Depot’s China share of ocean bills falls from 87.0% to 45.5%; Vietnam rises from 1.7% to 26.0%. Mattel’s China share falls from 67.6% to 38.7%; Vietnam and Mexico absorb most of the gap. Of Home Depot’s 3,529 Vietnam/Mexico/India bills in 2024–2025, 94.7% carry a shipper string that was not on that firm’s China bills in 2016–2017. Across firms with at least 100 such Plus-One bills, the mean new-string share is 88.0%. Same-string “new gateway” is the minority. IKEA and Costco do not leave China on this margin. Corpus-wide, China’s share of US ocean bills is higher in 2024–2025 than in 2016–2017, so the firm results are not a mechanical feature of the file. Mexico ocean bills do not show the nearshoring boom; that trade is mostly truck, and it is out of sample.
1. Introduction
After the 2018 Section 301 tariffs, US firms told investors they were dual-sourcing: keep China, add Vietnam, Mexico, India. Alfaro and Chor call the aggregate pattern a “great reallocation.” Javorcik, Pierce, and Wisniewski document China-plus-one in firm-product imports. Gopinath and coauthors track the same shift in official partner shares. None of those papers can see, on a public file, whether the Vietnamese bill is a new exporter or the old Chinese shipper string leaving from Hai Phong.
That distinction is the whole policy question. If the shipper string moves with the port, Plus One is logistics and tariff engineering. If the string is new, Plus One is a different factory—or at least a different filing name. Ganapati, Wong, and Ziv’s entrepôt work is the warning: observed origin is a routing choice. Bills of lading make the warning testable.
This paper takes ten large ocean consignees, locks the US strings actually present in Kirchner, and asks three questions. Did the China share of their ocean bills fall after 2018? Did Vietnam, Mexico, or India rise? And among the bills that now load in those Plus-One countries, is the shipper string one that already sold to that consignee from China in 2016–2017?
Hypothesis
Conditional on a US ocean consignee identity observed in both windows, the China share of unique bills is lower in 2024–2025 than in 2016–2017, and most Plus-One bills (Vietnam, Mexico, or India) carry a shipper string that does not appear on that consignee’s China-origin bills in the pre window. Same-string port shifts exist; they are not the mass of the Plus-One margin.
2. Data
The source is Kirchner kirchner.bols on ClickHouse: US ocean AMS / CBP bills of lading. The snapshot covers 2016-01-01 through 2025-12-31 (150,490,020 rows; 137,135,281 unique bills). Origin is the country field grouped to China (CN, CHINA), Vietnam (VN, VIET NAM), Mexico, India, Hong Kong, and other. A robustness classification uses loading_port string matches (Shanghai, Yantian, Hai Phong, Manzanillo, Nhava Sheva, and so on). A supplier is upperUTF8(trimBoth(shipper_name)), length at least 3, dropping placeholders.
Consignee names containing Canada, Mexico, Chile, Europe, Hong Kong, or S. DE R.L. are dropped so the sample is US filing names. Prefix search is the same device as the COVID turnover paper: WALMART / WAL-MART, HOME DEPOT, IKEA, and so on. Target’s prefix is polluted by unrelated “Target” companies and is not used in the balanced results. Nike’s 2016–2017 ocean identity is too thin (94 bills) and is dropped from means.
Walmart’s locked strings produce 2,470 bills in 2016–2017 against 61,494 in 2024–2025, and the 2016–2017 China share is 24.3% against 99.5% later. That is the same legal-name hole documented in the COVID paper (Walmart Inc. is not how the 2016 file spells the consignee). Walmart is shown in the replication tool and excluded from the narrative means.
These are unique ocean bill counts, not Census import value, not kilograms, not TEU. Air, truck, and rail are missing. Mexico nearshoring on trucks will not appear. HS on these rows is not official Census HTS.
3. Methods
Pre is calendar years 2016–2017, the last two years before Section 301. Post is 2024–2025. Pooling two years on each side reduces the 2017 name holes without mixing in the 2018 tariff year. Yearly shares are still reported.
For each consignee, let \(S_{CN}^{pre}\) be the set of shipper strings on China-origin bills in 2016–2017. Among unique bills in 2024–2025 with origin Vietnam, Mexico, or India, a bill is a same string if its shipper is in \(S_{CN}^{pre}\), and a new string otherwise. Same string is the “new gateway, old factory filing name.” New string is the “new name on a Plus-One port.” Dual strings—names that appear on both China and Plus-One bills in 2024–2025—are counted separately. They are China plus one, not China instead of.
A firm enters the mean if both windows have at least 500 unique bills. The new-string mean is further restricted to firms with at least 100 Plus-One bills in 2024–2025, so a handful of Mexican bills cannot dominate.
4. Results
Table 1 is the file, not the firms. China’s share of unique US ocean bills is 40.7% in 2016 and 41.0% in 2017, dips to 38.8% in 2019, then jumps to 58.0% in 2024 and 59.0% in 2025. Vietnam rises from 3.5% to 5.9%. India is flat to down. Mexico ocean falls from 1.5% to 0.6%. The 2024–2025 China jump coincides with a large increase in total bills (13.2 million in 2023, 17.3 million in 2024, 20.0 million in 2025), almost all of the extra count coded China. That may be trade, and it may be coverage. Either way, the file is not mechanically draining China, so a firm-level China decline is a firm fact, not a corpus fact.
Table 1. Unique US ocean bills by origin, kirchner.bols
| Year | Bills | China | Vietnam | Mexico | India |
|---|---|---|---|---|---|
| 2016 | 10,904,088 | 40.7% | 3.5% | 1.5% | 3.6% |
| 2017 | 11,343,531 | 41.0% | 3.8% | 1.5% | 3.7% |
| 2018 | 12,130,965 | 41.7% | 4.0% | 1.5% | 3.9% |
| 2019 | 11,991,741 | 38.8% | 5.1% | 1.6% | 4.2% |
| 2023 | 13,231,810 | 42.6% | 6.0% | 1.3% | 4.7% |
| 2024 | 17,331,599 | 58.0% | 5.0% | 0.8% | 3.5% |
| 2025 | 20,019,139 | 59.0% | 5.9% | 0.6% | 3.4% |
Hong Kong is 3.0% in 2016 and 0.4% in 2025 and is not treated as Plus One.
Table 2 is the test. Home Depot and Mattel are the Plus-One firms. IKEA’s China share is unchanged; India rises 3.3 points. Costco barely moves. Tesla’s China share rises (Shanghai output on the ocean file). Toyota has almost no China ocean bills in either window; Mexican ocean ticks from 1.9% to 2.5%—not a nearshoring story on this margin. lululemon was already Vietnam-heavy in 2016–2017 (26.2%); Vietnam goes to 37.1% and China from 9.4% to 4.3%.
Table 2. Origin shares of unique ocean bills, locked US consignee strings
| Importer | Pre bills 2016–17 |
China pre → post |
Vietnam | Mexico | India |
|---|---|---|---|---|---|
| Home Depot | 5,079 → 76,551 | 87.0% → 45.5% | 1.7% → 26.0% | 0.0% → 0.0% | 1.1% → 0.8% |
| Mattel | 15,432 → 7,594 | 67.6% → 38.7% | 0.3% → 16.8% | 0.4% → 6.9% | 0.0% → 0.5% |
| lululemon | 2,138 → 3,083 | 9.4% → 4.3% | 26.2% → 37.1% | 0.0% → 0.1% | 0.0% → 0.0% |
| IKEA | 133,231 → 274,258 | 35.0% → 36.6% | 2.9% → 3.6% | 0.0% → 0.0% | 1.3% → 4.6% |
| Costco | 13,501 → 8,321 | 78.6% → 77.6% | 0.1% → 1.7% | 0.0% → 0.0% | 0.3% → 1.2% |
| Tesla | 2,483 → 13,404 | 21.1% → 42.0% | 0.0% → 5.9% | 0.7% → 3.9% | 0.0% → 2.2% |
| Toyota | 4,661 → 5,370 | 0.3% → 2.8% | 0.0% → 0.0% | 1.9% → 2.5% | 0.0% → 0.0% |
Post bills are 2024–2025 pooled. Home Depot’s 2020 and 2022 counts are thin (1,273 and 3,482); 2024–2025 is not. IKEA is the densest series in the file.
Shipper string versus load port
Table 3 is the question the literature cannot ask with Census partner shares. Take every 2024–2025 bill to the locked consignee with origin Vietnam, Mexico, or India. Ask whether that shipper string already appeared on a China bill to the same consignee in 2016–2017.
Table 3. Plus-One bills (VN+MX+IN) in 2024–2025, by whether the shipper string was a 2016–17 China supplier to that consignee
| Importer | Plus-One bills | Same string (old name, new port) |
New string | Dual names in 2024–25 (China and Plus One) |
|---|---|---|---|---|
| Home Depot | 3,529 | 5.3% | 94.7% | 63 of 185 Plus-One names |
| Mattel | 1,694 | 8.1% | 91.9% | 3 of 30 |
| lululemon | 1,065 | 10.1% | 89.9% | 1 of 58 |
| IKEA | 22,204 | 9.7% | 90.3% | 18 of 215 |
| Costco | 237 | 51.1% | 48.9% | 1 of 27 |
| Tesla | 556 | 0.0% | 100.0% | 1 of 67 |
New names, not new gateways, are the mass. Among firms with at least 100 Plus-One bills, 88.0% of those bills carry a shipper string that was not on the consignee’s China file in 2016–2017. Home Depot: 3,221 Vietnam bills, 186 of them (5.8%) from eight strings that already shipped from China; 3,035 from 143 new strings. India is 308 bills, all new strings. The same-string examples that do exist look like exporters, not a port code change: Nextech Brands, Triple J Enterprise, Chin Shu Wooden, Gemmy Industries. The new-string list is larger and mixed—Vietnamese manufacturers such as Vietnam Risesun New Material, and forwarders such as Expeditors Vietnam. A new string is not automatically a new factory. It is not the old China string either.
Home Depot also keeps China. 63 of 185 Plus-One shipper names still appear on that firm’s China bills in 2024–2025. That is Plus One as written: both origins, same buyer, overlapping names. It is not a wholesale exit.
Costco is the exception that proves the filter. Only 237 Plus-One bills, and half are same-string. Small Plus-One volume is where gateway-shifting can look large. The means exclude it if the threshold is set at 100 bills; at 50 it would pull the same-string average up. The paper reports both the table and the 88.0% mean under the 100-bill rule.
5. Discussion
Javorcik–Pierce–Wisniewski find US importers cut China’s share and raised other Asia and Latin America after 2018. On ocean bills, that pattern is firm-specific. Home Depot and Mattel match the narrative. IKEA matches India, not Vietnam, and does not leave China. Costco does not move. Tesla’s ocean file becomes more Chinese. A mean across name-stable, China-exposed retailers (Home Depot, IKEA, Costco, Mattel) is about −17 points of China share and +11 points of Vietnam share. The all-firm mean in the replication snapshot is smaller because Tesla, Toyota, and Walmart’s name hole pull the other way.
Alfaro–Chor’s reallocation toward Vietnam is visible in the corpus (3.5% → 5.9%) and in Home Depot, Mattel, and lululemon. It is not a universal consignee fact. Mexico as a Plus-One ocean origin is a miss. Toyota’s Mexican ocean share barely moves. That is the right miss: US–Mexico merchandise is truck and rail. Using ocean bills to audit USMCA nearshoring will produce a false negative. The paper states that in the methods, not in a footnote after a zero.
The shipper–port split is the contribution relative to partner-share papers. If Plus One were mostly Chinese plants routing through Vietnam, same-string shares would be high. They are not, except on Costco’s thin Plus-One margin. The remaining ambiguity is entity resolution: a Chinese parent can open a Vietnamese subsidiary with a new AMS name, and this test will call it a new string. That is still not “the same shipper_name changed load port,” which is the claim this design can kill. Parent-level matching would be the next paper, not a reinterpretation of Table 3.
The 2024–2025 corpus China spike deserves the same suspicion this project applied to Walmart 2017. If later work shows that spike is an ingest artifact, Home Depot’s Vietnam rise is even harder to explain as a file-wide China coding change: Home Depot’s China share fell while the file’s China share rose.
6. Conclusion
Large US ocean importers did not all replace China. Two of them in this sample did, on the bill-count margin, and they did it mostly with new shipper strings rather than old China strings leaving from a new port. IKEA added India and kept China. Costco kept China. Tesla added China. Toyota’s Mexican ocean file is not USMCA. Mexico truck is out of sample. The public BOL contribution is the string-versus-port split, not a new tariff elasticity.
Three extensions would tighten the claim. Parent-level matching of shipper strings would turn “new name” into “new firm.” Product-family restriction would stop a retailer adding furniture factories from counting as leaving an electronics mill. Joining vessel AIS, as in Ganapati–Wong–Ziv, would separate a Vietnamese factory from a Chinese factory feeding a Vietnamese transshipment port. Until then, the honest sentence is: among locked US consignee names with dense ocean coverage, Plus One is real for some retailers, absent for others, invisible for Mexico, and, where it appears, not primarily the same exporter changing load port.
Appendix. Core queries
Every statement run for the snapshot, including name discovery, is on the replication page. The three designs are below.
A. Corpus origin by year
SELECT toYear(actual_arrival_date) AS year,
multiIf(
match(upperUTF8(country), 'HONG KONG'), 'HK',
match(upperUTF8(country), 'CHINA') OR match(upperUTF8(country), '^CN(,|\\s|$)'), 'CN',
match(upperUTF8(country), 'VIET') OR match(upperUTF8(country), '^VN(,|\\s|$)'), 'VN',
match(upperUTF8(country), 'MEXICO') OR match(upperUTF8(country), '^MX(,|\\s|$)'), 'MX',
(match(upperUTF8(country), 'INDIA') AND NOT match(upperUTF8(country), 'INDONESIA'))
OR match(upperUTF8(country), '^IN(,|\\s|$)'), 'IN',
'OTHER') AS origin,
uniqExact(bill_of_lading) AS bols
FROM bols
WHERE actual_arrival_date >= toDate('2016-01-01')
AND actual_arrival_date <= toDate('2025-12-31')
GROUP BY year, origin
ORDER BY year, origin
B. Firm-year origin shares (Home Depot names)
SELECT toYear(actual_arrival_date) AS year, origin, uniqExact(bill_of_lading) AS bols
FROM (
SELECT actual_arrival_date, bill_of_lading,
multiIf(match(upperUTF8(country), 'CHINA') OR match(upperUTF8(country), '^CN(,|\\s|$)'), 'CN',
match(upperUTF8(country), 'VIET'), 'VN',
match(upperUTF8(country), 'MEXICO'), 'MX',
match(upperUTF8(country), 'INDIA') AND NOT match(upperUTF8(country), 'INDONESIA'), 'IN',
'OTHER') AS origin
FROM bols
WHERE consignee_name IN ('HOME DEPOT USA INC','HOME DEPOT USA','THE HOME DEPOT INC', /* locked list */)
AND actual_arrival_date >= toDate('2016-01-01')
AND actual_arrival_date <= toDate('2025-12-31')
)
GROUP BY year, origin
C. Same shipper string versus new string
WITH base AS (
SELECT upperUTF8(trimBoth(shipper_name)) AS shipper,
toYear(actual_arrival_date) AS y,
origin, bill_of_lading AS bol
FROM bols
WHERE consignee_name IN (...locked names...)
AND actual_arrival_date >= toDate('2016-01-01')
AND actual_arrival_date <= toDate('2025-12-31')
AND trimBoth(shipper_name) != ''
),
pre_cn AS (
SELECT DISTINCT shipper FROM base WHERE y IN (2016, 2017) AND origin = 'CN'
),
post AS (
SELECT shipper, origin, bol FROM base
WHERE y IN (2024, 2025) AND origin IN ('VN','MX','IN')
)
SELECT post.origin,
uniqExact(post.bol) AS bols,
uniqExactIf(post.bol, pre_cn.shipper != '') AS bols_same_string,
uniqExactIf(post.bol, pre_cn.shipper = '') AS bols_new_string
FROM post
LEFT JOIN pre_cn ON post.shipper = pre_cn.shipper
GROUP BY post.origin
Sources
- Kirchner. 2026. “China Plus One on ocean bills of lading, 2016–2017 vs 2024–2025.” Replication of the ClickHouse snapshot: locked consignee names, yearly origin shares, shipper-string split, and every SQL statement. /research-china-plus-one.
-
Kirchner.
kirchner.bols. US ocean bills of lading from CBP Automated Manifest System filings, 2016–2025. Runner:scripts/run-china-plus-one.php. - Alfaro, Laura, and Davin Chor. 2023. “Global Supply Chains: The Looming ‘Great Reallocation’.” NBER / Jackson Hole. Partner-share reallocation away from China toward Vietnam and Mexico.
- Javorcik, Beata, Justin Pierce, and David Wisniewski. 2025. “China Plus One.” Firm-product US import responses to the 2018 tariffs: lower China share, more Asia and Latin America, more related-party trade.
- Gopinath, Gita, Pierre-Olivier Gourinchas, Andrea F. Presbitero, and Petia Topalova. 2025. “An update on the great reallocation in US supply chain trade.” CEPR/VoxEU. Official US import shares through 2025.
- Flaaen, Aaron, Flora Haberkorn, Logan Lewis, Anderson Monken, Justin Pierce, Rosemary Rhodes, and Madeleine Yi. 2023. “Bill of lading data in international trade research.” Review of International Economics. What public BOLs can and cannot do relative to Census LFTTD.
- Ganapati, Sharat, Woan Foong Wong, and Oren Ziv. “Entrepôt: Hubs, Scale, and Trade Costs.” Why a new load port need not be a new factory.
- U.S. Customs and Border Protection. Automated Manifest System / ocean bill of lading public filings (19 U.S.C. § 1431; 19 CFR § 103.31).
- Kirchner. JSON snapshot consumed by the replication page (rebuilt by re-running the PHP runner). /research-china-plus-one. The article body above does not load that file.