CN22/CN23 Customs Form Generator

Fill in a customs declaration for an international parcel, with the right form picked automatically by declared value.

Describe the result you need. AI will set up the tool and ask for any missing details.

Configure with AI

Enter to submit · Shift + Enter for a new line

Sent to AI. Leave out passwords and private customer data.

Your details

Form

Most postal operators move from CN22 to CN23 once the declared value passes about $400 (or the local equivalent), for Priority Mail Express, or when the destination requires it. Check your carrier's current rule.

Sender
Recipient
Contents
Extra details

Some countries need this for customs clearance. Leave blank if you don't have it.

Printable customs declaration

customs-declaration-cn23.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Customs Declaration CN23</title>
<style>
  * { box-sizing: border-box; }
  body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; color: #111; margin: 0; padding: 32px; font-size: 13px; line-height: 1.5; background: #fff; }
  .doc { max-width: 760px; margin: 0 auto; }
  .row { display: flex; justify-content: space-between; gap: 24px; }
  .head { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 28px; gap: 16px; }
  h1 { font-size: 22px; margin: 0 0 4px; letter-spacing: -0.02em; }
  h2 { font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin: 24px 0 8px; }
  table { width: 100%; border-collapse: collapse; margin-top: 8px; }
  th, td { text-align: left; padding: 8px 10px; border-bottom: 1px solid #e3e3e3; font-size: 12.5px; }
  th { text-transform: uppercase; font-size: 10.5px; letter-spacing: 0.05em; color: #666; border-bottom: 2px solid #111; }
  td.num, th.num { text-align: right; }
  .totals { margin-top: 12px; width: 260px; margin-left: auto; }
  .totals div { display: flex; justify-content: space-between; padding: 4px 0; }
  .totals .grand { font-weight: 700; border-top: 2px solid #111; margin-top: 4px; padding-top: 8px; font-size: 15px; }
  .muted { color: #666; }
  .box { border: 1px solid #ddd; border-radius: 8px; padding: 12px 14px; }
  .sig { margin-top: 40px; display: flex; gap: 40px; }
  .sig div { flex: 1; border-top: 1px solid #111; padding-top: 6px; font-size: 11px; color: #666; }
  @media print { body { padding: 0; } }
</style>
</head>
<body>
<div class="doc">

    <div class="head">
      <div><h1>Customs Declaration — CN23</h1><p class="muted">PS Form 2976-A style, for higher-value or restricted items</p></div>
      <div class="box"><p><strong>Category:</strong> Sale of goods</p></div>
    </div>
    <div class="row">
      <div><h2>Sender</h2><p><strong>Harbour &amp; Co</strong></p><p class="muted" style="white-space:pre-line">48 Quay Street
Cork, Ireland</p></div>
      <div style="text-align:right"><h2>Addressee</h2><p><strong>Wren &amp; Co</strong></p><p class="muted" style="white-space:pre-line">12 Baker Street
London, UK</p></div>
    </div>
    <h2>Contents</h2>
    <table><thead><tr><th>Description</th><th>HS tariff no.</th><th>Origin</th><th class="num">Qty</th><th class="num">Weight (kg)</th><th class="num">Value (EUR)</th></tr></thead><tbody><tr><td>Wool scarf</td><td>6214.20</td><td>Ireland</td><td class="num">4</td><td class="num">0.80</td><td class="num">96.00</td></tr><tr><td>Gift box</td><td>4819.50</td><td>Ireland</td><td class="num">4</td><td class="num">0.40</td><td class="num">12.00</td></tr></tbody></table>
    <div class="totals">
      <div><span>Total weight</span><span>4.80 kg</span></div>
      <div class="grand"><span>Total value</span><span>EUR 432.00</span></div>
    </div>
    <h2>Additional information</h2><p class="muted">License: — · Certificate: — · Invoice: —</p>
    
    <div class="sig"><div>Sender's signature and date</div></div>
  
</div>
</body>
</html>

Using CN23 based on the total declared value. Print it, sign it and attach it to the parcel, or copy these details into your carrier's own online customs form.

This follows the standard CN22/CN23 layout used across postal carriers, but the live PS Form 2976 (CN22) and 2976-A (CN23) are the forms USPS actually accepts. Check your carrier's current form before you ship, especially for restricted, dutiable or high-value items.

Live preview

CN22 vs CN23

CN22 and CN23 are the standard postal customs declarations used worldwide for international mail. CN22 is the shorter form for lower-value items; CN23 is the fuller form, with a line for each item's HS tariff number and country of origin, used for higher-value, restricted or dutiable shipments.

USPS puts the common threshold at $400 declared value: below it, CN22 is generally enough; at or above it, CN23 is required. Set Which form to Auto and the tool follows the total value you enter, or force one form if your carrier's rule differs.

Filling it in correctly

  • Describe contents specifically. "Clothing" invites a customs hold; "Wool scarf, 100% wool" doesn't.
  • Use a real HS tariff number where you can. Your carrier or a customs broker can usually confirm one for a product you ship often.
  • Category matters for duty. A genuine gift under your destination country's gift threshold may be duty-free; a commercial sale usually isn't.
  • Sign it. Postal customs declarations aren't valid without the sender's signature, even on a form generated digitally.

Before you rely on this

This follows the standard CN22/CN23 layout, but it isn't the live PS Form 2976 or 2976-A that USPS (or your own postal operator) actually scans and accepts. For anything restricted, high-value, or going somewhere with unusual import rules, fill in your carrier's official form or check with them directly before shipping.

Questions people ask

What's the value threshold for CN22 vs CN23?

USPS uses $400 in declared value as the common line: below it, CN22 (PS Form 2976) is usually enough; at or above it, CN23 (PS Form 2976-A) is required. Other postal operators may set their own threshold, so check your carrier if you're not shipping from the US.

Do I always need an HS tariff number?

CN23 expects one for each item so customs can assess duty correctly. It's less critical on CN22 for low-value items, but including it rarely hurts and can speed up clearance.

What if I'm sending a gift?

Mark the category as Gift. Many countries have a separate, often more generous duty-free threshold for genuine gifts, but rules vary widely by destination.

Does this replace my carrier's online customs form?

No. Use it to work out exactly what to enter, then either print and attach this form or copy the same details into your carrier's own system, whichever they require for your shipment.

Want this builtinto your store?

I'm Emmanuel, a Shopify and WooCommerce developer. If this tool pointed at something you'd rather have fixed for you (a faster store, cleaner product data, a migration, a custom feature), send me a note.

Emmanuel Asika

Emmanuel Asika

Shopify & WooCommerce developer, Dublin

I build and fix online stores: new builds, migrations, speed, SEO and the custom bits apps can't do.

hello@emmanuelasika.com

Last reviewed 30 September 2026.

Sources: USPS: Customs forms · USPS FAQ: Which customs form do I use?