Three of my clients are in full-on panic mode right now. Between the 145% China tariffs, the baseline 10% reciprocal tariffs, and rates that seem to change with every news cycle, their bookkeeping has turned into a nightmare. I’m reaching out because I’m genuinely struggling with how to model this cleanly in Beancount.
The Problem
I manage books for about 20 small businesses here in Austin. Five of them import goods—everything from restaurant supplies to specialty retail products. Before 2025, tariffs were a line item I barely thought about. Now? Tariffs are 15-40% of some clients’ COGS, and the rates keep shifting.
Here’s what I’m wrestling with:
1. Landed Cost Allocation
Per GAAP, tariffs must be capitalized into inventory, not expensed immediately. They hit COGS only when inventory is sold (matching principle). But in Beancount, I’m currently doing this:
2026-04-01 * "Shanghai Supplier" "Q2 Restaurant Supplies"
Assets:Inventory:Supplies 5,000.00 USD
Expenses:Tariffs:China 2,250.00 USD ; 45% tariff rate
Liabilities:AccountsPayable -7,250.00 USD
This is wrong—the tariff should be part of the inventory cost, not a separate expense. But if I lump it all into Assets:Inventory, I lose visibility into how much I’m paying in tariffs vs. actual product cost.
2. Rates Change Constantly
The China rate was 25% under the original Section 301 tariffs, then jumped in waves through 2025, and now sits at 145% on most goods. The 10% baseline reciprocal tariff hit in April 2025. Some clients import from multiple countries, each with different rates. How do you track which tariff rate applied to which shipment?
3. Potential Tariff Refunds
After the February 2026 Supreme Court ruling questioning tariffs levied under IEEPA, some of these duties might be refundable. How do I set up my books so I can quickly identify which tariff payments might be recoverable?
What I’ve Tried
I created a metadata-heavy approach:
2026-04-01 * "Shanghai Supplier" "Q2 Restaurant Supplies"
Assets:Inventory:Supplies 7,250.00 USD
tariff_rate: "45%"
tariff_amount: "2250.00"
tariff_authority: "Section-301"
origin_country: "CN"
base_product_cost: "5000.00"
Liabilities:AccountsPayable -7,250.00 USD
This capitalizes correctly, but I can’t easily query “show me total tariff costs across all clients” because the tariff amount is buried in metadata strings, not actual postings.
My Questions for the Community
-
What’s your account structure for tariff-affected inventory? Do you use sub-accounts like
Assets:Inventory:Supplies:BaseCostandAssets:Inventory:Supplies:TariffDuty? Or a completely different approach? -
How do you handle rate changes mid-shipment? If a tariff rate changes between when goods ship and when they clear customs, which rate do you book?
-
Anyone built a Beancount plugin or importer that pulls tariff rates automatically (from CBP data or similar)?
-
For the CPAs here: what’s the correct treatment if tariffs paid under IEEPA get ruled invalid and refunds are issued? Reduce COGS retroactively? Book as Other Income?
I know I’m not the only bookkeeper drowning in this. 61% of small businesses report tariffs have negatively impacted operations according to the 2026 NSBA Trade Impact Survey, and most of them are doing this tracking in Excel or not at all. Beancount should be able to do this better—I just need help figuring out how.
Looking forward to hearing how others are handling this.