Validation Pre-filing checks for every CBP FIRMS code →

Catch FIRMS code errors before ACE does.

One API call checks a FIRMS code against the port and use on your filing, before a reject, a re-file, or a container sitting at the terminal on your dime.

14,979 active codes 479 ports Data as of 2026-10-23

POST /v1/validate
$ curl https://api.firmsapi.com/v1/validate \
    -H "x-api-key: $FIRMSAPI_KEY" \
    -H "content-type: application/json" \
    -d '{"code":"E430","port":"2704","use":"location_of_goods"}'
valid: false 1 check failed, caught before ACE
  • ✓ Code format
  • ✓ On the FIRMS list ACE 158
  • ✓ Code is active ACE 159
  • ✕ In the stated port ACE 164 E430 is in port 4601, not 2704.
  • ✓ Type fits location of goods
  • ✓ Not a placeholder
  • ! Confirm in ACE: bond status, FTZ zone, direct delivery

The problem

A wrong FIRMS code is cheap to type and expensive to fix.

The FIRMS list is a 23,000-row file with deleted codes, placeholders and free-text names. One wrong character on an entry or in-bond starts a chain of costs.

Rejected filings

ACE rejects a code that isn't on the list, was deleted, or belongs to another port. Someone re-keys and re-transmits against the clock.

Cargo that sits

While the paperwork gets fixed, containers can run past free time and pile up storage and demurrage, charged per container, per day.

General order risk

Merchandise that isn't entered within 15 days of arrival can be sent to a general order warehouse, with storage and handling charges of its own.

Hours of exceptions

Every bad code means calls to the terminal, the carrier and the client: time nobody bills for.

Estimate what it costs you

Defaults are placeholders, not industry figures. Set them to your own numbers.

FIRMS code problems per month10
What they cost you$3,000
Caught before filing$1,800
FIRMSapi, validating every filing (Pro)$125
Net saving per month$1,675

Pre-filing validation

Six checks against CBP's list, before you transmit.

Each check targets the ACE reject it prevents. Where public data can't settle something, the response says so, so your team knows exactly what to confirm in ACE.

Code format

Four letters or digits. No stricter: a third of real codes break the usual pattern.

On the FIRMS list

The code exists in CBP's current list.

prevents ACE 158

Active

The code hasn't been deleted.

prevents ACE 159

In your port

The code is registered in the port on your filing.

prevents ACE 164

Right type for the use

Bonded warehouse for warehouse entry, FTZ for admission, CES for exams.

Not a placeholder

"DO NOT USE" rows and CBP test records never pass.

Knows what each filing needs

  • warehouse_entry needs a bonded warehouse (04)
  • ftz_admission needs a foreign trade zone (02)
  • exam_site needs a centralized examination station (09)
  • location_of_goods rules out DP sites and CBP admin codes (07, 08)

Honest about its limits

Every response lists the checks no public list can make, so nothing is silently assumed:

  • Bond status
  • FTZ zone and subzone ID
  • Direct delivery eligibility (ACE 238)
  • Port clusters that accept neighboring codes

Read the validation guide →

The platform

Everything else around a FIRMS code.

Paperwork says "Maher" or "PNCT", not E430. Search, lookup and nearby turn what people write into the right code, and the changes feed keeps you current as CBP updates the list.

Lookup

Any code, active or deleted, with address, type, port and status.

Search and autocomplete

Typo-tolerant search over names, addresses and aliases. "lbct long beach" finds WAC8.

Nearby

The closest CFS, bonded warehouses or exam stations to a point or a pier.

Batch Pro

Validate a whole morning of filings in one request.

Changes feed Pro

Every added, updated and deleted code since your last sync.

Watchlists and webhooks Enterprise

A signed webhook when a code you rely on changes.

Built for

Brokers, forwarders and the software they run on.

Stop paying for FIRMS code mistakes.

Test keys are free and never count. Live validation starts at $50/month for 200 calls, with 20 free calls a month to try it.

What's new