ASCI API

| Home | Swagger | All Forms | Documentation | HTS → | PGA Reference

ISF module page - how it works, an interactive test form, and the endpoint reference, all in one place. Set your tenant API Key in the Setup block below; every request sends the ApiKey header. See All Forms for the combined surface or Home for the module index.

How it works

Importer Security Filing (10+2) end to end.

ISF (Importer Security Filing “10+2”)

The ISF module mirrors the legacy ASCI screens IPISF1-IPISF6: an entry header (IPISF1), commercial entities / parties (IPISF5), tariff lines (IPISF6), bills of lading (IPISF2), containers (IPISF4) and additional references (IPISF3). The form below is a six-step wizard; each multi-row section is a repeater - use + Add to add rows.

Submit posts the assembled { document: { header, parties, tariff, bills_of_lading, containers, additional_references } } DTO to POST /api/Isf/Submit. reference_no defaults to NEW - the real reference is auto-assigned by ASCI at insert time; the response carries the submission_id. Customer / manufacturer / product / HTS fields look up your master data live (the HTS lookup needs an hts.read-scoped key). Poll the returned id with the inline status button.

API-first flow (2026-07): before sending anything, Validate dry-runs the payload against the same pre-send rules the ASCI “Send to ABI Message List (ISF 10+2)” report applies - errors are listed with the original wording and the offending inputs are highlighted. Submit files directly; Stage as Draft (submit_mode="draft") holds the filing in the API until you Transmit Draft (into the ASCI queue) or Transmit to CBP (the API builds the ISF CATAIR and files it with CBP directly - needs a cbp.submit-scoped key and the tenant’s “CBP via API” flag). Check Status shows the processing status and the CBP outcome side by side.

Setup

API key + base URL used by every request below.

Credentials

Leave Base URL blank to call this same server with relative paths (the normal case). Set it (e.g. https://asci-api.asciofmiami.com) to point the forms at another host. Every request below sends the ApiKey header.

Sent on every create / submit POST. Click Generate for a fresh one, or a new one is auto-generated per submit if blank.

Test form

Interactive form - POSTs to the API and shows the JSON response + HTTP status.

Maps to POST /api/Isf/Submit. Full Importer Security Filing ("10+2") data-entry wizard mirroring the legacy ASCI ISF screens IPISF1-IPISF6: the header (IPISF1) plus commercial entities / parties (IPISF5), tariff lines (IPISF6), bills of lading (IPISF2), containers (IPISF4) and additional references (IPISF3). Each multi-row section is a repeater - use + Add to add rows. reference_no defaults to NEW - the real reference is auto-assigned by legacy at insert time. The customer / carrier / manufacturer / product fields look up your master data live.

1 Entry Header
2 Parties
3 Tariff Lines
4 Bills of Lading
5 Containers & Refs
6 Validate & Submit

Step 1 - Entry Header (IPISF1). Who is filing, the Importer-of-Record identity, the transport mode + carrier, and the key dates. ISF is ocean only.

Filing
Importer of Record
Transport
“Import Security Filing is allowed only for MOT=10, or MOT=11” - 11 = Containerized, 10 = Non-containerized. MOT=10 disables Container Information (Step 5).
Dates
Step 1 of 6

Step 2 - Commercial Entities / Parties (IPISF5). The "10" in 10+2. Each row is one party with its type, name and address. Use the Customer lookup to auto-pick an existing customer/entity code. ISF-10 requires these party types: MF (manufacturer), SE (seller), BY (buyer), ST (ship-to), LG (stuffing location), CS (consolidator), CN (consignee) and IM (importer of record). ISF-5 instead requires ST + BKP (booking party) - the party-type dropdown follows the Submission Type picked in Step 1.

“Required records to identify the Commercial Entities reported in ISF.” — “Address Inf. is mandatory for: MF, SE, BY, ST, CS, LG” (CN/IM ride on the customer ID instead). State/Province is required when the country has subdivisions (e.g. US, CA).
Parties
Step 2 of 6

Step 3 - Harmonized Tariff Lines (IPISF6). The HTSUS tariff number(s) for the goods, one row per line. A harmonized record is mandatory for each Manufacturer (MF) party. Use the Manufacturer and Product lookups to populate the MID / product code; the product lookup is scoped to the manufacturer in the same row.

ISF-5 (Submission Type 2): Harmonized Tariff lines with a Country of Origin are required, together with the FROB / In-Bond record in Step 5.
Tariff Lines
Step 3 of 6

Step 4 - Bills of Lading (IPISF2). The B/L number is the carrier SCAC concatenated with the bill number, letters and digits only (no spaces or punctuation). OB = regular (ocean) bill - single shipment; BN = house bill - consolidation. For a consolidation, list the house B/Ls here and put the MASTER B/L in Additional References (Step 5), not here.

“At Least one B/L MUST be entered to complete the ISF Submission.”
Bills of Lading
Step 4 of 6

Step 5 - Containers (IPISF4) & Additional References (IPISF3). Containers apply only to containerized ocean (mode 11); a container number follows ISO 6346 (4-letter owner prefix + 6-digit serial + 1 check digit). Additional references carry entry numbers, master bills, surety / bond references, carnets, etc. Both sections start empty - use + Add as needed.

Containers
“Optional records to report Container Information in ISF Submission.”
Container Information is disabled for MOT=10 (Non-containerized) - rows below are not sent.
FROB / In-Bonds (ISF-5 only)
FROB / In-Bond information for T&E and IE shipments - required for ISF-5 (Submission Type 2). Only ONE FROB record is supported per ISF.
Additional References
“Surety Code and/or ISF Bond No. may be required depending on Bond Indicator.” — required when (1) a house B/L (BN) is present (carries the master B/L), or (2) Bond Activity 16 + Bond Type 9 (needs V1 surety + SBN bond number).
Bond (optional)

Bond holder / activity / type write to the IPSFH header; the surety code and bond reference write to IPSFR. 8 = Continuous (bond amount + expiration, reused across entries); 9 = Single Transaction. Bond Activity 16 (ISF bond) requires Bond Type 9 plus a V1 surety code and an SBN bond number (here or in Additional References). API object: bond.

Estimated Information (optional)

Estimated value / quantity / weight for the shipment. Writes one IPSFAD (SF13) row. API object: estimated.

Step 5 of 6

Step 6 - Validate, Submit & Track. Validate dry-runs the payload (nothing is stored) and lists the pre-send findings with the same wording as the ASCI “Send to ABI Message List (ISF 10+2)” report - click a finding to jump to the offending input. Submit files directly (a filing with errors is rejected with 422 isf_validation_failed); Stage as Draft holds it in the API until you transmit it. Server-computed - not sent here: sf_trans_no (the CBP transaction number) is owned by transmission and is computed server-side.

Transmit & track

Transmit Draft calls POST /api/Isf/{id}/Transmit (draft → ASCI queue). Transmit to CBP calls POST /api/Isf/{id}/TransmitCbp (scope cbp.submit; 403 cbp_not_enabled when the tenant is not CBP-enabled; 422 isf_catair_unsupported when the payload needs an unconfirmed CATAIR feature). Check Status shows GET /api/Isf/{id}/Status and GET /api/Isf/{id}/CbpStatus side by side.

Raw request / response (last call)

Request

(no call yet)

Response

(no call yet)
Step 6 of 6

Endpoints

ISF endpoint family (api/Isf). Full request schema below.

ISF endpoints

MethodPathPurpose
POST/api/Isf/ValidateDry-run pre-send validation (nothing stored). Always 200 with { valid, errors[], warnings[] }; each entry is { code, field, line_ref, message }.
POST/api/Isf/SubmitSubmit an ISF document (body: { document }). Returns submission_id. document.submit_mode="draft" stages it instead of sending. Errors from the pre-send gate come back as 422 isf_validation_failed.
POST/api/Isf/{submissionId}/TransmitTransmit a staged draft into the ASCI processing queue.
POST/api/Isf/{submissionId}/TransmitCbpBuild the ISF CATAIR from the stored submission and file it with CBP directly (scope cbp.submit, Idempotency-Key required, tenant CBP-via-API flag).
GET/api/IsfList ISF submissions.
GET/api/Isf/{submissionId}Fetch one submission.
GET/api/Isf/{submissionId}/StatusLifecycle status (used by the form's Check Status button).
GET/api/Isf/{submissionId}/CbpStatusCBP outcome for an ISF filed via TransmitCbp (status, ISF transaction number, reply conditions).
GET/api/Isf/{submissionId}/DetailFull typed detail.

Schema

Request body for POST /api/Isf/Submit. Envelope: { "document": { … } }. Header mirrors the legacy IPJSONISF "data" block; the detail arrays map to IPISF2-6. Note: outbound currently emits header + the first bill of lading; bills of lading, containers, additional references, bond and estimated info are written to legacy; parties and tariff (HTS) are accepted but their legacy WRITE is still pending.

document (root)

FieldTypeReq?MaxDescription
reference_nostringYes15Reference number. Send NEW to auto-generate.
metadataobjectNoClient-supplied key/value bag (string→string, ≤50 entries), echoed on status / webhooks.
headerobjectYes-ISF header (see below).
bills_of_ladingarrayNo-Bill-of-lading rows (IPISF2).
containersarrayNo-Container rows (IPISF4 / IPSFCT). Written.
partiesarrayNo-Commercial-entity / party rows (IPISF5). WRITE TODO.
tariffarrayNo-Tariff (HTS) line rows (IPISF6). WRITE TODO.
frobarrayNo-Freight-Remaining-On-Board rows. WRITE TODO.
additional_referencesarrayNo-Additional-reference rows (IPISF3 / IPSFR). Written.
bondobjectNo-Bond block - written to the IPSFH header + IPSFR references. Written.
estimatedobjectNo-Estimated value/qty/weight (IPSFAD). Written.
header (object)
FieldTypeReq?MaxDescription
submission_typestringNo11=ISF-10, 2=ISF-5, 3/4=transitions.
action_codestringNo1A=Add, D=Delete, R=Replace.
abi_statusstringNo1ABI status.
ior_qualifierstringYes2Importer-of-record ID qualifier; one of EI, SS, CN.
ior_numberstringYes15Importer-of-record number.
importer_codestringYes6Importer (customer) code.
filer_codestringNo3ABI filer code. Enforced only when Validation:RequireFilerCode is on.
mode_of_transportstringYes-ABI mode of transport (must be in the accepted MOT list).
scac_codestringYes4SCAC; exactly 4 uppercase letters.
sf_trans_nostringNo15ISF transaction number.
isf_datestringNo7ISF date (Julian).
sailing_datestringNo7Sailing date (Julian).
cbp_bill_on_file_datestringNo7CBP bill-on-file date.
cbp_bill_on_file_timestringNo4CBP bill-on-file time.
customer_refstringNo16Customer reference.
action_reasonstringNo2CT (default), FR, FT or FX.
shipment_typestringNo*2Shipment type 01-11 (ASCI table ISFSHTP). *Required by the pre-send validation.
operator_codestringNo*3Operator code (ASCI Operator File IRNOP). *Required by the pre-send validation.
countrystringNo2ISO country; required for Importer Qualifier AEF (Passport).
date_of_birthstringNo10YYYYMMDD; required for Importer Qualifier AEF (Passport).
bills_of_lading[] - IPISF2
FieldTypeReq?MaxDescription
seq_nostringNo3Sequence number.
code_qualifierstringNo2OB=Ocean/Regular (single shipment), BN=House (consolidation; master B/L goes in additional_references).
bol_ref_nostringYes50Bill-of-lading / shipment reference number (required per row).
containers[] - IPISF4 / IPSFCT (written)
FieldTypeReq?MaxDescription
seq_nostringNo3Sequence number.
container_nostringNo15Container number.
parties[] - IPISF5 (WRITE TODO)
FieldTypeReq?MaxDescription
party_typestringNo3Buyer / Seller / Manufacturer / Stuffer / Consolidator / Ship-To / etc.
namestringNo35Party name.
address_1 / address_2stringNo35Address lines.
citystringNo20City.
statestringNo2State / province.
postal_codestringNo10Postal code.
countrystringNo2Country (ISO 2-char).
identifier_qualifierstringNo3Entity ID qualifier: EI, ANI, CIN, 34, AEF, DUN, DNS, FR.
identifierstringNo20Entity identifier value (e.g. the EIN).
manufacturer_idstringNo16Manufacturer ID (MID) - MF parties only.
tariff[] - IPISF6 (WRITE TODO)
FieldTypeReq?MaxDescription
seq_nostringNo3Sequence number.
hts_numberstringNo10HTS tariff number.
descriptionstringNo70Free-text product line description.
country_of_originstringNo*2ISO country of origin. *Required per line for ISF-5 (Submission Type 2).
manufacturer_idstringNo20Optional product-catalog manufacturer link (unlinked line is supported).
product_codestringNo30Optional product-catalog product code (unlinked line is supported).
frob[] - ISF-5 only, max ONE row
FieldTypeReq?MaxDescription
seq_nostringNo3Sequence number.
port_of_unladingstringNo5Port of unlading.
bol_ref_nostringNo50Bill-of-lading reference number.
additional_references[] - IPISF3 / IPSFR (written)
FieldTypeReq?MaxDescription
seq_nostringNo3Sequence number.
ref_qualifierstringNo2Reference qualifier.
ref_valuestringNo35Reference value.
Mode of Transportation Codes - header.mode_of_transport
CodeLabel
10Vessel, non-container
11Vessel, container
20Rail, non-container
21Rail, container
30Truck, non-container
31Truck, container
32Auto
33Pedestrian
40Air, non-container
41Air, container
60Passenger, hand-carried
70Fixed Transport Installations (pipeline / powerhouse)

Values accepted by header.mode_of_transport. Labels follow CBP CATAIR Appendix B. ISF is ocean only, so in practice only 10 and 11 apply.