---
title: "AES fatal errors: what each response code means and how to fix it"
description: "Your EEI came back rejected in ACE AESDirect. Here is what the five response types mean, what each fatal error code is telling you, and how to correct and retransmit."
canonical: https://exportdocshub.com/blog/aes-fatal-errors-response-codes
published: 2026-09-02
---

# AES fatal errors: what each response code means and how to fix it

> Your EEI came back rejected in ACE AESDirect. Here is what the five response types mean, what each fatal error code is telling you, and how to correct and retransmit.

You filed in [AESDirect](/blog/do-i-need-to-file-eei-in-aes), and instead of the 15-character number you were waiting for, the response came back with a rejection and a string of three-character codes. No [ITN](/blog/what-is-an-itn-number) means nothing to write on the bill of lading, which means the shipment does not move.

This page decodes that response. It covers the five kinds of message AES sends, the disposition code on the top line, the fatal errors a small self-filer actually hits with the exact narrative text you will see on screen, and the correction rules that decide whether fixing the error also fixes your compliance record.

## The five response types

Every message AES returns carries a severity, and the severity, not the wording, tells you whether you have a shipment on file. The Census Bureau's [response messages page](https://www.census.gov/foreign-trade/aes/response-messages.html) defines them:

| Type | Census definition | Accepted? | ITN issued? | What you do | Deadline |
|---|---|---|---|---|---|
| **Fatal Error** | "sent by the AES when invalid or missing data has been reported, the EEI has been rejected, or when the information is not on file in the AES" | No | No | Correct and retransmit | Before export if predeparture; within 5 calendar days of export if postdeparture ([15 CFR 30.9](https://www.law.cornell.edu/cfr/text/15/30.9)) |
| **Warning** | "sent by the AES when additional data is required on a filing but the filing is accepted" | Yes | Yes | Transmit the missing data | 4 calendar days; AES sends reminders |
| **Verify** | "sent by the AES when shipment data conflicts with a U.S. Census Bureau parameter regarding a commodity or another unlikely condition is found" | Yes | Yes | Check the field; correct only if it is wrong | 4 calendar days if a correction is warranted |
| **Compliance Alert** | "sent by the AES when a reporting compliance violation has or has likely occurred" | Yes | Yes | Nothing to fix. Review filing practices | None. The mark is permanent |
| **Informational** | "sent by the AES to provide non-critical notification to the filer. No action is required by the filer" | Yes | Yes | Nothing | None |

Only the first row stops your shipment. The other four all mean you have an ITN in hand and the goods can move while you sort out the data.

The front matter of CBP's [AESTIR Appendix A](https://www.cbp.gov/sites/default/files/2025-07/ACE%20Appendix%20A%20-%20Commodity%20Filing%20Response%20Messages%2007072025_508%20-%20Copy.pdf), the 231-page document that defines all 722 response codes, states the consequence in capitals: "FAILURE TO RESPOND TO FATAL CONDITION MESSAGES OR OTHERWISE TRANSMIT CORRECTIONS TO AES CONSTITUTES A VIOLATION OF THE PROVISIONS OF THE FOREIGN TRADE REGULATIONS." Ignoring the response is a separate offense from the error itself.

## Reading the top line: disposition codes

Before the specific errors, AES sends one code that summarizes what happened to the whole shipment. Learn these seven and you can triage any response in two seconds.

| Code | Narrative text | Meaning |
|---|---|---|
| **974** | SHIPMENT ADDED | Clean acceptance. ITN issued, nothing outstanding |
| **971** | SHIPMENT ADDED; MUST CORRECT WARNINGS | Accepted, but data is missing. Four days to supply it |
| **972** | SHIPMENT ADDED; MUST VERIFY | Accepted. Something looks unlikely. Check it |
| **973** | SHIPMENT ADDED; COMPLIANCE ALERT | Accepted, and a compliance violation was recorded |
| **975 to 978** | SHIPMENT REPLACED (clean, warnings, verify, or compliance alert) | Your correction landed. 978 is the clean one |
| **979 / 980** | SHIPMENT CHANGED; MUST CORRECT WARNINGS / MUST VERIFY | A change action was accepted with something outstanding |
| **970** | SHIPMENT REJECTED; RESOLVE & RETRANSMIT | Rejected. No ITN. Read on |

Two more are worth recognizing. **97H SHIPMENT ON HOLD** is a CBP hold rather than a data problem: call the port with your ITN. **999 UNDETERMINED ERR CONTACT CBP CLIENT REP** is fatal and means the system could not classify the failure at all.

### 970 is not the error

This is the single most useful thing on this page. **Code 970 is a wrapper.** It tells you a rejection happened, not what caused it. The Census Bureau's [ACE AESDirect FAQ](https://www.census.gov/foreign-trade/aes/aesdirect/ACE-AESDirect-FAQ.pdf) puts it plainly: "The 970 Fatal Error is a supplemental error informing you of another fatal error on the shipment."

So when a response reads `970` followed by `628`, the 628 is your work. People lose an afternoon searching "AES error 970" and find nothing specific, because there is nothing specific to find. Scroll to the second code.

### Where the response actually appears

Two places, per the [ACE AESDirect User Guide](https://www.census.gov/foreign-trade/aes/aesdirect/AESDirect-User-Guide.pdf): "You can access responses in your response e-mail or through the Shipment Manager."

The **response email** goes to every address you typed in the E-mail Response Address field in step 1 of the filing. An accepted filing carries the ITN; a rejected one carries a rejection statement. If nobody at your company got an email, check what address was in that field, not your spam folder.

**Shipment Manager**, inside the ACE portal, shows every filing you made through the portal with a status of Draft, Accepted, or Rejected. Two details matter. The most recent submission under a shipment reference number is the current status of the shipment, so a corrected filing supersedes the rejected one in the list. And Shipment Manager displays 90 days at a time: use Show Filters to search back up to five years, in 90-day windows.

## The fatal errors a self-filer actually hits

Appendix A defines 722 codes. Most exist for EDI batch filers and government systems. The ones below are the ones that reject a hand-typed AESDirect filing from a small exporter. Narrative text is verbatim from Appendix A, so you can match it character by character against what is on your screen.

### Classification, units, quantity, and value

| Code | Narrative text | Why it fires | Fix |
|---|---|---|---|
| **622** | SCHED B/HTS NBR MISSING | No classification on the line, and your Export Information Code is not HH | Enter the [Schedule B or HTS number](/blog/schedule-b-number-vs-hs-code). Only household goods may omit it |
| **623** | SCHED B/HTS NBR UNKNOWN | The number is not a known value in AES | Usually a digit transposed, or a code that never existed. Verify against the Schedule B search |
| **624** | SCHED B/HTS NBR OUTDATED - CANNOT BE USED | Schedule B is revised annually and your code expired | "Compare the Estimated Date of Export to the Begin/End date of the Schedule B/HTS Number reported, correct and retransmit" |
| **628** | 1ST UOM CODE / SCHED B/HTS MISMATCH | The unit of measure is not the one this classification requires | "The Unit of Measure (1) must match exactly the Unit of Measure (1) prescribed by the Schedule B/HTS Number reported." The list is Appendix K |
| **641** | QUANTITY 1 MUST BE GT ZERO | Quantity is zero or blank | Every line needs a positive first quantity |
| **649** | QUANTITY 1 CANNOT EXCEED SHPING WGT | When the required unit of measure is KG, net quantity cannot exceed shipping weight | Almost always pounds entered where kilograms were expected |
| **528** | VALUE OF GDS MUST BE GT ZERO | Value reported as zero | Report the USD value even for samples and warranty replacements. Zero is accepted only for certain munitions technical documentation |

Code **625 SCHED B/HTS NBR OUTDATED-IN GRACE PERIOD** is the friendly warning shot before 624. It is a Verify, not a fatal, because "AES allows a 30-day grace period during which time an outdated Schedule B/HTS Number continues to be accepted." Treat a 625 as a deadline: update the code now, or the next filing under it is a rejection.

### USPPI

| Code | Narrative text | Why it fires | Fix |
|---|---|---|---|
| **240** | USPPI ADDR LINE 1 INELIGIBLE | The address line "contains variations of 'P.O. Box or UNKNOWN, UNK, UNKN'" | Report the physical address the goods leave from, per [FTR 30.6(a)(1)(ii)](https://www.law.cornell.edu/cfr/text/15/30.6). Census is blunt about it: "A Post Office Box (PO Box) cannot be used as the USPPI address in the AES" ([Census blog](https://www.census.gov/newsroom/blogs/global-reach/2021/03/avoiding-fatal-errors-usppi-address.html)) |
| **242** | USPPI ADDR LINE 2 INELIGIBLE | Same rule applied to the second address line | Same fix. A PO Box on line 2 fails as surely as one on line 1 |
| **034** | HEADER USPPI EIN LOCATION INVALID | Positions 10 and 11 of the EIN field are not valid | Those two positions are an optional location suffix. "If this location feature is not used, positions 10-11 must be zero filled" |
| **26C** | USPPI ADDRESS STATE CODE INCORRECT | The state in the USPPI address differs from the U.S. State of Origin. This is a Compliance Alert, not a fatal | Both fields describe the same place: where the goods begin the journey to the port. Fix it so the next filing is clean |

The 240 family is the classic small-exporter rejection, because the PO Box is the address on your letterhead and in your accounting system. AES wants the warehouse, not the mailbox.

### Carrier and port of export

| Code | Narrative text | Why it fires | Fix |
|---|---|---|---|
| **118** | CARRIER CODE MISSING | No SCAC or IATA code entered | If the carrier genuinely is not known yet, AES accepts placeholders: `UNKN` for vessel, rail, and truck, and `*F`/`99F`, `*U`/`99U`, `*C`/`99C` for unknown foreign, US, and Canadian air carriers. Correcting it later is then your responsibility |
| **120** | CARRIER UNKNOWN | The SCAC or IATA code is not active in AES | Same placeholders apply. If a carrier's new SCAC is still not live 48 hours after NMFTA approval, the carrier contacts amsscac@cbp.dhs.gov |
| **127** | PORT OF EXPORT MISSING | No port code | Appendix D holds the list. The port is "the domestic port from which the merchandise is last laden for departure" |
| **128** | PORT OF EXPORT UNKNOWN | The code is not a valid port | Look it up rather than guessing from the city name |
| **133** | PORT OF EXPORT MUST BE AN AIR PORT | Mode of transport is Air but the port code is not flagged as an air port | Fix the pairing. Sister codes 130, 131, 132, and 134 do the same for vessel, rail, road, and fixed transport |
| **170** | AIR WAYBILL FORMAT: NNN-NNNNNNNN | The Transportation Reference Number on an air shipment is not in `NNN-NNNNNNNN` shape | On air, the usual fix is to empty the field. The Census FAQ says the TRN "is a conditional data element and is only required for vessel shipments... This field is optional for air, truck, and rail shipments" |

Code 170 deserves the emphasis. Exporters see a field labeled air waybill, type their house air waybill number, and get rejected. Unless you have a master air waybill in the exact numeric format, leave it blank.

### Dates and state of origin

| Code | Narrative text | Why it fires | Fix |
|---|---|---|---|
| **100** | EST DATE OF EXPORT MISSING | No estimated date of export | Enter it |
| **101** | ESTIMATED DATE OF EXPORT UNKNOWN | The date is not a valid date | Check the format and the calendar. February 30 rejects |
| **103** | EST DATE OF EXPORT > 120 DAYS IN FUTURE | The date is more than 120 days out | AES will not hold a filing that far ahead. File closer to departure |
| **109** | STATE OF ORIGIN MISSING | No U.S. state of origin | The state where the goods began their journey to the port, which is not necessarily where your company is registered |

There is a January trap here. Verify code **399 IS THE ESTIMATED DATE OF EXPORT CORRECT?** fires when the date "does not match the current year," which is exactly the typo everyone makes in the first weeks of January. It is a Verify, so the filing is accepted with an ITN, and the wrong year sits on the record until somebody notices.

### Ultimate consignee

| Code | Narrative text | Why it fires | Fix |
|---|---|---|---|
| **228** | ULTIMATE CONSIGNEE PARTY MISSING | No consignee on the filing | Required on every EEI. There is no such thing as an anonymous export |
| **311** | ULT CONS PARTY NAME MISSING | The party exists but has no business name | Legal name of the receiving entity |
| **339** | ULT CONS TYPE IS MISSING | The consignee type field is blank | Pick one: D for Direct Consumer, G for Government Entity, O for Other or Unknown, R for Reseller |
| **25B** | ULT CONS COUNTRY CANNOT BE US | The consignee country is US while the destination is not the US or Puerto Rico | Report the actual foreign location. Puerto Rico is state PR with country US; the US Virgin Islands are country VI with no state |

If the buyer has genuinely not been identified yet, the shipment can be flagged "To Be Sold en Route," which produces Warning **341 ULT CONS MUST BE REPORTED WITHIN 4 DAYS**. That is an accepted filing with a clock on it, not a rejection.

### License, ECCN, and export authority

These are the codes where the fix might not be a typo.

| Code | Narrative text | Why it fires | Fix |
|---|---|---|---|
| **503** | LICENSE CODE MISSING | No license or license exemption code | Every line needs an export authority. The codes are in Appendix F |
| **504** | LICENSE CODE UNKNOWN | The code is not valid in AES | Check Appendix F rather than inventing a symbol |
| **512** | ECCN MISSING | The license code you claimed requires an ECCN and none was given | Supply the ECCN. If you do not have one, you have a [classification question](/blog/do-i-need-an-export-license), not a filing question |
| **514** | EAR99 ECCN REQUIRED FOR LICENSE CODE | The license code requires the ECCN field to read exactly EAR99 | Type `EAR99`, not "EAR-99" or "N/A" |
| **515** | ECCN MUST BE FORMATED NANNN | The ECCN is the wrong shape | Number, letter, three digits, as in `3A001` |
| **66Q** | ECCN & CTRY OF DEST NOT ALLOWED FOR NLR | You claimed C33 (No License Required) for an ECCN that is not eligible for that destination | This is a real export-control stop, not a data slip. "Review the Export Administration Regulations (15 CFR Parts 700-799). Contact the Bureau of Industry and Security at (202) 482-4811." Census raised 66Q from Compliance Alert to Fatal on May 21, 2024 |

Treat 66Q differently from everything else on this page. Every other fatal error is AES telling you that you typed something wrong. 66Q is AES telling you that the shipment, as described, may not be legal to send under the authority you claimed. Do not hunt for a license code that gets the filing through. Go back to the classification, and read [what a license exception does and does not do](/blog/ear-license-exception-aes-filing) before you resubmit.

### Shipment reference number

| Code | Narrative text | Why it fires | Fix |
|---|---|---|---|
| **064** | SHIPMENT REFERENCE NBR MISSING | No SRN | 1 to 17 alphanumeric characters, your own scheme |
| **065** | SHIPMENT REFERENCE NBR CONTAINS SPACES | Spaces inside the SRN | Left justify, no spaces. `PO 1042` fails, `PO-1042` passes |
| **075** | SRN ON FILE; ACTION NOT ALLOWED | You sent an Add under a shipment reference number that already exists | "The reuse of the SRN is prohibited." Either amend the existing filing or pick a new number |
| **068** | SHIPMENT NOT ON FILE; ACTION NOT ALLOWED | You sent a Change, Replace, or Cancel for an SRN AES has no record of | A typo in the number, or the original submission never landed |

## Correcting a rejected filing

### The deadlines

[15 CFR 30.9](https://www.law.cornell.edu/cfr/text/15/30.9) sets them. Fatal errors are corrected prior to export for shipments filed predeparture, and for postdeparture shipments no later than five calendar days after the date of export. Warnings run to four calendar days. Verify messages get four calendar days when a correction is warranted. Missing those windows is a Subpart H matter, independent of whatever the original error was.

### Same SRN to correct, never the same SRN twice

Two rules that look contradictory until you see the mechanism.

The User Guide says the shipment reference number is "a unique identification number (1 - 17 alphanumeric characters) used to identify each shipment. The reuse of a Shipment Reference Number is prohibited," and recommends you "establish a unique format to create Shipment Reference Numbers and maintain a log of those already used."

And yet correcting a filing means submitting under the same SRN: "To correct a shipment, retrieve the shipment from the AES, correct the error, and submit the shipment to the AES."

The reconciliation is in code 075, which fires only "When the Shipment Filing Action Request Indicator is an Add." Correcting is not an Add. It is a Change or Replace against a record AES already holds. So: one SRN per physical shipment, forever, and every correction to that shipment travels under it. What is prohibited is starting a *new* shipment under a number you already used.

> If you already re-filed a rejected shipment under a fresh SRN, the abandoned fatal error stays on your Fatal Error Report until you clear it. Email ftd.aes.fatal.reports@census.gov with the original SRN, the new SRN, and the new ITN. Census asks you to "allow 1-2 weeks for the fatal error to be removed." The same address handles shipments that were cancelled or never exported, and cases where your forwarder filed instead of you. For ten or more transactions, send an Excel file with one column per data point.

### Never cancel a rejected filing

This one costs people a violation they did not have. From the Census Bureau's bulletin [Understanding the Shipment Manager and Fatal Errors in ACE AESDirect](https://content.govdelivery.com/accounts/USCENSUS/bulletins/14da021):

> "DO NOT attempt to cancel any Rejected transmission. This will cause a Fatal Error even if the transmission already had an Internal Transaction Number (ITN)."

The instinct is understandable. The filing is wrong, so you want it gone. But a rejected transmission is not a record AES holds, so there is nothing to cancel, and asking to cancel it generates a fresh fatal error against your filer ID. Amend the most recent accepted submission and resubmit instead.

### What the buttons do in ACE

Shipment Manager gives you three actions, and they are not interchangeable:

- **Amend** retrieves the filing, lets you edit it, and resubmits. AES processes this as a Replace or Change and answers with a disposition code in the 975 to 980 range. This is the action for correcting a rejection.
- **Cancel EEI** withdraws an *accepted* filing for a shipment that will not move. Never point it at a rejection.
- **Delete** removes a draft that was never submitted.

If the Shipment Actions links are not visible on a row, click the green circle with a plus sign on the left of that row. For filings older than 90 days, use Amend Accepted Filings and supply the ITN, SRN, and Filer ID.

## Verify messages and compliance alerts

Verify messages are the ones exporters over-respond to. AES flags a value or quantity outside the historical range Census holds for that Schedule B number (codes **8H1** and **8L1** for value and quantity high and low, and the **835** to **838** family), or an unusual pairing such as **808 IMPROPABLE DESTINATION FOR COMMODITY**. The misspelling of "improbable" is in the government's text, and it has been there for years, so do not go looking for a code you typed wrong.

The guidance in Appendix A is the same each time: "If the line item is verified correct as reported, no action is necessary." Check the field, especially whole-dollar values and metric conversions. If the data is right, leave it. Retransmitting a correct filing to make a verify message go away can move the transmission date and earn you a **700 SHIPMENT REPORTED LATE; OPT 2** compliance alert, which is a genuine mark where the verify was not.

Compliance alerts work in the opposite direction: you cannot fix them, and they stay. **700** and **701** record late predeparture and postdeparture filings, **702** and **703** record lines added or deleted after departure, and **711 PREDEPARTURE FILING REQ FOR RPRTED CMDTY** records postdeparture filing on a commodity that was never eligible for it. Alerts and unresolved fatal errors are what move your [AES compliance rate](https://www.census.gov/foreign-trade/aes/documentlibrary/aescompliancereport.html); warnings, verifies, and informational messages do not count against it, and the threshold Census expects is 95 percent.

That is the practical argument for reading these codes properly. The fatal you fix today does not hurt you. The fatal you abandon, and the alert you earned by panicking about a verify, both do.

## Who to call

| What you need | Contact |
|---|---|
| AES filing problems, fatal errors, monthly reports | 800-549-0595 option 1, askaes@census.gov, Mon to Fri 7:30am to 5:30pm ET |
| Schedule B classification, verify-parameter change requests | 800-549-0595 option 2, eid.scheduleb@census.gov, Mon to Fri 8:00am to 5:30pm ET |
| Regulations and responsibilities of the parties | 800-549-0595 option 3, emd.askregs@census.gov, Mon to Fri 7:30am to 6:30pm ET |
| Clearing a resolved fatal error off your report | ftd.aes.fatal.reports@census.gov |
| ACE login, password, locked account | CBP ACE Account Service Desk, 866-530-4172, ace.support@cbp.dhs.gov. The phone menu tree moves, so lead with the number and the email |
| Export control questions raised by a 66Q | Bureau of Industry and Security, (202) 482-4811 |
| A SCAC still not accepted 48 hours after NMFTA approval | The carrier contacts amsscac@cbp.dhs.gov |

Everything above is reference guidance, not a classification or licensing determination. Which Schedule B number your product takes, which ECCN applies, and whether your destination and end use permit the authority you claimed are yours to establish, and a licensed customs broker or export counsel is the right call when the answer is not obvious.

## The pattern under the error list

Read the fatal error table again and notice how few of these are hard questions. A PO Box where a warehouse address belongs. Pounds in a kilogram field. A house air waybill in a master air waybill field. Last year in a date. A Schedule B number that was fine in March and expired in January. These are transcription failures, and they happen because the shipment exists in four places at once: the invoice in Word, the packing list in Excel, the forwarder's form, and the AES screen.

[ExportDocsHub](/) removes the transcription step. One shipment record holds the consignee, the [Schedule B numbers](/blog/schedule-b-number-vs-hs-code), the values, the weights, and the Incoterm, and the [commercial invoice](/blog/commercial-invoice-vs-proforma-invoice), the packing list, the certificate of origin, and the [SLI](/blog/shippers-letter-of-instruction) all read from it, so the numbers you type into AES match the numbers on the paper. If you would rather not decode a response code because you typed a value twice, [start a free trial](https://exportdocshub.com/sign-up). No credit card required.

---

**Further reading**

- CBP: [AESTIR Appendix A, commodity filing response messages](https://www.cbp.gov/sites/default/files/2025-07/ACE%20Appendix%20A%20-%20Commodity%20Filing%20Response%20Messages%2007072025_508%20-%20Copy.pdf) (all 722 codes, PDF)
- Census: [AES response messages](https://www.census.gov/foreign-trade/aes/response-messages.html)
- Census: [Fatal error reports and how to clear them](https://www.census.gov/aesfatals)
- Census: [ACE AESDirect FAQ](https://www.census.gov/foreign-trade/aes/aesdirect/ACE-AESDirect-FAQ.pdf) and [User Guide](https://www.census.gov/foreign-trade/aes/aesdirect/AESDirect-User-Guide.pdf)
- Cornell LII: [15 CFR 30.9, transmitting and correcting EEI](https://www.law.cornell.edu/cfr/text/15/30.9)

**Related on this site**

- [Do I need to file EEI in AES? A decision guide for small US exporters](/blog/do-i-need-to-file-eei-in-aes)
- [What is an ITN number? The 15 characters that prove your export was declared](/blog/what-is-an-itn-number)
- [NOEEI exemption codes: the complete list for small US exporters](/blog/noeei-exemption-codes)
- [Schedule B number vs HS code: which one you need](/blog/schedule-b-number-vs-hs-code)
- [Do I need an export license? The question that cancels every AES exemption](/blog/do-i-need-an-export-license)
- [Does a license exception mean you skip AES? Usually not](/blog/ear-license-exception-aes-filing)
- [How to fill out a shipper's letter of instruction (SLI), step by step](/blog/shippers-letter-of-instruction)

*Written by [Anas Marwan](/authors/anas-n), Co-founder of Darza Technologies. Last reviewed 2026-09-02.*

---

Source: https://exportdocshub.com/blog/aes-fatal-errors-response-codes (https://exportdocshub.com)
