Tariff Costs Now Average $11,400/Month for Small Importers—Is Your Beancount Chart of Accounts Ready?

Last month I had one of those “oh no” moments that keeps bookkeepers up at night.

I was doing a quarterly review for one of my Austin-based clients—a small retailer importing home goods, mostly from Vietnam and China. She’d been faithfully recording everything in Beancount since we migrated her off QuickBooks two years ago. Revenue looked fine. Margins looked… not fine. Like, suspiciously not fine.

I dug in, and here’s what I found: she was booking tariff payments as a flat expense line under Expenses:Import-Fees. Just lumping everything together—customs duties, harbor maintenance fees, merchandise processing fees, the works. Her COGS looked artificially low, her expense ratios looked bloated, and when she went to her bank for a line of credit, the banker flagged her financials as “inconsistent with industry norms.”

That was the wake-up call. And honestly? I checked my other import-heavy clients and half of them had the same problem.

The Scale of What We’re Dealing With

If you haven’t been following the tariff situation closely, the numbers are staggering. Small businesses importing goods are now paying an average of $11,400 per month in tariff-related costs, according to the National Small Business Association’s 2026 Trade Impact Survey. That’s roughly triple the ~$3,800 monthly average from early 2024. Chinese goods face an effective combined tariff rate of around 145%. The average US tariff rate across all trading partners is sitting at approximately 17%—highest since Smoot-Hawley in the 1930s.

61% of small businesses report negative tariff impact. 43% importing from China say tariff costs now exceed 10% of their total COGS. This isn’t a rounding error anymore. This is a line item that deserves serious accounting attention.

The Wrong Way (What My Client Was Doing)

2026-03-15 * "Shenzhen Home Goods Co" "Q1 home goods shipment"
  Assets:Inventory:HomeGoods         15,000.00 USD
  Expenses:Import-Fees                4,200.00 USD
  Assets:Bank:Checking              -19,200.00 USD

This is wrong for two reasons. First, under GAAP (ASC 330-10-30-1), tariff costs must be capitalized into inventory, not expensed immediately. They flow to COGS only when that inventory is actually sold. Second, you’ve got zero visibility into what’s driving your landed cost. Is it the base product cost? Duties? Freight? You can’t manage what you can’t see.

The Right Way (What We Migrated To)

2026-03-15 * "Shenzhen Home Goods Co" "Q1 home goods shipment - ceramic planters"
  hts-code: "6914.90.8000"
  country-of-origin: "CN"
  duty-rate: "25%"
  section301-rate: "7.5%"
  shipment-id: "SHZ-2026-0342"
  Assets:Inventory:HomeGoods:BaseCost           12,000.00 USD
  Assets:Inventory:HomeGoods:Duty:Standard       3,000.00 USD
  Assets:Inventory:HomeGoods:Duty:Section301       900.00 USD
  Assets:Inventory:HomeGoods:Freight               480.00 USD
  Assets:Inventory:HomeGoods:CustomsBrokerage      320.00 USD
  Liabilities:AccountsPayable:ShenzhenHG       -12,000.00 USD
  Assets:Bank:Checking                           -4,700.00 USD

Then when we sell through:

2026-04-02 * "Sale of ceramic planters - Invoice #4521"
  Assets:AccountsReceivable          8,400.00 USD
  Income:Sales:HomeGoods            -8,400.00 USD

2026-04-02 * "COGS for ceramic planters - Invoice #4521"
  Expenses:COGS:HomeGoods:BaseCost   2,400.00 USD
  Expenses:COGS:HomeGoods:Duty         780.00 USD
  Expenses:COGS:HomeGoods:Freight       96.00 USD
  Expenses:COGS:HomeGoods:Brokerage     64.00 USD
  Assets:Inventory:HomeGoods:BaseCost          -2,400.00 USD
  Assets:Inventory:HomeGoods:Duty:Standard       -600.00 USD
  Assets:Inventory:HomeGoods:Duty:Section301     -180.00 USD
  Assets:Inventory:HomeGoods:Freight              -96.00 USD
  Assets:Inventory:HomeGoods:CustomsBrokerage     -64.00 USD

Yes, it’s more verbose. Beancount doesn’t mind verbose. That’s the whole point.

The Cash Flow Timing Problem Nobody Talks About

Here’s the thing that’s quietly killing small importers: 38% report cash flow problems specifically from tariff payments. You pay duties when goods clear customs, but you don’t sell those goods for weeks or months. My client was paying $4,200 in duties upfront on inventory she wouldn’t fully sell through for 90 days. That’s a cash flow gap that doesn’t show up if you’re just looking at a P&L.

With the decomposed chart of accounts above, I can run a quick query to see exactly how much cash is trapped in duty-related inventory at any point in time. That number has been the difference between my clients understanding why their bank account feels tight versus panicking about it.

The Metadata Is the Secret Weapon

Those hts-code and country-of-origin metadata tags aren’t just for show. When tariff rates change (and they change constantly—we’ve had three adjustments in the last six months alone), you need to be able to quickly identify which inventory lots are affected. One of my clients was able to reclassify some products under a different HTS code and save about $800/month. We only spotted the opportunity because we had clean data.

I’ll be honest—I learned most of this the hard way. I spent a decade doing restaurant books where the most complicated import was a case of olive oil from Italy. The tariff landscape in 2026 is a different animal entirely.

So I’m curious: how are the rest of you handling tariff costs in your Beancount setups? Anyone tracking country-of-origin at the transaction level? Has anyone built custom importers for customs broker statements? I’ve got 20+ clients and I feel like I’m reinventing the wheel with each one.

Bob, this is an excellent write-up, and I’m glad you’re flagging this for the community. Your decomposed chart of accounts is solid. Let me add some CPA-specific context that might save folks from problems down the road.

ASC 330 Is Non-Negotiable Here

You touched on this, but I want to be explicit: under ASC 330-10-30-1, tariff costs are part of the cost of inventory acquisition. Full stop. This isn’t optional or a “best practice”—it’s required under GAAP. KPMG’s most recent guidance reaffirms that tariffs, including the Section 301 tariffs on Chinese goods, are routine acquisition costs that must be capitalized into inventory.

I’ve seen some clients try to argue that the magnitude of recent tariff increases makes them “abnormal costs” that should be expensed immediately. That argument doesn’t hold. Abnormal cost treatment under ASC 330 is reserved for things like spoilage from a warehouse flood or costs from a factory shutdown—unexpected, non-recurring events. A tariff rate that’s been in effect for months, even if it’s 145%, is a known, recurring acquisition cost. You capitalize it.

The NRV Write-Down Risk Is Real and Growing

Here’s what keeps me up at night professionally: Net Realizable Value testing. If your client imports goods with a landed cost (including tariffs) of $50 per unit, but the market will only bear a $42 sale price, you have an inventory write-down obligation under ASC 330-10-35.

This is happening more than people realize. 67% of small businesses report that even domestic suppliers have raised prices citing their own tariff costs, which means the entire pricing environment is distorted. Companies that can’t pass through the full cost increase to customers are sitting on inventory that may be worth less than what they paid. In your Beancount setup, I’d strongly recommend adding periodic NRV test entries:

2026-03-31 * "NRV adjustment - ceramic planters lot SHZ-2026-0342"
  Expenses:InventoryWriteDown:HomeGoods    640.00 USD
  Assets:Inventory:HomeGoods:NRVReserve   -640.00 USD

Keep a separate reserve sub-account rather than directly reducing the inventory cost accounts. This preserves your historical cost data while reflecting the economic reality.

Audit Trail Is Everything

One more thing: if any of your clients are subject to audit—whether financial statement audit or IRS—the metadata approach Bob described is exactly right. I’d add one more field: broker-entry-number, which ties directly to the CBP entry summary (Form 7501). That’s your primary source document, and auditors will ask for it.

The businesses that get in trouble aren’t usually the ones who made wrong accounting decisions. They’re the ones who can’t prove what decisions they made or why. Beancount’s plain-text, version-controlled nature is genuinely an advantage here. Keep your customs broker statements in the same git repo as your ledger files, and you’ve got an audit trail that would make most of my Big Four colleagues jealous.