A customs bond is not a boolean field on a shipment record. Under 19 CFR part 113 the bond amount, the effective date, the document production clock, the extension decision and the charge for a missing document are separate facts with separate actors, and a schema that stores a single in_bond flag cannot answer any of them.
The question this article answers is how to model those facts as rows tied to a shipment and to an obligation, so that each field can be traced back to the section that governs it.
Why the bond flag fails as a data model
19 CFR 113.1 speaks to the situation no statute or regulation covers: the Commissioner may order security, or give that power to the Revenue Division director, or to the port director. A record that says a shipment is covered therefore says nothing about who required the coverage, for which obligation, or at what amount.
Amount is its own field. 19 CFR 113.13(a) puts a numeric bottom under that column: nothing below $100 for a CBP bond, unless a statute or rule expressly allows a smaller figure. Sufficiency is a separate judgment with its own column, and 19 CFR 113.13(b) names what CBP considers there, starting with past punctuality on duties and charges, the worth and the make-up of the goods, and how the principal handled bond commitments before. A schema that stores one number without the basis for it cannot support a later review under 19 CFR 113.13(c), where CBP periodically reviews each bond on file and the principal has 15 days from the date of notification to remedy a deficiency.
Dates are not one date. 19 CFR 113.26(a) lets a continuous bond, the application tied to it or a rider reach CBP as much as 60 days ahead of the effective date asked for, and the early filing does not move that date. 19 CFR 113.26(b) dates a one-entry bond by the transaction written on CBP Form 301, and 113.26(c) dates a continuous bond by the effective date carried on that form. Filing date, requested effective date and transaction date are three columns, not one.
A schema draft keyed to the sections
The draft below keeps the obligation as its own row so that a bond can cover several obligations and a shipment can carry several obligation rows. Field names are ours. The section references are the ledger's.
bond_record
bond_id
bond_type -- single transaction | continuous
principal_name
principal_legal_designation
surety_name
amount_figures -- 19 CFR 113.21(c)
date_executed -- 19 CFR 113.21(b)
requested_effective_date -- 19 CFR 113.26(a)
effective_date -- 19 CFR 113.26(b) or (c)
filed_date -- 19 CFR 113.26(a)
obligation_row
obligation_id
shipment_ref
obligation_type -- entry | document production | other
bond_id
principal_ref
trade_name_on_bond -- 19 CFR 113.21(a)(2)
cbp_request_date
document_due_date -- 19 CFR 113.42
extension_applied_date -- 19 CFR 113.43(a)
extension_granted_days
extension_status -- none | applied | granted | refused
charge_event_date -- 19 CFR 113.45
charge_basis_note
Two fields in that draft carry more weight than the rest. The document due date is computed from the date of notice from CBP requesting the document, because 19 CFR 113.42 sets delivery within 120 days from that date, with delivery on the next business day accepted as timely if the period ends on a Saturday, Sunday, or holiday. The extension fields exist because 19 CFR 113.43(a) leaves a discretionary call to the port director, or to another officer with the authority: on a written request from the importer, one further window of up to 60 days may be granted.
Two failure modes worth naming
The first is treating a continuous bond as permission to produce documents late. A continuous bond covers multiple transactions, but 19 CFR 113.45 addresses exactly this case: when a continuous bond covers a missing document and the principal fails to produce it on time, the liquidated damages claim is set at what a single transaction bond for that shipment would have been. The continuous form changes how that charge is computed, and it does not remove the clock.
The second is treating possession of event data as assumption of the obligation. The conditions attached to a basic importation and entry bond sit in 19 CFR 113.62, and that section names the obligors as principal and surety, jointly and severally. A fulfillment operator holding warehouse and outbound event rows is neither of those parties. Before any reconciliation report circulates, have the importer of record and the broker state in writing which entity stands as principal on each bond. Record the answer against the obligation row rather than inferring it from who holds the data.
Engineering the due date as a clock, not a delete
Store the document due date as a value that changes through an event, not as a field that gets cleared when the document arrives. A produced document closes the obligation. It does not erase the due date, because the due date is the evidence that the production was timely.
Where the 120-day period is running out, the record should show whether a written application was made and what the port director or CBP officer decided. 19 CFR 113.43(b) also constrains late applications, so the application date belongs in its own column and should not be backfilled from the grant date. Agree with the importer and the broker which party files the application and which party records the outcome. Consider keeping the refused and expired states as first-class values so that a reconciliation report can show them. Confirm with counsel how long each state must be retained before any purge job runs.
The data layer we actually hold
FulfillNexa by SBT (fulfillnexa.com) keeps inbound and outbound event rows for goods received at three Chinese sites. Suzhou carries 13,000 square meters of that capacity and is where East China suppliers are consolidated. Dongguan carries 8,000 square meters used for ecommerce storage and per-order fulfillment, apparel and toys among it. Shenzhen carries 3,000 square meters for oversized cargo and sea-air work. The rows are ours to produce. The bond obligation under 19 CFR part 113 is not, and we are neither a licensed customs broker nor a surety.
Top comments (0)