AES/EEI filing via API
What AES filing is
The Automated Export System collects Electronic Export Information (EEI). Most exports over $2,500 per Schedule B number, or needing an export licence, must be filed (15 CFR 30.2).
What this API does
It validates and stores your EEI data and prepares the submission. The API does not transmit the filing to CBP: submitting hands it to an AESDirect WebLink browser session, and the ITN comes back through the WebLink callback.
Endpoints
| Endpoint | Purpose |
|---|---|
| `POST /v1/aes/validate` | Check the data; returns `valid` and `issues` |
| `POST /v1/aes/prepare` | Validate and prepare submission data |
| `POST /v1/aes/filing` | Store a draft; returns `filingId` |
| `GET /v1/aes/filing/{id}` | Read a filing, including `itn` |
| `GET /v1/aes/filings` | List filings (filter by `status`, `usppiEin`) |
| `POST /v1/aes/filing/{id}/submit` | Hand the filing to AESDirect WebLink |
| `POST /v1/aes/filing/{id}/cancel` | Cancel |
All three POST bodies use the same schema, published in the OpenAPI spec as EEIFilingRequest. Field notes: usppi and ultimateConsignee are objects with an address; scheduleBNumber is ten digits with no dots; modeOfTransport is a code such as 40 for air; air shipments need carrierIdentification (a SCAC); port codes come from GET /v1/aes/reference/ports. Errors name the field, for example usppi.ein.
Filing status
DRAFT, VALIDATED, SUBMITTED, ACCEPTED, REJECTED, CANCELLED or FATAL_ERROR. A filing is VALIDATED when validation finds no errors. Rejections carry the response code and message from AES in aesResponseCode and aesResponseMessage.
The ITN
The ITN is your proof of filing; read it from GET /v1/aes/filing/{id} (itn) once the filing is accepted.
Was this article helpful?