Customs forms for a small parcel going abroad
Written for the person filling it in.
A US seller shipping a small parcel abroad files USPS PS Form 2976 — the CN22 short declaration — or 2976-A/CP72 above the value threshold, or the carrier's own commercial invoice on UPS, FedEx, and DHL. Most guides explain these forms to importers, not to the person filling one in.
Customs items, not a paper form
Description, declared value, country of origin, quantity, and the HS code you supply — entered once as item rows, printed onto whichever declaration the service requires.
Duties inside the same all-in price
On services that support prepaid duties, the tax is quoted with the freight as one number that leaves your prepaid wallet — so no stranger phones your buyer for money.
Which form you actually file as a US seller
Almost everything written about customs forms is written for the person receiving a parcel, not the person sending one. If you are a US seller putting a small box on a plane, here is the short version. Shipping by post, you file USPS PS Form 2976 — which is the CN22 short declaration, the green sticker people recognise — for a low-value parcel, and PS Form 2976-A, the CP72 set, once the value goes above the threshold. CN22 is a Universal Postal Union form rather than a foreign one, and PS Form 2976 is the US implementation of it, so the two names describe the same document rather than competing options.
In practice you will not hand-write either. Buying an international label online generates the combined customs-declaration-and-label form from the data you entered, which means the real task is not filling in a form at all: it is entering customs items. A customs item is a row with a description, a quantity, a declared value, a country of origin, and an HS code. The form is a rendering of those rows. Once you see it that way the whole thing gets easier, because you stop trying to write a good sentence in a box and start describing goods.
Shipping with UPS, FedEx, or DHL instead, there is no CN form in the picture. Those carriers use a commercial invoice, historically three printed copies in a pouch and now usually uploaded electronically with the shipment. The information is the same information — the same description, the same quantity and unit value, the same country of origin, the same code — in a different container. Which is why the work of getting international shipping right is not learning four form layouts. It is learning to describe your own products the way a customs system needs them described, once, and then reusing it.
Writing a description that does not get the parcel held
A customs officer needs to answer one question from your description: what tariff line does this belong to? If your text does not let them, the options are to open the box or to hold it until someone explains. Both are slow, and both are avoidable with about eight extra words.
The four descriptions that reliably stall a parcel are gift, sample, merchandise, and the bare category name. Clothing is a bare category name; so is jewellery, so are parts and accessories. The fix is a formula: material, then item, then use where it is not obvious. Instead of clothing, write a women's knitted cotton sweater. Instead of jewellery, write a sterling silver pendant necklace, not set with precious stones. Instead of parts, write a stainless steel replacement hinge for a wooden jewellery box. None of that is longer than a tweet and all of it is the difference between automated clearance and a physical inspection.
Three rules go with it. Use one row per distinct item rather than bundling a mixed order into a single line, because a mixed line cannot be classified. Declare what the buyer paid, not your cost, not the wholesale price, and never zero — an undervalued parcel is a misdeclaration with your name on it, and it also destroys your own insurance claim if the parcel is lost, since the declared value is the ceiling on what you can recover. And do not mark a sold item as a gift to help the buyer avoid duty. It is a false declaration, the person signing it is you, and the destination's systems are considerably better at spotting it than they were.
On GoatLabels, Billy drafts the customs description from the order text you paste or screenshot, so the first version of the row is written for you and you edit rather than compose. What Billy does not do is choose your HS code — that is the next section, and it is deliberately your decision.
Finding an HS code without hiring a broker
The Harmonized System is an international product taxonomy. The first six digits are common across almost every country that uses it, and national systems extend them: the US export code, Schedule B, is ten digits built on those first six. For a small parcel the six-digit code is usually enough to satisfy the destination's electronic advance data, and the ten-digit Schedule B is what US export reporting expects at higher values.
Two free tools do the whole job. The Census Bureau publishes a Schedule B search, and the US International Trade Commission publishes an HTS search. The trick to using either is to search by what the thing is made of and how it was made, not by what you call it in your shop. The system is organised around material and process, so a search for cotton knitted pullover lands where you need to be and a search for hoodie does not. Work down from the chapter rather than trusting the first result: the chapters are grouped by material, the headings by product family, and reading the neighbouring lines tells you whether you have the right one far better than the search ranking does.
Then stop doing it. Almost every small seller ships a short list of repeating SKUs, so classify each one once and save it. GoatLabels stores saved customs templates for exactly this: the description, the declared value, the country of origin, and the code you supplied, reused on the next parcel of the same thing. Twelve minutes of classification up front removes the field from the next two hundred labels.
The boundary is worth stating plainly, because it is where a lot of shipping software is vague. GoatLabels carries an HS code field and stores the code you enter. It does not classify goods for you. A misclassification is the shipper's legal liability, not the platform's, and any tool that offers to pick the code for you is offering an opinion that you are the one signing. If your product is genuinely ambiguous — a composite material, a kit, anything with electronics inside something else — that is the case where a customs broker earns their fee once and you reuse the answer forever.
DDP versus DDU: who gets the bill at the door
Every international parcel resolves one question: who pays the destination's duty and tax. Under DDU, sometimes labelled DAP, the buyer pays. Concretely that means the carrier or the destination post contacts your customer, asks for money and often a handling fee on top, and holds the parcel until they pay. From the buyer's side this is a stranger demanding money for something they already paid for, and it is the single largest source of international refund requests, negative feedback, and refused deliveries for small sellers. The parcel then comes back, and you have paid twice to sell nothing.
Under DDP the duties and taxes are calculated and prepaid at label time. Your buyer receives the parcel exactly like a domestic one. It costs more at purchase and it costs dramatically less in support time and refunds, which is why the right default for a small seller is DDP where the service supports it, with the duty priced into the item or into your shipping charge rather than absorbed silently.
On GoatLabels the international services that support prepaid duties quote them inside the same all-in number as the freight, so a DDP quote and a DDU quote are directly comparable rather than one of them hiding a cost that lands on your customer later. That exact number leaves your prepaid wallet when you buy. The general case for quoting all four carriers rather than defaulting to one is made on cheap shipping labels, and the fees that attach to a destination rather than to a parcel are on shipping surcharges explained.
One more destination type belongs here in a sentence: military APO, FPO, and DPO parcels need a customs declaration even though you are paying domestic postage, and the address formatting that makes them deliverable at all is on can UPS or FedEx deliver to a PO Box.
Thresholds and policy, checked 2026-08-03
This is the only block on the page containing a threshold, a date, or a policy specific, and it is the fastest-moving material here. De minimis rules have been changing in several major markets, so treat everything below as a pointer to a primary source rather than as a settled fact.
- Form set — USPS PS Form 2976 is the CN22 short declaration; PS Form 2976-A is the CP72 set used above the value threshold; the online label flow generates the combined declaration-and-label form from your item rows. Verify the current form numbers and the value threshold against USPS Publication 699 and the International Mail Manual before relying on them.
- Carrier equivalents — UPS, FedEx, and DHL use a commercial invoice rather than a CN form, generally transmitted electronically with the shipment.
- De minimis direction — the widely reported US $800 de minimis exemption and its suspension govern parcels imported into the United States. They do not govern a parcel you send out of it. For outbound parcels the relevant threshold is the destination country's.
- Destination thresholds — the EU removed its low-value VAT import exemption in July 2021 and now applies VAT from the first euro, with IOSS as the mechanism for collecting it at the point of sale. The UK applies its own low-value regime with a separate threshold. Confirm both against the current published guidance for the destination before quoting a buyer.
- Codes — the first six HS digits are international; the US export extension is the ten-digit Schedule B. Search tools: the Census Bureau Schedule B search and the USITC HTS search.
Verify against USPS Publication 699, the International Mail Manual, and the destination's own customs guidance before relying on any threshold above. Review cadence: quarterly while de minimis policy is moving.
Describe the goods once. Reuse it forever.
An international label is a domestic label plus a set of item rows. Enter what is in the box, what it is made of, what the buyer paid, where it was made, and the code you supply — and the declaration the service needs is generated from that. Save it against the SKU and the next parcel of the same thing is a two-tap job.
Can you send the cotton sweater to Lisbon? Happy to pay the shipping — just don't want a bill at the door.
- Description
- Women's knitted cotton sweater
- Quantity
- 1
- Declared value
- What the buyer paid
- Country of origin
- United States
One row per distinct item, described by material and product rather than by category. A mixed line cannot be classified, and a bare category name is what gets a box opened.
Drafts the description. You supply the code.
- Turns a pasted order or a screenshot into item rows with a usable description
- Validates the destination address before anything is paid for
- Never picks your HS code — you enter it, because a misclassification is the shipper's liability
- Included on every plan, so international orders cost nothing extra to draft
Save the finished item as a customs template and the next parcel of the same SKU reuses the description, the declared value, the country of origin, and the code you entered.
The form is the easy part.
The item rows are the work.
Everything below exists to make the customs data you enter accurate the first time and reusable every time after — and to keep the duty out of your buyer's inbox.
Prepaid wallet,
duties drawn from it too
Fund it with card, Apple Pay, Google Pay, ACH, or crypto. On services that support prepaid duties the tax is bought from the same balance as the freight, in the same transaction, with no monthly minimum to print and nothing billed in a month you did not ship in.
Billy drafts the description,
you supply the HS code
Paste the order or drop a screenshot and Billy writes the customs description into an item row for you to review. It does not classify goods and it will not choose your code, because a misclassification is the shipper's liability and nobody should sign an opinion they did not make.
Duties inside
the number you compare
Where the service supports prepaid duties, tax is quoted with the freight as one all-in figure, so a DDP quote can be compared honestly against a DDU one instead of hiding a cost that lands on your customer a week later. That exact amount leaves your balance.
Postal and carrier routes,
quoted side by side
USPS uses the CN22 and CP72 declarations; UPS, FedEx, and DHL use a commercial invoice. Same data, different container — which is why quoting all four against the same parcel is worth doing rather than picking a route because you already know its paperwork.
Customs items
over the REST API
Send customs item rows with the shipment call — description, quantity, declared value, country of origin, and your HS code — on unlimited calls on every plan. Saved templates keep repeat SKUs consistent whether the label is bought by a human or a script.
Customs forms, answered
- Which customs form do I need to ship from the US?
- If you are shipping by post, you file USPS PS Form 2976, which is the CN22 short declaration, for a low-value parcel, and PS Form 2976-A, the CP72 set, above the value threshold. In practice buying an international label online generates the combined declaration-and-label form from the item data you enter, so you are filling in customs items rather than a paper form. If you are shipping with UPS, FedEx, or DHL there is no CN form at all — you provide a commercial invoice with the same information.
- What should I write in the item description?
- What it is, what it is made of, and what it is for, in that order. Write a women's knitted cotton sweater rather than clothing, and a sterling silver pendant necklace rather than jewellery. The words that reliably stall parcels are the vague ones — gift, sample, merchandise, parts, accessories — because an officer who cannot classify the contents from your description has to open the box to do it.
- Do I need an HS code for a $40 parcel?
- Increasingly yes, and it costs you nothing to include one. Many destinations now expect a code on low-value parcels for their electronic advance data, and a parcel with a code moves through automated clearance while one without it waits for a human. The first six digits of the Harmonized System are internationally common, and that is usually enough for a small parcel.
- Do military APO, FPO, and DPO parcels need a customs form?
- Yes. You pay domestic postage and the address is a domestic USPS address, but the parcel leaves the country, so a customs declaration is required and the same description rules apply. The address formatting for those destinations, and which carriers can serve them at all, are covered on our PO Box and military address page.
- What changed when the de minimis exemption ended?
- Less than most sellers assume, because the widely reported US de minimis change governs parcels arriving into the United States. It is an import rule. For a parcel you are sending out of the US, the threshold that decides whether your buyer is charged belongs to the destination country, and several major destinations lowered or removed theirs years earlier. The specifics, with dates, are in the dated block on this page.
- Should I ship DDP or DDU?
- DDP where the service supports it, and price the duty into the item. Under DDU the carrier contacts your buyer for money before releasing the parcel, which is the largest single source of international refunds and disputes for small sellers. Under DDP the duties and taxes are calculated and prepaid at label time and the buyer receives the parcel like a domestic one.
One set of item rows.
Every destination you sell to.
Enter the item rows, let the declaration generate itself, choose prepaid duties where the service supports it, and buy from a prepaid wallet.
Sign up in seconds. No card required. No monthly minimum to print.