Why use bulk labels here?
Built for sellers and shippers who move many packages per day—compare carriers per row instead of paying retail at the counter.
- One payment for the whole batch (card, Apple/Google Pay, or crypto).
- Editable batch — Remove lines on the payment page before you commit.
- International rows — Add customs columns when countries differ; see international shipping.
- No CSV? Try bulk paste for the same flow without a file.
Bulk shipping labels
Upload one spreadsheet with all your shipments: each row becomes a label with its own carrier quote. Review totals, remove any row you do not need, then pay once. Discount tiers apply automatically from 10 labels.
Bulk discount tiers (applied automatically)
We reward volume! When you upload a CSV with multiple labels, your total receives an automatic discount based on how many valid labels are in your file:
| Label count | Discount |
|---|---|
| 10+ | 5% off |
| 25+ | 8% off |
| 50+ | 10% off |
| 75+ | 12% off |
| 100+ | 15% off |
Discounts are applied before checkout and reflected in your order summary.
CSV format & template
Download CSV template International CSV template
Available carriers
Use one of these codes in the carrier column.
- USPS —
usps - Canada Post —
canadapost - UPS —
ups
Required columns
- Sender: from_name, from_street1, from_city, from_state, from_zip, from_country
- Recipient: to_name, to_street1, to_city, to_state, to_zip, to_country
- Parcel: parcel_weight
- Carrier: carrier (one of the codes above)
Optional columns
- Address: from_street2, from_phone, to_street2, to_phone, to_email. See phone requirements below for UPS/FedEx.
- Parcel: parcel_mass_unit (default lb), parcel_length, parcel_width, parcel_height for custom size; package_type
- Service: service_level; rate_priority (best_value, cheapest, fastest); signature_confirmation; email
Phone numbers (UPS / FedEx)
- Sender (from_phone): Required only for international UPS/FedEx shipping.
- Recipient (to_phone): Required for all UPS and FedEx — domestic and international.
International shipments — customs required
When from_country and to_country differ (e.g. US → CA), that row is international. Add the customs columns below. For item details, use the simple columns (one item per row) or the advanced option for multiple items.
- Required: customs_contents_type (MERCHANDISE, GIFT, DOCUMENTS), customs_contents_explanation, customs_non_delivery_option (RETURN or ABANDON), customs_certify_signer
- Item (simple — one item per row) Add column customs_description (what's in the package, max 30 characters). Optional: customs_quantity, customs_value_amount, customs_net_weight, customs_origin_country (2-letter code).
- Multiple items in one shipment: use the customs_items column with JSON (advanced). See our international guide for format.
- Optional: customs_incoterm, customs_eel_pfc
Read our guide on international shipments
Domestic rows (same from_country and to_country) do not need any customs columns. Only rows where sender and recipient countries differ require these fields.
Payment
After upload you're taken to the payment page (card or crypto). You can remove any rows you don't need from the order details—the total updates automatically. No payment data in the CSV.